飞思卡尔S12系列芯片,UCOS系统,关于不同内存模式下编译的问题

2019-07-15 08:17发布

用CW编译会有三种模式,large  banked small,我以前一直用的后面两种,现在想用large memory  model编译。芯片上跑的是UCOS系统。我发现在OSStartHighRdy这个函数里,有如下两句汇编语句,作用是将任务控制块的地址放到X里去,以方便后面再赋值给SP指针
ldx    OSTCBHighRdy       ;语句1             lds    0,x                        ;语句2

问题来了,因为之前用的banked和small模式,此模式下的指针是16位并且默认的就是逻辑地址。而现在改成large模式后,地址变成了24位并且是全局地址,而偏偏X和SP指针都只有16位,所以在上面的语句1赋值的时候就出错了,导致SP指针定位不到当前的任务堆栈。。
请问大家有没有什么方法能够解决这个问题呢?我最初是想把全局地址的低16位提取出来换算成逻辑地址,但是发现汇编里没有这样的语句。。。好困扰啊




0条回答

一周热门 更多>