找回密码
 立即注册
查看: 1287|回复: 4

为什么STC32G12K128中IAP的保护地址为0xFF0003-0xFF1003

[复制链接]
  • 打卡等级:偶尔看看III
  • 打卡总天数:33
  • 最近打卡:2025-04-10 08:59:03

15

主题

30

回帖

433

积分

中级会员

积分
433
发表于 2023-3-3 21:02:24 | 显示全部楼层 |阅读模式
STC32G12K128的boot例程中使用0xFF0000-0xFF0FFF作为boot空间,用户程序的保护区域不应该是0xFF0000-0xFF0FFF吗,为什么是0xFF0003-0xFF1003。0xFF0000不用保护吗?用户程序的进入地址是0xFF1000,这个地址不应该被保护啊,会根据程序变动改改变的啊。
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:38
  • 最近打卡:2025-04-30 14:38:57

25

主题

977

回帖

3599

积分

超级版主

积分
3599
发表于 2023-3-3 22:30:10 | 显示全部楼层
首先,这里的保护,其实就是告诉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这个地址是强制写复位跳转指令了

  • 打卡等级:偶尔看看III
  • 打卡总天数:33
  • 最近打卡:2025-04-10 08:59:03

15

主题

30

回帖

433

积分

中级会员

积分
433
发表于 2023-3-4 17:58:23 | 显示全部楼层
感谢,现在我明白了。我看了下生成的hex文件,是从0xFF0000开始的。 QQ图片20230304175558.png
  • 打卡等级:偶尔看看III
  • 打卡总天数:33
  • 最近打卡:2025-04-10 08:59:03

15

主题

30

回帖

433

积分

中级会员

积分
433
发表于 2023-3-4 18:33:43 | 显示全部楼层
《利用STC的IAP单片机开发自己的ISP程序-STC32G12K128系列.pdf》中提到的保护地址是“0xFF0003-0xFF1003”,末尾地址是0xFF1003,我觉得应该是有问题的,应该是0xFF1002,只要保护0xFF1000、0xFF1001、0xFF1002这三个地址就可以,没必要再加上0xFF1003。并且加上0xFF1003的情况下,程序里使用外部中断0中断,编译会报错。
QQ图片20230304182714.png
QQ图片20230304183312.png

点评

确实是的,后续更正文档。 多谢提醒!  详情 回复 发表于 2023-3-4 19:53
  • 打卡等级:偶尔看看III
  • 打卡总天数:38
  • 最近打卡:2025-04-30 14:38:57

25

主题

977

回帖

3599

积分

超级版主

积分
3599
发表于 2023-3-4 19:53:38 | 显示全部楼层
templ*** 发表于 2023-3-4 18:33
《利用STC的IAP单片机开发自己的ISP程序-STC32G12K128系列.pdf》中提到的保护地址是“0xFF0003-0xFF1003” ...

确实是的,后续更正文档。
多谢提醒!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 01:51 , Processed in 0.110672 second(s), 77 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表