Difference between revisions of "Adding Support for New Devices"
(→Step-By-Step Instruction) |
(→Step-By-Step Instruction) |
||
Line 62: | Line 62: | ||
##Create or adapt the '''JLinkDevices.xml''' (described in the J-Link User Manual (UM08001)). |
##Create or adapt the '''JLinkDevices.xml''' (described in the J-Link User Manual (UM08001)). |
||
##Place the '''JLinkDevices.xml''' file at the correct location (described in the J-Link User Manual (UM08001)). |
##Place the '''JLinkDevices.xml''' file at the correct location (described in the J-Link User Manual (UM08001)). |
||
− | Now you can select the created or adapted device which uses the new flash bank in any J-Link DLL based application (e.g. J-Link Commander / IDE / ...). |
+ | Now you can select and use the created or adapted device which uses the new flash bank in any J-Link DLL based application (e.g. J-Link Commander / IDE / ...). |
=== Trouble Shoot === |
=== Trouble Shoot === |
||
TBD |
TBD |
Revision as of 16:35, 2 September 2016
Contents
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 method of adding new devices using the Open Flash Loader concept. If this is not the case, we recommend to read the Open Flash Loader chapter in the J-Link User Manual (UM08001). 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 Template Projects
The template projects below have been tested with SEGGER Embedded Studio V3.10.
- File:OpenFlashLoader CortexM Template EmbeddedStudio.zip
- File:OpenFlashLoader CortexAR Template EmbeddedStudio.zip
Step-By-Step Instruction
This step-by-step instruction explains how to create your own flash loader using the template projects for Embedded Studio and how to use add a new flash bank for an existing or new device to the J-Link DLL, so that it can be used from within any application using the DLL.
- Adapt the template project
- FlashDev.c: Modify the FlashDevice structure according to your device
- FlashPrg.c: Implement the flash routines Init(), UnInit(), EraseSector() and ProgramPage()
- MemoryMap.xml: Enter RAM base address and RAM size
- main.c: Make sure that the define _FLASH_BASE_ADDR defines the correct flash base address
- Test the debug configuration
- Connect the target to the J-Link and the J-Link to the PC
- Switch to the Debug configuration in Embedded Studio (Build -> Set Active Build Configuration -> Debug)
- Build the project by pressing F7
- Start the debug session by pressingF5
- PC should be halted at main. Now debug the flash algorithm and make sure that it behaves as expected.
- Build the flash loader using the release configuration
- Switch to the Release configuration in Embedded Studio (Build -> Set Active Build Configuration -> Release)
- Build the project by pressing F7 --> The flash loader file can be found here: $PROJ_DIR$\Output\Release\Exe\*.elf
- JLinkDevices.xml
- Create or adapt the JLinkDevices.xml (described in the J-Link User Manual (UM08001)).
- Place the JLinkDevices.xml file at the correct location (described in the J-Link User Manual (UM08001)).
Now you can select and use the created or adapted device which uses the new flash bank in any J-Link DLL based application (e.g. J-Link Commander / IDE / ...).
Trouble Shoot
TBD