Difference between revisions of "Adding Support for New Devices"
(→Creating a flash algorithm using SEGGER Embedded Studio) |
(→Creating a flash algorithm using SEGGER Embedded Studio) |
||
Line 16: | Line 16: | ||
<br> |
<br> |
||
= Creating a flash algorithm using SEGGER Embedded Studio = |
= Creating a flash algorithm using SEGGER Embedded Studio = |
||
− | This article describes how to create a flash loader using |
+ | This article describes how to create a flash loader using the template projects (Cortex-M and Cortex-A/R) for SEGGER Embedded Studio. |
== Debug Configurations == |
== Debug Configurations == |
||
The example project contains two debug configurations: |
The example project contains two debug configurations: |
||
Line 22: | Line 22: | ||
*Release |
*Release |
||
=== Debug configuration === |
=== Debug configuration === |
||
− | This configuration allows to debug the flash algorithm in Embedded Studio. The configuration includes a main.c containing the typical function call order, executed by the J-Link DLL |
+ | This configuration allows to debug the flash algorithm in Embedded Studio. The configuration includes a main.c containing the typical function call order, executed by the J-Link DLL during flash programming. The optimization level for this configuration is set to "none". |
=== Release configuration === |
=== Release configuration === |
||
− | This configuration does not allow debugging but creates the output elf file which can be referenced from within the JLinkDevices.xml file as "''Loader''". The |
+ | This configuration does not allow debugging but creates the output elf file which can be referenced from within the JLinkDevices.xml file as "''Loader''". The optimization level is set to 3 (highest). |
== Included files == |
== Included files == |
||
{| class="wikitable" |
{| class="wikitable" |
||
Line 38: | Line 38: | ||
| '''main.c''' || Flash algorithm debug code (used by debug configuration, only) |
| '''main.c''' || Flash algorithm debug code (used by debug configuration, only) |
||
|- |
|- |
||
− | | '''Cortex_M_Startup.s''' || Cortex-M startup code (used by debug configuration, only) |
+ | | '''Cortex_M_Startup.s'''<br>'''ARM_Startup.s''' || Cortex-M startup code (used by debug configuration, only) <br> Cortex-A/R startup code (used by debug configuration, only) |
|- |
|- |
||
| '''MemoryMap.xml''' || Memory map of the ST STM32F205RC |
| '''MemoryMap.xml''' || Memory map of the ST STM32F205RC |
||
Line 46: | Line 46: | ||
| '''Placement_release.xml''' || Release configuration section placement file. |
| '''Placement_release.xml''' || Release configuration section placement file. |
||
|- |
|- |
||
− | | '''thumb_crt0.s''' || Initialization file (used by debug configuration, only) |
+ | | '''thumb_crt0.s'''<br>'''crt0.s''' || Initialization file for Cortex-M (used by debug configuration, only)<br>Initialization file for Cortex-A/R(used by debug configuration, only) |
|} |
|} |
||
Revision as of 13:01, 2 September 2016
This article describes how to add support for new devices / flash banks to the J-Link DLL so that they can be used with any J-Link DLL based application like for example J-Flash, J-Link Commander, IDEs, etc...This article assumes that there is already a basic understanding of the CMSIS flash algorithm structure defined by ARM as well as method of adding new devices using the Open Flash Loader concept. In general, there are two possibilities to add support for a new device:
- Use a pre-compiled flash loader
- Compile / create the flash loader on your own
- Using Keil uVision (a license is required, no trial available; Supports Cortex-M, only)
- SEGGER Embedded Studio (can be evaluated without license; Supports Cortex-M and Cortex-A/R)
How to create a flash loader on your own using Embedded Studio is described below.
Creating a flash algorithm using SEGGER Embedded Studio
This article describes how to create a flash loader using the template projects (Cortex-M and Cortex-A/R) for SEGGER Embedded Studio.
Debug Configurations
The example project contains two debug configurations:
- Debug
- Release
Debug configuration
This configuration allows to debug the flash algorithm in Embedded Studio. The configuration includes a main.c containing the typical function call order, executed by the J-Link DLL during flash programming. The optimization level for this configuration is set to "none".
Release configuration
This configuration does not allow debugging but creates the output elf file which can be referenced from within the JLinkDevices.xml file as "Loader". The optimization level is set to 3 (highest).
Included files
Filename | Content |
---|---|
FlashDev.c | Flash device description for the ST STM32F205RC |
FlashOS.h | Function prototypes, definitions and structures |
FlashPrg.c | Flash algorithm itself (e.g. ProgramPage(), EraseSector() |
main.c | Flash algorithm debug code (used by debug configuration, only) |
Cortex_M_Startup.s ARM_Startup.s |
Cortex-M startup code (used by debug configuration, only) Cortex-A/R startup code (used by debug configuration, only) |
MemoryMap.xml | Memory map of the ST STM32F205RC |
Placement_debug.xml | Debug configuration section placement file. |
Placement_release.xml | Release configuration section placement file. |
thumb_crt0.s crt0.s |
Initialization file for Cortex-M (used by debug configuration, only) Initialization file for Cortex-A/R(used by debug configuration, only) |
Embedded Studio Project
The projects below have been tested with SEGGER Embedded Studio V3.10.