OpenOCD: how is psoc4_current_write.inc derived?

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
drewfustini
Level 3
Level 3
10 replies posted 10 sign-ins 5 replies posted

I see that there is a binary blob in openocd/contrib/loaders/flash/psoc4/psoc4_current_write.inc.

This data is referred to as containing the programming algorithm when it is included in the p4_current_algo[] array inside psoc_write_inner()It is then copied into a working area in the target memory.   

But I do not understand what exactly is in this binary blob. How is it derived?

I don't see any place in the psoc4.c code where a SROM request happens for PSOC4_CMD_WRITE_ROW (0x4). Thus I have been trying to understand how the data actually gets written to user flash.

I would appreciate any insights you can provide.

0 Likes
1 Solution
DheerajK_81
Moderator
Moderator
Moderator
First comment on KBA First comment on blog 5 questions asked

Hello @drewfustini ,

This binary data is a FlashLoader that performs flash programming. OpenOCD uploads this data to the RAM and executes it. The OpenOCD passes data to be programmed into flash to this FlashLoader. Using this technique OpenOCD can transfer data in large chunks which improves flash programming speed.

This binary data is basically compiled version of single C file: https://github.com/cypresssemiconductorco/openocd/blob/cypress/contrib/loaders/flash/psoc4/psoc4_wri...

All source files and a Makefile required to compile the binary are located in the same folder: https://github.com/cypresssemiconductorco/openocd/tree/cypress/contrib/loaders/flash/psoc4

Hope this helps 🙂

Regards,
Dheeraj

 

View solution in original post

1 Reply
DheerajK_81
Moderator
Moderator
Moderator
First comment on KBA First comment on blog 5 questions asked

Hello @drewfustini ,

This binary data is a FlashLoader that performs flash programming. OpenOCD uploads this data to the RAM and executes it. The OpenOCD passes data to be programmed into flash to this FlashLoader. Using this technique OpenOCD can transfer data in large chunks which improves flash programming speed.

This binary data is basically compiled version of single C file: https://github.com/cypresssemiconductorco/openocd/blob/cypress/contrib/loaders/flash/psoc4/psoc4_wri...

All source files and a Makefile required to compile the binary are located in the same folder: https://github.com/cypresssemiconductorco/openocd/tree/cypress/contrib/loaders/flash/psoc4

Hope this helps 🙂

Regards,
Dheeraj