cprj_schema.txt 67 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152
  1. /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
  2. /**
  3. \page cprjFormat_pg Project Description (*.cprj) Format
  4. \section section_overview Overview
  5. The CMSIS Project description format is unifying the specification for the build of a software project.
  6. It is a public format to exchange project build information between tools that support the CMSIS-Pack based
  7. Run-Time Environment. In addition the format facilitates the tool driven construction of projects from partial projects,
  8. named project 'layers'. The project description is targeted to generate a single executable or library file.
  9. The specification of this CMSIS Project description format (*.cprj) is replacing the previous format (*.cpdsc).
  10. The most significant differences are:
  11. - a new format specification which is independent from the CMSIS-Pack schema.
  12. - the scope of the description is limited to building a single application or library (no debugger setup).
  13. - the support of toolchain specific command line options applied to the whole project, individual components, file groups
  14. or file level.
  15. - the ability to divide projects into layers, which can be extracted from and added to projects.
  16. \section section_layer Introduction of Layers
  17. One example is the separation of an existing project into files and components that are HW dependent (board, device, processor)
  18. and those that are application specific. The result is a HW and an application layer. Assuming that there is layers for multiple
  19. boards and applications sharing common interfaces between layers, any combination of HW laywer with an application layer can be
  20. combined to create projects and build consistent applications across a range of hardware.
  21. \section section_varieties Varieties of a build
  22. Due to CMSIS-Pack's software lifecycle management features, projects can be build using different combinations of compatible
  23. pack and component versions. as well as different versions of a tool-chain. If the project contains descriptions for multiple different tool-chains,
  24. also different tool-chains can be used to create additional build variants.
  25. The build system needs the following pieces of information to successfully build a project:
  26. - CMSIS-Packs used by project for component definitions and attributes of the targeted device.
  27. - Tool-chain name and version.
  28. - Target information including device vendor + name and enabled device features as well as additional command line options for the active tool-chain
  29. (C/C++ compiler, assembler, linker or librarian).
  30. - Component selection and configuration file information.
  31. - Files which are local to the project to be used by the build engine.
  32. - RTE folder containing preconfigured component configuration files.
  33. Note: additional command line options for the tool-chains are tool-chain specific and are transparently passed onto the command line. Command line
  34. options related to the processor and it's features are automatically derived from the device information and must not be specified.
  35. \delim
  36. See \subpage element_cprj "Project Description Root" for details about the description format..
  37. See \ref CmdLineBuild "CMSIS-Build" for further information how to build software based on the CMSIS Project description at
  38. the command line and how to create and manage projects using layers.
  39. See \subpage projectDescriptionSchema "Project Description Schema file" for validation of project files.
  40. \page element_cprj /cprj
  41. CMSIS project files use the file extension *.cprj and CMSIS project layer files use the file extension *.clayer.
  42. Both file types share a single file format which can be validated using the dedicate CPRJ schema file
  43. located in \ref projectDescriptionSchema "CMSIS/Utilities/CPRJ.xsd".
  44. The location of a project or layer file always marks the root point and all file references are
  45. always relative to this root point, unless a file belongs to a component. In the latter case the files are
  46. relative to the base directory of the referenced CMSIS Software Pack version.
  47. The high level structure of a project is constructed from:
  48. <table class="cmtable" summary="Top level elements">
  49. <tr>
  50. <th>Element</th>
  51. <th>Link</th>
  52. <th>Description</th>
  53. </tr>
  54. <tr>
  55. <td>\<created></td>
  56. <td>\subpage element_created</td>
  57. <td>Information about the tool that had produced this file.</td>
  58. </tr>
  59. <tr>
  60. <td>\<info></td>
  61. <td>\subpage element_info</td>
  62. <td>Information about the project: description, keywords, categories, license, download.</td>
  63. </tr>
  64. <tr>
  65. <td>\<layers></td>
  66. <td>\subpage element_layers</td>
  67. <td>Definition of the layer within the project or layer.</td>
  68. </tr>
  69. <tr>
  70. <td>\<packages></td>
  71. <td>\subpage element_packages</td>
  72. <td>List of all CMSIS Software Packs required to construct and build the project (components and device).</td>
  73. </tr>
  74. <tr>
  75. <td>\<compilers></td>
  76. <td>\subpage element_compilers</td>
  77. <td>Information about the toolchains/compilers and their versions that can be used to build the project.</td>
  78. </tr>
  79. <tr>
  80. <td>\<target></td>
  81. <td>\subpage element_target</td>
  82. <td>Information about the HW targeted as well as build output and top level toolchain options.</td>
  83. </tr>
  84. <tr>
  85. <td>\<components></td>
  86. <td>\subpage element_components</td>
  87. <td>List of all CMSIS Software Pack components and used config file versions that need to be included for building the project.</td>
  88. </tr>
  89. <tr>
  90. <td>\<files></td>
  91. <td>\subpage element_files </td>
  92. <td>List of all source files and include paths that are local to the project (project subdirectories only)</td>
  93. </tr>
  94. <tr>
  95. <td>other defined types</td>
  96. <td>\subpage cprj_types</td>
  97. <td>Description of all locally defined schema types.</td>
  98. </tr>
  99. </table>
  100. \b Example CMSIS Project File (*.cprj):
  101. \code
  102. <?xml version="1.0" encoding="UTF-8" ?>
  103. <cprj schemaVersion="1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="CPRJ.xsd">
  104. <created tool="µVision V5.29.0.13" timestamp="2020-01-21T11:38:01" />
  105. <info isLayer="false" >
  106. <description>BSD Client application on top of MCB4300 Basic I/O layer with Ethernet</description>
  107. <category>Wired Network, BSD Client, Board IO</category>
  108. <keywords>MCB4300, MDK-Middleware, Network</keywords>
  109. <license>BSD-3-Clause</license>
  110. <url></url>
  111. </info>
  112. <layers>
  113. <layer name="IO" hasTarget="1">
  114. <description>Basic I/O layer for MCB4300 for Ethernet applications</description>
  115. <category>Board IO, Wired Network</category>
  116. <keywords>MCB4300, Ethernet, LPC4300</keywords>
  117. <license>BSD-3-Clause</license>
  118. </layer>
  119. <layer name="APP" hasTarget="0">
  120. <description>BSD Client application for Basic I/O layers with Ethernet</description>
  121. <category>Board IO, Wired Network</category>
  122. <keywords>BSD_Client, Ethernet</keywords>
  123. <license>BSD-3-Clause</license>
  124. </layer>
  125. </layers>
  126. <packages>
  127. <package name="CMSIS" vendor="ARM"/>
  128. <package name="CMSIS-Driver" vendor="ARM"/>
  129. <package name="ARM_Compiler" vendor="Keil"/>
  130. <package name="LPC4300_DFP" vendor="Keil"/>
  131. <package name="MDK-Middleware" vendor="Keil"/>
  132. </packages>
  133. <compilers>
  134. <compiler name="AC5" version="5.0.0:5.99.99"/>
  135. </compilers>
  136. <target Ddsp="NO_DSP" Dendian="Little-endian" Dfpu="NO_FPU" Dmve="NO_MVE" Dname="LPC4357" Dtz="NO_TZ" Dvendor="NXP:11" Pname="Cortex-M4">
  137. <output list="./Debug/" name="BSD_Client" obj="./Debug/" type="exe"/>
  138. <ldflags compiler="AC5" add="--entry=Reset_Handler --load_addr_map_info --map --strict" file="BSD_Client.sct"/>
  139. <cflags compiler="AC5" add="--c99 --omf_browse ./debug/main.crf -D__MICROLIB -O1"/>
  140. <asflags compiler="AC5" add="--pd __MICROLIB SETA 1 --xref"/>
  141. </target>
  142. <components>
  143. <component layer="IO" Cclass="CMSIS" Cgroup="CORE" Cvendor="ARM"/>
  144. <component layer="IO" Cclass="CMSIS" Cgroup="RTOS2" Csub="Keil RTX5" Cvariant="Source" Cvendor="ARM">
  145. <file attr="config" category="source" name="CMSIS/RTOS2/RTX/Config/RTX_Config.c" version="5.1.0"/>
  146. <file attr="config" category="header" name="CMSIS/RTOS2/RTX/Config/RTX_Config.h" version="5.5.0"/>
  147. </component>
  148. <component layer="IO" Cbundle="ARM Compiler" Cclass="Compiler" Cgroup="Event Recorder" Cvariant="DAP" Cvendor="Keil">
  149. <cflags compiler="AC5" add="--omf_browse ./debug/eventrecorder.crf" remove="--omf_browse ./debug/main.crf"/>
  150. <file attr="config" category="header" name="Config/EventRecorderConf.h" version="1.1.0"/>
  151. </component>
  152. <component layer="IO" Cbundle="MCB4300" Cclass="Board Support" Cgroup="Graphic LCD" Cvendor="Keil"/>
  153. <component layer="IO" Cbundle="MCB4300" Cclass="Board Support" Cgroup="LED" Cvendor="Keil"/>
  154. <component layer="APP" Cbundle="MDK-Pro" Cclass="Network" Cgroup="CORE" Cvariant="IPv4/IPv6 Debug" Cvendor="Keil">
  155. <file attr="config" category="source" name="Network/Config/Net_Config.c" version="7.0.0"/>
  156. <file attr="config" category="source" name="Network/Config/Net_Debug.c" version="7.0.0"/>
  157. </component>
  158. <component layer="APP" Cbundle="MDK-Pro" Cclass="Network" Cgroup="Interface" Csub="ETH" Cvendor="Keil" instances="1">
  159. <file attr="config" category="header" name="Network/Config/Net_Config_ETH.h" version="7.2.0"/>
  160. </component>
  161. <component layer="APP" Cbundle="MDK-Pro" Cclass="Network" Cgroup="Socket" Csub="BSD" Cvendor="Keil">
  162. <file attr="config" category="header" name="Network/Config/Net_Config_BSD.h" version="5.0.4"/>
  163. </component>
  164. <component layer="APP" Cbundle="MDK-Pro" Cclass="Network" Cgroup="Socket" Csub="TCP" Cvendor="Keil">
  165. <file attr="config" category="header" name="Network/Config/Net_Config_TCP.h" version="7.1.0"/>
  166. </component>
  167. <component layer="APP" Cbundle="MDK-Pro" Cclass="Network" Cgroup="Socket" Csub="UDP" Cvendor="Keil">
  168. <file attr="config" category="header" name="Network/Config/Net_Config_UDP.h" version="5.1.0"/>
  169. </component>
  170. <component layer="IO" Cclass="CMSIS Driver" Cgroup="Ethernet MAC" Cvendor="Keil"/>
  171. <component layer="IO" Cclass="CMSIS Driver" Cgroup="Ethernet PHY" Csub="DP83848C" Cvendor="Keil"/>
  172. <component layer="IO" Cclass="CMSIS Driver" Cgroup="SPI" Csub="SSP" Cvendor="Keil"/>
  173. <component layer="IO" Cclass="Device" Cgroup="GPDMA" Cvendor="Keil"/>
  174. <component layer="IO" Cclass="Device" Cgroup="GPIO" Cvendor="Keil"/>
  175. <component layer="IO" Cclass="Device" Cgroup="SCU" Cvendor="Keil"/>
  176. <component layer="IO" Cclass="Device" Cgroup="Startup" Cvendor="Keil">
  177. <file attr="config" category="source" name="Device/Source/ARM/startup_LPC43xx.s" version="1.0.0"/>
  178. <file attr="config" category="source" name="Device/Source/system_LPC43xx.c" version="1.0.3"/>
  179. <file attr="config" category="header" name="RTE_Driver/Config/RTE_Device.h" version="2.2.1"/>
  180. </component>
  181. </components>
  182. <files>
  183. <group layer="APP" name="Source">
  184. <file category="sourceC" name="./main.c"/>
  185. <file category="sourceC" name="./BSD_Client.c"/>
  186. </group>
  187. <group name="Documentation">
  188. <file layer="APP" category="doc" name="./Abstract.txt"/>
  189. </group>
  190. </files>
  191. </cprj>
  192. \endcode
  193. \delim
  194. <table class="cmtable" summary="Element: /cprj ">
  195. <tr>
  196. <th>Parents</th>
  197. <th colspan="3">Element Chain</th>
  198. </tr>
  199. <tr>
  200. <td>root</td>
  201. <td colspan="3">description root point of description</td>
  202. </tr>
  203. <tr>
  204. <th>Attributes</th>
  205. <th>Description</th>
  206. <th>Type</th>
  207. <th>Use</th>
  208. </tr>
  209. <tr>
  210. <td>schemaVersion</td>
  211. <td>Version of CPRJ.xsd the description is compatible/validate with</td>
  212. <td>VersionType</td>
  213. <td>required</td>
  214. </tr>
  215. <tr>
  216. <th>Child Elements</th>
  217. <th>Description</th>
  218. <th>Type</th>
  219. <th>Occurrence</th>
  220. </tr>
  221. <tr>
  222. <td>created</td>
  223. <td>Element containing timestamp and tool information.</td>
  224. <td>\ref element_created "CreatedType"</td>
  225. <td>0..1</td>
  226. </tr>
  227. <tr>
  228. <td>info</td>
  229. <td>Section containing project information.</td>
  230. <td>\ref element_info "InfoType"</td>
  231. <td>1..1</td>
  232. </tr>
  233. <tr>
  234. <td>layers</td>
  235. <td>Section containing layer information.</td>
  236. <td>\ref element_layers "LayersType"</td>
  237. <td>1..1</td>
  238. </tr>
  239. <tr>
  240. <td>compilers</td>
  241. <td>Specify compilers that can be used to build the project.</td>
  242. <td>\ref element_compilers "CompilersType"</td>
  243. <td>1..1</td>
  244. </tr>
  245. <tr>
  246. <td>packages</td>
  247. <td>Specify packs required by the project.</td>
  248. <td>\ref element_packages "PackagesType"</td>
  249. <td>1..1</td>
  250. </tr>
  251. <tr>
  252. <td>target</td>
  253. <td>Section specifying the device and active architectural features like e.g. hardware floating point support. Sub elements
  254. specify tool specific commandline options as well as output parameters. Note: Layers may not have a \<target> section.</td>
  255. <td>\ref element_target "TargetType"</td>
  256. <td>0..1</td>
  257. </tr>
  258. <tr>
  259. <td>components</td>
  260. <td>Specify the software components selected for the Run-Time Environment (RTE) including complete list of configuration files.</td>
  261. <td>\ref element_components "ComponentsType"</td>
  262. <td>0..1</td>
  263. </tr>
  264. <tr>
  265. <td>files</td>
  266. <td>List of all project specific files required for the project build, which are not part of a component.</td>
  267. <td>\ref element_files "ProjectFilesType"</td>
  268. <td>0..1</td>
  269. </tr>
  270. </table>
  271. \delim
  272. \page element_created /cprj/created
  273. \b Example <em>created</em> element
  274. \code
  275. <cprj schemaVersion="1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="CPRJ.xsd">
  276. <created tool="µVision V5.29.0.13" timestamp="2020-01-21T11:38:01" />
  277. ...
  278. </cprj>
  279. \endcode
  280. <table class="cmtable" summary="Element: created">
  281. <tr>
  282. <th>Parents</th>
  283. <th colspan="3">Element Chain</th>
  284. </tr>
  285. <tr>
  286. <td>\ref element_cprj "cprj"</td>
  287. <td colspan="3">\ref element_cprj</td>
  288. </tr>
  289. <tr>
  290. <th>Attributes</th>
  291. <th>Description</th>
  292. <th>Type</th>
  293. <th>Use</th>
  294. </tr>
  295. <tr>
  296. <td>tool</td>
  297. <td>name of the tool that has been writing the file. The string shall include version information.</td>
  298. <td>xs:string</td>
  299. <td>required</td>
  300. </tr>
  301. <tr>
  302. <td>timestamp</td>
  303. <td>Date and Time information of the last update. Format: YYYY-MM-DDThh:mm:ss[+|-hh:mm]</td>
  304. <td>xs:dateTeim</td>
  305. <td>required</td>
  306. </tr>
  307. </table>
  308. \delim
  309. \page element_info /cprj/info
  310. \b Example <em>info</em> element
  311. \code
  312. ...
  313. <info isLayer="false" >
  314. <description>BSD Client application on top of MCB4300 Basic I/O layer with Ethernet</description>
  315. <category>Wired Network, BSD Client, Board IO</category>
  316. <keywords>MCB4300, MDK-Middleware, Network</keywords>
  317. <license>BSD-3-Clause</license>
  318. <url>https://github.com/ARM-software/cmsis-driver/examples/BSD_Client_MCB4300_IO/</url>
  319. </info>
  320. ...
  321. \endcode
  322. \delim
  323. <table class="cmtable" summary="Element: info">
  324. <tr>
  325. <th>Parents</th>
  326. <th colspan="3">Element Chain</th>
  327. </tr>
  328. <tr>
  329. <td>\ref element_cprj "cprj"</td>
  330. <td colspan="3">\ref element_cprj</td>
  331. </tr>
  332. <tr>
  333. <th>Attributes</th>
  334. <th>Description</th>
  335. <th>Type</th>
  336. <th>Use</th>
  337. </tr>
  338. <tr>
  339. <td>name</td>
  340. <td>name of the layer</td>
  341. <td>\ref type_restrictedStringType "RestrictedString"</td>
  342. <td>required</td>
  343. </tr>
  344. <tr>
  345. <td>isLayer</td>
  346. <td>If 'true' then the project file is a layer description and not a complete project expected to create an output. Only layer descriptions can be
  347. added to an existing project, or a project is constructed from using only layer descriptions. By default a description is a project (false).</td>
  348. <td>xs:boolean</td>
  349. <td>required (if not default)</td>
  350. </tr>
  351. <tr>
  352. <th>Child Elements</th>
  353. <th>Description</th>
  354. <th>Type</th>
  355. <th>Occurrence</th>
  356. </tr>
  357. <tr>
  358. <td>description</td>
  359. <td>Brief description of the layer.</td>
  360. <td>xs:string</td>
  361. <td>0..*</td>
  362. </tr>
  363. <tr>
  364. <td>keywords</td>
  365. <td>Comma seperated list of keywords of this layer used by search tools.</td>
  366. <td>xs:string</td>
  367. <td>0..*</td>
  368. </tr>
  369. <tr>
  370. <td>category</td>
  371. <td>Comma separated list of predefined categories for this layer used by search tools. Predefined list TBD.</td>
  372. <td>xs:string</td>
  373. <td>0..*</td>
  374. </tr>
  375. <tr>
  376. <td>license</td>
  377. <td>License ruling for using files local to the layer using SPDX license ID from https://spdx.org/licenses/. Note: components have their own licenses.</td>
  378. <td>xs:string</td>
  379. <td>0..*</td>
  380. </tr>
  381. <tr>
  382. <td>\ref element_url "url"</td>
  383. <td>Specifies a public download location. Repository type and tag can be specified.</td>
  384. <td>UrlType</td>
  385. <td>0..*</td>
  386. </tr>
  387. </table>
  388. \delim
  389. \section element_url /cprj/info/url
  390. \b Example <em>url</em> element
  391. \code
  392. ...
  393. <info>
  394. <url type="git" tag="Rel-1.2.0">https://github/myOrg/myProj/Examples/myExample/</url>
  395. </info>
  396. ...
  397. \endcode
  398. \delim
  399. <table class="cmtable" summary="Type: urlType">
  400. <tr>
  401. <th>Parents</th>
  402. <th colspan="3">Element Chain</th>
  403. </tr>
  404. <tr>
  405. <td>\ref element_info "info"</td>
  406. <td colspan="3">\ref element_info</td>
  407. </tr>
  408. <tr>
  409. <th>Attributes</th>
  410. <th>Description</th>
  411. <th>Type</th>
  412. <th>Use</th>
  413. </tr>
  414. <tr>
  415. <td>type</td>
  416. <td>repository type (git, svn, other)</td>
  417. <td>xs:string</td>
  418. <td>optional</td>
  419. </tr>
  420. <tr>
  421. <td>tag</td>
  422. <td>specifies the repository tag.</td>
  423. <td>xs:string</td>
  424. <td>optional</td>
  425. </tr>
  426. </table>
  427. \delim
  428. \page element_target /cprj/target
  429. This element describes the hardware target, build output and command line options for a specific compiler tool-chain.
  430. These settings are applied to all modules of the project. The C/C++ and assembler flags can be refined for components, files.
  431. The following elements are available:
  432. - \ref element_output "output" : Build output options
  433. - \ref element_target_cflags "cflags" : C compiler options applied to C modules (category="sourceC").
  434. - \ref element_target_cxxflags "cxxflags" : C++ compiler options applied to C++ modules (category="sourceCpp").
  435. - \ref element_target_asflags "asflags" : Assembler options applied to Assembler modules (category="sourceAsm").
  436. - \ref element_ldflags "ldflags" : Linker options applied when output attribute type="exe".
  437. - \ref element_arflags "arflags" : Archiver options applied to Librarian when output attribute type="lib".
  438. Note: The compiler referenced by the above command line flags is required to be listed in the \<compilers> section.
  439. \b Example <em>target</em> section:
  440. \code
  441. <cprj xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="CPRJ.xsd"/>
  442. ...
  443. <compilers>
  444. <compiler name="AC5" version="5.6.0"
  445. </compilers>
  446. ...
  447. <target Dname="ARMCM0" Dvendor="ARM:82" Dendian="Little-endian">
  448. <output name="Blinky" type="exe" obj="./Objects list="./Listings"/>
  449. <cflags compiler="AC5" add="-Osize"/>
  450. ...
  451. <ldflags compiler="AC5" file="./RTE/Device/ARMCM0/gcc_arm.ld"/>
  452. </target>
  453. ...
  454. </cprj>
  455. \endcode
  456. \n
  457. <table class="cmtable" summary="Element: target">
  458. <tr>
  459. <th>Parents</th>
  460. <th colspan="3">Element Chain</th>
  461. </tr>
  462. <tr>
  463. <td>\ref element_cprj "cprj"</td>
  464. <td colspan="3">\ref element_cprj</td>
  465. </tr>
  466. <tr>
  467. <th>Attributes</th>
  468. <th>Description</th>
  469. <th>Type</th>
  470. <th>Use</th>
  471. </tr>
  472. <tr>
  473. <td>Bvendor</td>
  474. <td>Board vendor name. Either a board vendor and board name with optional board revision, or a device vendor and a device name.</td>
  475. <td>xs:string</td>
  476. <td>optional</td>
  477. </tr>
  478. <tr>
  479. <td>Bname</td>
  480. <td>SPecify the board name. Either a board vendor and board name with optional board revision, or a device vendor and a device name.</td>
  481. <td>xs:string</td>
  482. <td>optional</td>
  483. </tr>
  484. <tr>
  485. <td>Bversion</td>
  486. <td>Board version. Either a board vendor and board name with optional board revision, or a device vendor and a device name.</td>
  487. <td>xs:string</td>
  488. <td>optional</td>
  489. </tr>
  490. <tr>
  491. <td>Dvendor</td>
  492. <td>Device vendor name. Either a board vendor and board name with optional board revision, or a device vendor and a device name.</td>
  493. <td>xs:string</td>
  494. <td>optional</td>
  495. </tr>
  496. <tr>
  497. <td>Dname</td>
  498. <td>Device name. Either a board vendor and board name with optional board revision, or a device vendor and a device name.</td>
  499. <td>xs:string</td>
  500. <td>optional</td>
  501. </tr>
  502. <tr>
  503. <td>Pname</td>
  504. <td>Processor instance name. In case of multi-processor devices, this processor ID is required.</td>
  505. <td>xs:string</td>
  506. <td>optional</td>
  507. </tr>
  508. <tr>
  509. <td>Dfpu</td>
  510. <td>Selects the floating point unit option that is active for the project. \b Note, even if the
  511. device implements an FPU, setting \token{Dfpu=0} here, will disable FPU code generation.
  512. Use predefined values from the table \ref DfpuEnum "Device FPU".</td>
  513. <td>DfpuEnum</td>
  514. <td>optional</td>
  515. </tr>
  516. <tr>
  517. <td>Dendian</td>
  518. <td>Selects the endianness to be used for the project. Note that selecting an endianness that is
  519. not supported by the device, will result in a build that will not run on the device.
  520. Use predefined values from the table \ref DendianEnum "DendianEnum".</td>
  521. <td>DendianEnum</td>
  522. <td>optional</td>
  523. </tr>
  524. <tr>
  525. <td>Dmpu</td>
  526. <td>Selects the memory protection unit to be enabled or disabled for the project.
  527. Use predefined values from the table \ref DmpuEnum "Device MPU".</td>
  528. <td>DmpuEnum</td>
  529. <td>optional</td>
  530. </tr>
  531. <tr>
  532. <td>Dsecure</td>
  533. <td>Selects the software model for code generation on arm TrustZone-M enabled devices.
  534. Use predefined values from the table \ref DsecureEnum "Dsecure"</td>
  535. <td>DsecureEnum</td>
  536. <td>optional</td>
  537. </tr>
  538. <tr>
  539. <td>Dmve</td>
  540. <td>Selects the code generation to utilize the Corex-M Vector Extensions (MVE) on devices with this features
  541. Use predefined values from the table \ref DmveEnum "Dmve"</td>
  542. <td>DmveEnum</td>
  543. <td>optional</td>
  544. </tr>
  545. <tr>
  546. <th>Child Elements</th>
  547. <th>Description</th>
  548. <th>Type</th>
  549. <th>Occurrence</th>
  550. </tr>
  551. <tr>
  552. <td>\ref element_output "output"</td>
  553. <td>Configure the build output name and type, and specify whether to include debug information. Required if type="exe".</td>
  554. <td>OutputType</td>
  555. <td>1..1</td>
  556. </tr>
  557. <tr>
  558. <td>\ref element_ldflags "ldflags"</td>
  559. <td>Linker flags used for constructing the effective linker command line</td>
  560. <td>LinkerFlagsType</td>
  561. <td>0..1</td>
  562. <tr>
  563. <td>\ref element_arflags "arflags"</td>
  564. <td>Archiver command line flags for the toolchain selected by 'compiler' attribute.</td>
  565. <td>ArchiverFlagsType</td>
  566. <td>0..1</td>
  567. </tr>
  568. </tr>
  569. <tr>
  570. <td>\ref type_toolOptionType "cflags"</td>
  571. <td>Compiler flags for C-modules used for constructing the effective compiler command line</td>
  572. <td>ToolOptionType</td>
  573. <td>0..1</td>
  574. </tr>
  575. <tr>
  576. <td>\ref type_toolOptionType "cxxflags"</td>
  577. <td>Compiler flags for C++ modules used for constructing the effective compiler command line</td>
  578. <td>ToolOptionType</td>
  579. <td>0..1</td>
  580. </tr>
  581. <tr>
  582. <td>\ref type_toolOptionType "asflags"</td>
  583. <td>Assembler flags for assembler modules used for constructing the effective assembler command line</td>
  584. <td>ToolOptionType</td>
  585. <td>0..1</td>
  586. </tr>
  587. <tr>
  588. <td>\ref type_toolOptionType "arflags"</td>
  589. <td>Archiver flags for the archiver which creates library files. Constructing the effective assembler command line</td>
  590. <td>ToolOptionType</td>
  591. <td>0..1</td>
  592. </tr>
  593. </table>
  594. \delim
  595. \section element_output /cprj/target/output
  596. Specify the build output directories, output file and type (executable vs. library).
  597. \b Example <em>output</em> element
  598. \code
  599. <cprj ...>
  600. ...
  601. <target Dname="ARMCM0" Dvendor="ARM:83">
  602. <output compiler="AC5" name="MyProject" type="exe" list="Listings" obj="Objects"/>
  603. ...
  604. </target>
  605. ...
  606. </cprj>
  607. \endcode
  608. \n
  609. <table class="cmtable" summary="Element: output">
  610. <tr>
  611. <th>Parents</th>
  612. <th colspan="3">Element Chain</th>
  613. </tr>
  614. <tr>
  615. <td>\ref element_target target</td>
  616. <td colspan="3">\ref element_target</td>
  617. </tr>
  618. <tr>
  619. <th>Attributes</th>
  620. <th>Description</th>
  621. <th>Type</th>
  622. <th>Use</th>
  623. </tr>
  624. <tr>
  625. <td>name</td>
  626. <td>Name of the build output file to be generated.</td>
  627. <td>xs:string</td>
  628. <td>required</td>
  629. </tr>
  630. <tr>
  631. <td>type</td>
  632. <td>Select the build target to be \token{lib} - library or \token{exe} - executable</td>
  633. <td>CompilerOutputType</td>
  634. <td>required</td>
  635. </tr>
  636. <tr>
  637. <td>obj</td>
  638. <td>Relative path of the output folder</td>
  639. <td>xs:string</td>
  640. <td>optional</td>
  641. </tr>
  642. <tr>
  643. <td>listing</td>
  644. <td>Relative path of the listings folder</td>
  645. <td>xs:string</td>
  646. <td>optional</td>
  647. </tr>
  648. </table>
  649. \delim
  650. \section element_ldflags /cprj/target/ldflags
  651. This element specifies strings of commandline options for the linker of the tool-chain selected by the attribute 'compiler'.
  652. A linker script file shall be specified using the attribute 'file'. Note that this option only takes effect if the type specified
  653. in the output tag is set to "exe".
  654. \b Example <em>ldflags</em> element
  655. \code
  656. <cprj ...>
  657. ...
  658. <target Ddsp="NO_DSP" Dendian="Little-endian" Dfpu="NO_FPU" Dmve="NO_MVE" Dname="LPC4357" Dtz="NO_TZ" Dvendor="NXP:11" Pname="Cortex-M4">
  659. <output list="./Debug/" name="BSD_Client" obj="./Debug/" type="exe"/>
  660. <ldflags compiler="AC5" add="--entry=Reset_Handler --load_addr_map_info --map --strict " file="BSD_Client.sct"/>
  661. </target>
  662. ...
  663. </cprj>
  664. \endcode
  665. <table class="cmtable" summary="Element: ldflags">
  666. <tr>
  667. <th>Parents</th>
  668. <th colspan="3">Element Chain</th>
  669. </tr>
  670. <tr>
  671. <td>\ref element_target "target"</td>
  672. <td colspan="3">\ref element_target</td>
  673. </tr>
  674. <tr>
  675. <th>Attributes</th>
  676. <th>Description</th>
  677. <th>Type</th>
  678. <th>Use</th>
  679. </tr>
  680. <tr>
  681. <td>compiler</td>
  682. <td>selects the compiler the contained information is targeted at. Choose from available list: GCC, AC5, AC6, IAR, Tasking, GHS, Cosmic, G++</td>
  683. <td>CompilerEnumType</td>
  684. <td>required</td>
  685. </tr>
  686. <tr>
  687. <td>add</td>
  688. <td>commandline options to be added to the command line of the respective tool.</td>
  689. <td>xs:string</td>
  690. <td>optional</td>
  691. </tr>
  692. </table>
  693. \delim
  694. \section element_arflags /cprj/target/arflags
  695. This element specifies a string of commandline options for the archiver of the tool-chain selected by the attribute 'compiler'.
  696. Note that this option only takes effect if the type specified in the output tag is set to "lib".
  697. \b Example <em>arflags</em> element
  698. \code
  699. <cprj ...>
  700. ...
  701. <target Ddsp="NO_DSP" Dendian="Little-endian" Dfpu="NO_FPU" Dmve="NO_MVE" Dname="LPC4357" Dtz="NO_TZ" Dvendor="NXP:11" Pname="Cortex-M4">
  702. <output list="./Debug/" name="BSD_Client" obj="./Debug/" type="lib"/>
  703. <arflags compiler="AC5" add="--debug_symbols "/>
  704. </target>
  705. ...
  706. </cprj>
  707. \endcode
  708. <table class="cmtable" summary="Element: arflags">
  709. <tr>
  710. <th>Parents</th>
  711. <th colspan="3">Element Chain</th>
  712. </tr>
  713. <tr>
  714. <td>\ref element_target "target"</td>
  715. <td colspan="3">\ref element_target</td>
  716. </tr>
  717. <tr>
  718. <th>Attributes</th>
  719. <th>Description</th>
  720. <th>Type</th>
  721. <th>Use</th>
  722. </tr>
  723. <tr>
  724. <td>compiler</td>
  725. <td>selects the compiler the command line option string is targeted at. Choose from available list: GCC, AC5, AC6, IAR, Tasking, GHS, Cosmic, G++</td>
  726. <td>CompilerEnumType</td>
  727. <td>required</td>
  728. </tr>
  729. <tr>
  730. <td>add</td>
  731. <td>commandline string to be added to the command line of the archiver of the selected compiler tool-chain.</td>
  732. <td>xs:string</td>
  733. <td>required</td>
  734. </tr>
  735. </table>
  736. \delim
  737. \section element_target_cflags /cprj/target/cflags
  738. These additional compiler options affect all C modules contained in the project description unless particular settings
  739. are 'removed' on a lower level (component, group, file).
  740. \b Example <em>cflags</em> element
  741. \code
  742. <cprj ...>
  743. ...
  744. <target Ddsp="NO_DSP" Dendian="Little-endian" Dfpu="NO_FPU" Dmve="NO_MVE" Dname="LPC4357" Dtz="NO_TZ" Dvendor="NXP:11" Pname="Cortex-M4">
  745. <output list="./Debug/" name="BSD_Client" obj="./Debug/" type="lib"/>
  746. <cflags add="-O1 -fno-function-sections -fno-rtti -fshort-enums -fshort-wchar -funsigned-char"/>
  747. <arflags compiler="AC5" add="--debug_symbols "/>
  748. </target>
  749. ...
  750. </cprj>
  751. \endcode
  752. <table class="cmtable" summary="Element: cflags">
  753. <tr>
  754. <th>Parents</th>
  755. <th colspan="3">Element Chain</th>
  756. </tr>
  757. <tr>
  758. <td>\ref element_target "target"</td>
  759. <td colspan="3">\ref element_target</td>
  760. </tr>
  761. <tr>
  762. <th>Attributes</th>
  763. <th>Description</th>
  764. <th>Type</th>
  765. <th>Use</th>
  766. </tr>
  767. <tr>
  768. <td>compiler</td>
  769. <td>selects the compiler the command line option string is targeted at. Choose from available list: GCC, AC5, AC6, IAR, Tasking, GHS, Cosmic, G++</td>
  770. <td>CompilerEnumType</td>
  771. <td>required</td>
  772. </tr>
  773. <tr>
  774. <td>add</td>
  775. <td>commandline string to be added to the command line of the compiler invoked for C-modules specific the selected compiler tool-chain.</td>
  776. <td>xs:string</td>
  777. <td>required</td>
  778. </tr>
  779. </table>
  780. \delim
  781. \section element_target_cxxflags /cprj/target/cxxflags
  782. These additional compiler options affect all C++ modules contained in the project description unless particular settings
  783. are 'removed' on a lower level (component, group, file).
  784. \b Example <em>cxxflags</em> element
  785. \code
  786. <cprj ...>
  787. ...
  788. <target Ddsp="NO_DSP" Dendian="Little-endian" Dfpu="NO_FPU" Dmve="NO_MVE" Dname="LPC4357" Dtz="NO_TZ" Dvendor="NXP:11" Pname="Cortex-M4">
  789. <output list="./Debug/" name="BSD_Client" obj="./Debug/" type="lib"/>
  790. <cflags add="-O1 -fno-function-sections -fno-rtti -fshort-enums -fshort-wchar -funsigned-char"/>
  791. <cxxflags add="-O1 -fno-function-sections -fno-rtti -fshort-enums -fshort-wchar -funsigned-char"/>
  792. <arflags compiler="AC5" add="--debug_symbols "/>
  793. </target>
  794. ...
  795. </cprj>
  796. \endcode
  797. <table class="cmtable" summary="Element: cxxflags">
  798. <tr>
  799. <th>Parents</th>
  800. <th colspan="3">Element Chain</th>
  801. </tr>
  802. <tr>
  803. <td>\ref element_target "target"</td>
  804. <td colspan="3">\ref element_target</td>
  805. </tr>
  806. <tr>
  807. <th>Attributes</th>
  808. <th>Description</th>
  809. <th>Type</th>
  810. <th>Use</th>
  811. </tr>
  812. <tr>
  813. <td>compiler</td>
  814. <td>selects the compiler the command line option string is targeted at. Choose from available list: GCC, AC5, AC6, IAR, Tasking, GHS, Cosmic, G++</td>
  815. <td>CompilerEnumType</td>
  816. <td>required</td>
  817. </tr>
  818. <tr>
  819. <td>add</td>
  820. <td>commandline string to be added to the command line of the compiler invoked for C++-modules specific the selected compiler tool-chain.</td>
  821. <td>xs:string</td>
  822. <td>required</td>
  823. </tr>
  824. </table>
  825. \delim
  826. \section element_target_asflags /cprj/target/asflags
  827. These additional assembler options affect all Assembler modules contained in the project description unless particular settings
  828. are 'removed' on a lower level (component, group, file).
  829. \b Example <em>asflags</em> element
  830. \code
  831. <cprj ...>
  832. ...
  833. <target Ddsp="NO_DSP" Dendian="Little-endian" Dfpu="NO_FPU" Dmve="NO_MVE" Dname="LPC4357" Dtz="NO_TZ" Dvendor="NXP:11" Pname="Cortex-M4">
  834. <output list="./Debug/" name="BSD_Client" obj="./Debug/" type="lib"/>
  835. <asflags add="--xref --split_ldm"/>
  836. <arflags compiler="AC5" add="--debug_symbols "/>
  837. </target>
  838. ...
  839. </cprj>
  840. \endcode
  841. <table class="cmtable" summary="Element: asflags">
  842. <tr>
  843. <th>Parents</th>
  844. <th colspan="3">Element Chain</th>
  845. </tr>
  846. <tr>
  847. <td>\ref element_target "target"</td>
  848. <td colspan="3">\ref element_target</td>
  849. </tr>
  850. <tr>
  851. <th>Attributes</th>
  852. <th>Description</th>
  853. <th>Type</th>
  854. <th>Use</th>
  855. </tr>
  856. <tr>
  857. <td>compiler</td>
  858. <td>selects the compiler the command line option string is targeted at. Choose from available list: GCC, AC5, AC6, IAR, Tasking, GHS, Cosmic, G++</td>
  859. <td>CompilerEnumType</td>
  860. <td>required</td>
  861. </tr>
  862. <tr>
  863. <td>add</td>
  864. <td>commandline string to be added to the command line of the assembler invoked for Assembler-modules specific the selected compiler tool-chain.</td>
  865. <td>xs:string</td>
  866. <td>required</td>
  867. </tr>
  868. </table>
  869. \delim
  870. \page element_components /cprj/components
  871. This element lists all software components that are selected within the Manage Run-Time Environment.
  872. \b Example <em>components</em> section:
  873. \code
  874. <cprj xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="CPRJ.xsd"/>
  875. ...
  876. <components>
  877. <component Cvendor="ARM" Cclass="CMSIS" Cgroup="CORE"/>
  878. <component Cvendor="ARM" Cclass="Device" Cgroup="Startup" Cvariant="C Startup">
  879. <file category="sourceC" name="Device/ARM/ARMCM0/Source/startup_ARMCM0.c" attr="config" version="2.0.0"/>
  880. <file category="sourceC" name="Device/ARM/ARMCM0/Source/system_ARMCM0.c" attr="config" version="2.0.0"/>
  881. <file category="linkerScript" name="Device/ARM/ARMCM0/Source/ARM/ARMCM0_ac6.sct" attr="config" version="1.0.0"/> <component Cclass="CMSIS" Cgroup="Core" Cvendor="ARM" Cversion="5.6.0"/>
  882. </component>
  883. </components>
  884. ...
  885. </cprj>
  886. \endcode
  887. \delim
  888. <table class="cmtable" summary="Element: components">
  889. <tr>
  890. <th>Parents</th>
  891. <th colspan="3">Element Chain</th>
  892. </tr>
  893. <tr>
  894. <td>\ref element_cprj "cprj"</td>
  895. <td colspan="3">\ref element_cprj</td>
  896. </tr>
  897. <tr>
  898. <th>Child Elements</th>
  899. <th>Description</th>
  900. <th>Type</th>
  901. <th>Occurrence</th>
  902. </tr>
  903. <tr>
  904. <td>\ref element_component "component"</td>
  905. <td>identify a selected software component and configuration files as well as commandline options specific to this component.</td>
  906. <td>ComponentType</td>
  907. <td>1..*</td>
  908. </tr>
  909. </table>
  910. \delim
  911. \section element_component /cprj/components/component
  912. Identify a software component.
  913. \b Example <em>component</em> element
  914. \code
  915. ...
  916. <components>
  917. <component Cvendor="ARM" Cclass="CMSIS" Cgroup="CORE"/>
  918. <component Cvendor="ARM" Cclass="Device" Cgroup="Startup" Cvariant="C Startup">
  919. <file category="sourceC" name="Device/ARM/ARMCM0/Source/startup_ARMCM0.c" attr="config" version="2.0.0"/>
  920. <file category="sourceC" name="Device/ARM/ARMCM0/Source/system_ARMCM0.c" attr="config" version="2.0.0"/>
  921. <file category="linkerScript" name="Device/ARM/ARMCM0/Source/ARM/ARMCM0_ac6.sct" attr="config" version="1.0.0"/> <component Cclass="CMSIS" Cgroup="Core" Cvendor="ARM" Cversion="5.6.0"/>
  922. </component>
  923. </components>
  924. ...
  925. \endcode
  926. \n
  927. <table class="cmtable" summary="Element: component">
  928. <tr>
  929. <th>Parents</th>
  930. <th colspan="3">Element Chain</th>
  931. </tr>
  932. <tr>
  933. <td>\ref element_components "components"</td>
  934. <td colspan="3">\ref element_components</td>
  935. </tr>
  936. <tr>
  937. <th>Attributes</th>
  938. <th>Description</th>
  939. <th>Type</th>
  940. <th>Use</th>
  941. </tr>
  942. <tr>
  943. <td>Cvendor</td>
  944. <td>Vendor name of the component.</td>
  945. <td>xs:string</td>
  946. <td>optional</td>
  947. </tr>
  948. <tr>
  949. <td>Cbundle</td>
  950. <td>Name of bundle to which the selected component belongs.</td>
  951. <td>xs:string</td>
  952. <td>optional</td>
  953. </tr>
  954. <tr>
  955. <td>Cclass</td>
  956. <td>Component class name.</td>
  957. <td>xs:string</td>
  958. <td>required</td>
  959. </tr>
  960. <tr>
  961. <td>Cgroup</td>
  962. <td>Component group name.</td>
  963. <td>xs:string</td>
  964. <td>required</td>
  965. </tr>
  966. <tr>
  967. <td>Csub</td>
  968. <td>Component sub group name following the taxonomy (string may be empty)</td>
  969. <td>CsubType</td>
  970. <td>optional</td>
  971. </tr>
  972. <tr>
  973. <td>Cvariant</td>
  974. <td>Name of the variant of the selected component.</td>
  975. <td>CvariantType</td>
  976. <td>optional</td>
  977. </tr>
  978. <tr>
  979. <td>Cversion</td>
  980. <td>Version of the selected component. Note, a higher version number can be entered in case
  981. the matching version is not available.</td>
  982. <td>ComponentVersionType</td>
  983. <td>optional</td>
  984. </tr>
  985. <tr>
  986. <td>Capiversion</td>
  987. <td>Implemented api version defined for the corresponding Cclass:Cgroup:Csub. Set the value only for
  988. components that have an associated \tagem{api}.</td>
  989. <td>ComponentVersionType</td>
  990. <td>optional</td>
  991. </tr>
  992. <tr>
  993. <td>instances</td>
  994. <td>Number of instances created for the component. Set the value only for
  995. components that are multi-instance capable. Defaults to \token{1} if not set.</td>
  996. <td>InstancesType</td>
  997. <td>optional</td>
  998. </tr>
  999. <tr>
  1000. <td>layer</td>
  1001. <td>Reference to a layer name as specfied by the \ref element_layers "layers section" indicating that this component belongs to the named layer.</td>
  1002. <td>xs:string</td>
  1003. <td>optional</td>
  1004. </tr>
  1005. <tr>
  1006. <th>Child Elements</th>
  1007. <th>Description</th>
  1008. <th>Type</th>
  1009. <th>Occurrence</th>
  1010. </tr>
  1011. <tr>
  1012. <td>\ref element_cflags "cflags"</td>
  1013. <td>Specify compiler flags for C-modules contained in this component</td>
  1014. <td>ToolOptionType</td>
  1015. <td>0..1</td>
  1016. </tr>
  1017. <tr>
  1018. <td>\ref element_cxxflags "cxxflags"</td>
  1019. <td>Specify compiler flags for C++-modules contained in this component</td>
  1020. <td>ToolOptionType</td>
  1021. <td>0..1</td>
  1022. </tr>
  1023. <tr>
  1024. <td>\ref element_asflags "asflags"</td>
  1025. <td>Specify assembler flags for Assembler-modules contained in this component</td>
  1026. <td>ToolOptionType</td>
  1027. <td>0..1</td>
  1028. </tr>
  1029. <tr>
  1030. <td>\ref element_component_file "file"</td>
  1031. <td>Specify configuration files from the selected component including version information. The
  1032. ID for a configuration file is the relative path in the pack it originates from.</td>
  1033. <td>ComponentFileType</td>
  1034. <td>0..*</td>
  1035. </tr>
  1036. </table>
  1037. \delim
  1038. \section element_component_file /cprj/components/component/file
  1039. Specify the configuration files for the selected component. These files must already exist
  1040. in the project folder structure (RTE/\<Cclass>[/\<Device>]/...) and contain a configuration
  1041. setup specifically adopted for the project. Providing the version number of the orignal file is mandatory.
  1042. \b Example <em>file</em> element
  1043. \code
  1044. ...
  1045. <components>
  1046. <component Cvendor="ARM" Cclass="Device" Cgroup="Startup" Cvariant="C Startup">
  1047. <file category="sourceC" name="Device/ARM/ARMCM0/Source/startup_ARMCM0.c" attr="config" version="2.0.0"/>
  1048. <file category="sourceC" name="Device/ARM/ARMCM0/Source/system_ARMCM0.c" attr="config" version="2.0.0"/>
  1049. <file category="linkerScript" name="Device/ARM/ARMCM0/Source/ARM/ARMCM0_ac6.sct" attr="config" version="1.0.0"/>
  1050. </component>
  1051. <component Cclass="CMSIS" Cgroup="Core" Cvendor="ARM" Cversion="5.6.0"/>
  1052. ...
  1053. </components>
  1054. ...
  1055. \endcode
  1056. \delim
  1057. <table class="cmtable" summary="Element: file">
  1058. <tr>
  1059. <th>Parents</th>
  1060. <th colspan="3">Element Chain</th>
  1061. </tr>
  1062. <tr>
  1063. <td>\ref element_component "component"</td>
  1064. <td colspan="3">\ref element_component</td>
  1065. </tr>
  1066. <tr>
  1067. <th>Attributes</th>
  1068. <th>Description</th>
  1069. <th>Type</th>
  1070. <th>Use</th>
  1071. </tr>
  1072. <tr>
  1073. <td>category</td>
  1074. <td>File type, for example \token{header}. Use predefined values from the table \ref FileCategoryEnum "File Category".</td>
  1075. <td>FileCategoryType</td>
  1076. <td>required</td>
  1077. </tr>
  1078. <tr>
  1079. <td>attr</td>
  1080. <td>File action attribute, for example \token{copy}. Use predefined values from the table \ref FileAttributeEnum "File Attribute".</td>
  1081. <td>\ref FileAttributeEnum "FileAttributeType"</td>
  1082. <td>optional</td>
  1083. </tr>
  1084. <tr>
  1085. <td>name</td>
  1086. <td>File path and name within pack the file originates from (configuration file ID)</td>
  1087. <td>xs:string</td>
  1088. <td>required</td>
  1089. </tr>
  1090. <tr>
  1091. <td>version</td>
  1092. <td>Version of the configuration file being present in the example.</td>
  1093. <td>\ref VersionType "VersionType"</td>
  1094. <td>required</td>
  1095. </tr>
  1096. </table>
  1097. \delim
  1098. \section element_cflags /cprj/components/component/cflags
  1099. These compiler options are either added or removed from the inherited command line and affect all C modules that belong to the
  1100. component. This flag can also be added to file groups and individual files within the description.
  1101. \b Example <em>cflags</em> element for component
  1102. \code
  1103. <cprj ...>
  1104. ...
  1105. <components>
  1106. ...
  1107. <component Cbundle="ARM Compiler" Cclass="Compiler" Cgroup="Event Recorder" Cvariant="DAP" Cvendor="Keil">
  1108. <file attr="config" category="header" name="Config/EventRecorderConf.h" version="1.1.0"/>
  1109. <cflags add="-D_DISABLE_EVR_"/>
  1110. </component>
  1111. ...
  1112. </components>
  1113. ...
  1114. </cprj>
  1115. \endcode
  1116. <table class="cmtable" summary="Element: cflags">
  1117. <tr>
  1118. <th>Parents</th>
  1119. <th colspan="3">Element Chain</th>
  1120. </tr>
  1121. <tr>
  1122. <td>\ref element_component "component"</td>
  1123. <td colspan="3">\ref element_component</td>
  1124. </tr>
  1125. <tr>
  1126. <th>Attributes</th>
  1127. <th>Description</th>
  1128. <th>Type</th>
  1129. <th>Use</th>
  1130. </tr>
  1131. <tr>
  1132. <td>compiler</td>
  1133. <td>selects the compiler the command line option string is targeted at. Choose from available list: GCC, AC5, AC6, IAR, Tasking, GHS, Cosmic, G++</td>
  1134. <td>CompilerEnumType</td>
  1135. <td>required</td>
  1136. </tr>
  1137. <tr>
  1138. <td>add</td>
  1139. <td>commandline string to be added to the inherited command line for the compiler invoked for C-modules specific to the
  1140. tool-chain selected by the 'compiler' attribute.</td>
  1141. <td>xs:string</td>
  1142. <td>required</td>
  1143. </tr>
  1144. <tr>
  1145. <td>remove</td>
  1146. <td>option tokens to be removed from the inherited command line for the compiler invoked for C-modules specific to the
  1147. tool-chain selected by the 'compiler' attribute.</td>
  1148. <td>xs:string</td>
  1149. <td>required</td>
  1150. </tr>
  1151. </table>
  1152. \delim
  1153. \section element_cxxflags /cprj/components/component/cxxflags
  1154. These compiler options are either added or removed from the inherited command line and affect all C++ modules that belong to the
  1155. component. This flag can also be added to file groups and individual files within the description.
  1156. \b Example <em>cxxflags</em> element for component
  1157. \code
  1158. <cprj ...>
  1159. ...
  1160. <components>
  1161. ...
  1162. <component Cbundle="ARM Compiler" Cclass="Compiler" Cgroup="Event Recorder" Cvariant="DAP" Cvendor="Keil">
  1163. <file attr="config" category="header" name="Config/EventRecorderConf.h" version="1.1.0"/>
  1164. <cxxflags add="-D_DISABLE_EVR_"/>
  1165. </component>
  1166. ...
  1167. </components>
  1168. ...
  1169. </cprj>
  1170. \endcode
  1171. <table class="cmtable" summary="Element: cxxflags">
  1172. <tr>
  1173. <th>Parents</th>
  1174. <th colspan="3">Element Chain</th>
  1175. </tr>
  1176. <tr>
  1177. <td>\ref element_component "component"</td>
  1178. <td colspan="3">\ref element_component</td>
  1179. </tr>
  1180. <tr>
  1181. <th>Attributes</th>
  1182. <th>Description</th>
  1183. <th>Type</th>
  1184. <th>Use</th>
  1185. </tr>
  1186. <tr>
  1187. <td>compiler</td>
  1188. <td>selects the compiler the command line option string is targeted at. Choose from available list: GCC, AC5, AC6, IAR, Tasking, GHS, Cosmic, G++</td>
  1189. <td>CompilerEnumType</td>
  1190. <td>required</td>
  1191. </tr>
  1192. <tr>
  1193. <td>add</td>
  1194. <td>commandline string to be added to the inherited command line for the compiler invoked for C++-modules specific to the
  1195. tool-chain selected by the 'compiler' attribute.</td>
  1196. <td>xs:string</td>
  1197. <td>required</td>
  1198. </tr>
  1199. <tr>
  1200. <td>remove</td>
  1201. <td>option tokens to be removed from the inherited command line for the compiler invoked for C++-modules specific to the
  1202. tool-chain selected by the 'compiler' attribute.</td>
  1203. <td>xs:string</td>
  1204. <td>required</td>
  1205. </tr>
  1206. </table>
  1207. \delim
  1208. \section element_asflags /cprj/components/component/asflags
  1209. These assembler options are either added or removed from the inherited command line and affect all Assembler modules that belong to the
  1210. component. This flag can also be added to file groups and individual files within the description.
  1211. \b Example <em>asflags</em> element for component
  1212. \code
  1213. <cprj ...>
  1214. ...
  1215. <components>
  1216. ...
  1217. <component Cbundle="ARM Compiler" Cclass="Compiler" Cgroup="Event Recorder" Cvariant="DAP" Cvendor="Keil">
  1218. <file attr="config" category="header" name="Config/EventRecorderConf.h" version="1.1.0"/>
  1219. <asflags remove="-xref"/>
  1220. </component>
  1221. ...
  1222. </components>
  1223. ...
  1224. </cprj>
  1225. \endcode
  1226. <table class="cmtable" summary="Element: asflags">
  1227. <tr>
  1228. <th>Parents</th>
  1229. <th colspan="3">Element Chain</th>
  1230. </tr>
  1231. <tr>
  1232. <td>\ref element_component "component"</td>
  1233. <td colspan="3">\ref element_component</td>
  1234. </tr>
  1235. <tr>
  1236. <th>Attributes</th>
  1237. <th>Description</th>
  1238. <th>Type</th>
  1239. <th>Use</th>
  1240. </tr>
  1241. <tr>
  1242. <td>compiler</td>
  1243. <td>selects the compiler the command line option string is targeted at. Choose from available list: GCC, AC5, AC6, IAR, Tasking, GHS, Cosmic, G++</td>
  1244. <td>CompilerEnumType</td>
  1245. <td>required</td>
  1246. </tr>
  1247. <tr>
  1248. <td>add</td>
  1249. <td>commandline string to be added to the inherited command line for the compiler invoked for C++-modules specific to the
  1250. tool-chain selected by the 'compiler' attribute.</td>
  1251. <td>xs:string</td>
  1252. <td>required</td>
  1253. </tr>
  1254. <tr>
  1255. <td>remove</td>
  1256. <td>option tokens to be removed from the inherited command line for the compiler invoked for C++-modules specific to the
  1257. tool-chain selected by the 'compiler' attribute.</td>
  1258. <td>xs:string</td>
  1259. <td>required</td>
  1260. </tr>
  1261. </table>
  1262. \delim
  1263. \page element_files /cprj/files
  1264. The files section specifies files to be included into the project build that are not managed through
  1265. software components. Files can be associated with a named group. Grouping is mainly for better visualization in a graphical tool, however
  1266. commandline flags can also be applied on a group level.
  1267. \b Example <em>files</em> section:
  1268. \code
  1269. <cprj xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="CPRJ.xsd"/>
  1270. ...
  1271. <components>
  1272. ...
  1273. </components>
  1274. <files>
  1275. <group name="Source Files">
  1276. <file category="sourceC" name="./Blinky.c"/>
  1277. <file category="sourceC" name="./Thread_LED.c"/>
  1278. </group>
  1279. <group name="Documentation">
  1280. <file category="doc" name="./Abstract.txt"/>
  1281. </group>
  1282. </files>
  1283. </cprj>
  1284. \endcode
  1285. \n
  1286. <table class="cmtable" summary="Element: files">
  1287. <tr>
  1288. <th>Parents</th>
  1289. <th colspan="3">Element Chain</th>
  1290. </tr>
  1291. <tr>
  1292. <td>\ref element_cprj "cprj"</td>
  1293. <td colspan="3">\ref element_cprj</td>
  1294. </tr>
  1295. <tr>
  1296. <th>Child Elements</th>
  1297. <th>Description</th>
  1298. <th>Type</th>
  1299. <th>Occurrence</th>
  1300. </tr>
  1301. <tr>
  1302. <td>\ref element_project_file "file"</td>
  1303. <td>Specify a file.</td>
  1304. <td>FileType</td>
  1305. <td>0..*</td>
  1306. </tr>
  1307. <tr>
  1308. <td>\ref element_group "group"</td>
  1309. <td>Specify a group name and list member files in subelements.</td>
  1310. <td>GroupType</td>
  1311. <td>0..*</td>
  1312. </tr>
  1313. </table>
  1314. \delim
  1315. \section element_group /cprj/files/.../group
  1316. The description format allows the nesting of groups. It is up to the tool's implementation how grouping
  1317. is represented in the user interface. The grouping of files only impacts the build, if the assignment of
  1318. command line options on a group level is supported.
  1319. \b Example <em>files</em> section:
  1320. \code
  1321. <cprj xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="CPRJ.xsd"/>
  1322. ...
  1323. <files>
  1324. <group name="Source">
  1325. <group name="C">
  1326. <cflags add="-D_MY_DEFINE"/>
  1327. <file category="sourceC" name="./Blinky.c"/>
  1328. <file category="sourceC" name="./Thread_LED.c"/>
  1329. </group>
  1330. <group name="ASM">
  1331. <file category="sourceAsm" name="./startup_add.s"/>
  1332. </group>
  1333. </group>
  1334. <group name="Documentation">
  1335. <file category="doc" name="./Abstract.txt"/>
  1336. </group>
  1337. </files>
  1338. </cprj>
  1339. \endcode
  1340. \n
  1341. <table class="cmtable" summary="Element: group">
  1342. <tr>
  1343. <th>Parents</th>
  1344. <th colspan="3">Element Chain</th>
  1345. </tr>
  1346. <tr>
  1347. <td>\ref element_files "files"</td>
  1348. <td colspan="3">\ref element_files</td>
  1349. </tr>
  1350. <tr>
  1351. <th>Attributes</th>
  1352. <th>Description</th>
  1353. <th>Type</th>
  1354. <th>Use</th>
  1355. </tr>
  1356. <tr>
  1357. <td>name</td>
  1358. <td>name of the group of files</td>
  1359. <td>\ref type_restrictedStringType "RestrictedString"</td>
  1360. <td>required</td>
  1361. </tr>
  1362. <tr>
  1363. <th>Child Elements</th>
  1364. <th>Description</th>
  1365. <th>Type</th>
  1366. <th>Occurrence</th>
  1367. </tr>
  1368. <tr>
  1369. <td>\ref element_project_file "file"</td>
  1370. <td>Specify a file.</td>
  1371. <td>FileType</td>
  1372. <td>0..*</td>
  1373. </tr>
  1374. <tr>
  1375. <td>\ref element_group "group"</td>
  1376. <td>Specify a group (nesting).</td>
  1377. <td>GroupType</td>
  1378. <td>0..*</td>
  1379. </tr>
  1380. </table>
  1381. \delim
  1382. \section element_group_cflags /cprj/files/group/.../cflags
  1383. These compiler options are either added or removed from the inherited command line and affect all C-modules that belong to the
  1384. file group. This flag can also be added to components and individual files within the description.
  1385. See: \ref element_cflags
  1386. \delim
  1387. \section element_group_cxxflags /cprj/files/group/.../cxxflags
  1388. These compiler options are either added or removed from the inherited command line and affect all C++-modules that belong to the
  1389. file group. This flag can also be added to components and individual files within the description.
  1390. See: \ref element_cxxflags
  1391. \delim
  1392. \section element_group_asflags /cprj/files/group/.../asflags
  1393. These assembler options are either added or removed from the inherited command line and affect all Assembler modules that belong to the
  1394. file group. This flag can also be added to components and individual files within the description.
  1395. See: \ref element_asflags
  1396. \delim
  1397. \section element_project_file /cprj/files/.../file
  1398. Specify files that are not included through software components.
  1399. <table class="cmtable" summary="Element: file">
  1400. <tr>
  1401. <th>Parents</th>
  1402. <th colspan="3">Element Chain</th>
  1403. </tr>
  1404. <tr>
  1405. <td>\ref element_files "files"</td>
  1406. <td colspan="3">\ref element_files</td>
  1407. </tr>
  1408. <tr>
  1409. <td>\ref element_group "group"</td>
  1410. <td colspan="3">\ref element_group</td>
  1411. </tr>
  1412. <tr>
  1413. <th>Attributes</th>
  1414. <th>Description</th>
  1415. <th>Type</th>
  1416. <th>Use</th>
  1417. </tr>
  1418. <tr>
  1419. <td>name</td>
  1420. <td>Path and name of the file, relative to location of the project file.</td>
  1421. <td>xs:string</td>
  1422. <td>required</td>
  1423. </tr>
  1424. <tr>
  1425. <td>category</td>
  1426. <td>Type of file, for example, whether the file is a C or assembler file.
  1427. Use the predefined values from the table \ref FileCategoryEnum "File Categories".</td>
  1428. <td>FileCategoryType</td>
  1429. <td>required</td>
  1430. </tr>
  1431. <tr>
  1432. <td>src</td>
  1433. <td>Folder specifying the source code location for a library if included in a subdirectory.</td>
  1434. <td>xs:string</td>
  1435. <td>optional</td>
  1436. </tr>
  1437. </table>
  1438. \delim
  1439. \section element_file_cflags /cprj/files/.../file/cflags
  1440. These compiler options are either added or removed from the inherited command line and affect the C-modules that is referenced by the
  1441. file. This flag can also be added to components and file groups within the description. Note: if the file category attribute is
  1442. anything but 'sourceC' or 'source' and the file's extension is *.c, the element will be ignored.
  1443. See: \ref element_cflags
  1444. \delim
  1445. \section element_file_cxxflags /cprj/files/.../file/cxxflags
  1446. These compiler options are either added or removed from the inherited command line and affect the C++-modules that is referenced by the
  1447. file. This flag can also be added to components and file groups within the description. Note: if the file category attribute is
  1448. anything but 'sourceCpp' or 'source' and the file extension is *.cpp, the flag will be ignored.
  1449. See: \ref element_cxxflags
  1450. \delim
  1451. \section element_file_asflags /cprj/files/.../file/asflags
  1452. These assembler options are either added or removed from the inherited command line and affect the Assembler module that is referenced by the
  1453. file. This flag can also be added to components and file groups within the description. Note: if the file category attribute is
  1454. anything but 'sourceAsm' or 'source' and the file extension is *.s, the flag will be ignored.
  1455. See: \ref element_asflags
  1456. \delim
  1457. \page element_layers /cprj/layers
  1458. <table class="cmtable" summary="Element: layers">
  1459. <tr>
  1460. <th>Parents</th>
  1461. <th colspan="3">Element Chain</th>
  1462. </tr>
  1463. <tr>
  1464. <td>\ref element_cprj "cprj"</td>
  1465. <td colspan="3">\ref element_cprj</td>
  1466. </tr>
  1467. <tr>
  1468. <th>Child Elements</th>
  1469. <th>Description</th>
  1470. <th>Type</th>
  1471. <th>Occurrence</th>
  1472. </tr>
  1473. <tr>
  1474. <td>\ref element_layer "layer"</td>
  1475. <td>Defines a layer name and additional information.</td>
  1476. <td>LayerType</td>
  1477. <td>0..*</td>
  1478. </tr>
  1479. </table>
  1480. \delim
  1481. \section element_layer /cprj/layers/layer
  1482. \b Example <em>layer</em> element
  1483. \code
  1484. ...
  1485. <layers>
  1486. <layer name="IO" hasTarget="1">
  1487. <description>Basic I/O layer for MCB4300 for Ethernet applications</description>
  1488. <category>Board IO, Wired Network</category>
  1489. <keywords>MCB4300, Ethernet, LPC4300"</keywords>
  1490. <license>BSD-3-Clause</license>
  1491. </layer>
  1492. ...
  1493. </layers>
  1494. ...
  1495. \endcode
  1496. \delim
  1497. <table class="cmtable" summary="Element: layer">
  1498. <tr>
  1499. <th>Parents</th>
  1500. <th colspan="3">Element Chain</th>
  1501. </tr>
  1502. <tr>
  1503. <td>\ref element_layers "layers"</td>
  1504. <td colspan="3">\ref element_layers</td>
  1505. </tr>
  1506. <tr>
  1507. <th>Attributes</th>
  1508. <th>Description</th>
  1509. <th>Type</th>
  1510. <th>Use</th>
  1511. </tr>
  1512. <tr>
  1513. <td>name</td>
  1514. <td>name of the layer</td>
  1515. <td>\ref type_restrictedStringType "RestrictedString"</td>
  1516. <td>required</td>
  1517. </tr>
  1518. <tr>
  1519. <td>hasTarget</td>
  1520. <td>If 'true' then the target element has to be used. When constructing a project form multiple layers only one can have this flag set. Default is false</td>
  1521. <td>xs:boolean</td>
  1522. <td>required (if not default)</td>
  1523. </tr>
  1524. <tr>
  1525. <th>Child Elements</th>
  1526. <th>Description</th>
  1527. <th>Type</th>
  1528. <th>Occurrence</th>
  1529. </tr>
  1530. <tr>
  1531. <td>description</td>
  1532. <td>Brief description of the layer.</td>
  1533. <td>xs:string</td>
  1534. <td>0..*</td>
  1535. </tr>
  1536. <tr>
  1537. <td>keywords</td>
  1538. <td>Comma seperated list of keywords of this layer used by search tools.</td>
  1539. <td>xs:string</td>
  1540. <td>0..*</td>
  1541. </tr>
  1542. <tr>
  1543. <td>category</td>
  1544. <td>Comma separated list of predefined categories for this layer used by search tools. Predefined list TBD.</td>
  1545. <td>xs:string</td>
  1546. <td>0..*</td>
  1547. </tr>
  1548. <tr>
  1549. <td>license</td>
  1550. <td>License ruling for using files local to the layer using spdx license names from https://spdx.org/licenses/. Note: components have their own licenses.</td>
  1551. <td>xs:string</td>
  1552. <td>0..*</td>
  1553. </tr>
  1554. </table>
  1555. \delim
  1556. \page element_packages /cprj/packages
  1557. \b Example packages section:
  1558. \code
  1559. <package xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="PACK.xsd"/>
  1560. ...
  1561. <packages>
  1562. <package name="STM32F4xx_DFP" vendor="Keil" version="2.8.0:2.8.0"/>
  1563. </packages>
  1564. ...
  1565. </package>
  1566. \endcode
  1567. \b /package
  1568. <table class="cmtable" summary="Element: package">
  1569. <tr>
  1570. <th>Parents</th>
  1571. <th colspan="3">Element Chain</th>
  1572. </tr>
  1573. <tr>
  1574. <td>\ref element_packages "packages"</td>
  1575. <td colspan="3">\ref element_packages</td>
  1576. </tr>
  1577. <tr>
  1578. <th>Attributes</th>
  1579. <th>Description</th>
  1580. <th>Type</th>
  1581. <th>Use</th>
  1582. </tr>
  1583. <tr>
  1584. <td>vendor</td>
  1585. <td>specify vendor of the package (e.g. "ARM")</td>
  1586. <td>RestrictedString</td>
  1587. <td>required</td>
  1588. </tr>
  1589. <tr>
  1590. <td>name</td>
  1591. <td>Name of the pack</td>
  1592. <td>RestrictedString</td>
  1593. <td>required</td>
  1594. </tr>
  1595. <tr>
  1596. <td>version</td>
  1597. <td>\ref VersionType "Version" of the required software pack which can be:
  1598. - Minimum version (higher versions are accepted).
  1599. - Version range specified with <em>min_version</em><b>:</b><em>max_version</em>. <em>min_version</em> must be lower or
  1600. equal than <em>max_version</em>. If <em>min_version</em> and <em>max_version</em> are equal, the version must match.
  1601. - If no version is specified, the latest available version is assumed.
  1602. </td>
  1603. <td>\ref VersionType</td>
  1604. <td>optional</td>
  1605. </tr>
  1606. </table>
  1607. \page element_compilers /cprj/compilers
  1608. This element lists the compilers that can be used to translate the project
  1609. \b Example compilers section:
  1610. \verbatim
  1611. ...
  1612. <compilers>
  1613. <compiler name="ARMCC" version="5.0.0:5.99.0"/>
  1614. </compilers>
  1615. ...
  1616. \endverbatim
  1617. \section element_compiler /cprj/compilers/compiler
  1618. \b /compiler
  1619. <table class="cmtable" summary="Element: compiler">
  1620. <tr>
  1621. <th>Parents</th>
  1622. <th colspan="3">Element Chain</th>
  1623. </tr>
  1624. <tr>
  1625. <td>\ref element_compilers "compilers"</td>
  1626. <td colspan="3">\ref element_compilers</td>
  1627. </tr>
  1628. <tr>
  1629. <th>Attributes</th>
  1630. <th>Description</th>
  1631. <th>Type</th>
  1632. <th>Use</th>
  1633. </tr>
  1634. <tr>
  1635. <td>name</td>
  1636. <td>Name of the compiler \ref CompilerEnumType "compiler" (i.e. "ARMCC", "IAR")</td>
  1637. <td>\ref CompilerEnumType</td>
  1638. <td>required</td>
  1639. </tr>
  1640. <tr>
  1641. <td>version</td>
  1642. <td>\ref VersionType "Version" of the required compiler which can be:
  1643. - Minimum version (higher versions are accepted).
  1644. - Version range specified with <em>min_version</em><b>:</b><em>max_version</em>. <em>min_version</em> must be lower or
  1645. equal than <em>max_version</em>. If <em>min_version</em> and <em>max_version</em> are equal, the version must match.
  1646. <br>
  1647. </td>
  1648. <td>\ref VersionType</td>
  1649. <td>required</td>
  1650. </tr>
  1651. </table>
  1652. \page cprj_types cprj specific types
  1653. Collection of types locally defined for the CMSIS Project format.
  1654. \section type_restrictedStringType restrictedStringType
  1655. Restricted string type excludes the use of special characters including spaces in order to allow tools to use the string in folder and/or file names.
  1656. \code
  1657. <xs:pattern value= "[\-_A-Za-z0-9]+" />
  1658. \endcode
  1659. \delim
  1660. \section type_toolOptionType toolOptionType
  1661. <table class="cmtable" summary="Type: ToolOptionType">
  1662. <tr>
  1663. <th>Parents</th>
  1664. <th colspan="3">Element Chain</th>
  1665. </tr>
  1666. <tr>
  1667. <td>multiple</td>
  1668. <td colspan="3">\ref element_asflags "asflags", \ref element_cflags "cflags", \ref element_cxxflags "cxxflags"</td>
  1669. </tr>
  1670. <tr>
  1671. <th>Attributes</th>
  1672. <th>Description</th>
  1673. <th>Type</th>
  1674. <th>Use</th>
  1675. </tr>
  1676. <tr>
  1677. <td>compiler</td>
  1678. <td>selects the compiler the contained information is targeted at. Choose from available list: GCC, AC5, AC6, IAR, Tasking, GHS, Cosmic, G++</td>
  1679. <td>CompilerEnumType</td>
  1680. <td>required</td>
  1681. </tr>
  1682. <tr>
  1683. <td>add</td>
  1684. <td>commandline options to be added to the command line of the respective tool.</td>
  1685. <td>xs:string</td>
  1686. <td>optional</td>
  1687. </tr>
  1688. <tr>
  1689. <td>remove</td>
  1690. <td>commandline options to be removed from the command line of the respective tool (not supported on target level).</td>
  1691. <td>xs:string</td>
  1692. <td>optional</td>
  1693. </tr>
  1694. </table>
  1695. \delim
  1696. \anchor DfpuEnum <b>Table: Device FPU</b>
  1697. The table lists values that indicate whether a CPU has an Floating Point Unit (FPU).
  1698. The tokens can be used in the elements:
  1699. - \ref element_target
  1700. <table class="cmtable" summary="Enumeration: DfpuEnum">
  1701. <tr>
  1702. <th>Dfpu=</th>
  1703. <th>Description</th>
  1704. </tr>
  1705. <tr>
  1706. <td class="XML-Token">NO_FPU</td>
  1707. <td>Hardware Floating Point Unit not present</td>
  1708. </tr>
  1709. <tr>
  1710. <td class="XML-Token">FPU</td>
  1711. <td>Hardware Floating Point Unit present</td>
  1712. </tr>
  1713. <tr>
  1714. <td class="XML-Token">SP_FPU</td>
  1715. <td>Single Precision Hardware Floating Point Unit present</td>
  1716. </tr>
  1717. <tr>
  1718. <td class="XML-Token">DP_FPU</td>
  1719. <td>Double Precision Hardware Floating Point Unit present</td>
  1720. </tr>
  1721. </table>
  1722. \anchor DmpuEnum <b>Table: Device MPU</b>
  1723. The table shows predefined values that identify whether a CPU has an Memory Protection Unit (MPU).
  1724. The values can be used in the elements:
  1725. - \ref element_target
  1726. <table class="cmtable" summary="Enumeration: DmpuEnum">
  1727. <tr>
  1728. <th>Dmpu=</th>
  1729. <th>Description</th>
  1730. </tr>
  1731. <tr>
  1732. <td class="XML-Token">MPU</td>
  1733. <td>Memory Protection Unit is present</td>
  1734. </tr>
  1735. <tr>
  1736. <td class="XML-Token">NO_MPU</td>
  1737. <td>No Memory Protection Unit is present</td>
  1738. </tr>
  1739. </table>
  1740. \anchor DendianEnum <b>Table: Endianness</b>
  1741. The table lists values representing the endianness of a device.
  1742. The values can be used in the elements:
  1743. - \ref element_target
  1744. <table class="cmtable" summary="Enumeration: DendianEnum">
  1745. <tr>
  1746. <th>Dendian=</th>
  1747. <th>Description</th>
  1748. </tr>
  1749. <tr>
  1750. <td class="XML-Token">Little-endian</td>
  1751. <td>The least significant byte of a multi-byte access is located at the specified address.</td>
  1752. </tr>
  1753. <tr>
  1754. <td class="XML-Token">Big-endian</td>
  1755. <td>The most significant byte of a multi-byte access is located at the specified address.</td>
  1756. </tr>
  1757. <tr>
  1758. <td class="XML-Token">Configurable</td>
  1759. <td>The byte ordering of multi-byte accesses is configurable.</td>
  1760. </tr>
  1761. </table>
  1762. <p>&nbsp;</p>
  1763. <hr>
  1764. \anchor DsecureEnum <b>Table: Security Model</b>
  1765. The table lists values that indicate whether an application is running in secure or non-scure mode, or whether trust-zone got disabled.
  1766. The tokens can be used in the elements:
  1767. - \ref element_target
  1768. <table class="cmtable" summary="Enumeration: DsecureEnum">
  1769. <tr>
  1770. <th>Dsecure=</th>
  1771. <th>Description</th>
  1772. </tr>
  1773. <tr>
  1774. <td class="XML-Token">TZ-disabled</td>
  1775. <td>The application/library built is executed by a processor which has TrustZone disabled.</td>
  1776. </tr>
  1777. <tr>
  1778. <td class="XML-Token">Secure</td>
  1779. <td>The application/library built is executed in 'secure mode'</td>
  1780. </tr>
  1781. <tr>
  1782. <td class="XML-Token">Non-Secure</td>
  1783. <td>The application/library built is executed in 'non-secure mode'</td>
  1784. </tr>
  1785. </table>
  1786. <p>&nbsp;</p>
  1787. <hr>
  1788. \anchor DmveEnum <b>Table: Cortex-M Vector Extensions</b>
  1789. The table lists predefined values that selects which instruction set from the Cortex-M Vector Extensions (MVE) are used during code generation.
  1790. The tokens can be used in the elements:
  1791. - \ref element_target
  1792. <table class="cmtable" summary="Enumeration: DmveEnum">
  1793. <tr>
  1794. <th>Dmve=</th>
  1795. <th>Description</th>
  1796. </tr>
  1797. <tr>
  1798. <td class="XML-Token">NO_MVE</td>
  1799. <td>The application/library built is not using MVE instructions.</td>
  1800. </tr>
  1801. <tr>
  1802. <td class="XML-Token">MVE</td>
  1803. <td>The application/library built is using MVE integer instructions.</td>
  1804. </tr>
  1805. <tr>
  1806. <td class="XML-Token">FP_MVE</td>
  1807. <td>The application/library built is using MVE integer and floating point instructions.</td>
  1808. </tr>
  1809. </table>
  1810. <p>&nbsp;</p>
  1811. <hr>
  1812. \anchor FileCategoryEnum <b>Table: File Categories</b>
  1813. File category types define the use of component files within the application. Typically, these files are added to
  1814. the project and processed by the build tools.
  1815. File categories are used in the following elements:
  1816. - \ref element_component_file
  1817. The table lists the predefined values for a file category.
  1818. <table class="cmtable" summary="Type: FileCategoryEnum">
  1819. <tr>
  1820. <th>category=</th>
  1821. <th>Description</th>
  1822. </tr>
  1823. <tr>
  1824. <td class="XML-Token">doc</td>
  1825. <td>Documentation</td>
  1826. </tr>
  1827. <tr>
  1828. <td class="XML-Token">header</td>
  1829. <td>Header file used in the component. Sets an include file path and adds the file name attribute to the list of files to be added
  1830. to a module using the <b>\#include</b> statement. Note: specify only those files as header files that form part of the API of the component, required to use the component</td>
  1831. </tr>
  1832. <tr>
  1833. <td class="XML-Token">include</td>
  1834. <td>Sets an include file path. Note: ensure that the name attribute specifies a directory and ends with a '/'.</td>
  1835. </tr>
  1836. <tr>
  1837. <td class="XML-Token">library</td>
  1838. <td>Library file</td>
  1839. </tr>
  1840. <tr>
  1841. <td class="XML-Token">object</td>
  1842. <td>Object file that can be added to the application</td>
  1843. </tr>
  1844. <tr>
  1845. <td class="XML-Token">source</td>
  1846. <td>Startup-, system-, and other C/C++, assembler, etc. source files</td>
  1847. </tr>
  1848. <tr>
  1849. <td class="XML-Token">sourceC</td>
  1850. <td>C source file</td>
  1851. </tr>
  1852. <tr>
  1853. <td class="XML-Token">sourceCpp</td>
  1854. <td>C++ source file</td>
  1855. </tr>
  1856. <tr>
  1857. <td class="XML-Token">sourceAsm</td>
  1858. <td>Assembly source file</td>
  1859. </tr>
  1860. <tr>
  1861. <td class="XML-Token">linkerScript</td>
  1862. <td>linker script file that can be selected by tool-chains</td>
  1863. </tr>
  1864. <tr>
  1865. <td class="XML-Token">utility</td>
  1866. <td>a command line tool that can be configured for pre- or post-processing during the build process</td>
  1867. </tr>
  1868. <tr>
  1869. <td class="XML-Token">image</td>
  1870. <td>Files of image type are marked for special processing into a File System Image embedded into the application.
  1871. This category requires the <em>attr</em> being set to <em>template</em><!--- or <em>interface</em> --->.
  1872. </td>
  1873. </tr>
  1874. <tr>
  1875. <td class="XML-Token">preIncludeGlobal</td>
  1876. <td>The specified file is added as a pre-include file to the compiler command line for all modules of the whole <b>project</b> (globally).</td>
  1877. </tr>
  1878. <tr>
  1879. <td class="XML-Token">preIncludeLocal</td>
  1880. <td>The specified file is added as a pre-include file to the compiler command line for all modules of the <b>component</b> (locally).</td>
  1881. </tr>
  1882. <tr>
  1883. <td class="XML-Token">other</td>
  1884. <td>Other file types not covered in the list above</td>
  1885. </tr>
  1886. </table>
  1887. <p>&nbsp;</p>
  1888. <hr>
  1889. \anchor CompilerEnumType <b>Table: Compiler Types</b>
  1890. Represents a C/C++ compiler toolchain. The tokens can be used in the elements:
  1891. - \ref element_compiler
  1892. <table class="cmtable" summary="Enumeration: CompilerEnumType">
  1893. <tr>
  1894. <th>Tcompiler=</th>
  1895. <th>Description</th>
  1896. </tr>
  1897. <tr>
  1898. <td class="XML-Token">GCC</td>
  1899. <td>GNU Tools for Arm Embedded Processors.
  1900. Refer to <a href="https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm" target="_blank">Arm GCC</a>.</td>
  1901. </tr>
  1902. <tr>
  1903. <td class="XML-Token">G++</td>
  1904. <td>Code Sourcery GCC compiler for C and C++ (is now Mentor Graphics CodeBench).</td>
  1905. </tr>
  1906. <tr>
  1907. <td class="XML-Token">AC5</td>
  1908. <td>Arm Compiler for C and C++ Major Version 5.
  1909. Refer to <a href="https://developer.arm.com/tools-and-software/embedded/arm-compiler/documentation/version-5" target="_blank">
  1910. Arm Compiler</a>. Due to incompatible command line syntax version 5 and 6 are listed as separate compilers.</td>
  1911. </tr>
  1912. <tr>
  1913. <td class="XML-Token">AC6</td>
  1914. <td>Arm Compiler for C and C++ Major Version 6.
  1915. Refer to <a href="https://developer.arm.com/tools-and-software/embedded/arm-compiler/documentation" target="_blank">
  1916. Arm Compiler</a>. Note: Due to incompatible command line syntax version 5 and 6 are listed as separate compilers.</td>
  1917. </tr>
  1918. <tr>
  1919. <td class="XML-Token">IAR</td>
  1920. <td>IAR compiler for C and C++.</td>
  1921. </tr>
  1922. <tr>
  1923. <td class="XML-Token">Tasking</td>
  1924. <td>TASKING compiler for C and C++.</td>
  1925. </tr>
  1926. <tr>
  1927. <td class="XML-Token">GHS</td>
  1928. <td>Green Hills Software compiler for C, C++, and EC++.</td>
  1929. </tr>
  1930. </table>
  1931. <p>&nbsp;</p>
  1932. <hr>
  1933. \anchor FileAttributeEnum <b>Table: File Attributes</b>
  1934. The file attribute defines the special handling in the project when being used as configuration, template, or interface file.
  1935. The table lists the values available as a file attribute.
  1936. <table class="cmtable" summary="Type: FileAttributeEnum">
  1937. <tr>
  1938. <th>attr=</th>
  1939. <th>Description</th>
  1940. </tr>
  1941. <tr>
  1942. <td class="XML-Token">config</td>
  1943. <td>The file is a configuration file of the component. It is expected that only configuration options are modified.
  1944. The file is managed as part of the component, as a project-specific file typically copied into the component section of the project.s</td>
  1945. </tr>
  1946. <tr>
  1947. <td class="XML-Token">template</td>
  1948. <td>The file is used as a source code template file. It is expected to be edited and extended by the software developer.
  1949. The file can be copied into a user section of the project.</td>
  1950. </tr>
  1951. </table>
  1952. <p>&nbsp;</p>
  1953. <hr>
  1954. \anchor VersionType <b>Version Type</b>
  1955. Version specification identical to the CMSIS-Pack specification.
  1956. Version types are used in:
  1957. - \ref element_component
  1958. - \ref element_packages
  1959. - \ref element_compiler
  1960. <p>&nbsp;</p>
  1961. <hr>
  1962. \page projectDescriptionSchema Project Description Schema
  1963. \verbinclude "CPRJ.xsd"
  1964. */
  1965. /* end of file cprj_schema.txt */