当IAR编译STM8超过32kb时,将会把所有的函数调用指令CALL 换成CALF,因为地址空间变大为0XFFFFFF,所以需要做如下2处修改。
1.
void archThreadContextInit (ATOM_TCB *tcb_ptr, void *stack_top, void (*entry_point)(uint32_t), uint32_t entry_param)
函数中的
*stack_ptr-- = (uint8_t)((uint32_t)thread_shell & 0xFF);
*stack_ptr-- = (uint8_t)(((uint32_t)thread_shell >> 8) & 0xFF);
*stack_ptr-- = (uint8_t)(((uint32_t)thread_shell >> 16) & 0xFF);
// *stack_ptr-- = (uint8_t)((uint16_t)thread_shell & 0xFF);
// *stack_ptr-- = (uint8_t)(((uint16_t)thread_shell >> 8) & 0xFF);
2.将atomport-asm-iar.s中的所有ret指令改为retf指令