Provided by: python3-project-generator-definitions_0.2.40-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
       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
       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
       <knowledgejunkie@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