关于EEPROM的问题
AI32G12K128中EEPROM可以在编程软件里设置,如果不设置EEPROM的大小,而直接利用IAP寄存器进行擦除,这样是否能够擦除呢?如果可以,这样操作不擦除用户程序会有什么影响吗?如果不行,是不是在编程的时候就会在ISP程序中设置可以擦除的范围呢?不设置,估计不能直接删除吧。且不会删除用户程序区。 不按芯片手册的方法,不是不可以,肯定,代码编写的难度,上来了,因为,有快捷键,你不要了 科学妞妞 发表于 2024-10-16 06:41
不按芯片手册的方法,不是不可以,肯定,代码编写的难度,上来了,因为,有快捷键,你不要了 ...
代码难度倒不是问题,主要是功能,如果内部有寄存器来限制IAP的操作范围,我想做OTA的话就做不了,做OTA升级某一部分程序而不是升级所有程序,需要有能用户自己擦除Flash的接口,像ST和TI都具备了能擦除Flash的一些库,用这些库就能开发Boot引导,构建自己的引导下载方式。 设置了EEPROM的范围/大小,就只系统ISP指定这块FLASH区域可以由用户APP通过IAP擦除、写入,否则用户APP只能读取。 Shoteen 发表于 2024-10-16 09:11
代码难度倒不是问题,主要是功能,如果内部有寄存器来限制IAP的操作范围,我想做OTA的话就做不了,做OTA ...
EEPROM大小设置保存在系统区,由系统区控制
只有EEPROM区可IAP,非EEPROM区(code区)受保护,避免意外被擦除
EEPROM大小设置还有另外的作用是由系统区自动管理起始地址,设置哪部分是EEPROM区,IAP对这部分区域操作的首地址都是0
IAP操作,是相对地址,从0开始,设置不同EEPROM大小,程序不需要修改
MOVC读,是绝对地址,要加上code区的offset,设置不同EEPROM大小,程序中要手动修改offset
OTA想要没有任何限制,可设置全部FLASH做EEPROM(EEPROM大小设置为最大值),则全部FLASH可由用户程序读写(IAP型号,EEPROM区是可执行的)
固定EEPROM大小的非IAP型号的EEPROM区我记得是不可以执行的,PC跳转过去会导致复位(可能是防止跑飞或者是防解密的安全机制) DebugLab 发表于 2024-10-16 12:50
EEPROM大小设置保存在系统区,由系统区控制
只有EEPROM区可IAP,非EEPROM区(code区)受保护,避免意外被 ...
那我明白了,感谢
页:
[1]