飞思卡尔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位提取出来换算成逻辑地址,但是发现汇编里没有这样的语句。。。好困扰啊
一周热门 更多>