Open-CMSIS-SVD  
System View Description
SVDConv utility

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:

  • Checks the syntactical and structural compliance with the specified CMSIS-SVD format.
  • Checks the consistency, correctness, and completeness of the CMSIS-SVD file against the CMSIS-SVD schema file.
  • Generates CMSIS-compliant device header files, which can be used for software development.
Note
Consider using --strict option to receive all pedantic warnings. Some rules are skipped by default due to backward compatibility reasons. All newly developed/updated SVD files should rather respect all rules.

Operation

SVDConv is invoked form the command line. The general command format is:

SVDConv.exe <SVD_file> <options>

 

<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.

Return Codes

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

  1. Retrieve help information on screen.
    SVDConv

  2. Perform a consistency check by passing only the SVD file name. Errors and warnings are printed on screen.
    SVDConv ARM_Example.svd

    The result is printed on screen:
       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)

  3. Generate the header file. Performs a consistency check. Errors and warnings are printed on screen.
    SVDConv ARM_Example.svd --generate=header

    Code snippet from the generated header file showing the structure for TIMER0.
    /* ================ TIMER0 ================ */
    typedef struct { /*!< TIMER0 Structure */
    __IO uint32_t CR; /*!< Control Register */
    __IO uint16_t SR; /*!< Status Register */
    __I uint16_t RESERVED0[5];
    __IO uint16_t INT; /*!< Interrupt Register */
    __I uint16_t RESERVED1[7];
    __IO uint32_t COUNT; /*!< The Counter Register reflects the actual Value of the Timer/Counter */
    __IO uint32_t MATCH; /*!< The Match Register stores the compare Value for the MATCH condition */
    union {
    __O uint32_t PRESCALE_WR; /*!< The Prescale Register stores the Value for the prescaler. The
    cont event gets divided by this value */
    __I uint32_t PRESCALE_RD; /*!< The Prescale Register stores the Value for the prescaler. The
    cont event gets divided by this value */
    };
    __I uint32_t RESERVED2[9];
    __IO uint32_t RELOAD[4]; /*!< The Reload Register stores the Value the COUNT Register gets
    reloaded on a when a condition was met. */
    } TIMER0_Type;

  4. Generate the header file containing bit fields. Performs a consistency check. Errors and warnings are printed on screen.
    SVDConv ARM_Example.svd --generate=header --fields=struct

    Code snippet from the generated header file showing the structure for TIMER0.
    Compare to the code snippet above.
    /* ================ TIMER0 ================ */
    typedef struct { /*!< TIMER0 Structure */
    union {
    __IO uint32_t CR; /*!< Control Register */
    struct {
    __IO uint32_t EN : 1; /*!< Enable */
    __O uint32_t RST : 1; /*!< Reset Timer */
    __IO uint32_t CNT : 2; /*!< Counting direction */
    __IO uint32_t MODE : 3; /*!< Operation Mode */
    __IO uint32_t PSC : 1; /*!< Use Prescaler */
    __IO uint32_t CNTSRC : 4; /*!< Timer / Counter Source Divider */
    __IO uint32_t CAPSRC : 4; /*!< Timer / Counter Capture Source */
    __IO uint32_t CAPEDGE : 2; /*!< Capture Edge, select which Edge should result in a counter increment
    or decrement */
    uint32_t : 2;
    __IO uint32_t TRGEXT : 2; /*!< Triggers an other Peripheral */
    uint32_t : 2;
    __IO uint32_t RELOAD : 2; /*!< Select RELOAD Register n to reload Timer on condition */
    __IO uint32_t IDR : 2; /*!< Selects, if Reload Register number is incremented, decremented
    or not modified */
    uint32_t : 3;
    __IO uint32_t S : 1; /*!< Starts and Stops the Timer / Counter */
    } CR_b; /*!< BitSize */
    };
    union {
    __IO uint16_t SR; /*!< Status Register */
    struct {
    __I uint16_t RUN : 1; /*!< Shows if Timer is running or not */
    uint16_t : 7;
    __IO uint16_t MATCH : 1; /*!< Shows if the MATCH was hit */
    __IO uint16_t UN : 1; /*!< Shows if an underflow occured. This flag is sticky */
    __IO uint16_t OV : 1; /*!< Shows if an overflow occured. This flag is sticky */
    uint16_t : 1;
    __I uint16_t RST : 1; /*!< Shows if Timer is in RESET state */
    uint16_t : 1;
    __I uint16_t RELOAD : 2; /*!< Shows the currently active RELOAD Register */
    } SR_b; /*!< BitSize */
    };
    __I uint16_t RESERVED0[5];
    union {
    __IO uint16_t INT; /*!< Interrupt Register */
    struct {
    __IO uint16_t EN : 1; /*!< Interrupt Enable */
    uint16_t : 3;
    __IO uint16_t MODE : 3; /*!< Interrupt Mode, selects on which condition the Timer should
    generate an Interrupt */
    } INT_b; /*!< BitSize */
    };
    __I uint16_t RESERVED1[7];
    __IO uint32_t COUNT; /*!< The Counter Register reflects the actual Value of the Timer/Counter */
    __IO uint32_t MATCH; /*!< The Match Register stores the compare Value for the MATCH condition */
    union {
    __O uint32_t PRESCALE_WR; /*!< The Prescale Register stores the Value for the prescaler. The
    cont event gets divided by this value */
    __I uint32_t PRESCALE_RD; /*!< The Prescale Register stores the Value for the prescaler. The
    cont event gets divided by this value */
    };
    __I uint32_t RESERVED2[9];
    __IO uint32_t RELOAD[4]; /*!< The Reload Register stores the Value the COUNT Register gets
    reloaded on a when a condition was met. */
    } TIMER0_Type;

