Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  1. Create a separate directory and clone the FreeRTOS repository:

    Code Block
    $ mkdir stm32h7-som
    $ cd stm32h7-som
    $ git clone https://gitlab.com/emcraft/STM32H7/STM32CubeH7.git -b emcraft-projects
    
  2. Start the STM32CubeIDE and select a workspace directory. The workspace directory is an arbitrary directory, different from the directory where your source file is located.

  3. Click File->Open Projects from File System:

    image-20241002-131123.png
  4. Select <STM32CubeH7 path>/freertos_stm32h7_som path and click Finish.

...

  1. In Project Explorer double click to the freertos_stm32h750_som.ioc file to activate the Device Configuration Tool:

    image-20241002-131329.pngImage Modified
  2. Click Project->Generate Code or press Alt-K to generate C-files from the .ioc file.

  3. Click Project->Build Project or press Ctrl-B to start building.

  4. Select the Console tab and check the output:

    image-20241002-131427.pngImage Modified
  5. If needed, find the executable binaries in the Debug subfolder of the FreeRTOS project directory.

...

  1. In order to program the application part of the freertos_stm32h7_som project to the QSPI Flash, use the external loader. The following procedure builds the mt25ql512abb_stm32h7_som external loader from the STM32CubeIDE in the same workspace, where the main demo project resides:

    1. Click File->Open Projects from File System:

      image-20241002-131512.png
    2. Select <STM32CubeH7 path>/mt25ql512abb_stm32h7_som path and click Finish.

    3. In Project Explorer double click to the mt25ql512abb_stm32h7_som.ioc file to activate the Device Configuration Tool:

      image-20241002-131750.png
    4. Click Project->Generate Code or press Alt-K to generate C-files from the .ioc file.

    5. Click Project->Build Project or press Ctrl-B to start building.

  2. In Project Explorer select the freertos_stm32h7_som project. Then click Run->Run Configurations...:

    image-20241002-131903.png
  3. Select STM32 C/C++ Application -> freertos_stm32h7_som Debug. Select the Debugger tab, scroll down and click Add... in the External loaders group:

    image-20241002-131956.png
  4. Click Workspace... and select MT25QL512A_STM32H7-SOM.stldr file:

    image-20241002-132019.pngImage Modified
  1. Apply changes and clone the Run Configurations... window.

  2. Click the Run button at the top panel to install the application to the target board and run it:

    image-20241002-132106.pngImage Modified
  3. The following prompt shall appear on the serial console:

    Code Block
    STM32H7 SOM FreeRTOS CLI, www.emcraft.com
    Type help to view a list of available commands.
    CLI>
    

7. Debugging the Project

Its is assumed that the MT25QL512A_STM32H7-SOM.stldr external loader is already added to the project's Run Configurations as per items 7.1 .. 7.5.

To support all debug features, the Watchdog timer (WDT) must be disabled in the project.

  1. The dedicated option SKIP_WDT_TASK is defined in main.h in order to quickly enable/disable WDT in the project. To disable WDT set this option to 1 and rebuild the project:

    image-20241002-132222.png
  2. Click the Debug button at the top panel to start debugging:

    image-20241002-132244.png
  3. Select Remember my decision and switch to the Debug Perspective if prompted:

    image-20241002-132304.png
  1. Wait for the STM32CubeIDE to write the firmware image to the target via ST-Link and stop at the main() function:

    image-20241002-132349.png

At this point SDRAM is not initialized yet. Only the code that is located in the internal Flash or internal RAM is available for setting breakpoints. If there were breakpoints set by a previous debug session which refer to SDRAM, they need to be deactivated. The breakpoints in SDRAM can be re-activated later, when the initialization code has been performed.

  • Set a breakpoint after the MX_QUADSPI_Init() function is done:

    image-20241002-132421.png

  • Proceed to execute the program.

  • When the program stops at the breakpoint set in the 2 steps above, the QUADSPI interface is initialized and the application code is copied to SDRAM, so you can use breakpoints in the application code. Let's set a breakpoint at the prvHelpCommand() function in the CLI driver:

    image-20241002-132443.png
  • Proceed to execute the program.

  • Switch to the terminal with the serial console and type the help command:

    Code Block
    STM32H7 SOM FreeRTOS CLI, www.emcraft.com
    Type help to view a list of available commands.
    CLI> help
    
  • Switch back to the debug session in the STM32CubeIDE. Make sure the execution is stopped at the breakpoint in the prvHelpCommand() function. Use the Step Over button to proceed the execution in a step-wise fashion:

    image-20241002-132501.png
  • Proceed to execute the program in a step-wise fashion, set up breakpoints, examine variables and so on.

...