Robert Rostohar | ba96a2c | 2016-07-01 22:42:12 +0200 | [diff] [blame] | 1 | <?xml version="1.0" encoding="UTF-8"?> |
GuentherMartin | 0d37923 | 2018-09-04 11:20:34 +0200 | [diff] [blame] | 2 | <!-- |
| 3 | |
Robert Rostohar | ba96a2c | 2016-07-01 22:42:12 +0200 | [diff] [blame] | 4 | Copyright (c) 2013-2016 ARM Limited. All rights reserved. |
GuentherMartin | 0d37923 | 2018-09-04 11:20:34 +0200 | [diff] [blame] | 5 | |
Robert Rostohar | ba96a2c | 2016-07-01 22:42:12 +0200 | [diff] [blame] | 6 | SPDX-License-Identifier: Apache-2.0 |
GuentherMartin | 0d37923 | 2018-09-04 11:20:34 +0200 | [diff] [blame] | 7 | |
Robert Rostohar | ba96a2c | 2016-07-01 22:42:12 +0200 | [diff] [blame] | 8 | Licensed under the Apache License, Version 2.0 (the License); you may |
| 9 | not use this file except in compliance with the License. |
| 10 | You may obtain a copy of the License at |
GuentherMartin | 0d37923 | 2018-09-04 11:20:34 +0200 | [diff] [blame] | 11 | |
Joachim Krech | 465bd43 | 2016-11-21 09:15:30 +0100 | [diff] [blame] | 12 | www.apache.org/licenses/LICENSE-2.0 |
GuentherMartin | 0d37923 | 2018-09-04 11:20:34 +0200 | [diff] [blame] | 13 | |
Robert Rostohar | ba96a2c | 2016-07-01 22:42:12 +0200 | [diff] [blame] | 14 | Unless required by applicable law or agreed to in writing, software |
| 15 | distributed under the License is distributed on an AS IS BASIS, WITHOUT |
| 16 | WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| 17 | See the License for the specific language governing permissions and |
| 18 | limitations under the License. |
GuentherMartin | 0d37923 | 2018-09-04 11:20:34 +0200 | [diff] [blame] | 19 | |
| 20 | $Date: 04. September 2018 |
| 21 | $Revision: 1.3.5 |
| 22 | |
| 23 | Version 1.3.5: |
| 24 | - add CM35P as enumeration value for cpuNameType. |
Robert Rostohar | ba96a2c | 2016-07-01 22:42:12 +0200 | [diff] [blame] | 25 | |
Joachim Krech | 7a57e3f | 2018-09-03 09:16:46 +0200 | [diff] [blame] | 26 | Version 1.3.4: |
| 27 | - add dspPresent element to cpuType as SIMD instructions became optional for new processors. |
GuentherMartin | 0d37923 | 2018-09-04 11:20:34 +0200 | [diff] [blame] | 28 | |
Joachim Krech | ae9507d | 2016-09-23 14:01:37 +0200 | [diff] [blame] | 29 | Version 1.3.3: |
| 30 | - update file header to Apache 2.0 License |
| 31 | - add dimableIdentifierType, as a copy of previous identifierType adding "%s", |
| 32 | - update identifierType to only allow names without %s included. |
| 33 | - remove enumerationNameType. |
GuentherMartin | 0d37923 | 2018-09-04 11:20:34 +0200 | [diff] [blame] | 34 | - add headerEnumName to enumerationType and to dimArrayIndexType for peripheral arrays |
Joachim Krech | ae9507d | 2016-09-23 14:01:37 +0200 | [diff] [blame] | 35 | overwriting hierarchically generated names |
| 36 | - add dimName to dimElementGroup. Only valid in <cluster> context, ignored otherwise. |
GuentherMartin | 0d37923 | 2018-09-04 11:20:34 +0200 | [diff] [blame] | 37 | |
Robert Rostohar | ba96a2c | 2016-07-01 22:42:12 +0200 | [diff] [blame] | 38 | Version 1.3.2: |
| 39 | adding dimIndexArray to peripheral-, cluster- and register-array to describe |
| 40 | enumeration of array indices. |
| 41 | |
| 42 | Version 1.3.1: |
| 43 | fixed peripheral name element type to identifierType to support %s for peripheral arrays |
GuentherMartin | 0d37923 | 2018-09-04 11:20:34 +0200 | [diff] [blame] | 44 | added optional protection element to addressBlockType and added p=privileged |
Robert Rostohar | ba96a2c | 2016-07-01 22:42:12 +0200 | [diff] [blame] | 45 | |
| 46 | Version 1.3: |
| 47 | added dim to peripherals to describe an array of peripherals. |
| 48 | added nesting of clusters to support hierarchical register structures. |
| 49 | added protection element as part of the registerPropertiesGroup indicating |
| 50 | special permissions are required for accessing a register. |
| 51 | CPU Section extended with description of the Secure Attribution Unit. |
GuentherMartin | 0d37923 | 2018-09-04 11:20:34 +0200 | [diff] [blame] | 52 | |
Robert Rostohar | ba96a2c | 2016-07-01 22:42:12 +0200 | [diff] [blame] | 53 | Version 1.2: |
| 54 | Cortex-M7 support items have been added as optional tags for the device header file generation: |
| 55 | fpuDP, icachePresent, dcachePresent, itcmPresent, dtcmPresent |
GuentherMartin | 0d37923 | 2018-09-04 11:20:34 +0200 | [diff] [blame] | 56 | |
Robert Rostohar | ba96a2c | 2016-07-01 22:42:12 +0200 | [diff] [blame] | 57 | Version 1.1: |
| 58 | For backward compatibility all additional tags have been made optional. |
| 59 | Extensions may be mandatory for successful device header file generation |
| 60 | Other changes are related to some restructuring of the schema. |
GuentherMartin | 0d37923 | 2018-09-04 11:20:34 +0200 | [diff] [blame] | 61 | |
Robert Rostohar | ba96a2c | 2016-07-01 22:42:12 +0200 | [diff] [blame] | 62 | Note that the memory section has been removed since this would limit the |
| 63 | reuse of descriptions for a series of devices. |
| 64 | --> |
| 65 | |
| 66 | <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="qualified" version="1.3"> |
| 67 | <!-- stringType requires a none empty string of a least one character length --> |
| 68 | <xs:simpleType name="stringType"> |
| 69 | <xs:restriction base="xs:string"> |
| 70 | <xs:minLength value="1"/> |
| 71 | </xs:restriction> |
| 72 | </xs:simpleType> |
Joachim Krech | 6649ddc | 2017-09-12 09:59:01 +0200 | [diff] [blame] | 73 | |
| 74 | <xs:simpleType name="descriptionStringType"> |
| 75 | <xs:restriction base="xs:string"> |
| 76 | <xs:pattern value="[\p{IsBasicLatin}\p{IsLatin-1Supplement}]*" /> |
| 77 | </xs:restriction> |
| 78 | </xs:simpleType> |
GuentherMartin | 0d37923 | 2018-09-04 11:20:34 +0200 | [diff] [blame] | 79 | |
Robert Rostohar | ba96a2c | 2016-07-01 22:42:12 +0200 | [diff] [blame] | 80 | <!-- cpuType specifies a selection of Cortex-M and Secure-Cores. This list will get extended as new processors are released --> |
| 81 | <xs:simpleType name="cpuNameType"> |
| 82 | <xs:restriction base="xs:token"> |
| 83 | <xs:enumeration value="CM0"/> |
| 84 | <xs:enumeration value="CM0PLUS"/> |
| 85 | <xs:enumeration value="CM0+"/> |
| 86 | <xs:enumeration value="CM1"/> |
| 87 | <xs:enumeration value="SC000"/> |
Joachim Krech | 6649ddc | 2017-09-12 09:59:01 +0200 | [diff] [blame] | 88 | <xs:enumeration value="CM23"/> |
Robert Rostohar | ba96a2c | 2016-07-01 22:42:12 +0200 | [diff] [blame] | 89 | <xs:enumeration value="CM3"/> |
Joachim Krech | 6649ddc | 2017-09-12 09:59:01 +0200 | [diff] [blame] | 90 | <xs:enumeration value="CM33"/> |
GuentherMartin | 0d37923 | 2018-09-04 11:20:34 +0200 | [diff] [blame] | 91 | <xs:enumeration value="CM35P"/> |
Robert Rostohar | ba96a2c | 2016-07-01 22:42:12 +0200 | [diff] [blame] | 92 | <xs:enumeration value="SC300"/> |
| 93 | <xs:enumeration value="CM4"/> |
| 94 | <xs:enumeration value="CM7"/> |
Joachim Krech | ae9507d | 2016-09-23 14:01:37 +0200 | [diff] [blame] | 95 | <xs:enumeration value="ARMV8MML"/> |
| 96 | <xs:enumeration value="ARMV8MBL"/> |
Robert Rostohar | ba96a2c | 2016-07-01 22:42:12 +0200 | [diff] [blame] | 97 | <xs:enumeration value="CA5"/> |
| 98 | <xs:enumeration value="CA7"/> |
| 99 | <xs:enumeration value="CA8"/> |
| 100 | <xs:enumeration value="CA9"/> |
| 101 | <xs:enumeration value="CA15"/> |
| 102 | <xs:enumeration value="CA17"/> |
| 103 | <xs:enumeration value="CA53"/> |
| 104 | <xs:enumeration value="CA57"/> |
| 105 | <xs:enumeration value="CA72"/> |
| 106 | <xs:enumeration value="other"/> |
| 107 | </xs:restriction> |
| 108 | </xs:simpleType> |
| 109 | <!-- revisionType specifies the CPU revision format as defined by ARM (rNpM) --> |
| 110 | <xs:simpleType name="revisionType"> |
| 111 | <xs:restriction base="xs:string"> |
| 112 | <xs:pattern value="r[0-9]*p[0-9]*"/> |
| 113 | </xs:restriction> |
| 114 | </xs:simpleType> |
| 115 | <!-- EndianType pre-defines the tokens for specifying the endianess of the device --> |
| 116 | <xs:simpleType name="endianType"> |
| 117 | <xs:restriction base="xs:token"> |
| 118 | <xs:enumeration value="little"/> |
| 119 | <xs:enumeration value="big"/> |
| 120 | <xs:enumeration value="selectable"/> |
| 121 | <xs:enumeration value="other"/> |
| 122 | </xs:restriction> |
| 123 | </xs:simpleType> |
| 124 | <!-- dataType pre-defines the tokens in line with CMSIS data type definitions --> |
| 125 | <xs:simpleType name="dataTypeType"> |
| 126 | <xs:restriction base="xs:token"> |
| 127 | <xs:enumeration value="uint8_t"/> |
| 128 | <xs:enumeration value="uint16_t"/> |
| 129 | <xs:enumeration value="uint32_t"/> |
| 130 | <xs:enumeration value="uint64_t"/> |
| 131 | <xs:enumeration value="int8_t"/> |
| 132 | <xs:enumeration value="int16_t"/> |
| 133 | <xs:enumeration value="int32_t"/> |
| 134 | <xs:enumeration value="int64_t"/> |
| 135 | <xs:enumeration value="uint8_t *"/> |
| 136 | <xs:enumeration value="uint16_t *"/> |
| 137 | <xs:enumeration value="uint32_t *"/> |
| 138 | <xs:enumeration value="uint64_t *"/> |
| 139 | <xs:enumeration value="int8_t *"/> |
| 140 | <xs:enumeration value="int16_t *"/> |
| 141 | <xs:enumeration value="int32_t *"/> |
| 142 | <xs:enumeration value="int64_t *"/> |
| 143 | </xs:restriction> |
| 144 | </xs:simpleType> |
| 145 | <!-- nvicPrioBitsType specifies the integer value range for the number of bits used in NVIC to encode priority levels --> |
| 146 | <xs:simpleType name="nvicPrioBitsType"> |
| 147 | <xs:restriction base="xs:integer"> |
| 148 | <xs:minInclusive value="2"/> |
| 149 | <xs:maxInclusive value="8"/> |
| 150 | </xs:restriction> |
| 151 | </xs:simpleType> |
Joachim Krech | ae9507d | 2016-09-23 14:01:37 +0200 | [diff] [blame] | 152 | <!-- dimableIdentifierType specifies the subset and sequence of characters used for specifying identifiers that may contain %s from dim. --> |
Robert Rostohar | ba96a2c | 2016-07-01 22:42:12 +0200 | [diff] [blame] | 153 | <!-- this is particularly important as these are used in ANSI C Structures during the device header file generation --> |
Joachim Krech | ae9507d | 2016-09-23 14:01:37 +0200 | [diff] [blame] | 154 | <xs:simpleType name="dimableIdentifierType"> |
Robert Rostohar | ba96a2c | 2016-07-01 22:42:12 +0200 | [diff] [blame] | 155 | <xs:restriction base="xs:string"> |
Joachim Krech | ae9507d | 2016-09-23 14:01:37 +0200 | [diff] [blame] | 156 | <xs:pattern value="((%s)|(%s)[_A-Za-z]{1}[_A-Za-z0-9]*)|([_A-Za-z]{1}[_A-Za-z0-9]*(\[%s\])?)|([_A-Za-z]{1}[_A-Za-z0-9]*(%s)?[_A-Za-z0-9]*)"/> |
Robert Rostohar | ba96a2c | 2016-07-01 22:42:12 +0200 | [diff] [blame] | 157 | </xs:restriction> |
| 158 | </xs:simpleType> |
Joachim Krech | ae9507d | 2016-09-23 14:01:37 +0200 | [diff] [blame] | 159 | <!-- identifierType specifies the subset and sequence of characters used for specifying identifiers that must not contain %s from dim. --> |
Robert Rostohar | ba96a2c | 2016-07-01 22:42:12 +0200 | [diff] [blame] | 160 | <!-- this is particularly important as these are used in ANSI C Structures during the device header file generation --> |
Joachim Krech | ae9507d | 2016-09-23 14:01:37 +0200 | [diff] [blame] | 161 | <xs:simpleType name="identifierType"> |
Robert Rostohar | ba96a2c | 2016-07-01 22:42:12 +0200 | [diff] [blame] | 162 | <xs:restriction base="xs:string"> |
| 163 | <xs:pattern value="[_A-Za-z0-9]*"/> |
| 164 | </xs:restriction> |
| 165 | </xs:simpleType> |
| 166 | <!-- V1.3: Protection Access Attribute Strings --> |
| 167 | <xs:simpleType name="protectionStringType"> |
| 168 | <xs:restriction base="xs:string"> |
| 169 | <!-- s = Secure --> |
| 170 | <!-- n = Non-secure --> |
| 171 | <!-- p = Privileged --> |
| 172 | <xs:pattern value="[snp]"/> |
| 173 | </xs:restriction> |
| 174 | </xs:simpleType> |
| 175 | <!-- V1.3: SAU Access Type --> |
| 176 | <xs:simpleType name="sauAccessType"> |
| 177 | <xs:restriction base="xs:string"> |
| 178 | <!-- c = non-secure Callable / Secure --> |
| 179 | <!-- n = Non-secure --> |
| 180 | <xs:pattern value="[cn]"/> |
| 181 | </xs:restriction> |
| 182 | </xs:simpleType> |
| 183 | |
| 184 | <!-- dimIndexType specifies the subset and sequence of characters used for specifying the sequence of indices in register arrays --> |
| 185 | <xs:simpleType name="dimIndexType"> |
| 186 | <xs:restriction base="xs:string"> |
| 187 | <xs:pattern value="[0-9]+\-[0-9]+|[A-Z]-[A-Z]|[_0-9a-zA-Z]+(,\s*[_0-9a-zA-Z]+)+"/> |
| 188 | </xs:restriction> |
| 189 | </xs:simpleType> |
Joachim Krech | dc02a4b | 2018-02-19 13:57:44 +0100 | [diff] [blame] | 190 | <!-- scaledNonNegativeInteger specifies the format in which numbers are represented in hexadecimal or decimal format --> |
Robert Rostohar | ba96a2c | 2016-07-01 22:42:12 +0200 | [diff] [blame] | 191 | <xs:simpleType name="scaledNonNegativeInteger"> |
| 192 | <xs:restriction base="xs:string"> |
| 193 | <xs:pattern value="[+]?(0x|0X|#)?[0-9a-fA-F]+[kmgtKMGT]?"/> |
| 194 | </xs:restriction> |
| 195 | </xs:simpleType> |
| 196 | <!-- enumeratedValueDataType specifies the number formats for the values in enumeratedValues --> |
| 197 | <xs:simpleType name="enumeratedValueDataType"> |
| 198 | <xs:restriction base="xs:string"> |
Joachim Krech | dc02a4b | 2018-02-19 13:57:44 +0100 | [diff] [blame] | 199 | <xs:pattern value="[+]?(((0x|0X)[0-9a-fA-F]+)|([0-9]+)|((#|0b)[01xX]+))"/> |
Robert Rostohar | ba96a2c | 2016-07-01 22:42:12 +0200 | [diff] [blame] | 200 | </xs:restriction> |
| 201 | </xs:simpleType> |
| 202 | <!-- accessType specfies the pre-defined tokens for the available accesses --> |
| 203 | <xs:simpleType name="accessType"> |
| 204 | <xs:restriction base="xs:token"> |
| 205 | <xs:enumeration value="read-only"/> |
| 206 | <xs:enumeration value="write-only"/> |
| 207 | <xs:enumeration value="read-write"/> |
| 208 | <xs:enumeration value="writeOnce"/> |
| 209 | <xs:enumeration value="read-writeOnce"/> |
| 210 | </xs:restriction> |
| 211 | </xs:simpleType> |
| 212 | <!-- modifiedWriteValuesType specifies the pre-defined tokens for the write side effects --> |
| 213 | <xs:simpleType name="modifiedWriteValuesType"> |
| 214 | <xs:restriction base="xs:token"> |
| 215 | <xs:enumeration value="oneToClear"/> |
| 216 | <xs:enumeration value="oneToSet"/> |
| 217 | <xs:enumeration value="oneToToggle"/> |
| 218 | <xs:enumeration value="zeroToClear"/> |
| 219 | <xs:enumeration value="zeroToSet"/> |
| 220 | <xs:enumeration value="zeroToToggle"/> |
| 221 | <xs:enumeration value="clear"/> |
| 222 | <xs:enumeration value="set"/> |
| 223 | <xs:enumeration value="modify"/> |
| 224 | </xs:restriction> |
| 225 | </xs:simpleType> |
| 226 | <!-- readAction type specifies the pre-defined tokens for read side effects --> |
| 227 | <xs:simpleType name="readActionType"> |
| 228 | <xs:restriction base="xs:token"> |
| 229 | <xs:enumeration value="clear"/> |
| 230 | <xs:enumeration value="set"/> |
| 231 | <xs:enumeration value="modify"/> |
| 232 | <xs:enumeration value="modifyExternal"/> |
| 233 | </xs:restriction> |
| 234 | </xs:simpleType> |
| 235 | <!-- enumUsageType specifies the pre-defined tokens for selecting what access types an enumeratedValues set is associated with --> |
| 236 | <xs:simpleType name="enumUsageType"> |
| 237 | <xs:restriction base="xs:token"> |
| 238 | <xs:enumeration value="read"/> |
| 239 | <xs:enumeration value="write"/> |
| 240 | <xs:enumeration value="read-write"/> |
| 241 | </xs:restriction> |
| 242 | </xs:simpleType> |
| 243 | <!-- bitRangeType specifies the bit numbers to be restricted values from 0 - 69 --> |
| 244 | <xs:simpleType name="bitRangeType"> |
| 245 | <xs:restriction base="xs:token"> |
| 246 | <xs:pattern value="\[([0-4])?[0-9]:([0-4])?[0-9]\]"/> |
| 247 | </xs:restriction> |
| 248 | </xs:simpleType> |
| 249 | <!-- writeContraintType specifies how to describe the restriction of the allowed values that can be written to a resource --> |
| 250 | <xs:complexType name="writeConstraintType"> |
| 251 | <xs:choice> |
| 252 | <xs:element name="writeAsRead" type="xs:boolean"/> |
| 253 | <xs:element name="useEnumeratedValues" type="xs:boolean"/> |
| 254 | <xs:element name="range"> |
| 255 | <xs:complexType> |
| 256 | <xs:sequence> |
| 257 | <xs:element name="minimum" type="scaledNonNegativeInteger"/> |
| 258 | <xs:element name="maximum" type="scaledNonNegativeInteger"/> |
| 259 | </xs:sequence> |
| 260 | </xs:complexType> |
| 261 | </xs:element> |
| 262 | </xs:choice> |
| 263 | </xs:complexType> |
| 264 | <!-- addressBlockType specifies the elements to describe an address block --> |
| 265 | <xs:complexType name="addressBlockType"> |
| 266 | <xs:sequence> |
| 267 | <xs:element name="offset" type="scaledNonNegativeInteger"/> |
| 268 | <xs:element name="size" type="scaledNonNegativeInteger"/> |
| 269 | <xs:element name="usage"> |
| 270 | <xs:simpleType> |
| 271 | <xs:restriction base="xs:token"> |
| 272 | <xs:enumeration value="registers"/> |
| 273 | <xs:enumeration value="buffer"/> |
| 274 | <xs:enumeration value="reserved"/> |
| 275 | </xs:restriction> |
| 276 | </xs:simpleType> |
| 277 | </xs:element> |
| 278 | <!-- Version 1.3.2: optional access protection for an address block s=secure n=non-secure p=privileged --> |
| 279 | <xs:element name="protection" type="protectionStringType" minOccurs="0"/> |
| 280 | </xs:sequence> |
| 281 | </xs:complexType> |
| 282 | <!-- interruptType specifies how to describe an interrupt associated with a peripheral --> |
| 283 | <xs:complexType name="interruptType"> |
| 284 | <xs:sequence> |
| 285 | <xs:element name="name" type="stringType"/> |
| 286 | <xs:element name="description" type="xs:string" minOccurs="0"/> |
| 287 | <xs:element name="value" type="xs:integer"/> |
| 288 | </xs:sequence> |
| 289 | </xs:complexType> |
GuentherMartin | 0d37923 | 2018-09-04 11:20:34 +0200 | [diff] [blame] | 290 | <!-- register properties group specifies register size, access permission and reset value |
| 291 | this is used in multiple locations. Settings are inherited downstream. --> |
Robert Rostohar | ba96a2c | 2016-07-01 22:42:12 +0200 | [diff] [blame] | 292 | <xs:group name="registerPropertiesGroup"> |
| 293 | <xs:sequence> |
| 294 | <xs:element name="size" type="scaledNonNegativeInteger" minOccurs="0"/> |
| 295 | <xs:element name="access" type="accessType" minOccurs="0"/> |
| 296 | <!-- V 1.3: extended register access protection --> |
| 297 | <xs:element name="protection" type="protectionStringType" minOccurs="0"/> |
| 298 | <xs:element name="resetValue" type="scaledNonNegativeInteger" minOccurs="0"/> |
| 299 | <xs:element name="resetMask" type="scaledNonNegativeInteger" minOccurs="0"/> |
| 300 | </xs:sequence> |
| 301 | </xs:group> |
GuentherMartin | 0d37923 | 2018-09-04 11:20:34 +0200 | [diff] [blame] | 302 | <!-- bitRangeLsbMsbStyle specifies the bit position of a field within a register |
Robert Rostohar | ba96a2c | 2016-07-01 22:42:12 +0200 | [diff] [blame] | 303 | by specifying the least significant and the most significant bit position --> |
| 304 | <xs:group name="bitRangeLsbMsbStyle"> |
| 305 | <xs:sequence> |
| 306 | <xs:element name="lsb" type="scaledNonNegativeInteger"/> |
| 307 | <xs:element name="msb" type="scaledNonNegativeInteger"/> |
| 308 | </xs:sequence> |
| 309 | </xs:group> |
| 310 | <!-- bitRangeOffsetWidthStyle specifies the bit position of a field within a register |
| 311 | by specifying the least significant bit position and the bitWidth of the field --> |
| 312 | <xs:group name="bitRangeOffsetWidthStyle"> |
| 313 | <xs:sequence> |
| 314 | <xs:element name="bitOffset" type="scaledNonNegativeInteger"/> |
GuentherMartin | 0d37923 | 2018-09-04 11:20:34 +0200 | [diff] [blame] | 315 | <xs:element name="bitWidth" type="scaledNonNegativeInteger" minOccurs="0"/> |
| 316 | </xs:sequence> |
Robert Rostohar | ba96a2c | 2016-07-01 22:42:12 +0200 | [diff] [blame] | 317 | </xs:group> |
GuentherMartin | 0d37923 | 2018-09-04 11:20:34 +0200 | [diff] [blame] | 318 | |
Joachim Krech | ae9507d | 2016-09-23 14:01:37 +0200 | [diff] [blame] | 319 | <!-- dimElementGroup specifies the number of array elements (dim), the address offset |
GuentherMartin | 0d37923 | 2018-09-04 11:20:34 +0200 | [diff] [blame] | 320 | between to consecutive array elements and an a comma seperated list of strings |
Joachim Krech | ae9507d | 2016-09-23 14:01:37 +0200 | [diff] [blame] | 321 | being used for identifying each element in the array --> |
Robert Rostohar | ba96a2c | 2016-07-01 22:42:12 +0200 | [diff] [blame] | 322 | <xs:group name="dimElementGroup"> |
| 323 | <xs:sequence> |
| 324 | <xs:element name="dim" type="scaledNonNegativeInteger"/> |
| 325 | <xs:element name="dimIncrement" type="scaledNonNegativeInteger"/> |
| 326 | <xs:element name="dimIndex" type="dimIndexType" minOccurs="0"/> |
Joachim Krech | ae9507d | 2016-09-23 14:01:37 +0200 | [diff] [blame] | 327 | <xs:element name="dimName" type="identifierType" minOccurs="0"/> |
Robert Rostohar | ba96a2c | 2016-07-01 22:42:12 +0200 | [diff] [blame] | 328 | <xs:element name="dimArrayIndex" type="dimArrayIndexType" minOccurs="0"/> |
| 329 | </xs:sequence> |
| 330 | </xs:group> |
| 331 | |
| 332 | <xs:complexType name="cpuType"> |
| 333 | <xs:sequence> |
| 334 | <!-- V1.1: ARM processor name: Cortex-Mx / SCxxx --> |
| 335 | <xs:element name="name" type="cpuNameType"/> |
| 336 | <!-- V1.1: ARM defined revision of the cpu --> |
| 337 | <xs:element name="revision" type="revisionType"/> |
| 338 | <!-- V1.1: Endian specifies the endianess of the processor/device --> |
| 339 | <xs:element name="endian" type="endianType"/> |
| 340 | <!-- V1.1: mpuPresent specifies whether or not a memory protection unit is physically present --> |
Joachim Krech | 6755c0a | 2017-05-09 11:51:31 +0200 | [diff] [blame] | 341 | <xs:element name="mpuPresent" type="xs:boolean" minOccurs="0"/> |
Robert Rostohar | ba96a2c | 2016-07-01 22:42:12 +0200 | [diff] [blame] | 342 | <!-- V1.1: fpuPresent specifies whether or not a floating point hardware unit is physically present --> |
Joachim Krech | 6755c0a | 2017-05-09 11:51:31 +0200 | [diff] [blame] | 343 | <xs:element name="fpuPresent" type="xs:boolean" minOccurs="0"/> |
Robert Rostohar | ba96a2c | 2016-07-01 22:42:12 +0200 | [diff] [blame] | 344 | <!-- V1.2: fpuDP specifies a double precision floating point hardware unit is physically present--> |
| 345 | <xs:element name="fpuDP" type="xs:boolean" minOccurs="0"/> |
Joachim Krech | 7a57e3f | 2018-09-03 09:16:46 +0200 | [diff] [blame] | 346 | <!-- V1.3: dspPresent specifies whether the optional SIMD instructions are supported by processor --> |
| 347 | <xs:element name="dspPresent" type="xs:boolean" minOccurs="0"/> |
Robert Rostohar | ba96a2c | 2016-07-01 22:42:12 +0200 | [diff] [blame] | 348 | <!-- V1.2: icachePresent specifies that an instruction cache is physically present--> |
| 349 | <xs:element name="icachePresent" type="xs:boolean" minOccurs="0"/> |
| 350 | <!-- V1.2: dcachePresent specifies that a data cache is physically present--> |
| 351 | <xs:element name="dcachePresent" type="xs:boolean" minOccurs="0"/> |
| 352 | <!-- V1.2: itcmPresent specifies that an instruction tightly coupled memory is physically present--> |
| 353 | <xs:element name="itcmPresent" type="xs:boolean" minOccurs="0"/> |
| 354 | <!-- V1.2: dtcmPresent specifies that an data tightly coupled memory is physically present--> |
| 355 | <xs:element name="dtcmPresent" type="xs:boolean" minOccurs="0"/> |
| 356 | <!-- V1.1: vtorPresent is used for Cortex-M0+ based devices only. It indicates whether the Vector --> |
| 357 | <!-- Table Offset Register is implemented in the device or not --> |
| 358 | <xs:element name="vtorPresent" type="xs:boolean" minOccurs="0"/> |
| 359 | <!-- V1.1: nvicPrioBits specifies the number of bits used by the Nested Vectored Interrupt Controller --> |
| 360 | <!-- for defining the priority level = # priority levels --> |
| 361 | <xs:element name="nvicPrioBits" type="scaledNonNegativeInteger"/> |
| 362 | <!-- V1.1: vendorSystickConfig is set true if a custom system timer is implemented in the device --> |
| 363 | <!-- instead of the ARM specified SysTickTimer --> |
| 364 | <xs:element name="vendorSystickConfig" type="xs:boolean"/> |
| 365 | <!-- V1.3: reports the total number of interrupts implemented by the device (optional) --> |
| 366 | <xs:element name="deviceNumInterrupts" type="scaledNonNegativeInteger" minOccurs="0"/> |
| 367 | <!-- V1.3: sauRegions specifies the available number of address regions --> |
| 368 | <!-- if not specified a value of zero is assumed --> |
| 369 | <xs:element name="sauNumRegions" type="scaledNonNegativeInteger" minOccurs="0"/> |
| 370 | <!-- V1.3: SAU Regions Configuration (if fully or partially predefined) --> |
| 371 | <xs:element name="sauRegionsConfig" minOccurs="0"> |
| 372 | <xs:complexType> |
| 373 | <xs:sequence> |
| 374 | <xs:element name="region" minOccurs="0" maxOccurs="unbounded"> |
| 375 | <!-- addressBlockType specifies the elements to describe an address block --> |
| 376 | <xs:complexType> |
| 377 | <xs:sequence minOccurs="1" maxOccurs="unbounded"> |
| 378 | <xs:element name="base" type="scaledNonNegativeInteger"/> |
| 379 | <xs:element name="limit" type="scaledNonNegativeInteger"/> |
| 380 | <xs:element name="access" type="sauAccessType"/> |
| 381 | </xs:sequence> |
| 382 | <xs:attribute name="enabled" type="xs:boolean" use="optional" default="true"/> |
| 383 | <xs:attribute name="name" type="xs:string" use="optional"/> |
| 384 | </xs:complexType> |
| 385 | </xs:element> |
| 386 | </xs:sequence> |
| 387 | <xs:attribute name="enabled" type="xs:boolean" use="optional" default="true"/> |
| 388 | <xs:attribute name="protectionWhenDisabled" type="protectionStringType" use="optional" default="s"/> |
| 389 | </xs:complexType> |
| 390 | </xs:element> |
| 391 | </xs:sequence> |
| 392 | </xs:complexType> |
| 393 | |
| 394 | <xs:complexType name="enumeratedValueType"> |
| 395 | <xs:sequence> |
| 396 | <!-- name is a ANSI C indentifier representing the value (C Enumeration) --> |
Joachim Krech | ae9507d | 2016-09-23 14:01:37 +0200 | [diff] [blame] | 397 | <xs:element name="name" type="identifierType"/> |
Robert Rostohar | ba96a2c | 2016-07-01 22:42:12 +0200 | [diff] [blame] | 398 | <!-- description contains the details about the semantics/behavior specified by this value --> |
| 399 | <xs:element name="description" type="stringType" minOccurs="0"/> |
| 400 | <xs:choice> |
| 401 | <xs:element name="value" type="enumeratedValueDataType"/> |
| 402 | <!-- isDefault specifies the name and description for all values that are not |
| 403 | specifically described individually --> |
| 404 | <xs:element name="isDefault" type="xs:boolean"/> |
| 405 | </xs:choice> |
| 406 | </xs:sequence> |
| 407 | </xs:complexType> |
GuentherMartin | 0d37923 | 2018-09-04 11:20:34 +0200 | [diff] [blame] | 408 | |
Robert Rostohar | ba96a2c | 2016-07-01 22:42:12 +0200 | [diff] [blame] | 409 | <xs:complexType name="enumerationType"> |
| 410 | <xs:sequence> |
| 411 | <!-- name specfies a reference to this enumeratedValues section for reuse purposes |
| 412 | this name does not appear in the System Viewer nor the Header File. --> |
Joachim Krech | ae9507d | 2016-09-23 14:01:37 +0200 | [diff] [blame] | 413 | <xs:element name="name" type="identifierType" minOccurs="0"/> |
| 414 | <!-- overrides the hierarchical enumeration type in the device header file. User is responsible for uniqueness across description --> |
| 415 | <xs:element name="headerEnumName" type="identifierType" minOccurs="0"/> |
GuentherMartin | 0d37923 | 2018-09-04 11:20:34 +0200 | [diff] [blame] | 416 | <!-- usage specifies whether this enumeration is to be used for read or write or |
Robert Rostohar | ba96a2c | 2016-07-01 22:42:12 +0200 | [diff] [blame] | 417 | (read and write) accesses --> |
| 418 | <xs:element name="usage" type="enumUsageType" minOccurs="0"/> |
| 419 | <!-- enumeratedValue derivedFrom=<identifierType> --> |
| 420 | <xs:element name="enumeratedValue" type="enumeratedValueType" minOccurs="1" maxOccurs="unbounded"/> |
| 421 | </xs:sequence> |
Joachim Krech | ae9507d | 2016-09-23 14:01:37 +0200 | [diff] [blame] | 422 | <xs:attribute name="derivedFrom" type="identifierType" use="optional"/> |
Robert Rostohar | ba96a2c | 2016-07-01 22:42:12 +0200 | [diff] [blame] | 423 | </xs:complexType> |
| 424 | |
| 425 | <xs:complexType name="dimArrayIndexType"> |
| 426 | <xs:sequence> |
Joachim Krech | ae9507d | 2016-09-23 14:01:37 +0200 | [diff] [blame] | 427 | <xs:element name="headerEnumName" type="identifierType" minOccurs="0"/> |
Robert Rostohar | ba96a2c | 2016-07-01 22:42:12 +0200 | [diff] [blame] | 428 | <xs:element name="enumeratedValue" type="enumeratedValueType" minOccurs="1" maxOccurs="unbounded"/> |
| 429 | </xs:sequence> |
| 430 | </xs:complexType> |
| 431 | |
| 432 | <xs:complexType name="fieldType"> |
| 433 | <xs:sequence> |
Robert Rostohar | ba96a2c | 2016-07-01 22:42:12 +0200 | [diff] [blame] | 434 | <xs:group ref="dimElementGroup" minOccurs="0"/> |
| 435 | <!-- name specifies a field's name. The System Viewer and the device header file will |
| 436 | use the name of the field as identifier --> |
Joachim Krech | ae9507d | 2016-09-23 14:01:37 +0200 | [diff] [blame] | 437 | <xs:element name="name" type="dimableIdentifierType"/> |
GuentherMartin | 0d37923 | 2018-09-04 11:20:34 +0200 | [diff] [blame] | 438 | <!-- description contains reference manual level information about the function and |
Robert Rostohar | ba96a2c | 2016-07-01 22:42:12 +0200 | [diff] [blame] | 439 | options of a field --> |
| 440 | <xs:element name="description" type="stringType" minOccurs="0"/> |
| 441 | <!-- alternative specifications of the bit position of the field within the register --> |
| 442 | <xs:choice minOccurs="1" maxOccurs="1"> |
| 443 | <!-- bit field described by lsb followed by msb tag --> |
| 444 | <xs:group ref="bitRangeLsbMsbStyle"/> |
| 445 | <!-- bit field described by bit offset relative to Bit0 + bit width of field --> |
| 446 | <xs:group ref="bitRangeOffsetWidthStyle"/> |
| 447 | <!-- bit field described by [<msb>:<lsb>] --> |
| 448 | <xs:element name="bitRange" type="bitRangeType"/> |
| 449 | </xs:choice> |
| 450 | <!-- access describes the predefined permissions for the field. --> |
| 451 | <xs:element name="access" type="accessType" minOccurs="0"/> |
| 452 | <!-- predefined description of write side effects --> |
| 453 | <xs:element name="modifiedWriteValues" type="modifiedWriteValuesType" minOccurs="0"/> |
| 454 | <!-- writeContstraint specifies the subrange of allowed values --> |
| 455 | <xs:element name="writeConstraint" type="writeConstraintType" minOccurs="0"/> |
| 456 | <!-- readAction specifies the read side effects. --> |
| 457 | <xs:element name="readAction" type="readActionType" minOccurs="0"/> |
| 458 | <!-- enumeratedValues derivedFrom=<identifierType> --> |
| 459 | <xs:element name="enumeratedValues" type="enumerationType" minOccurs="0" maxOccurs="2"> |
| 460 | </xs:element> |
| 461 | </xs:sequence> |
Joachim Krech | ae9507d | 2016-09-23 14:01:37 +0200 | [diff] [blame] | 462 | <xs:attribute name="derivedFrom" type="dimableIdentifierType" use="optional"/> |
Robert Rostohar | ba96a2c | 2016-07-01 22:42:12 +0200 | [diff] [blame] | 463 | </xs:complexType> |
| 464 | |
| 465 | <xs:complexType name="fieldsType"> |
| 466 | <xs:sequence> |
| 467 | <!-- field derivedFrom=<identifierType> --> |
| 468 | <xs:element name="field" type="fieldType" minOccurs="1" maxOccurs="unbounded"/> |
| 469 | </xs:sequence> |
| 470 | </xs:complexType> |
| 471 | |
| 472 | <xs:complexType name="registerType"> |
| 473 | <xs:sequence> |
Robert Rostohar | ba96a2c | 2016-07-01 22:42:12 +0200 | [diff] [blame] | 474 | <xs:group ref="dimElementGroup" minOccurs="0"/> |
| 475 | <!-- name specifies the name of the register. The register name is used by System Viewer and |
| 476 | device header file generator to represent a register --> |
Joachim Krech | ae9507d | 2016-09-23 14:01:37 +0200 | [diff] [blame] | 477 | <xs:element name="name" type="dimableIdentifierType"/> |
Robert Rostohar | ba96a2c | 2016-07-01 22:42:12 +0200 | [diff] [blame] | 478 | <!-- display name specifies a register name without the restritions of an ANSIS C identifier. |
| 479 | The use of this tag is discouraged because it does not allow consistency between |
| 480 | the System View and the device header file. --> |
| 481 | <xs:element name="displayName" type="stringType" minOccurs="0"/> |
| 482 | <!-- description contains a reference manual level description about the register and it's purpose --> |
| 483 | <xs:element name="description" type="stringType" minOccurs="0"/> |
| 484 | <xs:choice> |
| 485 | <!-- alternateGroup specifies the identifier of the subgroup a register belongs to. |
| 486 | This is useful if a register has a different description per mode but a single name --> |
| 487 | <xs:element name="alternateGroup" type="identifierType" minOccurs="0"/> |
| 488 | <!-- V1.1: alternateRegister specifies an alternate register description for an address that is |
| 489 | already fully described. In this case the register name must be unique within the peripheral --> |
Joachim Krech | ae9507d | 2016-09-23 14:01:37 +0200 | [diff] [blame] | 490 | <xs:element name="alternateRegister" type="dimableIdentifierType" minOccurs="0"/> |
Robert Rostohar | ba96a2c | 2016-07-01 22:42:12 +0200 | [diff] [blame] | 491 | </xs:choice> |
| 492 | <!-- addressOffset describes the address of the register relative to the baseOffset of the peripheral --> |
| 493 | <xs:element name="addressOffset" type="scaledNonNegativeInteger"/> |
| 494 | <!-- registerPropertiesGroup elements specify the default values for register size, access permission and |
| 495 | reset value. These default values are inherited to all fields contained in this register --> |
| 496 | <xs:group ref="registerPropertiesGroup" minOccurs="0"/> |
| 497 | <!-- V1.1: dataType specifies a CMSIS compliant native dataType for a register (i.e. signed, unsigned, pointer) --> |
| 498 | <xs:element name="dataType" type="dataTypeType" minOccurs="0"/> |
| 499 | <!-- modifiedWriteValues specifies the write side effects --> |
| 500 | <xs:element name="modifiedWriteValues" type="modifiedWriteValuesType" minOccurs="0"/> |
| 501 | <!-- writeConstraint specifies the subset of allowed write values --> |
| 502 | <xs:element name="writeConstraint" type="writeConstraintType" minOccurs="0"/> |
| 503 | <!-- readAcction specifies the read side effects --> |
| 504 | <xs:element name="readAction" type="readActionType" minOccurs="0"/> |
| 505 | <!-- fields section contains all fields that belong to this register --> |
| 506 | <xs:element name="fields" type="fieldsType" minOccurs="0" maxOccurs="1"/> |
| 507 | </xs:sequence> |
Joachim Krech | ae9507d | 2016-09-23 14:01:37 +0200 | [diff] [blame] | 508 | <xs:attribute name="derivedFrom" type="dimableIdentifierType" use="optional"/> |
Robert Rostohar | ba96a2c | 2016-07-01 22:42:12 +0200 | [diff] [blame] | 509 | </xs:complexType> |
| 510 | |
| 511 | <!-- V1.1: A cluster is a set of registers that are composed into a C data structure in the device header file --> |
| 512 | <xs:complexType name="clusterType"> |
| 513 | <xs:sequence> |
Robert Rostohar | ba96a2c | 2016-07-01 22:42:12 +0200 | [diff] [blame] | 514 | <xs:group ref="dimElementGroup" minOccurs="0"/> |
Joachim Krech | ae9507d | 2016-09-23 14:01:37 +0200 | [diff] [blame] | 515 | <xs:element name="name" type="dimableIdentifierType"/> |
Robert Rostohar | ba96a2c | 2016-07-01 22:42:12 +0200 | [diff] [blame] | 516 | <xs:element name="description" type="xs:string"/> |
| 517 | <!-- V1.1: alternateCluster specifies an alternative description for a cluster address range that is |
| 518 | already fully described. In this case the cluster name must be unique within the peripheral --> |
Joachim Krech | ae9507d | 2016-09-23 14:01:37 +0200 | [diff] [blame] | 519 | <xs:element name="alternateCluster" type="dimableIdentifierType" minOccurs="0"/> |
Robert Rostohar | ba96a2c | 2016-07-01 22:42:12 +0200 | [diff] [blame] | 520 | <!-- V1.1: headerStructName specifies the name for the cluster structure typedef |
| 521 | used in the device header generation instead of the cluster name --> |
| 522 | <xs:element name="headerStructName" type="identifierType" minOccurs="0"/> |
| 523 | <xs:element name="addressOffset" type="scaledNonNegativeInteger"/> |
| 524 | <!-- registerPropertiesGroup elements specify the default values for register size, access permission and |
| 525 | reset value. These default values are inherited to all registers contained in this peripheral --> |
| 526 | <xs:group ref="registerPropertiesGroup" minOccurs="0"/> |
| 527 | <xs:sequence> |
| 528 | <xs:choice minOccurs="1" maxOccurs="unbounded"> |
| 529 | <xs:element name="register" type="registerType" minOccurs="0" maxOccurs="unbounded"/> |
| 530 | <!-- 1.3: nesting of cluster is supported --> |
| 531 | <xs:element name="cluster" type="clusterType" minOccurs="0" maxOccurs="unbounded"/> |
| 532 | </xs:choice> |
| 533 | </xs:sequence> |
| 534 | </xs:sequence> |
Joachim Krech | ae9507d | 2016-09-23 14:01:37 +0200 | [diff] [blame] | 535 | <xs:attribute name="derivedFrom" type="dimableIdentifierType" use="optional"/> |
Robert Rostohar | ba96a2c | 2016-07-01 22:42:12 +0200 | [diff] [blame] | 536 | </xs:complexType> |
| 537 | |
| 538 | <!-- the registers section can have an arbitrary list of cluster and register sections --> |
| 539 | <xs:complexType name="registersType"> |
| 540 | <xs:choice minOccurs="1" maxOccurs="unbounded"> |
| 541 | <xs:element name="cluster" type="clusterType"/> |
| 542 | <xs:element name="register" type="registerType"/> |
| 543 | </xs:choice> |
| 544 | </xs:complexType> |
| 545 | |
| 546 | <xs:complexType name="peripheralType"> |
| 547 | <xs:sequence> |
| 548 | <!-- 1.3: specify uni-dimensional array of peripheral - requires name="<name>[%s]" --> |
| 549 | <xs:group ref="dimElementGroup" minOccurs="0"/> |
| 550 | <!-- name specifies the name of a peripheral. This name is used for the System View and device header file --> |
Joachim Krech | ae9507d | 2016-09-23 14:01:37 +0200 | [diff] [blame] | 551 | <xs:element name="name" type="dimableIdentifierType"/> |
Robert Rostohar | ba96a2c | 2016-07-01 22:42:12 +0200 | [diff] [blame] | 552 | <!-- version specifies the version of the peripheral descriptions --> |
| 553 | <xs:element name="version" type="stringType" minOccurs="0"/> |
| 554 | <!-- description provides a high level functional description of the peripheral --> |
| 555 | <xs:element name="description" type="stringType" minOccurs="0"/> |
| 556 | <!-- V1.1: alternatePeripheral specifies an alternative description for an address range that is |
| 557 | already fully by a peripheral described. In this case the peripheral name must be unique within the device description --> |
Joachim Krech | ae9507d | 2016-09-23 14:01:37 +0200 | [diff] [blame] | 558 | <xs:element name="alternatePeripheral" type="dimableIdentifierType" minOccurs="0"/> |
Robert Rostohar | ba96a2c | 2016-07-01 22:42:12 +0200 | [diff] [blame] | 559 | <!-- groupName assigns this peripheral to a group of peripherals. This is only used bye the System View --> |
| 560 | <xs:element name="groupName" type="xs:Name" minOccurs="0"/> |
GuentherMartin | 0d37923 | 2018-09-04 11:20:34 +0200 | [diff] [blame] | 561 | <!-- prependToName specifies a prefix that is placed in front of each register name of this peripheral. |
Robert Rostohar | ba96a2c | 2016-07-01 22:42:12 +0200 | [diff] [blame] | 562 | The device header file will show the registers in a C-Struct of the peripheral without the prefix. --> |
| 563 | <xs:element name="prependToName" type="identifierType" minOccurs="0"/> |
GuentherMartin | 0d37923 | 2018-09-04 11:20:34 +0200 | [diff] [blame] | 564 | <!-- appendToName is a postfix that is appended to each register name of this peripheral. The device header |
Robert Rostohar | ba96a2c | 2016-07-01 22:42:12 +0200 | [diff] [blame] | 565 | file will sho the registers in a C-Struct of the peripheral without the postfix --> |
| 566 | <xs:element name="appendToName" type="identifierType" minOccurs="0"/> |
| 567 | <!-- V1.1: headerStructName specifies the name for the peripheral structure typedef |
| 568 | used in the device header generation instead of the peripheral name --> |
Joachim Krech | ae9507d | 2016-09-23 14:01:37 +0200 | [diff] [blame] | 569 | <xs:element name="headerStructName" type="dimableIdentifierType" minOccurs="0"/> |
GuentherMartin | 0d37923 | 2018-09-04 11:20:34 +0200 | [diff] [blame] | 570 | <!-- disableCondition contains a logical expression based on constants and register or bit-field values |
Robert Rostohar | ba96a2c | 2016-07-01 22:42:12 +0200 | [diff] [blame] | 571 | if the condition is evaluated to true, the peripheral display will be disabled --> |
| 572 | <xs:element name="disableCondition" type="stringType" minOccurs="0"/> |
| 573 | <!-- baseAddress specifies the absolute base address of a peripheral. For derived peripherals it is mandatory |
| 574 | to specify a baseAddress. --> |
| 575 | <xs:element name="baseAddress" type="scaledNonNegativeInteger"/> |
| 576 | <!-- registerPropertiesGroup elements specify the default values for register size, access permission and |
| 577 | reset value. These default values are inherited to all registers contained in this peripheral --> |
| 578 | <xs:group ref="registerPropertiesGroup" minOccurs="0"/> |
GuentherMartin | 0d37923 | 2018-09-04 11:20:34 +0200 | [diff] [blame] | 579 | <!-- addressBlock specifies one or more address ranges that are assigned exclusively to this peripheral. |
Robert Rostohar | ba96a2c | 2016-07-01 22:42:12 +0200 | [diff] [blame] | 580 | derived peripherals may have no addressBlock, however none-derived peripherals are required to specify |
| 581 | at least one address block --> |
| 582 | <xs:element name="addressBlock" type="addressBlockType" minOccurs="0" maxOccurs="unbounded"/> |
| 583 | <!-- interrupt specifies can specify one or more interrtupts by name, description and value --> |
| 584 | <xs:element name="interrupt" type="interruptType" minOccurs="0" maxOccurs="unbounded"/> |
| 585 | <!-- registers section contains all registers owned by the peripheral. In case a peripheral gets derived it does |
GuentherMartin | 0d37923 | 2018-09-04 11:20:34 +0200 | [diff] [blame] | 586 | not have its own registers section, hence this section is optional. A unique peripheral without a |
Robert Rostohar | ba96a2c | 2016-07-01 22:42:12 +0200 | [diff] [blame] | 587 | registers section is not allowed --> |
| 588 | <xs:element name="registers" type="registersType" minOccurs="0" maxOccurs="1"> |
| 589 | </xs:element> |
| 590 | </xs:sequence> |
Joachim Krech | ae9507d | 2016-09-23 14:01:37 +0200 | [diff] [blame] | 591 | <xs:attribute name="derivedFrom" type="dimableIdentifierType" use="optional"/> |
Robert Rostohar | ba96a2c | 2016-07-01 22:42:12 +0200 | [diff] [blame] | 592 | </xs:complexType> |
GuentherMartin | 0d37923 | 2018-09-04 11:20:34 +0200 | [diff] [blame] | 593 | |
Robert Rostohar | ba96a2c | 2016-07-01 22:42:12 +0200 | [diff] [blame] | 594 | <!-- ==================================================== --> |
| 595 | <!-- The top level element of a description is the device --> |
| 596 | <!-- ==================================================== --> |
| 597 | <xs:element name="device" nillable="true"> |
| 598 | <xs:complexType> |
| 599 | <xs:sequence> |
| 600 | <!-- V1.1: Vendor Name --> |
| 601 | <xs:element name="vendor" type="stringType" minOccurs="0"/> |
| 602 | <!-- V1.1: Vendor ID - a short name for referring to the vendor (e.g. Texas Instruments = TI) --> |
| 603 | <xs:element name="vendorID" type="identifierType" minOccurs="0"/> |
| 604 | <!-- name specifies the device name being described --> |
| 605 | <xs:element name="name" type="identifierType"/> |
| 606 | <!-- V1.1: series specifies the device series or family name --> |
| 607 | <xs:element name="series" type="stringType" minOccurs="0"/> |
| 608 | <!-- version specifies the version of the device description --> |
| 609 | <xs:element name="version" type="stringType"/> |
| 610 | <!-- description is a string describing the device features (e.g. memory size, peripherals, etc.) --> |
| 611 | <xs:element name="description" type="stringType"/> |
| 612 | <!-- V1.1: licenseText specifies the file header section to be included in any derived file --> |
| 613 | <xs:element name="licenseText" type="stringType" minOccurs="0"/> |
| 614 | <!-- V1.1: cpu specifies the details of the processor included in the device --> |
| 615 | <xs:element name="cpu" type="cpuType" minOccurs="0"/> |
| 616 | <!-- V1.1: the tag specifies the filename without extension of the CMSIS System Device include file. |
| 617 | This tag is used by the header file generator for customizing the include statement referencing the |
| 618 | CMSIS system file within the CMSIS device header file. By default the filename is "system_<device.name>" |
GuentherMartin | 0d37923 | 2018-09-04 11:20:34 +0200 | [diff] [blame] | 619 | In cases a device series shares a single system header file, the name of the series shall be used |
Robert Rostohar | ba96a2c | 2016-07-01 22:42:12 +0200 | [diff] [blame] | 620 | instead of the individual device name. --> |
| 621 | <xs:element name="headerSystemFilename" type="identifierType" minOccurs="0"/> |
| 622 | <!-- V1.1: headerDefinitionPrefix specifies the string being prepended to all names of types defined in |
| 623 | generated device header file --> |
| 624 | <xs:element name="headerDefinitionsPrefix" type="identifierType" minOccurs="0"/> |
| 625 | <!-- addressUnitBits specifies the size of the minimal addressable unit in bits --> |
| 626 | <xs:element name="addressUnitBits" type="scaledNonNegativeInteger"/> |
| 627 | <!-- width specifies the number of bits for the maximum single transfer size allowed by the bus interface. |
| 628 | This sets the maximum size of a single register that can be defined for an address space --> |
| 629 | <xs:element name="width" type="scaledNonNegativeInteger"/> |
| 630 | <!-- registerPropertiesGroup elements specify the default values for register size, access permission and |
| 631 | reset value --> |
| 632 | <xs:group ref="registerPropertiesGroup" minOccurs="0"/> |
| 633 | |
| 634 | <!-- peripherals is containing all peripherals --> |
| 635 | <xs:element name="peripherals"> |
| 636 | <xs:complexType> |
| 637 | <xs:sequence> |
| 638 | <xs:element name="peripheral" type="peripheralType" minOccurs="1" maxOccurs="unbounded"/> |
| 639 | </xs:sequence> |
| 640 | </xs:complexType> |
| 641 | </xs:element> |
| 642 | |
| 643 | <!-- Vendor Extensions: this section captures custom extensions. This section will be ignored by default --> |
| 644 | <xs:element name="vendorExtensions" minOccurs="0" maxOccurs="1"> |
| 645 | <xs:complexType> |
| 646 | <xs:sequence> |
| 647 | <xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"> |
| 648 | </xs:any> |
| 649 | </xs:sequence> |
| 650 | </xs:complexType> |
| 651 | </xs:element> |
| 652 | </xs:sequence> |
| 653 | <xs:attribute name="schemaVersion" type="xs:decimal" use="required"/> |
| 654 | </xs:complexType> |
| 655 | </xs:element> |
| 656 | </xs:schema> |
| 657 | |
Joachim Krech | c477341 | 2016-02-18 09:17:07 +0100 | [diff] [blame] | 658 | <!-- END OF FILE --> |