8H的OTA升级不能跳转的疑问
总体介绍:根据官方串口升级案例,我准备低地址作用户ISP区(0x0000~0x2800),设为10K的CODE区;高地址区作用户APP区(设为EEPROM),APP区为正常的业务逻辑代码区,本次功能是让一个灯闪光,还划分了20K地址存从串口来的OTA数据一、app代码keil设置如下:
设置APP代码放到0x2803开始的地址
设置中断入口到0x2800
之后其它按默认设置,再写好程序生成hex文件
将生成的hex文件用STCISP打开,代码最前的3个字节进行了设置
按上面两图设置了复位地址,修改后的APP文件如下:
然后将上图的文件另存为BIN文件,供OTA使用
二、用户ISP代码的下载设置如下:
按以上设置,能下载成功,用户ISP代码大概8K,所以没超0x2800的code空间
三、用户ISP代码的KEIL如下设置
在工程中添加中断跳转地址,其它按默认设置不动
四、用户ISP代码说明
用户ISP代码初始化时已添加IAP_CONTR = 0x80;IAP_TPS = 44;用户ISP代码没有使用中断服务程序,使用查询中断接收串口数据,
并从中解析出用户APP的bin文件,再将bin文件写入0x2800开始的flash地址,此地址刚好是EEPROM的0地址,写入BIN完成后,再执行以下代码
IAP_CONTR = 0x20;
while(1);
那么问题来了,运行以上两行代码后,芯片又去执行用户ISP代码,无法跳转到用户APP代码,请问各位大神,是哪里设置出现问题了吗?谢谢你的解答。
你的代码是ISP跳ISP?
ISP跳APP
APP跳ISP,即复位
能否在ISP中使用串口中断和定时器中断。直接写中断程序时会出现如下:
如何解决这个问题。 jfocugzd 发表于 2025-7-1 20:34
能否在ISP中使用串口中断和定时器中断。直接写中断程序时会出现如下:
如何解决这个问题。 ...
一步一步来
先学习基础课程,掌握解决这些报错报警的能力:
《8051U深度入门到32位51大型实战视频》,【免费 + 包邮 送】实验箱@Ai8051U,100万套 - 字库生成,图片取模,串口绘图,串口助手,虚拟硬件,外部串行Flash编程 国芯技术交流网站 - AI32位8051交流社区
然后学习这些例程:
深圳国芯人工智能有限公司-在线升级
然后就可以搞一些骚操作了:
一种USER_ISP和USER_APP共用中断方法 - ISP下载/做自己的ISP 国芯技术交流网站 - AI32位8051交流社区
页:
[1]