为什么STC32G12K128中IAP的保护地址为0xFF0003-0xFF1003
STC32G12K128的boot例程中使用0xFF0000-0xFF0FFF作为boot空间,用户程序的保护区域不应该是0xFF0000-0xFF0FFF吗,为什么是0xFF0003-0xFF1003。0xFF0000不用保护吗?用户程序的进入地址是0xFF1000,这个地址不应该被保护啊,会根据程序变动改改变的啊。首先,这里的保护,其实就是告诉Keil编译器,不要在FF:0003~FF:1003的地址放指令或数据,因为这部分地址有特殊用途
用户ISP的应用程序会将用户复位地址FF:0000~FF:0002的跳转指令重映射到FF:1000~FF:1002
如果FF:1000~FF:1002的地址不保护起来,keil就可能在这个地址编译用户代码,
后面的重映射就会失败了
FF:0000~FF:0002的地址就更加不能保护了,Keil编译时,FF:0000~FF:0002这个地址是强制写复位跳转指令了
感谢,现在我明白了。我看了下生成的hex文件,是从0xFF0000开始的。 《利用STC的IAP单片机开发自己的ISP程序-STC32G12K128系列.pdf》中提到的保护地址是“0xFF0003-0xFF1003”,末尾地址是0xFF1003,我觉得应该是有问题的,应该是0xFF1002,只要保护0xFF1000、0xFF1001、0xFF1002这三个地址就可以,没必要再加上0xFF1003。并且加上0xFF1003的情况下,程序里使用外部中断0中断,编译会报错。
templeton 发表于 2023-3-4 18:33
《利用STC的IAP单片机开发自己的ISP程序-STC32G12K128系列.pdf》中提到的保护地址是“0xFF0003-0xFF1003” ...
确实是的,后续更正文档。
多谢提醒!
页:
[1]