Provided by: python3-project-generator-definitions_0.2.45-1_all bug

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 tools (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 section)

       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  example below shows the uvision settings for the lpc1768 mcu.  These specific
       data can either be manually extracted 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 directory 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  desired  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_generator_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
       <nickm@debian.org> 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