/** \mainpage System View Description Introduction ------------ The CMSIS System View Description format(CMSIS-SVD) formalizes the description of the system contained in Arm Cortex-M processor-based microcontrollers, in particular, the memory mapped registers of peripherals. The detail contained in system view descriptions is comparable to the data in device reference manuals. The information ranges from high level functional descriptions of a peripheral all the way down to the definition and purpose of an individual bit field in a memory mapped register. CMSIS-SVD files are developed and maintained by silicon vendors. Silicon vendors distribute their descriptions as part of CMSIS Device Family Packs. Tool vendors use CMSIS-SVD files for providing device-specific debug views of peripherals in their debugger. Last but not least, CMSIS-compliant device header files are generated from CMSIS-SVD files. CMSIS-SVD Benefits ------------------ - For Software Developers: - Consistency between device header file and what is being displayed by the debugger. - Detailed information about peripherals, registers, fields, and bit values as well as named interrupts from within the debugger, without the need to reference device documentation. - Convenient access to new and updated descriptions as part of the silicon vendor's CMSIS Device Family Packs as the packs are made availabl by silicon vendors. - Improved software development efficiency. - For Silicon Vendors: - A tool vendor independent file format enables early device support by a wide range of toolchains with limited effort. - The XML-based format helps ease the integration into in-house design flows. - Automated generation of CMSIS compliant device header files. - Full control throughout the life cycle of the CMSIS-SVD files from creation to maintenance. - For Tool Vendors: - Unified file format across silicon vendors helps the efficiency of supporting a wide range of devices in a timely manner. - Silicon vendors can provide early review access to the device support via restricted access to CMSIS Device Family Packs. - Updated descriptions are available over the web simplifying the maintenance of device support. Language Specification and Conventions --------------------------------------- - \ref svd_Format_pg CMSIS-SVD in ARM::CMSIS Pack ---------------------------- The following files relevant to CMSIS-SVD are present in the ARM::CMSIS Pack directories: |File/Folder |Content |------------------------------|----------------------------------------------------------------------- |\b CMSIS\\Documentation\\SVD | This documentation |\b CMSIS\\Utilities | Exemplary SVD file (\ref svd_Example_pg "ARM_Example.svd") and generated header file (ARM_Example.h).

 


*/ /* ************************************************************************************************ */ /** \page svd_revisionHistory Revision History From a schema perspective, CMSIS-SVD Version 1.1, 1.2 and 1.3 are fully backward compatible to version 1.0.
Version Description
V1.3.9 - Added CM85 as enumeration value for \ref elem_cpu_sc "cpuNameType".
V1.3.8 - Added SMC1 as enumeration value for \ref elem_cpu_sc "cpuNameType".
V1.3.7 - Added CM55 as enumeration value for \ref elem_cpu_sc "cpuNameType".
V1.3.6 - Added ARMV81MML as enumeration value for \ref elem_cpu_sc "cpuNameType".
V1.3.5 - Added CM35P as enumeration value for \ref elem_cpu_sc "cpuNameType".
V1.3.4 - Added information about the Linux version of \ref svd_SVDConv_pg.
V1.3.3 - Updated file header to Apache 2.0 License. - Added \em dimableIdentifierType, as a copy of previous \em identifierType adding "%s". - Updated \em identifierType to only allow names without "%s" included. - Removed \em enumerationNameType. - Added \tagem{headerEnumName} to \refelem{enumeratedValues} and to \refelem{dimArrayIndex} for \refelem{peripheral} arrays, overwriting hierarchically generated names. - Added \tagem{dimName} to \ref dimElementGroup_gr "dimElementGroup". Only valid in \refelem{cluster} context, ignored otherwise.
V1.3.2 - Extended command line of \ref svd_SVDConv_pg for partition.h file generation. - added \refelem{dimArrayIndex} to \refelem{peripheral}, \refelem{cluster}, and \refelem{register} to describe enumeration of array indices.
V1.3.1 - Added \refelem{protection} element; extended with protection option \token{p=privileged}. - Added \refelem{protection} element to \refelem{addressBlock}. - Fixed \refelem{peripheral} name type to \em identifierType to support "%s" for peripheral arrays. - Added Cortex-A class enumeration to \refelem{cpu}. - added \refelem{dimArrayIndex} to \refelem{peripheral}, \refelem{cluster}, and \refelem{register} to describe enumeration of array indices.
V1.3 - Extended \refelem{peripheral} with \tagem{dim} to support arrays. - Added nesting of \refelem{cluster} to support hierarchical register structures. - Extended \refelem{cpu} with description of the \refelem{sauRegionsConfig} (Secure Attribution Unit). - Extended \ref registerPropertiesGroup_gr "register properties" with \refelem{protection} to reflect security aspects.
V1.2 Added optional elements for Cortex-M7 in \ref elem_cpu "CPU": - \tagem{fpuDP} - \tagem{icachePresent} - \tagem{dcachePresent} - \tagem{itcmPresent} - \tagem{dtcmPresent}
V1.1 Many of the features added in version 1.1 are required for generating CMSIS-Core device header files from a CMSIS SVD description. It is expected that all CMSIS-SVD descriptions will comply with version 1.1 by now.
V1.0 Initial version.

 


*/ /* ************************************************************************************************ */ /** \page svd_validate_file_pg SVD File Validation and Usage The description quality is key to success of the CMSIS-SVD format. Aspects of quality are: - Syntactical and structural compliance with the specified CMSIS-SVD format. - Consistency and correctness. - Completeness. - Level of detail.
Validation
Automated validations are done on two levels: -# The CMSIS-SVD Schema File: XML tools use the schema file for checking the syntactical and structural correctness of an XML file that claims compliance with a certain format. The schema file CMSIS-SVD.xsd is located in the folder .\\CMSIS\\Utilities of the \b ARM::CMSIS Pack. \n\n -# SVD Conversion Utility: The conversion utility \ref svd_SVDConv_pg checks the semantics and consistency of the data contained in a CMSIS-SVD file. \b SVDConv is included in the CMSIS distribution.
Usage
CMSIS-SVD files can be used to generate: -# CMSIS-compliant device header files from a CMSIS-SVD description. Refer to the conversion tool \ref svd_SVDConv_pg for details. CMSIS device header files are developed and maintained by the silicon vendors. Therefore, the expectation is that this conversion is only of interest to these parties. -# Debug dialogs that communicate with a debugger. See below. System Views \n\n A number of tool vendors support the CMSIS-SVD format with their products. Refer to the tools documentation to find out how to use CMSIS-SVD descriptions with the debugger of your choice. Please regularly check for updates to the CMSIS Device Family Packs from the silicon vendor to to use the latest versions of the CMSIS-SVD files. \n \n Generated Debug Dialog: \image html "SystemViewer_Generated.PNG" "uVision Debug Window generated from ARM_Example.svd" \n */ /* ************************************************************************************************ */ /** \page svd_Example_pg SVD File Example \verbinclude "ARM_Example.svd" */ /* ************************************************************************************************ */ /** \page svd_SVDConv_pg SVDConv utility \b SVDConv is a command-line utility to validate CMSIS-SVD files and to generate CMSIS-compliant device header files. \b SVDConv is distributed with the \b ARM::CMSIS Pack (in the CMSIS\\Utilities directory) together with the \b CMSIS-SVD.xsd schema file. \b SVDConv is available for Windows and Linux operating systems. \b 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 --------- \b SVDConv is invoked form the command line. The general command format is: \code SVDConv.exe \endcode

 

\ 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 \ in the CMSIS-SVD file. Refer to \refelem{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 \ (for example, partition_CMSDK_ARMv8MBL.h). Refer to \ref elem_device. The content of the file uses Configuration Wizard annotations and is derived from the SAU-specific information of the \ref elem_sauRegionsConfig and the interrupts specified in the \ref elem_peripherals.
\-\-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 \b RECOMMENDED! Applies strict error checking and generates a lot more messages.
Return Codes ------------- \b SVDConv returns the following codes: \n 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 \n -# Retrieve help information on screen. \code SVDConv \endcode \n -# Perform a consistency check by passing only the SVD file name. Errors and warnings are printed on screen. \code SVDConv ARM_Example.svd \endcode \n The result is printed on screen: \verbatim MVCM3110.svd(1688) : info missing for value '2 : MODE2' MVCM3110.svd(1692) : info missing for value '3 : MODE3' MVCM3110.svd(1696) : info missing for value '4 : MODE4' Area of improvements: * Description contains 267 defined without associated Found 0 Errors and 1 Warnings Return Code: 1 (WARNINGS) \endverbatim \n -# Generate the header file. Performs a consistency check. Errors and warnings are printed on screen. \code SVDConv ARM_Example.svd --generate=header \endcode \n Code snippet from the generated header file showing the structure for \b TIMER0. \n \include "ARM_ExampleT0.h" \n -# Generate the header file containing bit fields. Performs a consistency check. Errors and warnings are printed on screen. \code SVDConv ARM_Example.svd --generate=header --fields=struct \endcode \n Code snippet from the generated header file showing the structure for \b TIMER0. \n Compare to the code snippet above. \include "ARM_ExampleT0Struct.h" \section svdconvMessages 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 TEXT\em SVD_STRING_OPTIONSDisplays programm help.
M021 TEXT\em 'DESCR' \em 'VER' \n \em 'COPYRIGHT'Displays module name 'DESCR', version 'VER' and copyright information 'COPYRIGHT'.
M022 TEXTFound \em 'ERR' Error(s) and \em 'WARN' Warning(s).Displays the number of errors/warnings.
M023 TEXTPhase \em 'CHECK'Information about the check phase.
M024 TEXTArguments: \em 'OPTS'Specify arguments.
Informative messages -----------------
Message Number Type Message Text Details/Action
M040 Info\em 'NAME': \em 'TIME' ms. Passed
M041 InfoOverall time: \em 'TIME' ms.
M050 InfoCurrent Working Directory: \em 'PATH'
M051 InfoReading SVD File: \em 'PATH'
M061 InfoChecking SVD Description
Invocation errors ----------------- Disassembly not supported.Check specified file.
Message Number Type Message Text Action
M101 ERRORUnknown error!Please contact support.
M102 ERRORMFC initialization failedPlease contact support.
M103 ERRORInternal Error: \em 'REF'Please contact support.
M104 CRITICAL\em 'MSG'Please contact support.
M105 ERRORCannot add Register to group sorter: \em 'NAME'
M106 ERRORCommand \em 'NAME' failed: \em 'NUM': \em 'MSG'
M107 ERRORLost xml file stream.Check SVD file.
M108 ERRORSfrDis not supported.
M109 ERRORCannot find \em 'NAME'Check specified file.
M111 PROGRESS\em 'NAME' failedCheck specified file.
M120 ERRORInvalid arguments!Provide a list of valid arguments.
M121 ERRORFile not found \em 'NAME'
M122 ERRORName of command file should follow \em '@'Check specified command.
M123 ERRORFile not found: \em 'PATH'!Check speficied path.
M124 ERRORCannot execute SfrCC2: \em 'PATH'!"Check path to SfrCC2.
M125 WARNINGSfrCC2 report: \n \em 'MSG' \n SfrCC2 report end.
M126 WARNINGSfrDis: \em 'MSG'
M127 ERRORSfrCC2 reports errors!Check SVD file.
M128 WARNINGSfrCC2 reports warnings!Check SVD file.
M129 ERROROption unknown: \em 'OPT'Check given option \em 'OPT'.
M130 ERRORCannot create file \em 'NAME'Check user rights.
M132 ERRORSfrCC2 report: \n \em 'MSG' \n SfrCC2 report end."
Validation errors -----------------
Message Number Type Message Text Action
M201 ERRORTag \<\em 'TAG'> unknown or not allowed on this level."Check tag
M202 ERRORParse error: \<\em 'TAG'> = \em 'VALUE'Check tag/value.
M203 ERRORValue already set: \<\em 'TAG'> = \em 'VALUE'Check tag/value.
M204 ERRORParse Error: \em 'VALUE'Check value.
M205 WARNINGTag \<\em 'TAG'> emptyAssign value to tag.
M206 ERRORDerivedFrom not found: \em 'NAME'Check derivate.
M207 ERRORExpression marker found but no \ specified: \em 'NAME'Specify dimension.
M208 ERRORIgnoring \ because specified \ requires Array generation.Generate an array.
M209 WARNINGCPU section not set. This is required for CMSIS Headerfile generation and debug support.Add CPU section.
M210 WARNINGUse new Format CMSIS-SVD >= V1.1 and add \ Section.Update schema and add CPU section.
M211 ERRORIgnoring \em 'LEVEL' \em 'NAME' (see previous message)
M212 ERRORAddress Block \ parse error: \em 'NAME'Correct address block.
M213 ERRORExpression for \em 'NAME' incomplete, <\em 'TAG'> missing.Add tag.
M214 ERRORPeripheral \em 'NAME' \ single-instantiation is not supported (use Array instead).Correct Reg%s to Reg[%s].
M215 WARNINGSize of \ is only one element for \em 'NAME', is this intended?Check single element.
M216 WARNINGUnsupported character found in \em 'NAME' : \em 'HEX'.Correct name.
M217 WARNINGForbidden Trigraph '??%CHAR%' found in \em 'NAME'.
M218 WARNINGUnsupported ESC sequence found in \em 'NAME' : \em 'CHAR'.Correct escape sequence.
M219 ERRORC Code generation error: \em 'MSG'
M220 WARNINGC Code generation warning: \em 'MSG'
M221 WARNINGInput filename must end with .svd: \em 'NAME'Correct input filename extension.
M222 WARNINGInput filename has no extension: \em 'NAME'Correct input filename extension.
M223 ERRORInput File Name \em 'INFILE' does not match the tag \ in the \ section: \em 'NAME%'Correct the MCU name.
M224 WARNINGDeprecated: \em 'NAME' Use \em 'NAME2' insteadUpdate SVD file.
M225 ERRORUpper/lower case error: \em 'NAME', should be \em 'NAME2'"Update SVD file.
M226 ERRORSFD Code generation error: \em 'MSG'
M227 WARNINGSFD Code generation warning: \em 'MSG'
M228 ERROREnumerated Value Container: Only one Item allowed on this Level!Remove additional items.
M229 ERRORRegister \em 'NAME' is not an array, \ is not applicableCorrect SVD.
M230 ERRORValue \em 'NAME':\em 'NUM' out of Range for \em 'LEVEL' \em 'NAME2'[\em 'NUM2'].Correct SVD.
M231 ERRORValue \ not allowed for \em 'LEVEL'.Correct SVD.
M232 ERRORTag \<\em 'TAG'> name \em 'NAME' must not have specifier \em 'CHAR'. Ignoring entry."Correct SVD.
M233 ERRORParse error: \<\em 'TAG'> = \em 'VALUE'Correct SVD.
M234 ERRORNo valid items found for \em 'LEVEL' \em 'NAME'Correct SVD.
M235 ERROR\em 'LEVEL' \em 'NAME' cannot be an array.Correct SVD.
M236 ERRORExpression for \<\em 'TAG'> \em 'NAME' not allowed.Correct SVD.
M237 ERRORNameless \em 'LEVEL' must have \<\em 'TAG'>.Correct SVD.
M238 ERROR\em 'LEVEL' must not have \<\em 'TAG'>."Correct SVD.
M239 ERRORDimed \em 'LEVEL' \em 'NAME' must have an expression.Correct SVD.
M240 ERRORTag \<\em 'TAG'> unknown or not allowed on \em 'LEVEL2':\em 'LEVEL'.Correct SVD.
M241 ERRORParse Error: \em 'VALUE' invalid for Array generationCorrect SVD.
M242 WARNING\em 'LEVEL' \em 'NAME' \ found, but no \Correct SVD.
M243 WARNING\em 'LEVEL' \em 'NAME' \ found, but \ does not describe an arrayCorrect SVD.
Data Check Errors -----------------
Message Number Type Message Text Action
M301 ERRORInterrupt number \em 'NUM' : \em 'NAME' already defined: \em 'NAME2' \em 'LINE'
M302 ERRORSize of Register \em 'NAME':\em 'NUM' must be 8, 16 or 32 Bits
M303 WARNINGRegister name \em 'NAME' is prefixed with Peripheral name \em 'NAME2'RegName = USART_CR ==> USART->USART_CR
M304 WARNINGInterrupt number overwrite: \em 'NUM' : \em 'NAME' \em 'LINE'
M305 ERRORName not C compliant: \em 'NAME' : \em 'HEX', replaced by '_'
M306 ERRORSchema Version not set for \.
M307 ERRORName is equal to Value: \em 'NAME'
M308 ERRORNumber of \ Elements \em 'NUM' is different to number of \ instances \em 'NUM2'
M309 ERRORField \em 'NAME': Offset error: \em 'NUM'
M310 ERRORField \em 'NAME': BitWidth error: \em 'NUM'
M311 ERRORField \em 'NAME': Calculation: MSB or LSB == -1
M312 ERRORAddress Block missing for Peripheral \em 'NAME'
M313 ERRORField \em 'NAME': LSB > MSB: BitWith calculates to \em 'NUM'
M314 ERRORAddress Block: \ or \ not set.
M315 ERRORAddress Block: \ is zero.
M316 ERROR\em 'LEVEL' \ not set.
M317 WARNING\em 'LEVEL' \ not set.
M318 WARNING\em 'LEVEL' \em 'NAME' \<\em 'TAG'> is equal to \
M319 WARNING\em 'LEVEL' \<\em 'TAG'> \em 'NAME' ends with newline, is this intended?
M320 WARNING\em 'LEVEL' \ \em 'NAME' is not very descriptive
M321 WARNING\em 'LEVEL' \<\em 'ITEM'> \em 'NAME' starts with '_', is this intended?
M322 ERROR\em 'LEVEL' \em 'ITEM' \em 'NAME' is meaningless text. Deleted.
M323 WARNING\em 'LEVEL' \<\em 'ITEM'> \em 'NAME' contains text \em 'TEXT'
M324 ERRORField \em 'NAME' \em 'BITRANGE' does not fit into Register \em 'NAME2':\em 'NUM' \em 'LINE'
M325 ERRORCPU Revision is not set"
M326 ERROREndianess is not set, using default (little)
M327 ERRORNVIC Prio Bits not set or wrong value, must be 2..8. Using default (4)
M328 WARNING\em 'LEVEL' \em 'NAME' has no Registers, ignoring \em 'LEVEL'.
M329 ERRORCPU Type is not set, using default (Cortex-M3)
M330 ERRORInterrupt \em 'NAME' Number not set.
M331 ERRORInterrupt \em 'NAME' Number \em 'NUM' greater 239.
M332 WARNING\em 'LEVEL' \em 'NAME' has only one Register.
M333 ERRORDuplicate \ \em 'NUM': \em 'NAME' (\em 'USAGE'), already used by \em 'NAME2' (\em 'USAGE2') \em 'LINE'
M334 WARNING\em 'LEVEL' \<\em 'ITEM'> \em 'NAME' is very long, use \ and a shorter \
M335 ERRORValue \em 'NAME':\em 'NUM' does not fit into field \em 'NAME2' \em 'BITRANGE'.
M336 ERROR\em 'LEVEL' \em 'NAME' already defined \em 'LINE'
M337 ERROR\em 'LEVEL' \em 'NAME' already defined \em 'LINE'
M338 ERRORField \em 'NAME' \em 'BITRANGE' (\em 'ACCESS') overlaps \em 'NAME2' \em 'BITRANGE2' (\em 'ACCESS2') \em 'LINE'
M339 ERRORRegister \em 'NAME' (\em 'ACCESS') (\@\em 'ADDRSIZE') has same address or overlaps \em 'NAME2' (\em 'ACCESS2') (\@\em 'ADDRSIZE2') \em 'LINE'
M340 ERRORNo Devices found.
M341 ERRORMore than one devices found, only one is allowed per SVD File.
M342 ERRORDim-extended \em 'LEVEL' \em 'NAME' must not have \
M343 ERROR\em 'LEVEL' \em 'NAME' (\@\em 'ADDR') has same address as \em 'NAME2' \em 'LINE'
M344 ERRORRegister \em 'NAME' (\@\em 'ADDRSIZE') is outside or does not fit any \ specified for Peripheral \em 'NAME2' \n \em 'TEXT'
M345 ERRORField \em 'NAME' \em 'BITRANGE' does not fit into Register \em 'NAME2':\em 'NUM'
M346 WARNINGRegister \em 'NAME' (\@\em 'ADDR') offset is equal or is greater than it's Peripheral base address \em 'NAME2' (\@\em 'ADDR2'), is this intended?
M347 WARNINGField \em 'NAME' (width \< 6Bit) without any \ found.
M348 ERRORAlternate \em 'LEVEL' \em 'NAME' does not exist at \em 'LEVEL' address (\@\em 'ADDR')
M349 ERRORAlternate \em 'LEVEL' \em 'NAME' is equal to \em 'LEVEL' name \em 'NAME2'
M350 WARNINGPeripheral \em 'NAME' (\@\em 'ADDR') is not 4Byte-aligned.
M351 WARNINGPeripheral \em 'TYPE' \em 'NAME' is equal to Peripheral name.
M352 WARNINGAddressBlock of Peripheral \em 'NAME' (\@\em 'ADDR') \em 'TEXT' overlaps \em 'NAME2' (\@\em 'ADDR2') \em 'TEXT2' \em 'LINE'
M353 WARNINGPeripheral group name \em 'NAME' should not end with '_'
M354 ERRORInterrupt '\em 'NUM':\em 'NAME' specifies a Core Interrupt. Core Interrupts must not be defined, they are set through \\.
M355 ERRORNo Interrupts found on pos. 0..15. External (Vendor-)Interrupts possibly defined on position 16+. External Interrupts must start on position 0
M356 WARNINGNo Interrupt definitions found.
M357 ERRORCore Interrupts found. Interrupt Numbers are wrong. Internal Interrupts must not be described, External Interrupts must start at 0.
M358 ERRORAddressBlock of Peripheral \em 'NAME' \em 'TEXT' overlaps AddressBlock \em 'TEXT2' in same peripheral \em 'LINE'
M359 ERRORAddress Block: \ not set.
M360 ERRORAddress Block: found \<\em 'TAG'> (\em 'HEXNUM') > \em 'HEXNUM2'.
M361 ERROR\em 'LEVEL' \em 'ITEM' \em 'NAME': 'RESERVED' items must not be defined.
M362 WARNING\em 'LEVEL' \em 'ITEM' \em 'NAME': 'RESERVED' items must not be defined.
M363 ERRORCPU: \ not set.
M364 ERRORCPU: \ value \em 'NUM' greater than SAU max num (\em 'NUM2')
M365 WARNINGRegister \em 'NAME' (\em 'ACCESS') (\@\em 'ADDRSIZE') has same address or overlaps \em 'NAME2' (\em 'ACCESS2') (\@\em 'ADDRSIZE2') \em 'LINE'
M366 ERRORRegister \em 'NAME' size (\em 'NUM'Bit) is greater than \ * \ (\em 'NUM2'Bit).
M367 WARNINGAccess Type: Field \em 'NAME' (\em 'ACCESS') does not match Register \em 'NAME2' (\em 'ACCESS2')
M368 WARNING\em 'LEVEL' \em 'NAME' (\@\em 'ADDR') has same address as \em 'NAME2' \em 'LINE'
M369 ERROREnumerated Value \em 'NAME': \ not set.
M370 ERROR\em 'LEVEL' \em 'NAME': \ not set.
M371 ERROR\em 'LEVEL' \em 'NAME' \ is equal to hirachical name
M372 ERROR\em 'LEVEL' \<\em 'TAG'> \em 'NAME' already defined \em 'LINE'
M373 ERROR\em 'LEVEL' \<\em 'TAG'> \em 'NAME' already defined \em 'LINE'
M374 WARNING\ can be one \ container for all \s, where \ can be read, write, or read-write or two \ containers, where one is set to \ read and the other is set to \ write
M375 ERROR\em 'LEVEL' \em 'NAME' (\ \em 'NAME2'): Too many \ container specified.
M376 ERROR\em 'LEVEL' \em 'NAME' (\ \em 'NAME2'): \em 'USAGE' container already defined in \em 'LINE'.
M377 ERROR\em 'LEVEL' \em 'NAME' (\ \em 'NAME2'): \em 'USAGE' container conflicts with \em 'NAME3' \em 'LINE'.
M378 ERRORRegister Array: Register \em 'NAME' size (\em 'NUM'Bit) does not match \ (\em 'NUM2'Bit).
M379 ERRORXBin Number \em 'NAME' too large, skipping evaluation.
M380 ERRORAddressBlock of Peripheral \em 'NAME' (\@\em 'ADDR') \em 'TEXT' does not fit into 32Bit Address Space.
M381 ERRORInterrupt \em 'NAME' Number \em 'NUM' greater or equal deviceNumInterrupts (\em 'NUM2').
M382 ERROR\em 'LEVEL' \em 'NAME': \em 'NAME2' \em 'HEXNUM' does not fit into \em 'LEVEL' width: \em 'NUM' Bit.
Data modification errors -----------------
Message Number Type Message Text Action
M517 WARNINGSFD Code generation: Forbidden Trigraph '??%CHAR%' found in \em 'NAME'.
M516 WARNINGSFD Code generation: Unsupported character found in \em 'NAME' : \em 'HEX'.
M518 WARNINGSFD Code generation: Unsupported ESC sequence found in \em 'NAME' : \em 'CHAR'.
*/ /* ************************************************************************************************ */ /** \page svd_Format_pg SVD Description (*.svd) Format The CMSIS-SVD format is based on XML and was influenced by IP-XACT. Due to the much wider scope and complexity of IP-XACT, it was decided to specify a separate format focused and tailored towards the description of the programmer's view of a device. CMSIS-SVD XML Hierarchy \image html CMSIS_SVD_Schema_Gen.png "CMSIS-SVD Hierarchy Levels" One CMSIS-SVD file contains the description of a single device. A device consists of a processor and at least one peripheral. Each peripheral contains at least one register. A register may consist of one or more fields. The range of values for a field may be further described with enumerated values. - \subpage svd_xml_conventions_gr "File Conventions:" Outlines the main conventions for writing an SVD description file. \n\n - \subpage svd_Example_pg Provides an example outlining the SVD XML structure. \n\n - \subpage elem_device "Device Level:" The top level of a System View Description is the device. On this level, information is captured that is specific to the device as a whole. For example, the device name, description, or version. The minimal addressable unit as well as the bit-width of the data bus are required by the debugger to perform the correct target accesses. \n Default values for register attributes like register size, reset value, and access permissions can be set for the whole device on this level and are implicitly inherited by the lower levels of the description. If however specified on a lower level, the default setting from a higher level will get overruled. \n\n - \subpage elem_cpu "CPU Level:" The CPU section describes the processor included in the microcontroller device. This section is mandatory if the SVD file is used to generate the device header file. \n\n - \subpage elem_peripherals "Peripherals Level:" A peripheral is a named collection of registers. A peripheral is mapped to a defined base address within the device's address space. A peripheral allocates one or more exclusive address blocks relative to its base address, such that all described registers fit into the allocated address blocks. Allocated addresses without an associated register description are automatically considered reserved. The peripheral can be assigned to a group of peripherals and may be associated with one or more interrupts. \n\n - \subpage elem_registers "Registers Level:" A register is a named, programmable resource that belongs to a peripheral. Registers are mapped to a defined address in the address space of the device. An address is specified relative to the peripheral base address. The description of a register documents the purpose and function of the resource. A debugger requires information about the permitted access to a resource as well as side effects triggered by read and write accesses respectively. \n\n - \subpage elem_fields "Fields Level:" Registers may be partitioned into chunks of bits of distinct functionality. A chunk is referred to as field. The field names within a single register must be unique. Only architecturally defined fields shall be described. Any bits not being explicitly described are treated as reserved. They are not displayed in the System Viewer and are padded in the bit fields of the device header file. The case-insensitive field named "reserved" is treated as a keyword and each field with this name is ignored. \n\n - \subpage elem_enumeratedValues "Enumerated Values Level:" An enumeration maps an unsigned integer constant to a descriptive identifier and, optionally, to a description string. Enumerations are used in C to enhance the readability of source code. Similarly, it can be used by debuggers to provide more instructive information to the programmer, avoiding a lookup in the device documentation. \n\n - \subpage elem_special "Special Elements:" Specific elements that occur in various other elements are described in this section. \n\n - Vendor Extensions: The CMSIS-SVD format includes a section named \tagem{vendorExtensions} positioned after the closing tag \tagem{/peripherals}. This allows silicon vendors and tool partners to extend the description beyond the current specification. Multiple Instantiation CMSIS-SVD supports the reuse of whole sections of the description. The attribute \em derivedFrom for \refelem{peripheral}, \refelem{register}, and \refelem{field} specifies the source of the section to be copied from. Individual tags can be used to redefine specific elements within a copied section. Array of Elements A powerfull construct in data structures of the C programming language is the array. An array is a series of data elements of the same type selected via an index. CMSIS-SVD supports arrays for \refelem{peripheral}, \refelem{cluster}, and \refelem{register}. Peripheral Grouping Peripherals that provide similar functionality (Simple Timer, Complex Timer) can be grouped with the element \tagem{groupName}. Peripheral groups help structuring the list of peripherals in the debugger. All peripherals associated with the same group name are collectively listed under this group in the order they were specified in the SVD file. Descriptions On each level, the tag \tagem{description} provides verbose information about the respective element. The description field plays an important part in improving software development productivity as it gives instant access to information that otherwise would need to be looked up in the device documentation. All multiple whitespace characters (space, tab, linefeed, carriage return) may be removed from the description by any tool for further processing (i.e. SVDConv does). In order to preserve explicit linebreaks one has to use the linefeed escape sequence (i.e. \\n).   */