hkzxc1991 发表于 2026-5-7 19:02:06

STC32G12K128 OTA升级

使用官方例程来举例问个问题
假设实际需求如下

1、先刷入stc_uart_user_isp.hex
2、使用AiCube-ISP-v6.96V-plus下载用户程序Demo.hex
3、再使用StcIsp_User.exe上位机下载Demo.hex

目前测试发现,第二步刷机完了之后isp程序也就被刷掉了,是否有什么方案可以保留isp程序
目前第二步下载的时候参数如下

soma 发表于 2026-5-7 19:42:14

把2个hex合并成1个hex

ercircle 发表于 2026-5-7 20:53:41

参考此贴:

一种简单合并ISP和APP程序文件的方法 - ISP下载/做自己的ISP 国芯人工智能技术交流网站 - AI32位8051交流社区

乘风飞扬 发表于 2026-5-8 09:06:14

狂热主宰 发表于 2026-5-8 10:11:24

设置eeprom大小128k可能多了些
{:4_164:}

hkzxc1991 发表于 2026-5-9 12:45:05

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");
}

ercircle 发表于 2026-5-9 14:06:42

hkzxc1991 发表于 2026-5-9 12:45
大佬,再咨询一下
目前空间分配如下
FF:1000H到FF:FFFFH---用户程序区A


首先你这个空间分配仔细看有重叠

其次iap擦写操作相对地址0开始,读如果用的指针是绝对地址

仔细看下手册EEPROM章节,先做单元测试,基本函数功能逻辑对了再集成。


hkzxc1991 发表于 2026-5-9 14:37:59

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

hkzxc1991 发表于 2026-5-9 15:56:39

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是没问题的是吧

ercircle 发表于 2026-5-9 16:14:02

hkzxc1991 发表于 2026-5-9 15:56
不好意思,写错了,实际是这样分配的
FF:1000H到FF:FFFFH---用户程序区A
FF:0000H到FF:0FFFH---的isp区 ...

eprom设置:
一个是看你哪些区初次下载后不动

一个是看isp区放在哪

EEPROM由0xFE0000开始分配空间,isp区又在中间,当前这种分区模式,只能选128K。就是整片可擦写。


页: [1] 2
查看完整版本: STC32G12K128 OTA升级