STC32G12K128 OTA升级
使用官方例程来举例问个问题假设实际需求如下
1、先刷入stc_uart_user_isp.hex
2、使用AiCube-ISP-v6.96V-plus下载用户程序Demo.hex
3、再使用StcIsp_User.exe上位机下载Demo.hex
目前测试发现,第二步刷机完了之后isp程序也就被刷掉了,是否有什么方案可以保留isp程序
目前第二步下载的时候参数如下
把2个hex合并成1个hex 参考此贴:
一种简单合并ISP和APP程序文件的方法 - ISP下载/做自己的ISP 国芯人工智能技术交流网站 - AI32位8051交流社区
设置eeprom大小128k可能多了些
{:4_164:}
ercircle 发表于 2026-5-7 20:53
参考此贴:
一种简单合并ISP和APP程序文件的方法 - ISP下载/做自己的ISP 国芯人工智能技术交流网站 - AI32 ...
大佬,再咨询一下
目前空间分配如下
FF:1000H到FF:FFFFH---用户程序区A
FF:0FFFH到FF:FFFFH---的isp区B
FE:1000H到FE:FFFFH---用于缓存用户程序区C
FE:0FFFH到FE:FFFFH---用户程序存储数据区域D
OTA流程是:用户程序A把升级包写入C,然后进入isp,把C的数据拷贝到A
现在参考视频教程把用户程序和isp合并成同一个bin文件。使用AiCube-ISP-v6.96V-plus下载时。
eeprom大小应该设置多大?我设置64k之后可以正常启动程序,进入isp,但是擦除用户程序区A时数据擦除不了,(代码中做了擦除,但是还会进入原有的用户代码)
static void dfu_erase_app()
{
u32 addr;
printf("Erase APP...\r\n");
addr = 0x11000;
while (addr < 0x20000 )
{
iap_erase_page(addr);
addr += 0x200;
}
printf("Erase Done\r\n");
}
hkzxc1991 发表于 2026-5-9 12:45
大佬,再咨询一下
目前空间分配如下
FF:1000H到FF:FFFFH---用户程序区A
首先你这个空间分配仔细看有重叠
其次iap擦写操作相对地址0开始,读如果用的指针是绝对地址
仔细看下手册EEPROM章节,先做单元测试,基本函数功能逻辑对了再集成。
ercircle 发表于 2026-5-9 14:06
首先你这个空间分配仔细看有重叠
其次iap擦写操作相对地址0开始,读如果用的指针是绝对地址
不好意思,写错了,实际是这样分配的
FF:1000H到FF:FFFFH---用户程序区A
FF:0000H到FF:0FFFH---的isp区B
FE:1000H到FE:FFFFH---用于缓存用户程序区C
FE:0000H到FE:0FFFH---用户程序存储数据区域D ercircle 发表于 2026-5-9 14:06
首先你这个空间分配仔细看有重叠
其次iap擦写操作相对地址0开始,读如果用的指针是绝对地址
不好意思,写错了,实际是这样分配的
FF:1000H到FF:FFFFH---用户程序区A
FF:0000H到FF:0FFFH---的isp区B
FE:1000H到FE:FFFFH---用于缓存用户程序区C
FE:0000H到FE:0FFFH---用户程序存储数据区域D,这样的话,我下载时eprom设置64kb是没问题的是吧 hkzxc1991 发表于 2026-5-9 15:56
不好意思,写错了,实际是这样分配的
FF:1000H到FF:FFFFH---用户程序区A
FF:0000H到FF:0FFFH---的isp区 ...
eprom设置:
一个是看你哪些区初次下载后不动
一个是看isp区放在哪
EEPROM由0xFE0000开始分配空间,isp区又在中间,当前这种分区模式,只能选128K。就是整片可擦写。
页:
[1]
2