This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
manual:demos:olimexino_stm32_gcc [2016/10/27 23:25] voorburg created |
manual:demos:olimexino_stm32_gcc [2023/12/04 22:21] (current) voorburg [Supported firmware update interfaces] |
||
---|---|---|---|
Line 3: | Line 3: | ||
===== Supported firmware update interfaces ===== | ===== Supported firmware update interfaces ===== | ||
- | ^ UART ^ CAN ^ USB ^ TCP/IP ^ SD-card ^ | + | ^ RS232 ^ CAN ^ USB ^ TCP/IP ^ SD-card ^ Modbus RTU ^ |
- | | No | Yes | Yes | No | Yes | | + | | No | Yes | Yes | No | Yes | No | |
===== Development Environment ===== | ===== Development Environment ===== | ||
- | {{:manual:demos:stm32_p405.jpg?200 |}} | + | {{:manual:demos:olimexino_stm32.jpg?200 |}} |
- | This demo is targeted towards the [[https://www.olimex.com/Products/ARM/ST/STM32-P405/|Olimex STM32-P405]] board, with 1024 kB internal Flash EEPROM and 192 kB internal RAM. | + | This demo is targeted towards the [[https://www.olimex.com/Products/Duino/STM32/OLIMEXINO-STM32/open-source-hardware|Olimexino-STM32]] board, with 128 kB internal Flash EEPROM and 20 kB internal RAM. |
- | To program the bootloader into the internal flash on the STM32F405 microcontroller, the [[http://www.segger.com/development-tools.html|Segger J-Link]] JTAG interface was used. However, this is not required if you have another means of programming the internal flash. | + | To program the bootloader into the internal flash on the STM32F103 microcontroller, the [[http://www.segger.com/development-tools.html|Segger J-Link]] JTAG interface was used. However, this is not required if you have another means of programming the internal flash. To connect the 20-pin cable of the Segger J-Link to the 10-pin SWD connector in the board, the [[https://www.olimex.com/Products/ARM/JTAG/ARM-JTAG-20-10/|ARM-JTAG-20-10 adapter]] was used. |
- | To compile the demo programs you can use the [[http://www.emblocks.org/|EmBitz]] development environment from Em::Blocks. The version that was used to create these demo programs was {{:manual:embitz_1_00.zip?linkonly|EmBitz version 1.00}}. | + | To build the demo programs you can use the [[https://developer.arm.com/open-source/gnu-toolchain/gnu-rm|GNU ARM Embedded]] toolchain. |
+ | ===== Toolchain configuration ===== | ||
+ | |||
+ | The demo programs are configured for building with a Makefile. Before attempting to perform a build, update the location of the toolchain binaries (i.e. //arm-none-eabi-gcc//) in the Makefile. It is set in variable **TOOL_PATH**. If the toolchain binaries are available on the path, then the **TOOL_PATH** variable can be left empty. | ||
+ | |||
+ | {{:manual:demos:makefile_toolpath.png?nolink&|}} | ||
+ | |||
+ | |||
+ | It is assumed that tools such as GNU //make// and //rm// are installed and available on the path. For (Ubuntu) Linux users this can be achieved by running command: //sudo apt-get install build-essential//. Windows users can install the [[https://gnu-mcu-eclipse.github.io/windows-build-tools/|GNU MCU Eclipse Windows Build Tools]]. | ||
===== Building and programming the Bootloader ===== | ===== Building and programming the Bootloader ===== | ||
- | Before the bootloader can be used, it needs to be built and programmed into the STM32F405's internal flash memory. The steps in this section only need to be done once. | + | Before the bootloader can be used, it needs to be built and programmed into the STM32F103's internal flash memory. The steps in this section only need to be done once. |
- | When using EmBitz, simply open the project file by double-clicking the file: \Target\Demo\ARMCM4_STM32F4_Olimex_STM32P405_GCC\**Boot**\ide\**STM32P405.ebp** from the Windows Explorer. To build the bootloader, select //Build -> Rebuild all target files// from the program menu. | + | To build the bootloader, open a command prompt in directory **\Target\Demo\ARMCM3_STM32F1_Olimexino_STM32_GCC\Boot\** and run the command: |
- | The bootloader program is now ready to be programmed into the internal flash memory of the STM32F405. Make sure the Segger J-Link debugger interface it connected to the JTAG connector on the Olimex STM32-P405 board and the other side to your PC via a USB cable. Next, select //Debug -> Start Debug Session (F8)// from EmBitz's program menu to flash the bootloader program. Once done, you can start the bootloader program by selecting //Debug -> Run (F5)// from the program's menu. | + | <code> |
+ | make clean all | ||
+ | </code> | ||
+ | |||
+ | The expected output is: | ||
+ | |||
+ | <code> | ||
+ | +++ Cleaning build environment | ||
+ | +++ Clean complete | ||
+ | +++ Assembling [startup_stm32f10x_md.S] | ||
+ | +++ Compiling [usb_desc.c] | ||
+ | +++ Compiling [usb_endp.c] | ||
+ | ... | ||
+ | +++ Linking [openblt_olimexino_stm32.elf] | ||
+ | ... | ||
+ | +++ Build complete [openblt_olimexino_stm32.srec] | ||
+ | </code> | ||
+ | |||
+ | The bootloader program is now ready to be programmed into the internal flash memory of the STM32F103. Make sure the Segger J-Link debugger interface it connected to the JTAG connector on the Olimexino-STM32 board and the other side to your PC via a USB cable. Next, select //Debug -> Start Debug Session (F8)// from EmBitz's program menu to flash the bootloader program. Once done, you can start the bootloader program by selecting //Debug -> Run (F5)// from the program's menu. | ||
Alternatively, you can use your favorite programmer to flash the bootloader using one of the following files, depending on what file type your programmer supports: | Alternatively, you can use your favorite programmer to flash the bootloader using one of the following files, depending on what file type your programmer supports: | ||
- | * \Target\Demo\ARMCM4_STM32F4_Olimex_STM32P405_GCC\**Boot**\bin\**openblt_olimex_stm32p405.elf** | + | * \Target\Demo\ARMCM3_STM32F1_Olimexino_STM32_GCC\**Boot**\bin\**openblt_olimexino_stm32.elf** |
- | * \Target\Demo\ARMCM4_STM32F4_Olimex_STM32P405_GCC\**Boot**\bin\**openblt_olimex_stm32p405.srec** | + | * \Target\Demo\ARMCM3_STM32F1_Olimexino_STM32_GCC\**Boot**\bin\**openblt_olimexino_stm32.srec** |
===== Building the Demo Program ===== | ===== Building the Demo Program ===== | ||
- | When using EmBitz, simply open the project file by double-clicking the file: \Target\Demo\ARMCM4_STM32F4_Olimex_STM32P405_GCC\**Prog**\ide\**STM32P405.ebp** from the Windows Explorer. To build the demo program, select //Build -> Rebuild all target files// from the program's menu. | + | To build the user program, open a command prompt in directory **\Target\Demo\ARMCM3_STM32F1_Olimexino_STM32_GCC\Prog\** and run the command: |
+ | |||
+ | <code> | ||
+ | make clean all | ||
+ | </code> | ||
+ | |||
+ | The expected output is: | ||
+ | |||
+ | <code> | ||
+ | +++ Cleaning build environment | ||
+ | +++ Clean complete | ||
+ | +++ Assembling [startup_stm32f10x_md.S] | ||
+ | +++ Compiling [boot.c] | ||
+ | +++ Compiling [main.c] | ||
+ | ... | ||
+ | +++ Linking [demoprog_olimexino_stm32.elf] | ||
+ | ... | ||
+ | +++ Build complete [demoprog_olimexino_stm32.srec] | ||
+ | </code> | ||
The output file is | The output file is | ||
- | * \Target\Demo\ARMCM4_STM32F4_Olimex_STM32P405_GCC\**Prog**\bin\**demoprog_olimex_stm32p405.srec** | + | * \Target\Demo\ARMCM3_STM32F1_Olimexino_STM32_GCC\**Prog**\bin\**demoprog_olimexino_stm32.srec** |
===== Firmware update procedure ===== | ===== Firmware update procedure ===== | ||
- | To download the demo program \Target\Demo\ARMCM4_STM32F4_Olimex_STM32P405_GCC\**Prog**\bin\**demoprog_olimex_stm32p405.srec** using the bootloader, follow the instructions in the following links, depending on the communication interface you intend to use: | + | To download the demo program \Target\Demo\ARMCM3_STM32F1_Olimexino_STM32_GCC\**Prog**\bin\**demoprog_olimexino_stm32.srec** using the bootloader, follow the instructions in the following links, depending on the communication interface you intend to use: |
* [[manual:can_demo|Firmware updates using the CAN communication interface]] | * [[manual:can_demo|Firmware updates using the CAN communication interface]] | ||
* [[manual:usb_demo|Firmware updates using the USB communication interface]] | * [[manual:usb_demo|Firmware updates using the USB communication interface]] | ||
* [[manual:sdcard_demo|Firmware updates from SD-card]] | * [[manual:sdcard_demo|Firmware updates from SD-card]] | ||
+ | |||
+ | ===== Known limitations ===== | ||
+ | Even though the demo bootloader can perform firmare updates via both CAN and USB, only one of these communication interfaces can be enabled at a time. This is due to a hardware limitation of the STM32F103 microcontroller where the CAN and USB peripherals cannot be used at the same time. These CAN and USB communication interfaces can be enabled/disabled with configuration macros in blt_conf.h: BOOT_COM_CAN_ENABLE and BOOT_COM_USB_ENABLE, respectively. | ||
+ | |||