pxc 发表于 2024-12-20 15:30:58

请问32G12K如何保证远程升级不破坏固定的eeprom参数?

<p>1.使用官方的用户ISP升级。</p>
<p>2.AP工程开了18K用户eeprom空间,0xFE0000~0xFE47FF;程序的开始空间地址为0xFE4800。</p>
<p><img src="data/attachment/forum/202412/20/152828ececrwi0bilrd2hl.png" alt="image.png" title="image.png" /></p>
<p>3.AP工程设置了18K eeprom,但是编译的hex虽然代码没放在前18K的位置,但是还是把前18K空间补上0xFF,并存放在hex中了,导致升级时清除了用户eeprom中的数据。该如何解决AP工程编译hex这个问题。</p>
<p><img src="data/attachment/forum/202412/20/153014tlm1dfl6mdcjfib5.png" alt="image.png" title="image.png" /></p>

DebugLab 发表于 2024-12-20 15:45:36

EEPROM一定是通过用户ISP清除的,那么修改用户ISP程序,不对这些地址操作就可以

DebugLab 发表于 2024-12-20 15:49:03


所有的擦除都是这个函数干的,调用它之前加个判断,不擦用户EEPROM区应该就可以了

DebugLab 发表于 2024-12-20 15:52:19


不该擦的区域在这个函数直接return 0也可以跳过擦除

pxc 发表于 2024-12-20 15:56:16

DebugLab 发表于 2024-12-20 15:49
所有的擦除都是这个函数干的,调用它之前加个判断,不擦用户EEPROM区应该就可以了

...

有2点疑问:
1.AP工程编译的hex有没有办法把用户eeprom空间补上的0xFF去掉。

2.如果我从isp中把擦除和写用户eeprom的地址去掉,烧写完后有没有读回机制,会不会判定下载失败

pxc 发表于 2024-12-20 16:08:38

pxc 发表于 2024-12-20 15:56
有2点疑问:
1.AP工程编译的hex有没有办法把用户eeprom空间补上的0xFF去掉。



验证了,通过改ISP,把用户eeprom中地址去除,可以下载成功,同时不会清除用eeprom;

那这就说明isp下载程序后,并没有再把flash中的代码读出来验证写没写正确,如果写错误,是不是会把芯片写成砖头。

DebugLab 发表于 2024-12-20 16:10:43

pxc 发表于 2024-12-20 15:56
有2点疑问:
1.AP工程编译的hex有没有办法把用户eeprom空间补上的0xFF去掉。



用FF:B800~FF:FFFF做EEPROM呢?

DebugLab 发表于 2024-12-20 16:13:48

pxc 发表于 2024-12-20 16:08
验证了,通过改ISP,把用户eeprom中地址去除,可以下载成功,同时不会清除用eeprom;

那这就说明isp下载 ...

那应该没有校验的,错误或无用户APP会在用户ISP等待下载吧,毕竟有DFU标志
黑砖肯定不可能,还有系统ISP呢,用官方的下载方式可以重新下载

pxc 发表于 2024-12-20 16:38:13

DebugLab 发表于 2024-12-20 16:10
用FF:B800~FF:FFFF做EEPROM呢?

我记得最初用这个片子的时候,好像在哪里看到了用户eeprom只能先从FE0000中开始划

DebugLab 发表于 2024-12-20 17:05:59

pxc 发表于 2024-12-20 16:38
我记得最初用这个片子的时候,好像在哪里看到了用户eeprom只能先从FE0000中开始划 ...
低地址对齐而已
基地址固定为FE0000H

下载用户ISP程序时直接设置128K EEPROM则全部FLASH可IAP

其他型号(32系列)是高地址对齐
最高地址固定为FFFFFFH

页: [1]
查看完整版本: 请问32G12K如何保证远程升级不破坏固定的eeprom参数?