cancel
Showing results for 
Search instead for 
Did you mean: 

STM32N6570-DK boot from external flash error

lou_v
Associate

Hello,

I’m working with an STM32N6570-DK, and I’m trying to run a very simple LED-blinking application as part of the FSBL.

When I debug the project using STM32CubeIDE, everything works correctly and the LED blinks as expected.

Next, I want to flash the FSBL application to the external flash, so I generated the header using the following command:

STM32_SigningTool_CLI.exe -bin N6test_FSBL.bin -nk -of 0x80000000 -t fsbl -o N6test_FSBL-trusted.bin -hv 2.3 -dump N6test_FSBL-trusted.bin

I then put the board into DEV mode, connected with STM32CubeProgrammer, and flashed the image at address 0x70000000.

After disconnecting, switching to FLASH mode, and resetting the board, nothing happens. The LED does not blink.

Does anyone know what I might be missing or misconfiguring?

Thanks for your help.

9 REPLIES 9
STackPointer64
ST Employee

Hello @lou_v, and welcome to ST Community,

I suggest you refer to this article by Bruno, which explains the steps needed to execute from flash and the required configuration very well: How to execute code from the external serial NOR using the STM32N6 

Best regards,

To improve visibility of answered topics, please click 'Accept as Solution' on the reply that resolved your issue or answered your question.

Hello @STackPointer64 ,

Thank you for your answer and for the link to Bruno’s article.

I think I may not have explained my issue clearly enough.
What I want is to place my application directly inside the FSBL, and have the ROM code load the FSBL into RAM at boot, so that the application runs immediately afterward.

In other words, I am not trying to execute my code from external flash.
I want to keep the usual FSBL flow, but include a very simple LED-blink application inside it, and have the boot ROM copy the FSBL to RAM and execute it as expected.

I followed the standard FSBL generation process, the image works when debugging under STM32CubeIDE, but after flashing the trusted FSBL image, nothing runs (no LED blink).

Do you know what could prevent the FSBL from being copied and executed properly by the ROM code? Or any specific configuration that must be set when embedding an application inside the FSBL?

Thanks again for your help.

STackPointer64
ST Employee

Hello @lou_v,

Are you signing your binary after it is built in STM32CubeIDE? Because I saw that you already have a post-build command that signs your binary after each build, so you might be signing it twice.

If not, I managed to make it work the way you wanted by following these steps:

  1. Build the application. Inside the debug folder, I find a signed binary thanks to the post-build command.
  2. Put the board in dev mode (BOOT1 switch position: 2-3; BOOT0 switch position does not matter) and plug the board in.
  3. Connect using STM32CubeProgrammer.
  4. Open the External Loader from the icon in the bottom left corner, search for the STM32N6 external loader for the Discovery board for NOR FLASH, not NAND FLASH.
  5. Select the signed binary in the "Erasing & Programming" tab, set the address to 0x70000000, and check the "Verify programming" box.
  6. Start programming.
  7. Unplug the board, set the boot mode to boot from external Flash (BOOT0 switch position: 1-2; BOOT1 switch position: 1-2).
  8. Plug the board back in, and it works.

Please compare these steps with yours and let me know if this solves your issue.

Best regards,

To improve visibility of answered topics, please click 'Accept as Solution' on the reply that resolved your issue or answered your question.
STackPointer64
ST Employee

Additionally, the correct article you are looking for is by Bruno. It explains the details about Load and Run mode using FSBL: How to create an STM32N6 FSBL load and run 

To improve visibility of answered topics, please click 'Accept as Solution' on the reply that resolved your issue or answered your question.
digilog
Associate II

Hi I am having the exact same problem!

I have followed Brunos explanation to the letter but nothing runs from Flash.

I have tried almost every STM32N6570-DK example with the same results.

All the examples run in debug mode from STM32CubeX IDE without a problem.

I can load prebuilt fsbl and Appl binaries into flash and these do boot OK so there must be something wrong with the build process of the fsbl.

If you are able to build and load the examples and have them boot from flash then there has to be some option in the build/link options that must be set for this to work?

I have spent a lot of hours trying to get this to work and every reference always points to the same documentation that I have spent hours pouring over and keep coming up with the same result.

How can this problem be resolved????

STackPointer64
ST Employee

@digilog,  were there any errors encountered during the firmware programming? Did you use the appropriate external loader? Have you tried following the steps I mentioned above?

To improve visibility of answered topics, please click 'Accept as Solution' on the reply that resolved your issue or answered your question.
erik71
Associate II

STM32_SigningTool_CLI.exe - align -bin N6test_FSBL.bin -nk -of 0x80000000 -t fsbl -o N6test_FSBL-trusted.bin -hv 2.3 -dump N6test_FSBL-trusted.bin

 

Use this command

erik71
Associate II

If you are using STM32_SigningTool_CLI.exe version 2.21.0 you must use -align.

digilog
Associate II

Yes I finally came across a document that mentioned using -align when using STM32_SigningTool_CLI.exe version 2.21.0 and this seems to have solved the problem.

Using the STM32N6570-DK kit for the first time and installing all the latest versions of tools did not go well with most of the documentation and example code posted online!