File: progendef.1.md.in

package info (click to toggle)
python-project-generator-definitions 0.2.46-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 780 kB
  • sloc: python: 1,053; makefile: 15; sh: 6
file content (218 lines) | stat: -rw-r--r-- 7,444 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
% PROGENDEF(1) __VERSION__ | User Commands
% 
% November 2019

# 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