This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

AM263P4: How can I use Flash operation APIs (Flash_read, Flash_write, etc.) in region A to manipulate data physically located in region B (e.g., at 0x60500000)?

Part Number: AM263P4

When the SWAP feature is enabled with A and B partitions configured, actual testing revealed that after setting the active region to A (FSS_selectRegionA), calling Flash operation APIs like Flash_read to read data at offsets 0x100000 and 0x500000 always retrieves data from the physical address 0x60100000. Similarly, when set to region B, reading the same offsets (0x100000 and 0x500000) consistently returns data from the physical address 0x60500000.Specifically as follows:

This leads to a question: How can I use Flash operation APIs (Flash_readFlash_write, etc.) in region A to manipulate data physically located in region B (e.g., at 0x60500000)?

One approach I'm considering is that when operating in region A but needing to access region B Flash data, I would first switch to region B using FSS_selectRegionB, perform the necessary Flash operations, and then switch back to region A (FSS_selectRegionA) before exiting. Is this method feasible? Are there any other more reliable or simpler methods available?

Thank you very much for your answer!!

  • 您好,

    已经收到了您的案例,调查需要些时间,感谢您的耐心等待。

  • How can I use Flash operation APIs (Flash_readFlash_write, etc.) in region A to manipulate data physically located in region B (e.g., at 0x60500000)?

    The Flash APIs work agnostic of the FOTA IP, you still use the flash API with absolute offset

    One approach I'm considering is that when operating in region A but needing to access region B Flash data, I would first switch to region B using FSS_selectRegionB, perform the necessary Flash operations, and then switch back to region A (FSS_selectRegionA) before exiting. Is this method feasible? Are there any other more reliable or simpler methods available?

    My first question would be do you want to use FOTA IP or do you need just flash read writes only?

  • Question 1 Translation:
    "First question: I see the Flash API provided in the SDK uses an offset as the parameter instead of an absolute address. Could you specify which Flash API you referred to that requires an absolute address?"

    Question 2 Translation:
    "Second clarification: My FOTA implementation requires dual-partition (A/B) functionality, while also enabling full physical address space access from either Partition A or B. Please confirm if the approach remains consistent."

  • This would be the approach to physically write into the address at 0x6050000.

    With FOTA enabled, it would not be possible to write into this address when FSSA is enabled. You would need to switch to FSSB to write into this region.

  • First question: I see the Flash API provided in the SDK uses an offset as the parameter instead of an absolute address. Could you specify which Flash API you referred to that requires an absolute address?"

    Both the API's take the absolute offset. (Plase note, I had mentioned absolute offset), In the API address is calculated like - flash basea address(0x60000000)+offset.

    My FOTA implementation requires dual-partition (A/B) functionality, while also enabling full physical address space access from either Partition A or B. Please confirm if the approach remains consistent."

    I am not able to understand this?