templeton 发表于 2024-11-11 21:59:45

用户系统区操作eeprom的方法

一直没有找到官方的用户系统区操作eeprom的例程,自己就把这部分当作黑盒测试,有如下发现。



空间分布,地址从0000开始依次是用户程序区(ROM)、EEPROM、用户系统区。如下图所示:


在用户程序区,就是正常运行程序,按照官方例程可以通过IAP或MOV的方式正常操作EEPROM。
但是在用户系统区,就会出现问题。

经过反复测试发现,在用户系统区的程序可以通过IAP方式操作EEPROM,但是但是但是地址和通用的方式是不同的。
这里的地址要是绝对地址,也就是0xFF0000开始的地址。

假设ROM设置为52K,EEPROM为8K,用户系统区为4K。这里通过工具设置时,EEPROM要写12K。
EEPROM的首字节相对地址为0x0000,绝对地址为0xFFD000,
在ROM里使用IAP方式时是使用0x0000的,但是在用户系统区就要使用0xFFD000了。

并且在用户系统区的程序,可以直接操作0xFF0000---0xFFEFFF直接的空间(假设用户系统区为4K,这4K是被保护的),不需要考虑EEPROM的设置。

以上是个人测试发现的现象,由于水平有限,如有不当之处请谅解。

wlhet 发表于 2024-11-12 08:00:17

6️⃣,坐等官方回复

ercircle 发表于 2024-11-12 09:42:54

在“用户系统区”和“用户程序区”读写eeprom,代码上的差异是什么?能不能分享下学习学习。手册里貌似只能找到“用户程序区”读写eeprom方法。

templeton 发表于 2024-11-12 11:25:54

ercircle 发表于 2024-11-12 09:42
在“用户系统区”和“用户程序区”读写eeprom,代码上的差异是什么?能不能分享下学习学习。手册里貌似只能 ...
代码上没有差异,例程“19-通过串口发送命令读写EEPROM测试程序”就可以测试,区别是在两个操作空间运行时,eeprom的地址不同。
假设EEPROM的大小是4K,在用户程序区用IAP操作,对应的地址是0:0000h,而在用户系统区同样使用IAP操作,对应的地址需要改成FF:F000h。
页: [1]
查看完整版本: 用户系统区操作eeprom的方法