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