Error and Warning Messages

The following table shows the errors and warnings issued by svdconv.

Help messages

Message Number Type Message Text Details/Action
M020 TEXTSVD_STRING_OPTIONS Displays programm help.
M021 TEXT'DESCR' 'VER'
'COPYRIGHT'
Displays module name 'DESCR', version 'VER' and copyright information 'COPYRIGHT'.
M022 TEXTFound 'ERR' Error(s) and 'WARN' Warning(s).Displays the number of errors/warnings.
M023 TEXTPhase 'CHECK' Information about the check phase.
M024 TEXTArguments: 'OPTS' Specify arguments.

Informative messages

Message Number Type Message Text Details/Action
M040 Info'NAME': 'TIME' ms. Passed
M041 InfoOverall time: 'TIME' ms.
M050 InfoCurrent Working Directory: 'PATH'
M051 InfoReading SVD File: 'PATH'
M061 InfoChecking SVD Description

Invocation errors

Message Number Type Message Text Action
M101 ERRORUnknown error!Please contact support.
M102 ERRORMFC initialization failedPlease contact support.
M103 ERRORInternal Error: 'REF' Please contact support.
M104 CRITICAL'MSG' Please contact support.
M105 ERRORCannot add Register to group sorter: 'NAME'
M106 ERRORCommand 'NAME' failed: 'NUM': 'MSG'
M107 ERRORLost xml file stream.Check SVD file.
M108 ERRORSfrDis not supported.Disassembly not supported.
M109 ERRORCannot find 'NAME' Check specified file.
M111 PROGRESS'NAME' failedCheck specified file.
M120 ERRORInvalid arguments!Provide a list of valid arguments.
M121 ERRORFile not found 'NAME' Check specified file.
M122 ERRORName of command file should follow '@' Check specified command.
M123 ERRORFile not found: 'PATH'! Check speficied path.
M124 ERRORCannot execute SfrCC2: 'PATH'!"</td><td>Check path to SfrCC2.</td></tr> <tr><td>M125</td> <td>WARNING</td><td>SfrCC2 report: \n \em 'MSG' \n SfrCC2 report end.</td><td></td></tr> <tr><td>M126</td> <td>WARNING</td><td>SfrDis: \em 'MSG'</td><td></td></tr> <tr><td>M127</td> <td>ERROR</td><td>SfrCC2 reports errors!</td><td>Check SVD file.</td></tr> <tr><td>M128</td> <td>WARNING</td><td>SfrCC2 reports warnings!</td><td>Check SVD file.</td></tr> <tr><td>M129</td> <td>ERROR</td><td>Option unknown: \em 'OPT'</td><td>Check given option \em 'OPT'.</td></tr> <tr><td>M130</td> <td>ERROR</td><td>Cannot create file \em 'NAME'</td><td>Check user rights.</td></tr> <tr><td>M132</td> <td>ERROR</td><td>SfrCC2 report: \n \em 'MSG' \n SfrCC2 report end."

