Looks good to me.
On Wed, May 18, 2022 at 1:02 PM Karel Gardas <karel@functional.vision> wrote: > > This patch adds kind of HOWTO to the stm32h7 BSP description. The howto > discusses various tools from STM tool-chain and how to use them in order > to configure board for RTEMS and to upload RTEMS application binary > to the board. The patch also adds more supported boards to the table. > > Sponsored-By: Precidata > --- > user/bsps/arm/stm32h7.rst | 544 ++++++++++++++++++++++++++++++++++++-- > 1 file changed, 528 insertions(+), 16 deletions(-) > > diff --git a/user/bsps/arm/stm32h7.rst b/user/bsps/arm/stm32h7.rst > index b508595..ec7440f 100644 > --- a/user/bsps/arm/stm32h7.rst > +++ b/user/bsps/arm/stm32h7.rst > @@ -2,16 +2,36 @@ > > .. Copyright (C) 2020 embedded brains GmbH > > +.. Copyright (C) 2022 Karel Gardas <karel@functional.vision> > + > stm32h7 > ======= > > This BSP supports the > `STM32H7 Series > <https://www.st.com/en/microcontrollers-microprocessors/stm32h7-series.html>`_. > > -The BSP is known to run on these boards: > +The BSP is known to run on these boards on specified core with using > specified BSP variant. > + > +.. table:: > + > + > +----------------------------------------------------------------------------------+-----------+------------------------+ > + | Board name > | Core name | BSP variant name | > + > +==================================================================================+===========+========================+ > + |`STM32H743I-EVAL 2 > <https://www.st.com/en/evaluation-tools/stm32h743i-eval.html>`_| M7 | > arm/stm32h7 | > + > +----------------------------------------------------------------------------------+-----------+------------------------+ > + |`STM32H743ZI-Nucleo > <https://www.st.com/en/evaluation-tools/nucleo-h743zi.html>`_ | M7 | > arm/nucleo-h743zi | > + > +----------------------------------------------------------------------------------+-----------+------------------------+ > + |`STM32H7B3I-DK > <https://www.st.com/en/evaluation-tools/stm32h7b3i-dk.html>`_ | M7 > | arm/stm32h7b3i-dk | > + > +----------------------------------------------------------------------------------+-----------+------------------------+ > + |`STM32H757I-EVAL > <https://www.st.com/en/evaluation-tools/stm32h757i-eval.html>`_ | M7 > | arm/stm32h757i-eval | > + | > +-----------+------------------------+ > + | > | M4 | arm/stm32h757i-eval-m4 | > + > +----------------------------------------------------------------------------------+-----------+------------------------+ > + |`STM32H747I-DISCO > <https://www.st.com/en/evaluation-tools/stm32h747i-disco.html>`_| M7 | > arm/stm32h747i-disco | > + | > +-----------+------------------------+ > + | > | M4 | arm/stm32h747i-disco-m4| > + > +----------------------------------------------------------------------------------+-----------+------------------------+ > > -* `STM32H743I-EVAL 2 > <https://www.st.com/en/evaluation-tools/stm32h743i-eval.html>`_ > -* `STM32H743ZI-Nucleo > <https://www.st.com/en/evaluation-tools/nucleo-h743zi.html>`_ > > Clock Driver > ------------ > @@ -23,20 +43,28 @@ boards, so it is recommended to check the default values > of the BSP. > Console Driver > -------------- > > -The console driver supports the on-chip UART and USART modules. > -Different board variations use different GPIO pins and blocks for the default > -communication UART and it is recommended to check whether the default > -configuration provided is valid in the BSP. > +The console driver supports the on-chip UART and USART modules. Even > +the MCU supports about 10 U(S)ARTs, only those supported by the chosen > +board are enabled by default configuration. The board needs to support > +some kind of connector-based connection to the U(S)ART in order for the > +feature to be considered supported here. > +.. > +.. Leaving previous notes here as a comment. They may still be useful > +.. and incorporated into the later version of the document. > +.. > +.. Different board variations use different GPIO pins and blocks for the > default > +.. communication UART and it is recommended to check whether the default > +.. configuration provided is valid in the BSP. > > -To specify that the BSP should be built for the STM32H743ZI-Nucleo board, > -users can supply ``STM32H743ZI_NUCLEO = True`` to ``config.ini`` when > -building the BSP. > +.. To specify that the BSP should be built for the STM32H743ZI-Nucleo board, > +.. users can supply ``STM32H743ZI_NUCLEO = True`` to ``config.ini`` when > +.. building the BSP. > > -Alternatively, users can supply the configuration structs defined in > ``hal.h`` > -in the application for other boards. For the console driver, the > -``stm32h7_usartX_config`` structs are used to configure the GPIO pins and > other > -parameters. The default implementations can be found in > -``bsps/arm/stm32ht/console`` in the RTEMS sources. > +.. Alternatively, users can supply the configuration structs defined in > ``hal.h`` > +.. in the application for other boards. For the console driver, the > +.. ``stm32h7_usartX_config`` structs are used to configure the GPIO pins and > other > +.. parameters. The default implementations can be found in > +.. ``bsps/arm/stm32ht/console`` in the RTEMS sources. > > Network Interface Driver > ------------------------ > @@ -70,6 +98,490 @@ Known limitations: > for UHS cards are not available. All cards fall back to High Speed > transfers. > * The driver uses the IDMA only. MDMA is currently not implemented. For > SDMMC1 > that means that the memory buffers can only come from AXI SRAM, QSPI > memory, > - Flash or the FMC (SDRAM, ...). The internal SRAM1, SRAM2, SRAM3 and SRAM4 > is > + Flash or the FMC (SDRAM, ...). The internal SRAM1, SRAM2, SRAM3 and SRAM4 > are > not supported. SDMMC2 should not have that limitation. See ST AN5200 > "Getting > started with STM32H7 Series SDMMC host controller" for more details. > + > + > +How to run RTEMS on the board > +----------------------------- > +Following few paragraphs save a purpose of simple HOWTO or a quick > +starting guide for the users not versed in STM32 toolchain and their > +boards workflow. > + > +Board hardware setup > +^^^^^^^^^^^^^^^^^^^^ > +Connect board with the host computer using micro-USB cable connected > +to micro-USB connector on the board marked with 'ST-LINK V3E' in case of > evaluation > +and discovery boards or with 'USB PWR' in case of Nucleo board. > + > +STM32CubeIDE installation > +^^^^^^^^^^^^^^^^^^^^^^^^^ > +Download and install STM32CubeIDE from > +https://www.st.com/en/development-tools/stm32cubeide.html. Install the > +software into the user directory. On Linux install with 'sudo' command > +to install as a root since as part of the installation USB permissions > +rules for ST-Link GDB server are also installed. The reason for > +installing into the user directory is that the IDE is based on > +Eclipse, which provides > +its own update method and this will not work well in case of read-only > +access to the installation directory. In case of any troubles consult > +installation manual provided by ST here > https://www.st.com/resource/en/user_manual/um2563-stm32cubeide-installation-guide-stmicroelectronics.pdf. > +Although we will not used full fledged IDE here, the package provides > ST-Link GDB Server which will be used for uploading RTEMS binaries to the > board > +memory. > + > +STM32CubeProgrammer installation > +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > +Download and install STM32CubeProgrammer from > +https://www.st.com/en/development-tools/stm32cubeprog.html. We will > +use this software for board setup required for RTEMS and later when > +something goes wrong to delete content of the MCU flash memory. The > +software is also internally used by the ST-Link GDB Server from > +STM32CubeIDE so it is crucial to have it installed. > + > +Board ST-Link firmware upgrade > +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > +Download ST-Link board firmware upgrade package from > +https://www.st.com/en/development-tools/stsw-link007.html. The > +software is distributed in a form of Java jar file for Linux and Mac > +OSX and in a form of Windows binary for MS Windows. Unpack it > +somewhere and run it with > + > +.. code-block:: shell > + > + $ unzip en.stsw-link007-v3-9-3_v3.9.3.zip > + $ cd stsw-link007/AllPlatforms > + $ java -jar STLinkUpgrade.jar > + > +Click on *Open in update mode* button and then if *Version* and *Update > +to Firmware* version information are different in shown version number/code, > click on *Upgrade* > +button and wait till upgrade finishes. > + > +.. note: On Linux you will need to have libusb library installed in > + order to make upgrade process working. On Ubuntu 20.04 LTS you can do > + that with following command. > + > +.. code-block:: shell > + > + $ sudo apt install libusb-1.0-0 > + > + > +Dual core board setup for RTEMS > +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > +Current RTEMS BSP supports > +running MCU in a single-core mode only on either M7 core or M4 > +core. That means that to not leave other core interfering with the > +system we either need to upload short infinite loop code to it or we > +may switch off the core completely. The second option is what is > +described here. The board by default switches on and starts both > +cores. Based on chosen BSP variant you may like to switch off other > +core with using STMCubeProgrammer tool. > +Go to the directory where you have installed STMCubeProgrammer > +software and run it with > + > +.. code-block:: shell > + > + $ cd bin > + $ ./STM32CubeProgrammer > + > + > +.. important:: It is absolutely necessary you will do that from inside the > bin > + directory where STM32CubeProgrammer binary resides. If you don't, then > + programmer UI will crash on attempt to connect to the board. Probable > + reason is a bug in the programmer which is not able to correctly locate > + its C dynamic library responsible for connecting to the ST-Link board > + interface. Version 2.9.0 of the programmer is described here. Other > + versions may behave a bit differently. > + > +When you start the programmer application, the UI window of the programmer > will > +appear. > +Click on green *Connect* button in the right upper corner of > +the UI. This will connect programmer to the board. > +Then click on *OB* > +icon in the left upper corner. Actually this is hidden menu item which you > +can un-hide by clicking on menu icon (three horizontal stripes) in the > +upper left corner. > +When you click on *OB* or *Option bytes* in un-hidden state, then > +click on *User Configuration* in the options list and when the user > +configuration list opens > +unselect preselected *BCM4* item inside it to switch off M4 core or > +unselect preselected *BCM7* item to switch off M7 core from > +starting up. The action needs to be saved by clicking on *Apply* button > +below the option table. > + > +.. warning:: Be careful! Wrong setup in STM32H7 configuration may result in > + *bricked* board. > + > +Do not forget to disconnect the programmer application from the board by > clicking on green *Disconnect* button > +in the upper right corner and then close the programmer UI. > + > +.. important:: If you keep programmer connected then you will not be able > + to connect ST-Link GDB server to the board and upload RTEMS binary to > + it. > + > + > +STM32CubeIDE ST-Link GDB Server setup > +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > +In order to use STM provided ST-Link GDB server externally, that is > +not from inside the IDE, we need to configure it. Please go to the > +directory where you have installed STM32CubeIDE software. Look for > +file containing *ST-LINK* string inside its name. Following shell > +command sequence shows example about how to find it. > + > +.. code-block:: shell > + > + $ cd $HOME/sfw/stm32cubeide_1.8.0 > + $ find . -name 'ST-LINK*' > + > ./plugins/com.st.stm32cube.ide.mcu.externaltools.stlink-gdb-server.linux64_2.0.200.202202231230/tools/bin/ST-LINK_gdbserver.sh > + > ./plugins/com.st.stm32cube.ide.mcu.externaltools.stlink-gdb-server.linux64_2.0.200.202202231230/tools/bin/ST-LINK_gdbserver > + > ./plugins/com.st.stm32cube.ide.mcu.externaltools.stlink-gdb-server.linux64_2.0.100.202109301221/tools/bin/ST-LINK_gdbserver.sh > + > ./plugins/com.st.stm32cube.ide.mcu.externaltools.stlink-gdb-server.linux64_2.0.100.202109301221/tools/bin/ST-LINK_gdbserver > + > +Notice that in this particular installation case we already have two > +versions of GDB server installed. This is due to fact that version > +1.8.0 of the IDE was later upgraded to 1.9.0 version. Anyway, we will choose > +to use the latest one, or if there is only one, then the only one > +installed. Please go to its *bin* directory. E.g. > + > +.. code-block:: shell > + > + $ cd > plugins/com.st.stm32cube.ide.mcu.externaltools.stlink-gdb-server.linux64_2.0.200.202202231230/tools/bin > + > +Now, you will need to edit provided *config.txt* file inside the > +directory. Use your favorite editor. Open the file and scrolls > +down to its end. You will see following comment: > + > +.. code-block:: none > + > + > ############################################################### > + # -cp <path> : Path to STM32CubeProgrammer > + # Modify to correct path > + # for STM32_Programmer_CLI executable > + > ############################################################### > + -cp > + > +and here you will need to place path where your STM32CubeProgrammer is > +installed directly behind the *-cp* parameter. E.g. > + > +.. code-block:: none > + > + > ############################################################### > + # -cp <path> : Path to STM32CubeProgrammer > + # Modify to correct path > + # for STM32_Programmer_CLI executable > + > ############################################################### > + -cp > /home/karel/sfw/stm32cubeide_1.8.0/plugins/com.st.stm32cube.ide.mcu.externaltools.cubeprogrammer.linux64_2.0.200.202202231230/tools/bin > + > +Once you are done with it, you can save the file and close the > +editor. Let's verify that GDB server is configured and running well by > starting > +it inside the shell. Please go inside the directory where > +ST-LINK_gdbserver.sh is located and run it by: > + > +.. code-block:: shell > + > + $ ./ST-LINK_gdbserver.sh > + > +If everything is all right and if you have board still connected to > +the host computer then you should see output like following: > + > +.. code-block:: shell > + > + $ ./ST-LINK_gdbserver.sh > + > + STMicroelectronics ST-LINK GDB server. Version 6.1.0 > + Copyright (c) 2022, STMicroelectronics. All rights reserved. > + > + Starting server with the following options: > + Persistent Mode : Enabled > + LogFile Name : debug.log > + Logging Level : 31 > + Listen Port Number : 61234 > + Status Refresh Delay : 15s > + Verbose Mode : Disabled > + SWD Debug : Enabled > + > + COM frequency = 24000 kHz > + Target connection mode: Default > + Reading ROM table for AP 0 @0xe00fefd0 > + Hardware watchpoint supported by the target > + ST-LINK Firmware version : V3J9M3 > + Device ID: 0x450 > + PC: 0x8028fa4 > + ST-LINK device status: HALT_MODE > + ST-LINK detects target voltage = 3.28 V > + ST-LINK device status: HALT_MODE > + ST-LINK device initialization OK > + Stm32Device, pollAndNotify running... > + SwvSrv state change: 0 -> 1 > + Waiting for connection on port 61235... > + Waiting for debugger connection... > + Waiting for connection on port 61234... > + > +In output above you can see ST-Link GDB server waiting for debugger > +connection. If this is the case in your case, then you can finish GDB server > by hitting > +*Ctrl-C* key combination. > + > +RTEMS BSP samples build and run > +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > +We will use STM32H747I-DISCO board as an example hereafter. If you use > +different board please adjust configuration steps in BSP configuration > +accordingly. You should use BSP variant name specified for your > +particular board in the table above. > + > +Generate default configuration for the board: > + > +.. code-block:: shell > + > + $ ./waf bsp_defaults --rtems-bsps=arm/stm32h747i-disco > > stm32h747i-disco.ini > + Regenerate build specification cache (needs a couple of > seconds)... > + > +To run basic hello world or ticker samples you do not need to modify > +default BSP configuration here as the compilation of basic RTEMS demo > samples is > +enabled by default. Let's continue with configuration of > +the RTEMS source by running following command. Please change the RTEMS > +tools installation prefix to suite your installation. > + > +.. code-block:: shell > + > + $ ./waf configure --rtems-bsps=arm/stm32h747i-disco > --rtems-config=./stm32h747i-disco.ini > --rtems-tools=$HOME/workspace/rtems-tools > + Setting top to : > /home/rtems/workspace/rtems > + Setting out to : > /home/rtems/workspace/rtems/build > + Configure board support package (BSP) : > arm/stm32h747i-disco > + Checking for program 'arm-rtems6-gcc' : > /home/rtems/workspace/rtems-tools/bin/arm-rtems6-gcc > + Checking for program 'arm-rtems6-g++' : > /home/rtems/workspace/rtems-tools/bin/arm-rtems6-g++ > + Checking for program 'arm-rtems6-ar' : > /home/rtems/workspace/rtems-tools/bin/arm-rtems6-ar > + Checking for program 'arm-rtems6-ld' : > /home/rtems/workspace/rtems-tools/bin/arm-rtems6-ld > + Checking for program 'ar' : > /home/rtems/workspace/rtems-tools/bin/arm-rtems6-ar > + Checking for program 'g++, c++' : > /home/rtems/workspace/rtems-tools/bin/arm-rtems6-g++ > + Checking for program 'ar' : > /home/rtems/workspace/rtems-tools/bin/arm-rtems6-ar > + Checking for program 'gas, gcc' : > /home/rtems/workspace/rtems-tools/bin/arm-rtems6-gcc > + Checking for program 'ar' : > /home/rtems/workspace/rtems-tools/bin/arm-rtems6-ar > + Checking for program 'gcc, cc' : > /home/rtems/workspace/rtems-tools/bin/arm-rtems6-gcc > + Checking for program 'ar' : > /home/rtems/workspace/rtems-tools/bin/arm-rtems6-ar > + Checking for asm flags '-MMD' : yes > + Checking for c flags '-MMD' : yes > + Checking for cxx flags '-MMD' : yes > + 'configure' finished successfully (0.454s) > + > +Build the BSP including samples using *build* command: > + > +.. code-block:: shell > + > + $ ./waf build > + > +the command outputs a lot of information about files being compiled > +and ends with output like: > + > +.. code-block:: shell > + > + Waf: Leaving directory > `/home/rtems/workspace/rtems/build/arm/stm32h747i-disco' > + 'build_arm/stm32h747i-disco' finished successfully (12.086s) > + > +As your RTEMS BSP including samples is compiled, we will proceed with > +running the hello world sample on the board now. > +Open 3 shell windows for the test on the host computer. Also make sure > +board is connected to the computer and is running. It does not matter > +if manufacturer's demo is running there or if you navigated to some > +demo part and left it there. ST-Link GDB server always takes over the > +board when connected to it. > + > +Start GDB server in the first window by switching to GDB server > +directory and running the shell script. This is from testing machine > +installation, the path to GDB server will probably look different in your > +installation case. > + > +.. code-block:: shell > + > + $ cd > sfw/stm32cubeide_1.8.0/plugins/com.st.stm32cube.ide.mcu.externaltools.stlink-gdb-server.linux64_2.0.200.202202231230/tools/bin > + $ ./ST-LINK_gdbserver.sh > + > + STMicroelectronics ST-LINK GDB server. Version 6.1.0 > + Copyright (c) 2022, STMicroelectronics. All rights reserved. > + > + Starting server with the following options: > + Persistent Mode : Enabled > + LogFile Name : debug.log > + Logging Level : 31 > + Listen Port Number : 61234 > + Status Refresh Delay : 15s > + Verbose Mode : Disabled > + SWD Debug : Enabled > + > + COM frequency = 24000 kHz > + Target connection mode: Default > + Reading ROM table for AP 0 @0xe00fefd0 > + Hardware watchpoint supported by the target > + ST-LINK Firmware version : V3J9M3 > + Device ID: 0x450 > + PC: 0x8028fa4 > + ST-LINK device status: HALT_MODE > + ST-LINK detects target voltage = 3.28 V > + ST-LINK device status: HALT_MODE > + ST-LINK device initialization OK > + Stm32Device, pollAndNotify running... > + SwvSrv state change: 0 -> 1 > + Waiting for connection on port 61235... > + Waiting for debugger connection... > + Waiting for connection on port 61234... > + > +In second shell window you will need to run your terminal program and > +connect to the board virtual serial port. Following steps describes > +how to do that on the Ubuntu 20.04. The recommended way here is to use > minicom. Let's install it > +first by: > + > +.. code-block:: shell > + > + $ sudo apt install minicom > + > +And run it with root privileges to be able to reach USB serial port > +provided by board: > + > +.. code-block:: shell > + > + $ sudo minicom -s > + > +The minicom is invoked with configuration menu open. Go into the > +*Serial port setup* and hit *a* key to select *Serial Device* > +setup. Change */dev/modem* from there into */dev/ttyACM0* and hit > +*Enter* key. Hit *f* key to change hardware flow control from *Yes* to > +*No*. When you are done with it, you can hit *Enter* key to finish > +this part of configuration and then scrolls in menu to *Exit* and hit > +*Enter* key on it. The minicom will switch to terminal mode with just > +provided configuration. > + > +In the third shell window navigate into the BSP build directory and start > +RTEMS GDB with the hello.exe sample. > + > +.. code-block:: shell > + > + $ arm-rtems6-gdb > build/arm/stm32h747i-disco/testsuites/samples/hello.exe > + GNU gdb (GDB) 10.1.90.20210409-git > + Copyright (C) 2021 Free Software Foundation, Inc. > + License GPLv3+: GNU GPL version 3 or later > <http://gnu.org/licenses/gpl.html> > + This is free software: you are free to change and > redistribute it. > + There is NO WARRANTY, to the extent permitted by law. > + Type "show copying" and "show warranty" for details. > + This GDB was configured as "--host=x86_64-linux-gnu > --target=arm-rtems6". > + Type "show configuration" for configuration details. > + For bug reporting instructions, please see: > + <https://www.gnu.org/software/gdb/bugs/>. > + Find the GDB manual and other documentation resources online > at: > + <http://www.gnu.org/software/gdb/documentation/>. > + > + For help, type "help". > + Type "apropos word" to search for commands related to > "word"... > + Reading symbols from > build/arm/stm32h747i-disco/testsuites/samples/hello.exe... > + (gdb) > + > +Now, you need to connect GDB with the ST's GDB server by: > + > +.. code-block:: shell > + > + (gdb) target extended-remote :61234 > + Remote debugging using :61234 > + 0x08028fa4 in ?? () > + (gdb) > + > +and finally you will need to load hello.exe binary into the board > +memory by: > + > +.. code-block:: shell > + > + (gdb) load > + Loading section .start, size 0x458 lma 0x24000000 > + Loading section .text, size 0xfca8 lma 0x24000480 > + Loading section .init, size 0xc lma 0x24010128 > + Loading section .fini, size 0xfecc lma 0x24010134 > + Loading section .rodata, size 0x1aab lma 0x24020000 > + Loading section .ARM.exidx, size 0x8 lma 0x24021aac > + Loading section .eh_frame, size 0x4 lma 0x24021ab4 > + Loading section .init_array, size 0x4 lma 0x24021ab8 > + Loading section .fini_array, size 0x4 lma 0x24021abc > + Loading section .rtemsroset, size 0x540 lma 0x24021ac0 > + Loading section .data, size 0x6a4 lma 0x24022000 > + Start address 0x24000400, load size 140923 > + Transfer rate: 684 KB/sec, 2562 bytes/write. > + (gdb) > + > +If everything went fine, then you can run the RTEMS binary by using > +*cont* GDB command. > + > +.. note:: Memory address values in the load output in the gdb shows > + that we have loaded our application into the AXI > + SRAM. Memory addresses will be different when loading into > + different part of MCU memory. > + > +.. code-block:: shell > + > + (gdb) cont > + Continuing. > + > +Note that this command should never finish. To see the actual output > +from RTEMS switch to > +the second shell window with minicom (or other terminal emulation > +program) running and you should see hello output > +there: > + > +.. code-block:: none > + > + *** BEGIN OF TEST HELLO WORLD *** > + *** TEST VERSION: > 6.0.0.50ce036cfbd9807a54af47eb60eadb6a33a9e82d > + *** TEST STATE: EXPECTED_PASS > + *** TEST BUILD: > + *** TEST TOOLS: 10.3.1 20220224 (RTEMS 6, RSB > 49e3dac17765fa82ce2f754da839638ee352f95c, Newlib 64b2081) > + Hello World > + > + *** END OF TEST HELLO WORLD *** > + > + > + [ RTEMS shutdown ] > + RTEMS version: 6.0.0.50ce036cfbd9807a54af47eb60eadb6a33a9e82d > + RTEMS tools: 10.3.1 20220224 (RTEMS 6, RSB > 49e3dac17765fa82ce2f754da839638ee352f95c, Newlib 64b2081) > + executing thread ID: 0x08a010001 > + > +Since default RTEMS BSP configuration resets the board after run > +immediately you can also see output from the immediately started ST > +demo: > + > +.. code-block:: none > + > + STM32H747I-DISCO_MB1248: Out Of the Box Demonstration V1.0.1 > (Build Aug 22 2019 at 11:56:22) > + STM32H747I-DISCO_MB1248: ST Menu Launcher V1.1.0 > + CPU running at 400MHz, Peripherals at 100MHz/100Mz > + > +which is not a problem here at all. Later we can reconfigure BSP to > +not reset board to prevent demo output here. > + > +How to load binary file into the QSPI NOR > +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > +Connect the board to your host computer using micro-USB > +cable. Start STM32CubeProgrammer and connect it to the board by > +clicking on *Connect* button which is located in the right upper > +corner of the programmer application UI. For accessing QSPI connected > +memory you will need to configure programmer's external loader which > +needs to match your target board. Click on *EL* icon (or *External > +loaders*) in the left sidebar menu. Either go thorough the list of > +external loaders or just search for your board by typing board > +name (or part of the name) into the search bar located on top of the table > view. When > +you find your board, select it by selecting rectangle in the *Select* > +table column. That's what is needed to make programmer ready to > +program your board memory. > +For uploading file to the board, you need to continue with clicking on > +*Erase & programming* menu item in the left sidebar menu. It's second item > +from the top. Now, let's select > +your file to upload by clicking on *Browse* button and selecting the > +file name from your host computer filesystem. The most important thing here > is > +to specify start address of flashing process. You need to do that by > +typing start address into the *Start address* field. > + > +.. note:: Usually external memory connected to QSPI has 0x90000000 starting > + address. > + > +When all is set you can click on *Start Programming* button. > + > +.. important:: Cube programmer is very picky about files it shows in the > file list. The only recognized suffixes are: elf, bin, hex and > + similar. Also do not try to fool programmer by renaming let's > say text > + file to bin file. It'll detect file type as ascii text and > will not > + show it in the list of files to flash. So bin file type is > really for > + media types like avi, jpeg, mpeg or for binary dumps from elf > + files. If you need to save text file, convert it to hex file > first. > -- > 2.25.1 > > _______________________________________________ > devel mailing list > devel@rtems.org > http://lists.rtems.org/mailman/listinfo/devel _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel