Overview
The XPDSC format includes metadata used to describe boards and devices.
It inherits from CMSIS PDSC the subset related to boards and devices.
File names
By definition, XPDSC files are identified by the suffix xpdsc.json
,
and can be prefixed by anything, preferably separated by a dash, like:
devices-xpdsc.json
ordevice-pdsc.json
boards-xpdsc.json
orboard-xpdsc.json
The use of plurals is a convention, to make explicit that the files contain definitions for multiple objects.
Objects
The XCDL file is a hierarchy of objects, with the JSON root on top.
The root object
Properties | Type | Description |
---|---|---|
schemaVersion |
string | The version is used by the parser to identify different file formats. |
cpus |
collection | A parent for all CPU related definitions. |
platforms |
collection | A parent for all platform/board related definitions. |
Example:
{
"schemaVersion": "0.3.0",
"cpus": {
"families": {
"fe": {
"...": "..."
}
}
},
}
The cpu object (since 0.3)
The CPU is the top-most object, and usually contains one CPU/MCU family.
Parents |
---|
The root object. |
Properties | Type | Description |
---|---|---|
families |
collection | A map of family objects. The keys are internal IDs used to refer to the family. |
The family object
Parent |
---|
A cpu object. |
Properties | Type | Description |
---|---|---|
displayName |
string | A short string to externally identify the device family. Must be unique among all files. If missing, the internal name (the map key) is used. |
description |
string | A long string to describe the main features of the device family. |
supplier |
object | The device supplier. |
subFamilies |
collection | A map of sub-family objects. The keys are internal IDs used to refer to the objects. (optional) |
devices |
collection | A map of device objects. The keys are internal IDs used to refer to the devices. |
The supplier object
The device supplier.
Parent |
---|
A family object. |
Properties | Type | Description |
---|---|---|
id |
string | The supplier numeric id; should not change over time. |
displayName |
string | A short string to externally identify the supplier. |
The subFamily object
Parent |
---|
A family object. |
Properties | Type | Description |
---|---|---|
displayName |
string | A short string to externally identify the device sub-family. Must be unique among all files related to a supplier. If missing, the internal name (the map key) is used. |
description |
string | A long string to describe the main features of the device sub-family. |
devices |
collection | A map of device objects. The keys are internal IDs used to refer to the devices. |
The device object
The device is the basic object, and correspond to a single implementation of a CPU/MCU which has unique characteristics from the software point of view.
Parent |
---|
A family or subFamily object. |
Properties | Type | Description |
---|---|---|
displayName |
string | A short string to externally identify the device. Must be unique among all files related to a supplier. If missing, the internal name (the map key) is used. |
description |
string | A long string to describe the main features of the device. |
url |
string | A full URL to a page describing the device. |
compiler |
object | compiler specific definitions. |
features |
object | TBD |
memoryRegions |
collection | TBD |
debug |
object | TBD |
The compiler object
An object with definitions useful for the compiler.
Parent |
---|
A device or board object. |
Properties | Type | Description |
---|---|---|
headers |
string[] | headers to include the board/device definitions. |
defines |
string[] | preprocessor definitions for the board/device. |
The debug object
An object with definitions useful for debug sessions.
Parent |
---|
A device object. |
Properties | Type | Description |
---|---|---|
jtag |
object | TBD |
xsvd |
string | the relative path to the XSVD JSON file (POSIX paths). Used by the debugger to display the peripheral registers. |
svd |
string | the relative path to the CMSIS SVD XML file, (POSIX paths). Used by the debugger to display the peripheral registers. Ignored if the xsvd property is present. |
TODO: add board definitions
Revision history
The format version is reflected in the schemaVersion
property,
present in the root object.
Starting with v3, the format was renamed as XPDSC.
Versions are listed in reverse chronological order.
v0.3.0 (2020-12-26)
- renamed as xpdsc
- for greater generality, use
cpus
instead ofmcus
xcdl v0.2.0 (2017-12-27)
- simplify
supplier
, keep onlyid
anddisplayName
- rename
compile
tocompiler
- rename
macros
todefines
xcdl v0.1.0 (2017-12-08)
- preliminary version, only some device related fields.