找回密码
 立即注册
查看: 235|回复: 1

ISP烧写完毕的程序为啥不能运行?

[复制链接]

8

主题

18

回帖

112

积分

注册会员

积分
112
发表于 2026-2-4 17:34:39 | 显示全部楼层 |阅读模式
ISP程序运行后,接收到发过来的用户程序BIN文件,烧写到了预设的存储空间,烧写完毕后调用了((void (code *)(void)) 0x3400)();把程序指针调用到0X3400这个预设的程序空间地址,但是用户程序为何没有运行?运行的还是ISP程序。烧写完毕后还需要做哪些工作才能让用户程序运行起来?根据范例修改的,ISP程序完全使用查询方式,没有用任何中断。
回复

使用道具 举报 送花

8

主题

18

回帖

112

积分

注册会员

积分
112
 楼主| 发表于 2026-2-4 22:39:56 | 显示全部楼层
截图202602042230346015.jpg MOVC访问是需要IAP地址加偏移地址。图中的IAP_OFFSET是0XF000,那么对应的STC8A8K64D4的IAP_OFFSET应该是0XFFFF,这个如果用MOV方式访问,就不能再加了吧,0XFFFF加除了0之外任何数都会溢出了。我的用户程序从0X3400地址开始,对应的是第26扇区。用户程序要执行肯定是需要MOV方式访问的,那么应该找这个绝对物理地址。那就是从后往前排,第128-26=102个扇区,用户程序应该存放在IAP访问的第102个扇区。程序复位的0扇区,实际是对应着IAP扇区的最后一个。应该是这样理解的吧。扇区顺序物理地址和逻辑地址顺序是反着的。但是扇区里边的字,物理地址和逻辑地址也是反着的吗?感觉这个顺序应该是一样的,无论是物理地址和IAP访问的逻辑地址,都应该是从0~512,难道这个也是反着的吗?明天实际试一下
回复

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-9-23 14:12 , Processed in 0.064524 second(s), 48 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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