[LPC55xx] Why FLASH Program cannot Success?

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

[LPC55xx] Why FLASH Program cannot Success?

[LPC55xx] Why FLASH Program cannot Success?

MCUXpresso SDK for LPC55xx uses FLASH API to implement FLASH drivers. Some user may meet issue when executes FLASH program code, for instance:

status = FLASH_Program(&flashInstance, destAdrss, (uint8_t *)s_bufferFF, 8);


After execution this code, nothing changed in the destination address, but error code 101 returns:

pastedImage_1.png

This error code looks new, as it doesn’t commonly exist in other older LPCs. If we check FLASH driver status code from UM, code 101 means FLASH_Alignment Error:

pastedImage_2.png

Alignment error Ah ha? ! Go back to the definition of FLASH_Program,

status_t FLASH_Program(flash_config_t *config, uint32_t start, uint32_t *src, uint32_t lengthInBytes);

New user often overlooks the UM description of this API “the required start and the lengthInBytes must be page size aligned”. That’s to say, to execute FLASH_Program function, both start address and the length must be 512 bytes-aligned. So if we modify

status = FLASH_Program(&flashInstance, destAdrss, (uint8_t *)s_bufferFF, 8);

To

status = FLASH_Program(&flashInstance, destAdrss, (uint8_t *)s_bufferFF, 512);

FLASH_Program can be successful.

 

!!NOTE: In old version of SDK2.6.x, the description of FLASH_Program says the start address and length are word-aligned which is not correct. The new SDK2.7.0 has fixed the typo. 

Keep in mind: Even you want to program 1 word, the lengInBytes is still 512 aligned, as same as destAdrss!

PS.

I always recommend my customer to check FLASH driver status code when meet problem with FLASH API. We can find it in UM11126, Chapter 9, FLASH API.

I extract here for your quickly browse:

pastedImage_3.png

 

Happy Programming

ラベル(1)
添付
100%が役に立ったと言っています (1/1)
バージョン履歴
最終更新日:
‎01-20-2020 02:00 AM
更新者: