单片机/MCUwilliam hill官网
直播中

李红

7年用户 1293经验值
私信 关注

双应用的bootloadable程序,EEPROM怎样指向同一个地址?

我的bootloader程序 选的是Dual-application bootloader双应用,同时我的两个bootloadable程序都有EEPROM组件保存数据,我现在需要两个bootloadable程序中的EEPROM指向同一个地址,这样boot升级后,新的程序可以调用以前保存的数据,附件是我的bootloader和bootloadable工程
                                                                                                                                                                                                                                                                                                                                                                                                

回帖(1)

张璨

2024-2-6 15:51:54
两个 EEPROM 组件时不能映射到同一个目标地址的,这样操作编译器不允许,如果非要这么操作的话,那么你就不能使用 EEPROM 组件了,而是自己定义一个数组,把这个数组放置在 bootloader 和 application 之间的空白共享区域,这样操作时有可行性的,但是较为复杂。PSOC4100S PLUS 在 SFLASH 中为用户保留了四行一共 1024 bytes 的空间,供客户存放数据。这个 SFLASH 区域即使芯片擦除也不会被擦除掉。Creator 在 cy_boot-->CyFlash.c 中也为客户定义了 SFLASH 行的写操作 API  CySysSFlashWriteUserRow(), 用法可以参考附件工程。这段 user SFLASH 的地址区间时 0x0FFF F400 ~ 0x0FFF F7FF 一共4行 2014 bytes。写操作使用 CySysSFlashWriteUserRow() 直接指定行数(0/1/2/3)即可,读操作使用指针直接读取地址即可。 使用这种方法你就不需要再 bootlodable 组件中使用任何 EEPROM组件了,而且也不用担心芯片擦除或boot过程中EEPROM被擦除和修改。   
举报

更多回帖

发帖
×
20
完善资料,
赚取积分