Validation errors

Message Number Type Message Text Action
M201 ERRORTag <'TAG'> unknown or not allowed on this level."</td><td>Check tag</td></tr> <tr><td>M202</td> <td>ERROR</td><td>Parse error: \<\em 'TAG'> = \em 'VALUE'</td><td>Check tag/value.</td></tr> <tr><td>M203</td> <td>ERROR</td><td>Value already set: \<\em 'TAG'> = \em 'VALUE'</td><td>Check tag/value.</td></tr> <tr><td>M204</td> <td>ERROR</td><td>Parse Error: \em 'VALUE'</td><td>Check value.</td></tr> <tr><td>M205</td> <td>WARNING</td><td>Tag \<\em 'TAG'> empty</td><td>Assign value to tag.</td></tr> <tr><td>M206</td> <td>ERROR</td><td>DerivedFrom not found: \em 'NAME'</td><td>Check derivate.</td></tr> <tr><td>M207</td> <td>ERROR</td><td>Expression marker found but no \<dim> specified: \em 'NAME'</td><td>Specify dimension.</td></tr> <tr><td>M208</td> <td>ERROR</td><td>Ignoring \<dimIndex> because specified \<name> requires Array generation.</td><td>Generate an array.</td></tr> <tr><td>M209</td> <td>WARNING</td><td>CPU section not set. This is required for CMSIS Headerfile generation and debug support.</td><td>Add CPU section.</td></tr> <tr><td>M210</td> <td>WARNING</td><td>Use new Format CMSIS-SVD >= V1.1 and add \<CPU\> Section.</td><td>Update schema and add CPU section.</td></tr> <tr><td>M211</td> <td>ERROR</td><td>Ignoring \em 'LEVEL' \em 'NAME' (see previous message)</td><td></td></tr> <tr><td>M212</td> <td>ERROR</td><td>Address Block \<usage> parse error: \em 'NAME'</td><td>Correct address block.</td></tr> <tr><td>M213</td> <td>ERROR</td><td>Expression for \em 'NAME' incomplete, <\em 'TAG'> missing.</td><td>Add tag.</td></tr> <tr><td>M214</td> <td>ERROR</td><td>Peripheral \em 'NAME' \<dim> single-instantiation is not supported (use Array instead).</td><td>Correct Reg%s to Reg[%s].</td></tr> <tr><td>M215</td> <td>WARNING</td><td>Size of \<dim> is only one element for \em 'NAME', is this intended?</td><td>Check single element.</td></tr> <tr><td>M216</td> <td>WARNING</td><td>Unsupported character found in \em 'NAME' : \em 'HEX'.</td><td>Correct name.</td></tr> <tr><td>M217</td> <td>WARNING</td><td>Forbidden Trigraph '??%CHAR%' found in \em 'NAME'.</td><td></td></tr> <tr><td>M218</td> <td>WARNING</td><td>Unsupported ESC sequence found in \em 'NAME' : \em 'CHAR'.</td><td>Correct escape sequence.</td></tr> <tr><td>M219</td> <td>ERROR</td><td>C Code generation error: \em 'MSG'</td><td></td></tr> <tr><td>M220</td> <td>WARNING</td><td>C Code generation warning: \em 'MSG'</td><td></td></tr> <tr><td>M221</td> <td>WARNING</td><td>Input filename must end with .svd: \em 'NAME'</td><td>Correct input filename extension.</td></tr> <tr><td>M222</td> <td>WARNING</td><td>Input filename has no extension: \em 'NAME'</td><td>Correct input filename extension.</td></tr> <tr><td>M223</td> <td>ERROR</td><td>Input File Name \em 'INFILE' does not match the tag \<name> in the \<device> section: \em 'NAME%'</td><td>Correct the MCU name.</td></tr> <tr><td>M224</td> <td>WARNING</td><td>Deprecated: \em 'NAME' Use \em 'NAME2' instead</td><td>Update SVD file.</td></tr> <tr><td>M225</td> <td>ERROR</td><td>Upper/lower case error: \em 'NAME', should be \em 'NAME2'"Update SVD file.
M226 ERRORSFD Code generation error: 'MSG'
M227 WARNINGSFD Code generation warning: 'MSG'
M228 ERROREnumerated Value Container: Only one Item allowed on this Level!Remove additional items.
M229 ERRORRegister 'NAME' is not an array, <dimArrayIndex> is not applicableCorrect SVD.
M230 ERRORValue 'NAME':'NUM' out of Range for 'LEVEL' 'NAME2'['NUM2'].Correct SVD.
M231 ERRORValue <isDefault> not allowed for 'LEVEL'.Correct SVD.
M232 ERRORTag <'TAG'> name 'NAME' must not have specifier 'CHAR'. Ignoring entry."</td><td>Correct SVD.</td></tr> <tr><td>M233</td> <td>ERROR</td><td>Parse error: \<\em 'TAG'> = \em 'VALUE'</td><td>Correct SVD.</td></tr> <tr><td>M234</td> <td>ERROR</td><td>No valid items found for \em 'LEVEL' \em 'NAME'</td><td>Correct SVD.</td></tr> <tr><td>M235</td> <td>ERROR</td><td>\em 'LEVEL' \em 'NAME' cannot be an array.</td><td>Correct SVD.</td></tr> <tr><td>M236</td> <td>ERROR</td><td>Expression for \<\em 'TAG'> \em 'NAME' not allowed.</td><td>Correct SVD.</td></tr> <tr><td>M237</td> <td>ERROR</td><td>Nameless \em 'LEVEL' must have \<\em 'TAG'>.</td><td>Correct SVD.</td></tr> <tr><td>M238</td> <td>ERROR</td><td>\em 'LEVEL' must not have \<\em 'TAG'>."Correct SVD.
M239 ERRORDimed 'LEVEL' 'NAME' must have an expression.Correct SVD.
M240 ERRORTag <'TAG'> unknown or not allowed on 'LEVEL2':'LEVEL'.Correct SVD.
M241 ERRORParse Error: 'VALUE' invalid for Array generationCorrect SVD.
M242 WARNING'LEVEL' 'NAME' <dimArrayIndex> found, but no <dim>Correct SVD.
M243 WARNING'LEVEL' 'NAME' <dimArrayIndex> found, but <dim> does not describe an arrayCorrect SVD.

