一般对于某一行flash特殊使用简单的处理办法有2种:(建议使用第一种)
1. 在SWD更新时,这个部分flash将被更新,在其他更新方式(即只更新Application)的时候,不更新flash这个部分。
这个实现只需要将内部更新的flash access的范围进行设定即可,使用API void flash_set_access_limits (uint16_t start_row, uint16_t last_row, uint16_t md_row, uint16_t bl_last_row)。
2. 在SWD更新时跳过某一行。 Infineon提供了PPCLI进行自定义烧写,因为Infineon的HEX的校验(checksum)包括对每一行flash和整体flash。所以,如果在SWD烧写时不想要更新某一行,需要自定义时跳过相关的flash row,并且计算相对应的Checksum。相对应的API可以是:PSoC4_ProgramRow(IN rowID, nvector IN data)或者PSoC4_ProgramRowFromHex(IN rowID)进行更新,请不要使用标准参考代码里面的PSoC4_EraseAll()。
一般对于某一行flash特殊使用简单的处理办法有2种:(建议使用第一种)
1. 在SWD更新时,这个部分flash将被更新,在其他更新方式(即只更新Application)的时候,不更新flash这个部分。
这个实现只需要将内部更新的flash access的范围进行设定即可,使用API void flash_set_access_limits (uint16_t start_row, uint16_t last_row, uint16_t md_row, uint16_t bl_last_row)。
2. 在SWD更新时跳过某一行。 Infineon提供了PPCLI进行自定义烧写,因为Infineon的HEX的校验(checksum)包括对每一行flash和整体flash。所以,如果在SWD烧写时不想要更新某一行,需要自定义时跳过相关的flash row,并且计算相对应的Checksum。相对应的API可以是:PSoC4_ProgramRow(IN rowID, nvector IN data)或者PSoC4_ProgramRowFromHex(IN rowID)进行更新,请不要使用标准参考代码里面的PSoC4_EraseAll()。
举报