Hello,
I have created two projects in S32 DS, for M7_0 and M7_1, I have tested via debugger that both cores are executing the respective applications. Now I want to test by running both binaries from SD card.
Previously I have tried running one application with DCD and IVT setup and flashed via S32 Flashing tool. It works but I am not sure how to flash two binaries with the same workflow or will it be a different workflow altogether. The goal is to have them running out of SD card. In future there will be a total of 4 binaries for each M7 core.
Thanks,
Rizwan.
This is how I was able to boot both M7_0 and M7_1 binaries without NXP autosar bootloader:
The important point is that ROM does not boot two independent M7 application images for you. It loads one application image. So two separate .bin files cannot just be flashed independently and expected to boot together from SD.
What I did
My linker placements are:
M7_1 start/vector address is:
M7_0 entry address is:
So the combined payload has to look like this in memory:
This means you must create a padded combined binary. Simple concatenation is wrong unless the second image is linked immediately after the first one.
Why this is needed
ROM copies one contiguous application image to SRAM. If M7_1 is linked at a higher SRAM address, the gap between the two images must exist in the combined payload as padding.
So the image creation logic is:
My IVT/application values
For my current build:
Tools I used
I made a small Python helper plus a .bat wrapper:
The batch file runs the combine command directly and outputs:
I will attach/upload those files separately.
Important runtime note
Combining the binaries is only the image-loading part.
You still need correct multicore runtime behavior:
In my setup, M7_0 is responsible for releasing M7_1.