Provided by: python3-project-generator-definitions_0.2.40-1_all 

NAME
progendef - extract MCU definitions for use with progen
SYNOPSIS
progendef create -m MCU -t TOOL -f PROJECT_FILE
DESCRIPTION
progendef is used to extract progen-compatible MCU definitions from project files generated by supported
tool (e.g. IAR, CoIDE). Once generated, new MCU definitions can be used by progen to generate project
files for other supported tools.
OPTIONS
-m MCU target MCU name (generated file will be called MCU.yaml)
-t TOOL
tool that generated project file (uVision, IAR, CoIDE)
-f PROJECT_FILE
embedded project file to extract MCU data from (generated by specified tool)
YAML
progendef (and progen) uses YAML syntax for TARGETS, MCU and TOOL definitions.
ADDING A NEW TARGET
progendef extracts the information needed to create a new YAML MCU definition file.
A progen target consists of: - a target YAML file (see TARGETS section) - an MCU YAML file (see MCU sec‐
tion)
Target files can be defined and should be placed inside project_generator_definitions/target. MCU files
are created by progendef.
TARGETS
To generalize MCUs, there are target definitions available. The target name does not change based on the
tool used. We provide a dictionary where we can define a target with mcu, for instance:
PROGENDEF_TARGETS = {
'arch-ble': 'mcu/nordic/nrf51',
}
Such a project can then use either arch-ble as a target, or nrf51 (mcu).
MCU
An MCU record defines the basic information about the mcu and specific settings for each tool. The exam‐
ple below shows the uvision settings for the lpc1768 mcu. These specific data can either be manually ex‐
tracted from a project file, or you can use the progendef command to create the YAML file for you.
If you are adding a new mcu, please follow the uvision naming policy for MCUs for consistency.
mcu:
vendor:
- nxp
name:
- lpc1768
core:
- cortex-m3
tool_specific:
uvision:
TargetOption:
Device:
- LPC1768
Vendor:
- NXP
Cpu:
- IRAM(0x10000000-0x10007FFF) IRAM2(0x2007C000-0x20083FFF) IROM(0-0x7FFFF) CLOCK(12000000) CPUTYPE("Cortex-M3")
FlashDriverDll:
- UL2CM3(-O463 -S0 -C0 -FO7 -FD10000000 -FC800 -FN1 -FF0LPC_IAP_512 -FS00 -FL080000)
DeviceId:
- 4868
SFDFile:
- SFD\NXP\LPC176x5x\LPC176x5x.SFR
The data given in the mcu and target definitions use lowercase. The files are stored within this direc‐
tory for consistency. Tool-specific data follows the tools definitions.
TOOLS
uVision
There are two supported version of uVision. uvision (defaults: uvision4) and uvision5. uVision 5 uses
software packs, and it is compatible with the older version via legacy devices. Define legacy device as
uvision/uvision4.
tool_specific:
uvision:
TargetOption:
Device:
- LPC1768
Vendor:
- NXP
Cpu:
- IRAM(0x10000000-0x10007FFF) IRAM2(0x2007C000-0x20083FFF) IROM(0-0x7FFFF) CLOCK(12000000) CPUTYPE("Cortex-M3")
FlashDriverDll:
- UL2CM3(-O463 -S0 -C0 -FO7 -FD10000000 -FC800 -FN1 -FF0LPC_IAP_512 -FS00 -FL080000)
DeviceId:
- 4868
SFDFile:
- SFD\NXP\LPC176x5x\LPC176x5x.SFR
All information in the code above are from a uVision project. All attributes need to be filled in, in
order to get a proper working target in the project file and the correct flash algorithms for the target.
So, how do we get all this information for a new mcu? We create a new project in uVision, select your
target, and save the project. Then open the project in a text editor, and look for attributes inside
TargetOption, as `Device', `Vendor', etc.
Once you have specified all required information, test to build your project and check if the correct
target is set in the uVision project.
IAR
iar:
OGChipSelectEditMenu:
state:
- LPC1768 NXP LPC1768
OGCoreOrChip:
state:
- 1
In the code above, LPC1768 is defined. To add a new target, create a new project in IAR, select your de‐
sired target, save the project. Then either use progendef to extract information or manually open the
project in a text editor, and find the attribute OGChipSelectEditMenu. OGCoreOrChip should be set to 1,
as Chip will be used. Be careful with OGChipSelectEditMenu, as it should be exact as in origin project.
Once you specified all needed information, test to build your project and check if the correct target is
set in the IAR project.
CoIDE
coide:
coide:
Device:
manufacturerId:
- 7
manufacturerName:
- NXP
chipId:
- 165
chipName:
- LPC1768
DebugOption:
defaultAlgorithm:
- lpc17xx_512.elf
MemoryAreas:
IROM1:
name:
- IROM1
size:
- 0x00080000
startValue:
- 0x00000000
type:
- ReadOnly
IRAM1:
name:
- IRAM1
size:
- 0x00008000
startValue:
- 0x10000000
type:
- ReadWrite
IROM2:
name:
- IROM2
size:
- 0x0
startValue:
- 0x0
type:
- ReadOnly
IRAM2:
name:
- IROM2
size:
- 0x00008000
startValue:
- 0x2007C000
type:
- ReadWrite
LPC1768 MCU is defined above for CoIDE. To add a new target, create a new project in CoIDE, select your
target, save the project. Then either use progendef to extract information or manually open the project
file (.coproj) in a text editor, and search for all the information which is above. It’s required to set
the target properly. There is information about ROM/RAM sizes, Flash algorithm used and Id numbers for
the target.
EXAMPLES
An example for creating mcu.yaml for lpc1768, from a project file lpc1768_blinky.ewp (IAR)
progendef create -m lpc1768 -t iar -f lpc1768_blinky.ewp
This creates lpc1768.yaml file in the current directory. This file should be placed in project_genera‐
tor_definitions/mcu. There should be a vendor folder, and MCU file inside.
REPORTING BUGS
Upstream bug tracker: https://github.com/project-generator/project_generator_definitions/issues
COPYRIGHT
Copyright (c) 2015 Martin Kojtal
AUTHOR
This manual page is based on the progendef documentation. It was created by Nick Morrott <knowledge‐
junkie@gmail.com> for the Debian GNU/Linux system, but may be used by others
SEE ALSO
valinor(1), progen(1)
Project Generator examples: https://github.com/project-generator/project_generator_mbed_examples
0.2.40 November 2019 PROGENDEF(1)