两个 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被擦除和修改。
两个 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被擦除和修改。
举报