CMSIS-SVD
Version 1.3.9
CMSIS System View Description
|
SVDConv is a command-line utility to validate CMSIS-SVD files and to generate CMSIS-compliant device header files. SVDConv is distributed with the ARM::CMSIS Pack (in the CMSIS\Utilities directory) together with the CMSIS-SVD.xsd schema file. SVDConv is available for Windows and Linux operating systems.
SVDConv performs the following operations:
SVDConv is invoked form the command line. The general command format is:
<options> | Short Name | Description |
---|---|---|
none | Validation | Perform a validation check of the SVD file. Errors and warnings are printed on screen. |
-b | Log File | Specify the log file name for writing messages. Default: screen. |
-o | Output Path | Specify an output path for the generated device header file or log file. Default: current directory. |
--generate=header | Generate Device Header File | Generates the device header file. The name of the generated file is derived from the value of the tag <devicename> in the CMSIS-SVD file. Refer to device. |
--generate=partition | Generate Partition file for Cortex-M Security Extensions (Armv8-M) | Generates the device partition file. The name of the generated file is composed of partition_ and the value of the device <name> (for example, partition_CMSDK_ARMv8MBL.h). Refer to /device element. The content of the file uses Configuration Wizard annotations and is derived from the SAU-specific information of the /device/cpu/sauRegionsConfig element and the interrupts specified in the /device/peripherals element. |
--fields=enum | Bit-field Enums | Generates enum lists for each field value description contained in the CMSIS-SVD input file. Must be used in combination with --generate=header. |
--fields=macro | Bit-field Macros | Generates position and mask C-Macros for each field description contained in the CMSIS-SVD input file. Must be used in combination with --generate=header. |
--fields=struct | Bit-field Structs | Generates bit fields for each field description contained in the CMSIS-SVD input file. Must be used in combination with --generate=header. |
--fields=struct-ansic | ANSI Bit-field Structs | Generates MISRA-compliant structures for each bitfield. The generated code is not CMSIS-compliant! Must be used in combination with --generate=header. |
--strict | Strict error checking | RECOMMENDED! Applies strict error checking and generates a lot more messages. |
SVDConv returns the following codes:
Code | Description | Action |
---|---|---|
0 | OK | No action required. Validation and conversion performed without errors. |
1 | WARNINGS | Warnings should be checked an possibly removed. The header file is created and could be used. |
2 | ERRORS | Errors in the SVD description file. Important elements are missing and must be corrected. |
3 | Error in command line | Check and correct the command line arguments. |
Examples
MVCM3110.svd(1688) : info <description> missing for value '2 : MODE2' MVCM3110.svd(1692) : info <description> missing for value '3 : MODE3' MVCM3110.svd(1696) : info <description> missing for value '4 : MODE4' Area of improvements: * Description contains 267 <fields> defined without associated <enumeratedValues> Found 0 Errors and 1 Warnings Return Code: 1 (WARNINGS)
The following table shows the errors and warnings issued by svdconv.
Message Number | Type | Message Text | Details/Action |
---|---|---|---|
M020 | TEXT | SVD_STRING_OPTIONS | Displays programm help. |
M021 | TEXT | 'DESCR' 'VER' 'COPYRIGHT' | Displays module name 'DESCR', version 'VER' and copyright information 'COPYRIGHT'. |
M022 | TEXT | Found 'ERR' Error(s) and 'WARN' Warning(s). | Displays the number of errors/warnings. |
M023 | TEXT | Phase 'CHECK' | Information about the check phase. |
M024 | TEXT | Arguments: 'OPTS' | Specify arguments. |
Message Number | Type | Message Text | Details/Action |
---|---|---|---|
M040 | Info | 'NAME': 'TIME' ms. Passed | |
M041 | Info | Overall time: 'TIME' ms. | |
M050 | Info | Current Working Directory: 'PATH' | |
M051 | Info | Reading SVD File: 'PATH' | |
M061 | Info | Checking SVD Description |
Message Number | Type | Message Text | Action |
---|---|---|---|
M101 | ERROR | Unknown error! | Please contact support. |
M102 | ERROR | MFC initialization failed | Please contact support. |
M103 | ERROR | Internal Error: 'REF' | Please contact support. |
M104 | CRITICAL | 'MSG' | Please contact support. |
M105 | ERROR | Cannot add Register to group sorter: 'NAME' | |
M106 | ERROR | Command 'NAME' failed: 'NUM': 'MSG' | |
M107 | ERROR | Lost xml file stream. | Check SVD file. |
M108 | ERROR | SfrDis not supported.Disassembly not supported. | |
M109 | ERROR | Cannot find 'NAME' | Check specified file. |
M111 | PROGRESS | 'NAME' failed | Check specified file. |
M120 | ERROR | Invalid arguments! | Provide a list of valid arguments. |
M121 | ERROR | File not found 'NAME' Check specified file. | |
M122 | ERROR | Name of command file should follow '@' | Check specified command. |
M123 | ERROR | File not found: 'PATH'! | Check speficied path. |
M124 | ERROR | Cannot execute SfrCC2: 'PATH'!" | Check path to SfrCC2. |
M125 | WARNING | SfrCC2 report: 'MSG' SfrCC2 report end. | |
M126 | WARNING | SfrDis: 'MSG' | |
M127 | ERROR | SfrCC2 reports errors! | Check SVD file. |
M128 | WARNING | SfrCC2 reports warnings! | Check SVD file. |
M129 | ERROR | Option unknown: 'OPT' | Check given option 'OPT'. |
M130 | ERROR | Cannot create file 'NAME' | Check user rights. |
M132 | ERROR | SfrCC2 report: 'MSG' SfrCC2 report end." |
Message Number | Type | Message Text | Action |
---|---|---|---|
M201 | ERROR | Tag <'TAG'> unknown or not allowed on this level." | Check tag |
M202 | ERROR | Parse error: <'TAG'> = 'VALUE' | Check tag/value. |
M203 | ERROR | Value already set: <'TAG'> = 'VALUE' | Check tag/value. |
M204 | ERROR | Parse Error: 'VALUE' | Check value. |
M205 | WARNING | Tag <'TAG'> empty | Assign value to tag. |
M206 | ERROR | DerivedFrom not found: 'NAME' | Check derivate. |
M207 | ERROR | Expression marker found but no <dim> specified: 'NAME' | Specify dimension. |
M208 | ERROR | Ignoring <dimIndex> because specified <name> requires Array generation. | Generate an array. |
M209 | WARNING | CPU section not set. This is required for CMSIS Headerfile generation and debug support. | Add CPU section. |
M210 | WARNING | Use new Format CMSIS-SVD >= V1.1 and add <CPU> Section. | Update schema and add CPU section. |
M211 | ERROR | Ignoring 'LEVEL' 'NAME' (see previous message) | |
M212 | ERROR | Address Block <usage> parse error: 'NAME' | Correct address block. |
M213 | ERROR | Expression for 'NAME' incomplete, <'TAG'> missing. | Add tag. |
M214 | ERROR | Peripheral 'NAME' <dim> single-instantiation is not supported (use Array instead). | Correct Regs to Reg[s]. |
M215 | WARNING | Size of <dim> is only one element for 'NAME', is this intended? | Check single element. |
M216 | WARNING | Unsupported character found in 'NAME' : 'HEX'. | Correct name. |
M217 | WARNING | Forbidden Trigraph '??CHAR' found in 'NAME'. | |
M218 | WARNING | Unsupported ESC sequence found in 'NAME' : 'CHAR'. | Correct escape sequence. |
M219 | ERROR | C Code generation error: 'MSG' | |
M220 | WARNING | C Code generation warning: 'MSG' | |
M221 | WARNING | Input filename must end with .svd: 'NAME' | Correct input filename extension. |
M222 | WARNING | Input filename has no extension: 'NAME' | Correct input filename extension. |
M223 | ERROR | Input File Name 'INFILE' does not match the tag <name> in the <device> section: 'NAME' | Correct the MCU name. |
M224 | WARNING | Deprecated: 'NAME' Use 'NAME2' instead | Update SVD file. |
M225 | ERROR | Upper/lower case error: 'NAME', should be 'NAME2'" | Update SVD file. |
M226 | ERROR | SFD Code generation error: 'MSG' | |
M227 | WARNING | SFD Code generation warning: 'MSG' | |
M228 | ERROR | Enumerated Value Container: Only one Item allowed on this Level! | Remove additional items. |
M229 | ERROR | Register 'NAME' is not an array, <dimArrayIndex> is not applicable | Correct SVD. |
M230 | ERROR | Value 'NAME':'NUM' out of Range for 'LEVEL' 'NAME2'['NUM2']. | Correct SVD. |
M231 | ERROR | Value <isDefault> not allowed for 'LEVEL'. | Correct SVD. |
M232 | ERROR | Tag <'TAG'> name 'NAME' must not have specifier 'CHAR'. Ignoring entry." | Correct SVD. |
M233 | ERROR | Parse error: <'TAG'> = 'VALUE' | Correct SVD. |
M234 | ERROR | No valid items found for 'LEVEL' 'NAME' | Correct SVD. |
M235 | ERROR | 'LEVEL' 'NAME' cannot be an array. | Correct SVD. |
M236 | ERROR | Expression for <'TAG'> 'NAME' not allowed. | Correct SVD. |
M237 | ERROR | Nameless 'LEVEL' must have <'TAG'>. | Correct SVD. |
M238 | ERROR | 'LEVEL' must not have <'TAG'>." | Correct SVD. |
M239 | ERROR | Dimed 'LEVEL' 'NAME' must have an expression. | Correct SVD. |
M240 | ERROR | Tag <'TAG'> unknown or not allowed on 'LEVEL2':'LEVEL'. | Correct SVD. |
M241 | ERROR | Parse Error: 'VALUE' invalid for Array generation | Correct SVD. |
M242 | WARNING | 'LEVEL' 'NAME' <dimArrayIndex> found, but no <dim> | Correct SVD. |
M243 | WARNING | 'LEVEL' 'NAME' <dimArrayIndex> found, but <dim> does not describe an array | Correct SVD. |
Message Number | Type | Message Text | Action |
---|---|---|---|
M301 | ERROR | Interrupt number 'NUM' : 'NAME' already defined: 'NAME2' 'LINE' | |
M302 | ERROR | Size of Register 'NAME':'NUM' must be 8, 16 or 32 Bits | |
M303 | WARNING | Register name 'NAME' is prefixed with Peripheral name 'NAME2' | RegName = USART_CR ==> USART->USART_CR |
M304 | WARNING | Interrupt number overwrite: 'NUM' : 'NAME' 'LINE' | |
M305 | ERROR | Name not C compliant: 'NAME' : 'HEX', replaced by '_' | |
M306 | ERROR | Schema Version not set for <device>. | |
M307 | ERROR | Name is equal to Value: 'NAME' | |
M308 | ERROR | Number of <dimIndex> Elements 'NUM' is different to number of <dim> instances 'NUM2' | |
M309 | ERROR | Field 'NAME': Offset error: 'NUM' | |
M310 | ERROR | Field 'NAME': BitWidth error: 'NUM' | |
M311 | ERROR | Field 'NAME': Calculation: MSB or LSB == -1 | |
M312 | ERROR | Address Block missing for Peripheral 'NAME' | |
M313 | ERROR | Field 'NAME': LSB > MSB: BitWith calculates to 'NUM' | |
M314 | ERROR | Address Block: <offset> or <size> not set. | |
M315 | ERROR | Address Block: <size> is zero. | |
M316 | ERROR | 'LEVEL' <name> not set. | |
M317 | WARNING | 'LEVEL' <description> not set. | |
M318 | WARNING | 'LEVEL' 'NAME' <'TAG'> is equal to <name> | |
M319 | WARNING | 'LEVEL' <'TAG'> 'NAME' ends with newline, is this intended? | |
M320 | WARNING | 'LEVEL' <description> 'NAME' is not very descriptive | |
M321 | WARNING | 'LEVEL' <'ITEM'> 'NAME' starts with '_', is this intended? | |
M322 | ERROR | 'LEVEL' 'ITEM' 'NAME' is meaningless text. Deleted. | |
M323 | WARNING | 'LEVEL' <'ITEM'> 'NAME' contains text 'TEXT' | |
M324 | ERROR | Field 'NAME' 'BITRANGE' does not fit into Register 'NAME2':'NUM' 'LINE' | |
M325 | ERROR | CPU Revision is not set" | |
M326 | ERROR | Endianess is not set, using default (little) | |
M327 | ERROR | NVIC Prio Bits not set or wrong value, must be 2..8. Using default (4) | |
M328 | WARNING | 'LEVEL' 'NAME' has no Registers, ignoring 'LEVEL'. | |
M329 | ERROR | CPU Type is not set, using default (Cortex-M3) | |
M330 | ERROR | Interrupt 'NAME' Number not set. | |
M331 | ERROR | Interrupt 'NAME' Number 'NUM' greater 239. | |
M332 | WARNING | 'LEVEL' 'NAME' has only one Register. | |
M333 | ERROR | Duplicate <enumeratedValue> 'NUM': 'NAME' ('USAGE'), already used by 'NAME2' ('USAGE2') 'LINE' | |
M334 | WARNING | 'LEVEL' <'ITEM'> 'NAME' is very long, use <description> and a shorter <name> | |
M335 | ERROR | Value 'NAME':'NUM' does not fit into field 'NAME2' 'BITRANGE'. | |
M336 | ERROR | 'LEVEL' 'NAME' already defined 'LINE' | |
M337 | ERROR | 'LEVEL' 'NAME' already defined 'LINE' | |
M338 | ERROR | Field 'NAME' 'BITRANGE' ('ACCESS') overlaps 'NAME2' 'BITRANGE2' ('ACCESS2') 'LINE' | |
M339 | ERROR | Register 'NAME' ('ACCESS') (@'ADDRSIZE') has same address or overlaps 'NAME2' ('ACCESS2') (@'ADDRSIZE2') 'LINE' | |
M340 | ERROR | No Devices found. | |
M341 | ERROR | More than one devices found, only one is allowed per SVD File. | |
M342 | ERROR | Dim-extended 'LEVEL' 'NAME' must not have <headerStructName> | |
M343 | ERROR | 'LEVEL' 'NAME' (@'ADDR') has same address as 'NAME2' 'LINE' | |
M344 | ERROR | Register 'NAME' (@'ADDRSIZE') is outside or does not fit any <addressBlock> specified for Peripheral 'NAME2' 'TEXT' | |
M345 | ERROR | Field 'NAME' 'BITRANGE' does not fit into Register 'NAME2':'NUM' | |
M346 | WARNING | Register 'NAME' (@'ADDR') offset is equal or is greater than it's Peripheral base address 'NAME2' (@'ADDR2'), is this intended? | |
M347 | WARNING | Field 'NAME' (width < 6Bit) without any <enumeratedValue> found. | |
M348 | ERROR | Alternate 'LEVEL' 'NAME' does not exist at 'LEVEL' address (@'ADDR') | |
M349 | ERROR | Alternate 'LEVEL' 'NAME' is equal to 'LEVEL' name 'NAME2' | |
M350 | WARNING | Peripheral 'NAME' (@'ADDR') is not 4Byte-aligned. | |
M351 | WARNING | Peripheral 'TYPE' 'NAME' is equal to Peripheral name. | |
M352 | WARNING | AddressBlock of Peripheral 'NAME' (@'ADDR') 'TEXT' overlaps 'NAME2' (@'ADDR2') 'TEXT2' 'LINE' | |
M353 | WARNING | Peripheral group name 'NAME' should not end with '_' | |
M354 | ERROR | Interrupt ''NUM':'NAME' specifies a Core Interrupt. Core Interrupts must not be defined, they are set through <cpu><name>. | |
M355 | ERROR | No Interrupts found on pos. 0..15. External (Vendor-)Interrupts possibly defined on position 16+. External Interrupts must start on position 0 | |
M356 | WARNING | No Interrupt definitions found. | |
M357 | ERROR | Core Interrupts found. Interrupt Numbers are wrong. Internal Interrupts must not be described, External Interrupts must start at 0. | |
M358 | ERROR | AddressBlock of Peripheral 'NAME' 'TEXT' overlaps AddressBlock 'TEXT2' in same peripheral 'LINE' | |
M359 | ERROR | Address Block: <usage> not set. | |
M360 | ERROR | Address Block: found <'TAG'> ('HEXNUM') > 'HEXNUM2'. | |
M361 | ERROR | 'LEVEL' 'ITEM' 'NAME': 'RESERVED' items must not be defined. | |
M362 | WARNING | 'LEVEL' 'ITEM' 'NAME': 'RESERVED' items must not be defined. | |
M363 | ERROR | CPU: <sauNumRegions> not set. | |
M364 | ERROR | CPU: <sauNumRegions> value 'NUM' greater than SAU max num ('NUM2') | |
M365 | WARNING | Register 'NAME' ('ACCESS') (@'ADDRSIZE') has same address or overlaps 'NAME2' ('ACCESS2') (@'ADDRSIZE2') 'LINE' | |
M366 | ERROR | Register 'NAME' size ('NUM'Bit) is greater than <dimIncrement> * <addressBitsUnits> ('NUM2'Bit). | |
M367 | WARNING | Access Type: Field 'NAME' ('ACCESS') does not match Register 'NAME2' ('ACCESS2') | |
M368 | WARNING | 'LEVEL' 'NAME' (@'ADDR') has same address as 'NAME2' 'LINE' | |
M369 | ERROR | Enumerated Value 'NAME': <value> not set. | |
M370 | ERROR | 'LEVEL' 'NAME': <offset> not set. | |
M371 | ERROR | 'LEVEL' 'NAME' <headerStructName> is equal to hirachical name | |
M372 | ERROR | 'LEVEL' <'TAG'> 'NAME' already defined 'LINE' | |
M373 | ERROR | 'LEVEL' <'TAG'> 'NAME' already defined 'LINE' | |
M374 | WARNING | <enumeratedValues> can be one <enumeratedValues> container for all <enumeratedValue>s, where <usage> can be read, write, or read-write or two <enumeratedValues> containers, where one is set to <usage> read and the other is set to <usage> write | |
M375 | ERROR | 'LEVEL' 'NAME' (<enumeratedValues> 'NAME2'): Too many <enumeratedValues> container specified. | |
M376 | ERROR | 'LEVEL' 'NAME' (<enumeratedValues> 'NAME2'): 'USAGE' container already defined in 'LINE'. | |
M377 | ERROR | 'LEVEL' 'NAME' (<enumeratedValues> 'NAME2'): 'USAGE' container conflicts with 'NAME3' 'LINE'. | |
M378 | ERROR | Register Array: Register 'NAME' size ('NUM'Bit) does not match <dimIncrement> ('NUM2'Bit). | |
M379 | ERROR | XBin Number 'NAME' too large, skipping evaluation. | |
M380 | ERROR | AddressBlock of Peripheral 'NAME' (@'ADDR') 'TEXT' does not fit into 32Bit Address Space. | |
M381 | ERROR | Interrupt 'NAME' Number 'NUM' greater or equal deviceNumInterrupts ('NUM2'). | |
M382 | ERROR | 'LEVEL' 'NAME': 'NAME2' 'HEXNUM' does not fit into 'LEVEL' width: 'NUM' Bit. |
Message Number | Type | Message Text | Action |
---|---|---|---|
M517 | WARNING | SFD Code generation: Forbidden Trigraph '??CHAR' found in 'NAME'. | |
M516 | WARNING | SFD Code generation: Unsupported character found in 'NAME' : 'HEX'. | |
M518 | WARNING | SFD Code generation: Unsupported ESC sequence found in 'NAME' : 'CHAR'. |