Data Check Errors

Message Number Type Message Text Action
M301 ERRORInterrupt number 'NUM' : 'NAME' already defined: 'NAME2' 'LINE'
M302 ERRORSize of Register 'NAME':'NUM' must be 8, 16 or 32 Bits
M303 WARNINGRegister name 'NAME' is prefixed with Peripheral name 'NAME2' RegName = USART_CR ==> USART->USART_CR
M304 WARNINGInterrupt number overwrite: 'NUM' : 'NAME' 'LINE'
M305 ERRORName not C compliant: 'NAME' : 'HEX', replaced by '_'
M306 ERRORSchema Version not set for <device>.
M307 ERRORName is equal to Value: 'NAME'
M308 ERRORNumber of <dimIndex> Elements 'NUM' is different to number of <dim> instances 'NUM2'
M309 ERRORField 'NAME': Offset error: 'NUM'
M310 ERRORField 'NAME': BitWidth error: 'NUM'
M311 ERRORField 'NAME': Calculation: MSB or LSB == -1
M312 ERRORAddress Block missing for Peripheral 'NAME'
M313 ERRORField 'NAME': LSB > MSB: BitWith calculates to 'NUM'
M314 ERRORAddress Block: <offset> or <size> not set.
M315 ERRORAddress 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 ERRORField 'NAME' 'BITRANGE' does not fit into Register 'NAME2':'NUM' 'LINE'
M325 ERRORCPU Revision is not set"</td><td></td></tr> <tr><td>M326</td> <td>ERROR</td><td>Endianess is not set, using default (little)</td><td></td></tr> <tr><td>M327</td> <td>ERROR</td><td>NVIC Prio Bits not set or wrong value, must be 2..8. Using default (4)</td><td></td></tr> <tr><td>M328</td> <td>WARNING</td><td>\em 'LEVEL' \em 'NAME' has no Registers, ignoring \em 'LEVEL'.</td><td></td></tr> <tr><td>M329</td> <td>ERROR</td><td>CPU Type is not set, using default (Cortex-M3)</td><td></td></tr> <tr><td>M330</td> <td>ERROR</td><td>Interrupt \em 'NAME' Number not set.</td><td></td></tr> <tr><td>M331</td> <td>ERROR</td><td>Interrupt \em 'NAME' Number \em 'NUM' greater 239.</td><td></td></tr> <tr><td>M332</td> <td>WARNING</td><td>\em 'LEVEL' \em 'NAME' has only one Register.</td><td></td></tr> <tr><td>M333</td> <td>ERROR</td><td>Duplicate \<enumeratedValue> \em 'NUM': \em 'NAME' (\em 'USAGE'), already used by \em 'NAME2' (\em 'USAGE2') \em 'LINE'</td><td></td></tr> <tr><td>M334</td> <td>WARNING</td><td>\em 'LEVEL' \<\em 'ITEM'> \em 'NAME' is very long, use \<description> and a shorter \<name></td><td></td></tr> <tr><td>M335</td> <td>ERROR</td><td>Value \em 'NAME':\em 'NUM' does not fit into field \em 'NAME2' \em 'BITRANGE'.</td><td></td></tr> <tr><td>M336</td> <td>ERROR</td><td>\em 'LEVEL' \em 'NAME' already defined \em 'LINE'</td><td></td></tr> <tr><td>M337</td> <td>ERROR</td><td>\em 'LEVEL' \em 'NAME' already defined \em 'LINE'</td><td></td></tr> <tr><td>M338</td> <td>ERROR</td><td>Field \em 'NAME' \em 'BITRANGE' (\em 'ACCESS') overlaps \em 'NAME2' \em 'BITRANGE2' (\em 'ACCESS2') \em 'LINE'</td><td></td></tr> <tr><td>M339</td> <td>ERROR</td><td>Register \em 'NAME' (\em 'ACCESS') (\@\em 'ADDRSIZE') has same address or overlaps \em 'NAME2' (\em 'ACCESS2') (\@\em 'ADDRSIZE2') \em 'LINE'</td><td></td></tr> <tr><td>M340</td> <td>ERROR</td><td>No Devices found.</td><td></td></tr> <tr><td>M341</td> <td>ERROR</td><td>More than one devices found, only one is allowed per SVD File.</td><td></td></tr> <tr><td>M342</td> <td>ERROR</td><td>Dim-extended \em 'LEVEL' \em 'NAME' must not have \<headerStructName></td><td></td></tr> <tr><td>M343</td> <td>ERROR</td><td>\em 'LEVEL' \em 'NAME' (\@\em 'ADDR') has same address as \em 'NAME2' \em 'LINE'</td><td></td></tr> <tr><td>M344</td> <td>ERROR</td><td>Register \em 'NAME' (\@\em 'ADDRSIZE') is outside or does not fit any \<addressBlock> specified for Peripheral \em 'NAME2' \n \em 'TEXT'</td><td></td></tr> <tr><td>M345</td> <td>ERROR</td><td>Field \em 'NAME' \em 'BITRANGE' does not fit into Register \em 'NAME2':\em 'NUM'</td><td></td></tr> <tr><td>M346</td> <td>WARNING</td><td>Register \em 'NAME' (\@\em 'ADDR') offset is equal or is greater than it's Peripheral base address \em 'NAME2' (\@\em 'ADDR2'), is this intended?</td><td></td></tr> <tr><td>M347</td> <td>WARNING</td><td>Field \em 'NAME' (width \< 6Bit) without any \<enumeratedValue> found.</td><td></td></tr> <tr><td>M348</td> <td>ERROR</td><td>Alternate \em 'LEVEL' \em 'NAME' does not exist at \em 'LEVEL' address (\@\em 'ADDR')</td><td></td></tr> <tr><td>M349</td> <td>ERROR</td><td>Alternate \em 'LEVEL' \em 'NAME' is equal to \em 'LEVEL' name \em 'NAME2'</td><td></td></tr> <tr><td>M350</td> <td>WARNING</td><td>Peripheral \em 'NAME' (\@\em 'ADDR') is not 4Byte-aligned.</td><td></td></tr> <tr><td>M351</td> <td>WARNING</td><td>Peripheral \em 'TYPE' \em 'NAME' is equal to Peripheral name.</td><td></td></tr> <tr><td>M352</td> <td>WARNING</td><td>AddressBlock of Peripheral \em 'NAME' (\@\em 'ADDR') \em 'TEXT' overlaps \em 'NAME2' (\@\em 'ADDR2') \em 'TEXT2' \em 'LINE'</td><td></td></tr> <tr><td>M353</td> <td>WARNING</td><td>Peripheral group name \em 'NAME' should not end with '_'</td><td></td></tr> <tr><td>M354</td> <td>ERROR</td><td>Interrupt '\em 'NUM':\em 'NAME' specifies a Core Interrupt. Core Interrupts must not be defined, they are set through \<cpu>\<name>.</td><td></td></tr> <tr><td>M355</td> <td>ERROR</td><td>No Interrupts found on pos. 0..15. External (Vendor-)Interrupts possibly defined on position 16+. External Interrupts must start on position 0</td><td></td></tr> <tr><td>M356</td> <td>WARNING</td><td>No Interrupt definitions found.</td><td></td></tr> <tr><td>M357</td> <td>ERROR</td><td>Core Interrupts found. Interrupt Numbers are wrong. Internal Interrupts must not be described, External Interrupts must start at 0.</td><td></td></tr> <tr><td>M358</td> <td>ERROR</td><td>AddressBlock of Peripheral \em 'NAME' \em 'TEXT' overlaps AddressBlock \em 'TEXT2' in same peripheral \em 'LINE'</td><td></td></tr> <tr><td>M359</td> <td>ERROR</td><td>Address Block: \<usage> not set.</td><td></td></tr> <tr><td>M360</td> <td>ERROR</td><td>Address Block: found \<\em 'TAG'> (\em 'HEXNUM') > \em 'HEXNUM2'.</td><td></td></tr> <tr><td>M361</td> <td>ERROR</td><td>\em 'LEVEL' \em 'ITEM' \em 'NAME': 'RESERVED' items must not be defined.</td><td></td></tr> <tr><td>M362</td> <td>WARNING</td><td>\em 'LEVEL' \em 'ITEM' \em 'NAME': 'RESERVED' items must not be defined.</td><td></td></tr> <tr><td>M363</td> <td>ERROR</td><td>CPU: \<sauNumRegions> not set.</td><td></td></tr> <tr><td>M364</td> <td>ERROR</td><td>CPU: \<sauNumRegions> value \em 'NUM' greater than SAU max num (\em 'NUM2')</td><td></td></tr> <tr><td>M365</td> <td>WARNING</td><td>Register \em 'NAME' (\em 'ACCESS') (\@\em 'ADDRSIZE') has same address or overlaps \em 'NAME2' (\em 'ACCESS2') (\@\em 'ADDRSIZE2') \em 'LINE'</td><td></td></tr> <tr><td>M366</td> <td>ERROR</td><td>Register \em 'NAME' size (\em 'NUM'Bit) is greater than \<dimIncrement> * \<addressBitsUnits> (\em 'NUM2'Bit).</td><td></td></tr> <tr><td>M367</td> <td>WARNING</td><td>Access Type: Field \em 'NAME' (\em 'ACCESS') does not match Register \em 'NAME2' (\em 'ACCESS2')</td><td></td></tr> <tr><td>M368</td> <td>WARNING</td><td>\em 'LEVEL' \em 'NAME' (\@\em 'ADDR') has same address as \em 'NAME2' \em 'LINE'</td><td></td></tr> <tr><td>M369</td> <td>ERROR</td><td>Enumerated Value \em 'NAME': \<value> not set.</td><td></td></tr> <tr><td>M370</td> <td>ERROR</td><td>\em 'LEVEL' \em 'NAME': \<offset> not set.</td><td></td></tr> <tr><td>M371</td> <td>ERROR</td><td>\em 'LEVEL' \em 'NAME' \<headerStructName> is equal to hirachical name</td><td></td></tr> <tr><td>M372</td> <td>ERROR</td><td>\em 'LEVEL' \<\em 'TAG'> \em 'NAME' already defined \em 'LINE'</td><td></td></tr> <tr><td>M373</td> <td>ERROR</td><td>\em 'LEVEL' \<\em 'TAG'> \em 'NAME' already defined \em 'LINE'</td><td></td></tr> <tr><td>M374</td> <td>WARNING</td><td>\<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</td><td></td></tr> <tr><td>M375</td> <td>ERROR</td><td>\em 'LEVEL' \em 'NAME' (\<enumeratedValues\> \em 'NAME2'): Too many \<enumeratedValues> container specified.</td><td></td></tr> <tr><td>M376</td> <td>ERROR</td><td>\em 'LEVEL' \em 'NAME' (\<enumeratedValues\> \em 'NAME2'): \em 'USAGE' container already defined in \em 'LINE'.</td><td></td></tr> <tr><td>M377</td> <td>ERROR</td><td>\em 'LEVEL' \em 'NAME' (\<enumeratedValues\> \em 'NAME2'): \em 'USAGE' container conflicts with \em 'NAME3' \em 'LINE'.</td><td></td></tr> <tr><td>M378</td> <td>ERROR</td><td>Register Array: Register \em 'NAME' size (\em 'NUM'Bit) does not match \<dimIncrement\> (\em 'NUM2'Bit).</td><td></td></tr> <tr><td>M379</td> <td>ERROR</td><td>XBin Number \em 'NAME' too large, skipping evaluation.</td><td></td></tr> <tr><td>M380</td> <td>ERROR</td><td>AddressBlock of Peripheral \em 'NAME' (\@\em 'ADDR') \em 'TEXT' does not fit into 32Bit Address Space.</td><td></td></tr> <tr><td>M381</td> <td>ERROR</td><td>Interrupt \em 'NAME' Number \em 'NUM' greater or equal deviceNumInterrupts (\em 'NUM2').</td><td></td></tr> <tr><td>M382</td> <td>ERROR</td><td>\em 'LEVEL' \em 'NAME': \em 'NAME2' \em 'HEXNUM' does not fit into \em 'LEVEL' width: \em 'NUM' Bit.</td><td></td></tr> </table> @subsection autotoc_md11 Data modification errors <table class="cmtable" summary="SfrCC2 related Data modification Errors">
Message Number Type Message Text Action
M517 WARNINGSFD Code generation: Forbidden Trigraph '??CHAR' found in 'NAME'.
M516 WARNINGSFD Code generation: Unsupported character found in 'NAME' : 'HEX'.
M518 WARNINGSFD Code generation: Unsupported ESC sequence found in 'NAME' : 'CHAR'.