找回密码
 立即注册
查看: 72|回复: 2

8H的OTA升级不能跳转的疑问

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2025-04-23 09:40:20
已绑定手机

1

主题

2

回帖

49

积分

新手上路

积分
49
发表于 2025-4-23 11:32:23 | 显示全部楼层 |阅读模式
总体介绍:根据官方串口升级案例,我准备低地址作用户ISP区(0x0000~0x2800),设为10K的CODE区;高地址区作用户APP区(设为EEPROM),APP区为正常的业务逻辑代码区,本次功能是让一个灯闪光,还划分了20K地址存从串口来的OTA数据

一、app代码keil设置如下:
设置APP代码放到0x2803开始的地址
截图202504231014441908.jpg
设置中断入口到0x2800
截图202504231015545389.jpg
之后其它按默认设置,再写好程序生成hex文件
将生成的hex文件用STCISP打开,代码最前的3个字节进行了设置
截图202504231020027010.jpg
截图202504231021351420.jpg
按上面两图设置了复位地址,修改后的APP文件如下:
截图202504231116274728.jpg
然后将上图的文件另存为BIN文件,供OTA使用
二、用户ISP代码的下载设置如下:
截图202504231128384181.jpg
按以上设置,能下载成功,用户ISP代码大概8K,所以没超0x2800的code空间
三、用户ISP代码的KEIL如下设置
截图202504231120179441.jpg
在工程中添加中断跳转地址,其它按默认设置不动
四、用户ISP代码说明
用户ISP代码初始化时已添加IAP_CONTR = 0x80;IAP_TPS = 44;用户ISP代码没有使用中断服务程序,使用查询中断接收串口数据,
并从中解析出用户APP的bin文件,再将bin文件写入0x2800开始的flash地址,此地址刚好是EEPROM的0地址,写入BIN完成后,再执行以下代码

                        IAP_CONTR = 0x20;
                        while(1);

那么问题来了,运行以上两行代码后,芯片又去执行用户ISP代码,无法跳转到用户APP代码,请问各位大神,是哪里设置出现问题了吗?谢谢你的解答。
回复

使用道具 举报 送花

3

主题

1160

回帖

1031

积分

等待验证会员

积分
1031
发表于 2025-4-23 11:33:00 | 显示全部楼层
关于STC8H的OTA升级不能跳转的问题,以下是一些可能的原因和解决方案,供您参考:

1. 地址设置问题
APP代码地址设置:您将APP代码的起始地址设置为0x2803,但中断入口地址设置为0x2800。这可能导致中断向量表与代码起始地址不匹配。建议将APP代码的起始地址设置为0x2800,以确保中断向量表与代码起始地址一致。
中断向量表设置:在Keil中,确保中断向量表的起始地址与APP代码的起始地址一致。如果中断向量表未正确设置,可能导致中断无法正常跳转。

2. 复位地址设置
复位地址设置:您在STCISP中设置了复位地址,但需要确保复位地址与APP代码的起始地址一致。如果复位地址设置不正确,可能导致程序无法正确跳转到APP代码。

3. IAPCONTR寄存器设置
IAPCONTR寄存器设置:在用户ISP代码中,您设置了IAPCONTR = 0x20;,这表示跳转到用户代码区。但需要确保在执行此操作之前,所有必要的初始化操作已完成,并且Flash写入操作已正确完成。

4. Flash写入操作
Flash写入操作:在将BIN文件写入Flash时,确保写入操作正确完成,并且没有发生错误。如果Flash写入操作失败,可能导致程序无法正确跳转。

5. 中断处理
中断处理:在用户ISP代码中,您没有使用中断服务程序,而是使用查询中断接收串口数据。确保在跳转到APP代码之前,所有中断已正确关闭或处理,以避免在跳转后发生中断冲突。

6. 代码优化
代码优化:在Keil中,确保代码优化设置不会影响程序的正常运行。某些优化设置可能导致代码行为异常,特别是在跳转和中断处理方面。

7. 调试与验证
调试与验证:使用调试工具(如Keil的调试器)逐步验证程序的执行流程,确保在跳转到APP代码之前,所有操作已正确完成。通过调试工具,可以更容易地发现问题所在。

8. 官方文档与示例
官方文档与示例:参考STC8H的官方文档和示例代码,确保您的设置和操作符合官方推荐的最佳实践。官方文档通常提供了详细的说明和示例,可以帮助您更好地理解和解决问题。

9. 硬件问题
硬件问题:检查硬件连接和电源稳定性,确保硬件没有故障。硬件问题也可能导致程序无法正常跳转。

10. 代码兼容性
代码兼容性:确保用户ISP代码和APP代码之间的兼容性,特别是在中断处理和内存使用方面。不兼容的代码可能导致程序无法正常跳转。

通过以上步骤,您可以逐步排查和解决STC8H的OTA升级不能跳转的问题。如果问题仍然存在,建议进一步详细分析代码和硬件配置,或寻求官方技术支持。

[本文内容由国芯人工智能辅助生成,仅供参考]
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:162
  • 最近打卡:2025-05-01 06:56:44
已绑定手机

56

主题

1319

回帖

2938

积分

荣誉版主

无情的代码机器

积分
2938
发表于 2025-4-23 13:46:42 | 显示全部楼层

你的代码是ISP跳ISP?

ISP跳APP

截图202504231345494119.jpg

APP跳ISP,即复位
截图202504231346128894.jpg

三天不学习,赶不上刘少奇~
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-2 00:25 , Processed in 0.118178 second(s), 60 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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