【全文大纲】 : https://blog.youkuaiyun.com/Engineer_LU/article/details/135149485
1 . 前言
有时候需要在KeilC51中把变量或函数定义到绝对位置,以下简述做法
2 . 变量定义到绝对位置
unsigned char ram _at_ 0x20;
3 . 函数定义到绝对位置

4 . 分Bank注意事项
- 分Bank只是动态改变PC对32K~64K的取址运行走向,32K内执行PC代码过程中任意切换Bank都无所谓,除非跳转到其他Bank执行
- 基于第一点,因此IAP操作时动态更改了Bank操作后,如果调用前代码在32K内则无需处理,否则要对Bank寄存器压栈弹栈操作
- 以上前提都需要把IAP底层操作函数放在Common区,否则就要全Bank都镜像写入相同的IAP底层代码,原理是PC当前位置执行在Common区32K内对32-64K不涉及,但是PC在32-64K内时动态切换Bank(x)那就是涉及到切换后PC寻址也跟着切换,除非芯片有对bank取数据和取指令之分
5 . 总结
以上方式对于函数定义来说是以函数段链接来定位,在MAP文件中可以查看各个函数段名
技术交流群 : 745662457
群内专注 - 问题答疑,技术研究
6430

被折叠的 条评论
为什么被折叠?



