From 9f95ff5b6ba01db09552b84a0ab79607060a2666 Mon Sep 17 00:00:00 2001 From: Ali Labbene Date: Wed, 11 Dec 2019 08:59:21 +0100 Subject: Official ARM version: v5.4.0 Add CMSIS V5.4.0, please refer to index.html available under \docs folder. Note: content of \CMSIS\Core\Include has been copied under \Include to keep the same structure used in existing projects, and thus avoid projects mass update Note: the following components have been removed from ARM original delivery (as not used in ST packages) - CMSIS_EW2018.pdf - .gitattributes - .gitignore - \Device - \CMSIS - \CoreValidation - \DAP - \Documentation - \DoxyGen - \Driver - \Pack - \RTOS\CMSIS_RTOS_Tutorial.pdf - \RTOS\RTX - \RTOS\Template - \RTOS2\RTX - \Utilities - All ARM/GCC projects files are deleted from \DSP, \RTOS and \RTOS2 Change-Id: Ia026c3f0f0d016627a4fb5a9032852c33d24b4d3 --- docs/Pack/html/BSPBundleDisplay.png | Bin 0 -> 27165 bytes docs/Pack/html/BasicDFPDisplay.png | Bin 0 -> 20924 bytes docs/Pack/html/BoardsSectionMCB1500.png | Bin 0 -> 88016 bytes docs/Pack/html/CMSIS_Logo_Final.png | Bin 0 -> 12402 bytes docs/Pack/html/CodeVerify.png | Bin 0 -> 18957 bytes docs/Pack/html/ComponentDisplay.png | Bin 0 -> 140038 bytes docs/Pack/html/Component_Instances.png | Bin 0 -> 304610 bytes docs/Pack/html/ConditionsDisplay.png | Bin 0 -> 18273 bytes docs/Pack/html/DFPFlow.png | Bin 0 -> 63874 bytes docs/Pack/html/DebugConnect.png | Bin 0 -> 104597 bytes docs/Pack/html/DebugDisconnect.png | Bin 0 -> 41800 bytes docs/Pack/html/DevBoardDisplay.png | Bin 0 -> 25592 bytes docs/Pack/html/DeviceDatabase2.png | Bin 0 -> 45952 bytes docs/Pack/html/ExampleDisplay.png | Bin 0 -> 23165 bytes docs/Pack/html/FPADisplay.png | Bin 0 -> 16485 bytes docs/Pack/html/FPATargetOptions.png | Bin 0 -> 19281 bytes docs/Pack/html/FlashErase.png | Bin 0 -> 16092 bytes docs/Pack/html/FlashProgram.png | Bin 0 -> 15076 bytes docs/Pack/html/FlashVerify.png | Bin 0 -> 27859 bytes docs/Pack/html/LocalInstallation.png | Bin 0 -> 25918 bytes docs/Pack/html/MVCM3SpecTable.png | Bin 0 -> 38408 bytes docs/Pack/html/PDSC_Example_bottom.png | Bin 0 -> 417074 bytes docs/Pack/html/PDSC_Example_top.png | Bin 0 -> 244045 bytes docs/Pack/html/PackCreateSteps.png | Bin 0 -> 57612 bytes docs/Pack/html/RTX_Conf_CM_Wizard_View.png | Bin 0 -> 25399 bytes docs/Pack/html/Reset.png | Bin 0 -> 63109 bytes docs/Pack/html/SPVariants_small.png | Bin 0 -> 42974 bytes docs/Pack/html/SVDFlow.png | Bin 0 -> 32030 bytes docs/Pack/html/SVDIncluded.png | Bin 0 -> 25718 bytes docs/Pack/html/StartupSystemFilesAdded.png | Bin 0 -> 6653 bytes docs/Pack/html/SystemStartupFiles.png | Bin 0 -> 40891 bytes docs/Pack/html/UserCodeTemplatesDisplay.png | Bin 0 -> 38332 bytes docs/Pack/html/VariantDisplay.png | Bin 0 -> 30798 bytes docs/Pack/html/WebInstallation.png | Bin 0 -> 55219 bytes docs/Pack/html/algorithmFunc.html | 438 +++++ docs/Pack/html/bc_s.png | Bin 0 -> 676 bytes docs/Pack/html/bdwn.png | Bin 0 -> 147 bytes docs/Pack/html/closed.png | Bin 0 -> 132 bytes docs/Pack/html/cmsis.css | 1282 +++++++++++++++ docs/Pack/html/component_files.png | Bin 0 -> 86770 bytes docs/Pack/html/configWizard.html | 471 ++++++ docs/Pack/html/coresight_setup.html | 132 ++ docs/Pack/html/coresight_setup.js | 36 + docs/Pack/html/cp_Editors.html | 134 ++ docs/Pack/html/cp_Packs.html | 236 +++ docs/Pack/html/cp_SWComponents.html | 538 ++++++ docs/Pack/html/cp_ZIPTool.html | 130 ++ docs/Pack/html/cpdsc_pg.html | 753 +++++++++ docs/Pack/html/createPackBoard.html | 256 +++ docs/Pack/html/createPackPublish.html | 192 +++ docs/Pack/html/createPackUtil.html | 134 ++ docs/Pack/html/createPackUtil.js | 8 + docs/Pack/html/createPack_DFP.html | 536 ++++++ docs/Pack/html/debug_description.html | 1625 ++++++++++++++++++ docs/Pack/html/doxygen.css | 1366 ++++++++++++++++ docs/Pack/html/doxygen.png | Bin 0 -> 3779 bytes docs/Pack/html/dynsections.js | 97 ++ docs/Pack/html/element_keywords.html | 152 ++ docs/Pack/html/element_releases.html | 199 +++ docs/Pack/html/element_repository.html | 159 ++ docs/Pack/html/element_requirements_pg.html | 262 +++ docs/Pack/html/element_taxonomy.html | 268 +++ docs/Pack/html/flashAlgorithm.html | 195 +++ docs/Pack/html/flashAlgorithm.js | 14 + docs/Pack/html/ftv2blank.png | Bin 0 -> 86 bytes docs/Pack/html/ftv2cl.png | Bin 0 -> 453 bytes docs/Pack/html/ftv2doc.png | Bin 0 -> 746 bytes docs/Pack/html/ftv2folderclosed.png | Bin 0 -> 616 bytes docs/Pack/html/ftv2folderopen.png | Bin 0 -> 597 bytes docs/Pack/html/ftv2lastnode.png | Bin 0 -> 86 bytes docs/Pack/html/ftv2link.png | Bin 0 -> 746 bytes docs/Pack/html/ftv2mlastnode.png | Bin 0 -> 246 bytes docs/Pack/html/ftv2mnode.png | Bin 0 -> 246 bytes docs/Pack/html/ftv2mo.png | Bin 0 -> 403 bytes docs/Pack/html/ftv2node.png | Bin 0 -> 86 bytes docs/Pack/html/ftv2ns.png | Bin 0 -> 388 bytes docs/Pack/html/ftv2plastnode.png | Bin 0 -> 229 bytes docs/Pack/html/ftv2pnode.png | Bin 0 -> 229 bytes docs/Pack/html/ftv2splitbar.png | Bin 0 -> 314 bytes docs/Pack/html/ftv2vertline.png | Bin 0 -> 86 bytes docs/Pack/html/index.html | 182 +++ docs/Pack/html/jquery.js | 72 + docs/Pack/html/maxInstancesDisplay.png | Bin 0 -> 67489 bytes docs/Pack/html/nav_f.png | Bin 0 -> 153 bytes docs/Pack/html/nav_g.png | Bin 0 -> 95 bytes docs/Pack/html/nav_h.png | Bin 0 -> 98 bytes docs/Pack/html/navtree.css | 143 ++ docs/Pack/html/navtree.js | 624 +++++++ docs/Pack/html/navtreeindex0.js | 232 +++ docs/Pack/html/open.png | Bin 0 -> 123 bytes docs/Pack/html/packChk.html | 416 +++++ docs/Pack/html/packFormat.html | 196 +++ docs/Pack/html/packFormat.js | 77 + docs/Pack/html/packIndexFile.html | 286 ++++ docs/Pack/html/pack_Example.html | 237 +++ docs/Pack/html/pack_revisionHistory.html | 277 ++++ docs/Pack/html/pages.html | 164 ++ docs/Pack/html/pdsc_SequenceNameEnum_pg.html | 1092 +++++++++++++ docs/Pack/html/pdsc_apis_pg.html | 200 +++ docs/Pack/html/pdsc_boards_pg.html | 507 ++++++ docs/Pack/html/pdsc_components_pg.html | 540 ++++++ docs/Pack/html/pdsc_conditions_pg.html | 333 ++++ docs/Pack/html/pdsc_devices_pg.html | 252 +++ docs/Pack/html/pdsc_devices_pg.js | 40 + docs/Pack/html/pdsc_examples_pg.html | 336 ++++ docs/Pack/html/pdsc_family_pg.html | 2263 ++++++++++++++++++++++++++ docs/Pack/html/pdsc_generators_pg.html | 554 +++++++ docs/Pack/html/pdsc_package_pg.html | 271 +++ docs/Pack/html/printComponentTabs.js | 39 + docs/Pack/html/resize.js | 97 ++ docs/Pack/html/sdf_pg.html | 987 +++++++++++ docs/Pack/html/search/all_0.html | 26 + docs/Pack/html/search/all_0.js | 4 + docs/Pack/html/search/all_1.html | 26 + docs/Pack/html/search/all_1.js | 5 + docs/Pack/html/search/all_2.html | 26 + docs/Pack/html/search/all_2.js | 5 + docs/Pack/html/search/all_3.html | 26 + docs/Pack/html/search/all_3.js | 4 + docs/Pack/html/search/all_4.html | 26 + docs/Pack/html/search/all_4.js | 11 + docs/Pack/html/search/all_5.html | 26 + docs/Pack/html/search/all_5.js | 4 + docs/Pack/html/search/all_6.html | 26 + docs/Pack/html/search/all_6.js | 5 + docs/Pack/html/search/all_7.html | 26 + docs/Pack/html/search/all_7.js | 4 + docs/Pack/html/search/all_8.html | 26 + docs/Pack/html/search/all_8.js | 4 + docs/Pack/html/search/all_9.html | 26 + docs/Pack/html/search/all_9.js | 4 + docs/Pack/html/search/close.png | Bin 0 -> 273 bytes docs/Pack/html/search/mag_sel.png | Bin 0 -> 563 bytes docs/Pack/html/search/nomatches.html | 12 + docs/Pack/html/search/pages_0.html | 26 + docs/Pack/html/search/pages_0.js | 4 + docs/Pack/html/search/pages_1.html | 26 + docs/Pack/html/search/pages_1.js | 5 + docs/Pack/html/search/pages_2.html | 26 + docs/Pack/html/search/pages_2.js | 5 + docs/Pack/html/search/pages_3.html | 26 + docs/Pack/html/search/pages_3.js | 4 + docs/Pack/html/search/pages_4.html | 26 + docs/Pack/html/search/pages_4.js | 11 + docs/Pack/html/search/pages_5.html | 26 + docs/Pack/html/search/pages_5.js | 4 + docs/Pack/html/search/pages_6.html | 26 + docs/Pack/html/search/pages_6.js | 5 + docs/Pack/html/search/pages_7.html | 26 + docs/Pack/html/search/pages_7.js | 4 + docs/Pack/html/search/pages_8.html | 26 + docs/Pack/html/search/pages_8.js | 4 + docs/Pack/html/search/pages_9.html | 26 + docs/Pack/html/search/pages_9.js | 4 + docs/Pack/html/search/search.css | 240 +++ docs/Pack/html/search/search.js | 795 +++++++++ docs/Pack/html/search/search_l.png | Bin 0 -> 604 bytes docs/Pack/html/search/search_m.png | Bin 0 -> 158 bytes docs/Pack/html/search/search_r.png | Bin 0 -> 612 bytes docs/Pack/html/simplepack_rte.png | Bin 0 -> 27738 bytes docs/Pack/html/sync_off.png | Bin 0 -> 853 bytes docs/Pack/html/sync_on.png | Bin 0 -> 845 bytes docs/Pack/html/tab_a.png | Bin 0 -> 142 bytes docs/Pack/html/tab_b.png | Bin 0 -> 169 bytes docs/Pack/html/tab_h.png | Bin 0 -> 177 bytes docs/Pack/html/tab_s.png | Bin 0 -> 184 bytes docs/Pack/html/tab_topnav.png | Bin 0 -> 232 bytes docs/Pack/html/tabs.css | 71 + 168 files changed, 21768 insertions(+) create mode 100644 docs/Pack/html/BSPBundleDisplay.png create mode 100644 docs/Pack/html/BasicDFPDisplay.png create mode 100644 docs/Pack/html/BoardsSectionMCB1500.png create mode 100644 docs/Pack/html/CMSIS_Logo_Final.png create mode 100644 docs/Pack/html/CodeVerify.png create mode 100644 docs/Pack/html/ComponentDisplay.png create mode 100644 docs/Pack/html/Component_Instances.png create mode 100644 docs/Pack/html/ConditionsDisplay.png create mode 100644 docs/Pack/html/DFPFlow.png create mode 100644 docs/Pack/html/DebugConnect.png create mode 100644 docs/Pack/html/DebugDisconnect.png create mode 100644 docs/Pack/html/DevBoardDisplay.png create mode 100644 docs/Pack/html/DeviceDatabase2.png create mode 100644 docs/Pack/html/ExampleDisplay.png create mode 100644 docs/Pack/html/FPADisplay.png create mode 100644 docs/Pack/html/FPATargetOptions.png create mode 100644 docs/Pack/html/FlashErase.png create mode 100644 docs/Pack/html/FlashProgram.png create mode 100644 docs/Pack/html/FlashVerify.png create mode 100644 docs/Pack/html/LocalInstallation.png create mode 100644 docs/Pack/html/MVCM3SpecTable.png create mode 100644 docs/Pack/html/PDSC_Example_bottom.png create mode 100644 docs/Pack/html/PDSC_Example_top.png create mode 100644 docs/Pack/html/PackCreateSteps.png create mode 100644 docs/Pack/html/RTX_Conf_CM_Wizard_View.png create mode 100644 docs/Pack/html/Reset.png create mode 100644 docs/Pack/html/SPVariants_small.png create mode 100644 docs/Pack/html/SVDFlow.png create mode 100644 docs/Pack/html/SVDIncluded.png create mode 100644 docs/Pack/html/StartupSystemFilesAdded.png create mode 100644 docs/Pack/html/SystemStartupFiles.png create mode 100644 docs/Pack/html/UserCodeTemplatesDisplay.png create mode 100644 docs/Pack/html/VariantDisplay.png create mode 100644 docs/Pack/html/WebInstallation.png create mode 100644 docs/Pack/html/algorithmFunc.html create mode 100644 docs/Pack/html/bc_s.png create mode 100644 docs/Pack/html/bdwn.png create mode 100644 docs/Pack/html/closed.png create mode 100644 docs/Pack/html/cmsis.css create mode 100644 docs/Pack/html/component_files.png create mode 100644 docs/Pack/html/configWizard.html create mode 100644 docs/Pack/html/coresight_setup.html create mode 100644 docs/Pack/html/coresight_setup.js create mode 100644 docs/Pack/html/cp_Editors.html create mode 100644 docs/Pack/html/cp_Packs.html create mode 100644 docs/Pack/html/cp_SWComponents.html create mode 100644 docs/Pack/html/cp_ZIPTool.html create mode 100644 docs/Pack/html/cpdsc_pg.html create mode 100644 docs/Pack/html/createPackBoard.html create mode 100644 docs/Pack/html/createPackPublish.html create mode 100644 docs/Pack/html/createPackUtil.html create mode 100644 docs/Pack/html/createPackUtil.js create mode 100644 docs/Pack/html/createPack_DFP.html create mode 100644 docs/Pack/html/debug_description.html create mode 100644 docs/Pack/html/doxygen.css create mode 100644 docs/Pack/html/doxygen.png create mode 100644 docs/Pack/html/dynsections.js create mode 100644 docs/Pack/html/element_keywords.html create mode 100644 docs/Pack/html/element_releases.html create mode 100644 docs/Pack/html/element_repository.html create mode 100644 docs/Pack/html/element_requirements_pg.html create mode 100644 docs/Pack/html/element_taxonomy.html create mode 100644 docs/Pack/html/flashAlgorithm.html create mode 100644 docs/Pack/html/flashAlgorithm.js create mode 100644 docs/Pack/html/ftv2blank.png create mode 100644 docs/Pack/html/ftv2cl.png create mode 100644 docs/Pack/html/ftv2doc.png create mode 100644 docs/Pack/html/ftv2folderclosed.png create mode 100644 docs/Pack/html/ftv2folderopen.png create mode 100644 docs/Pack/html/ftv2lastnode.png create mode 100644 docs/Pack/html/ftv2link.png create mode 100644 docs/Pack/html/ftv2mlastnode.png create mode 100644 docs/Pack/html/ftv2mnode.png create mode 100644 docs/Pack/html/ftv2mo.png create mode 100644 docs/Pack/html/ftv2node.png create mode 100644 docs/Pack/html/ftv2ns.png create mode 100644 docs/Pack/html/ftv2plastnode.png create mode 100644 docs/Pack/html/ftv2pnode.png create mode 100644 docs/Pack/html/ftv2splitbar.png create mode 100644 docs/Pack/html/ftv2vertline.png create mode 100644 docs/Pack/html/index.html create mode 100644 docs/Pack/html/jquery.js create mode 100644 docs/Pack/html/maxInstancesDisplay.png create mode 100644 docs/Pack/html/nav_f.png create mode 100644 docs/Pack/html/nav_g.png create mode 100644 docs/Pack/html/nav_h.png create mode 100644 docs/Pack/html/navtree.css create mode 100644 docs/Pack/html/navtree.js create mode 100644 docs/Pack/html/navtreeindex0.js create mode 100644 docs/Pack/html/open.png create mode 100644 docs/Pack/html/packChk.html create mode 100644 docs/Pack/html/packFormat.html create mode 100644 docs/Pack/html/packFormat.js create mode 100644 docs/Pack/html/packIndexFile.html create mode 100644 docs/Pack/html/pack_Example.html create mode 100644 docs/Pack/html/pack_revisionHistory.html create mode 100644 docs/Pack/html/pages.html create mode 100644 docs/Pack/html/pdsc_SequenceNameEnum_pg.html create mode 100644 docs/Pack/html/pdsc_apis_pg.html create mode 100644 docs/Pack/html/pdsc_boards_pg.html create mode 100644 docs/Pack/html/pdsc_components_pg.html create mode 100644 docs/Pack/html/pdsc_conditions_pg.html create mode 100644 docs/Pack/html/pdsc_devices_pg.html create mode 100644 docs/Pack/html/pdsc_devices_pg.js create mode 100644 docs/Pack/html/pdsc_examples_pg.html create mode 100644 docs/Pack/html/pdsc_family_pg.html create mode 100644 docs/Pack/html/pdsc_generators_pg.html create mode 100644 docs/Pack/html/pdsc_package_pg.html create mode 100644 docs/Pack/html/printComponentTabs.js create mode 100644 docs/Pack/html/resize.js create mode 100644 docs/Pack/html/sdf_pg.html create mode 100644 docs/Pack/html/search/all_0.html create mode 100644 docs/Pack/html/search/all_0.js create mode 100644 docs/Pack/html/search/all_1.html create mode 100644 docs/Pack/html/search/all_1.js create mode 100644 docs/Pack/html/search/all_2.html create mode 100644 docs/Pack/html/search/all_2.js create mode 100644 docs/Pack/html/search/all_3.html create mode 100644 docs/Pack/html/search/all_3.js create mode 100644 docs/Pack/html/search/all_4.html create mode 100644 docs/Pack/html/search/all_4.js create mode 100644 docs/Pack/html/search/all_5.html create mode 100644 docs/Pack/html/search/all_5.js create mode 100644 docs/Pack/html/search/all_6.html create mode 100644 docs/Pack/html/search/all_6.js create mode 100644 docs/Pack/html/search/all_7.html create mode 100644 docs/Pack/html/search/all_7.js create mode 100644 docs/Pack/html/search/all_8.html create mode 100644 docs/Pack/html/search/all_8.js create mode 100644 docs/Pack/html/search/all_9.html create mode 100644 docs/Pack/html/search/all_9.js create mode 100644 docs/Pack/html/search/close.png create mode 100644 docs/Pack/html/search/mag_sel.png create mode 100644 docs/Pack/html/search/nomatches.html create mode 100644 docs/Pack/html/search/pages_0.html create mode 100644 docs/Pack/html/search/pages_0.js create mode 100644 docs/Pack/html/search/pages_1.html create mode 100644 docs/Pack/html/search/pages_1.js create mode 100644 docs/Pack/html/search/pages_2.html create mode 100644 docs/Pack/html/search/pages_2.js create mode 100644 docs/Pack/html/search/pages_3.html create mode 100644 docs/Pack/html/search/pages_3.js create mode 100644 docs/Pack/html/search/pages_4.html create mode 100644 docs/Pack/html/search/pages_4.js create mode 100644 docs/Pack/html/search/pages_5.html create mode 100644 docs/Pack/html/search/pages_5.js create mode 100644 docs/Pack/html/search/pages_6.html create mode 100644 docs/Pack/html/search/pages_6.js create mode 100644 docs/Pack/html/search/pages_7.html create mode 100644 docs/Pack/html/search/pages_7.js create mode 100644 docs/Pack/html/search/pages_8.html create mode 100644 docs/Pack/html/search/pages_8.js create mode 100644 docs/Pack/html/search/pages_9.html create mode 100644 docs/Pack/html/search/pages_9.js create mode 100644 docs/Pack/html/search/search.css create mode 100644 docs/Pack/html/search/search.js create mode 100644 docs/Pack/html/search/search_l.png create mode 100644 docs/Pack/html/search/search_m.png create mode 100644 docs/Pack/html/search/search_r.png create mode 100644 docs/Pack/html/simplepack_rte.png create mode 100644 docs/Pack/html/sync_off.png create mode 100644 docs/Pack/html/sync_on.png create mode 100644 docs/Pack/html/tab_a.png create mode 100644 docs/Pack/html/tab_b.png create mode 100644 docs/Pack/html/tab_h.png create mode 100644 docs/Pack/html/tab_s.png create mode 100644 docs/Pack/html/tab_topnav.png create mode 100644 docs/Pack/html/tabs.css (limited to 'docs/Pack/html') diff --git a/docs/Pack/html/BSPBundleDisplay.png b/docs/Pack/html/BSPBundleDisplay.png new file mode 100644 index 0000000..ce1bed1 Binary files /dev/null and b/docs/Pack/html/BSPBundleDisplay.png differ diff --git a/docs/Pack/html/BasicDFPDisplay.png b/docs/Pack/html/BasicDFPDisplay.png new file mode 100644 index 0000000..5132c22 Binary files /dev/null and b/docs/Pack/html/BasicDFPDisplay.png differ diff --git a/docs/Pack/html/BoardsSectionMCB1500.png b/docs/Pack/html/BoardsSectionMCB1500.png new file mode 100644 index 0000000..e49e80f Binary files /dev/null and b/docs/Pack/html/BoardsSectionMCB1500.png differ diff --git a/docs/Pack/html/CMSIS_Logo_Final.png b/docs/Pack/html/CMSIS_Logo_Final.png new file mode 100644 index 0000000..2056b7e Binary files /dev/null and b/docs/Pack/html/CMSIS_Logo_Final.png differ diff --git a/docs/Pack/html/CodeVerify.png b/docs/Pack/html/CodeVerify.png new file mode 100644 index 0000000..448b40e Binary files /dev/null and b/docs/Pack/html/CodeVerify.png differ diff --git a/docs/Pack/html/ComponentDisplay.png b/docs/Pack/html/ComponentDisplay.png new file mode 100644 index 0000000..db55d44 Binary files /dev/null and b/docs/Pack/html/ComponentDisplay.png differ diff --git a/docs/Pack/html/Component_Instances.png b/docs/Pack/html/Component_Instances.png new file mode 100644 index 0000000..8ecdc33 Binary files /dev/null and b/docs/Pack/html/Component_Instances.png differ diff --git a/docs/Pack/html/ConditionsDisplay.png b/docs/Pack/html/ConditionsDisplay.png new file mode 100644 index 0000000..0821348 Binary files /dev/null and b/docs/Pack/html/ConditionsDisplay.png differ diff --git a/docs/Pack/html/DFPFlow.png b/docs/Pack/html/DFPFlow.png new file mode 100644 index 0000000..8f88570 Binary files /dev/null and b/docs/Pack/html/DFPFlow.png differ diff --git a/docs/Pack/html/DebugConnect.png b/docs/Pack/html/DebugConnect.png new file mode 100644 index 0000000..656edd3 Binary files /dev/null and b/docs/Pack/html/DebugConnect.png differ diff --git a/docs/Pack/html/DebugDisconnect.png b/docs/Pack/html/DebugDisconnect.png new file mode 100644 index 0000000..5a59438 Binary files /dev/null and b/docs/Pack/html/DebugDisconnect.png differ diff --git a/docs/Pack/html/DevBoardDisplay.png b/docs/Pack/html/DevBoardDisplay.png new file mode 100644 index 0000000..f769e4e Binary files /dev/null and b/docs/Pack/html/DevBoardDisplay.png differ diff --git a/docs/Pack/html/DeviceDatabase2.png b/docs/Pack/html/DeviceDatabase2.png new file mode 100644 index 0000000..9c6f51c Binary files /dev/null and b/docs/Pack/html/DeviceDatabase2.png differ diff --git a/docs/Pack/html/ExampleDisplay.png b/docs/Pack/html/ExampleDisplay.png new file mode 100644 index 0000000..e078c58 Binary files /dev/null and b/docs/Pack/html/ExampleDisplay.png differ diff --git a/docs/Pack/html/FPADisplay.png b/docs/Pack/html/FPADisplay.png new file mode 100644 index 0000000..79a98ef Binary files /dev/null and b/docs/Pack/html/FPADisplay.png differ diff --git a/docs/Pack/html/FPATargetOptions.png b/docs/Pack/html/FPATargetOptions.png new file mode 100644 index 0000000..f7b121f Binary files /dev/null and b/docs/Pack/html/FPATargetOptions.png differ diff --git a/docs/Pack/html/FlashErase.png b/docs/Pack/html/FlashErase.png new file mode 100644 index 0000000..6198045 Binary files /dev/null and b/docs/Pack/html/FlashErase.png differ diff --git a/docs/Pack/html/FlashProgram.png b/docs/Pack/html/FlashProgram.png new file mode 100644 index 0000000..da7d37d Binary files /dev/null and b/docs/Pack/html/FlashProgram.png differ diff --git a/docs/Pack/html/FlashVerify.png b/docs/Pack/html/FlashVerify.png new file mode 100644 index 0000000..3dc1955 Binary files /dev/null and b/docs/Pack/html/FlashVerify.png differ diff --git a/docs/Pack/html/LocalInstallation.png b/docs/Pack/html/LocalInstallation.png new file mode 100644 index 0000000..373ecde Binary files /dev/null and b/docs/Pack/html/LocalInstallation.png differ diff --git a/docs/Pack/html/MVCM3SpecTable.png b/docs/Pack/html/MVCM3SpecTable.png new file mode 100644 index 0000000..2ade29a Binary files /dev/null and b/docs/Pack/html/MVCM3SpecTable.png differ diff --git a/docs/Pack/html/PDSC_Example_bottom.png b/docs/Pack/html/PDSC_Example_bottom.png new file mode 100644 index 0000000..5325685 Binary files /dev/null and b/docs/Pack/html/PDSC_Example_bottom.png differ diff --git a/docs/Pack/html/PDSC_Example_top.png b/docs/Pack/html/PDSC_Example_top.png new file mode 100644 index 0000000..defa79f Binary files /dev/null and b/docs/Pack/html/PDSC_Example_top.png differ diff --git a/docs/Pack/html/PackCreateSteps.png b/docs/Pack/html/PackCreateSteps.png new file mode 100644 index 0000000..9c4861d Binary files /dev/null and b/docs/Pack/html/PackCreateSteps.png differ diff --git a/docs/Pack/html/RTX_Conf_CM_Wizard_View.png b/docs/Pack/html/RTX_Conf_CM_Wizard_View.png new file mode 100644 index 0000000..0e00c41 Binary files /dev/null and b/docs/Pack/html/RTX_Conf_CM_Wizard_View.png differ diff --git a/docs/Pack/html/Reset.png b/docs/Pack/html/Reset.png new file mode 100644 index 0000000..585f140 Binary files /dev/null and b/docs/Pack/html/Reset.png differ diff --git a/docs/Pack/html/SPVariants_small.png b/docs/Pack/html/SPVariants_small.png new file mode 100644 index 0000000..2b4f5ba Binary files /dev/null and b/docs/Pack/html/SPVariants_small.png differ diff --git a/docs/Pack/html/SVDFlow.png b/docs/Pack/html/SVDFlow.png new file mode 100644 index 0000000..1c141db Binary files /dev/null and b/docs/Pack/html/SVDFlow.png differ diff --git a/docs/Pack/html/SVDIncluded.png b/docs/Pack/html/SVDIncluded.png new file mode 100644 index 0000000..7faac32 Binary files /dev/null and b/docs/Pack/html/SVDIncluded.png differ diff --git a/docs/Pack/html/StartupSystemFilesAdded.png b/docs/Pack/html/StartupSystemFilesAdded.png new file mode 100644 index 0000000..3a7f890 Binary files /dev/null and b/docs/Pack/html/StartupSystemFilesAdded.png differ diff --git a/docs/Pack/html/SystemStartupFiles.png b/docs/Pack/html/SystemStartupFiles.png new file mode 100644 index 0000000..07accb1 Binary files /dev/null and b/docs/Pack/html/SystemStartupFiles.png differ diff --git a/docs/Pack/html/UserCodeTemplatesDisplay.png b/docs/Pack/html/UserCodeTemplatesDisplay.png new file mode 100644 index 0000000..96371d9 Binary files /dev/null and b/docs/Pack/html/UserCodeTemplatesDisplay.png differ diff --git a/docs/Pack/html/VariantDisplay.png b/docs/Pack/html/VariantDisplay.png new file mode 100644 index 0000000..7c08d5e Binary files /dev/null and b/docs/Pack/html/VariantDisplay.png differ diff --git a/docs/Pack/html/WebInstallation.png b/docs/Pack/html/WebInstallation.png new file mode 100644 index 0000000..a2f1722 Binary files /dev/null and b/docs/Pack/html/WebInstallation.png differ diff --git a/docs/Pack/html/algorithmFunc.html b/docs/Pack/html/algorithmFunc.html new file mode 100644 index 0000000..5a23864 --- /dev/null +++ b/docs/Pack/html/algorithmFunc.html @@ -0,0 +1,438 @@ + + + + + +Algorithm Functions +CMSIS-Pack: Algorithm Functions + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-Pack +  Version 1.5.0 +
+
Delivery Mechanism for Software Packs
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Algorithm Functions
+
+
+

Blank Check

+

The following functions are available for creating new Flash programming algorithms:

+ + + + + + + + + + + + + + + + + +
Function Name Indication Description
BlankCheck optional Check and compare patterns.
EraseChip optional Delete entire Flash memory content.
EraseSector mandatory Delete Flash memory content of a specific sector.
Init mandatory Initialize and prepare device for Flash programming.
ProgramPage mandatory Write the application into the Flash memory.
UnInit mandatory De-initialize the microcontroller after one of the Flash programming steps.
Verify optional Compare Flash memory content with the program code.
+

The following diagrams show how the functions of the Flash Programming Algorithms are executed by a development tool.

+

The Flash Erase sequence is executed to erase the Flash content.

+
+FlashErase.png +
+Flash Erase
+

The Flash Program sequence is executed to program the Flash memory.

+
+FlashProgram.png +
+Flash Program
+

The Flash Verify sequence is executed to verify the content after flash programming.

+
+FlashVerify.png +
+Flash Verify
+

 

+
+

+BlankCheck

+
int BlankCheck (unsigned long adr, unsigned long sz, unsigned char pat);
+
Parameters
+ + + + +
adrBlock start address
szBlock size in bytes
patPattern to compare
+
+
+
Returns
status information:
    +
  • 0 when the block content is equal to the pattern pat.
  • +
  • 1 when the block content differs from the pattern pat.
  • +
+
+

The function BlankCheck can be used to check whether the specified block is empty, or whether the content is equal to a specific pattern defined in the argument pat.

+

The argument adr specifies the start address of the block that is to be verified.

+

The argument sz specifies the size of the block that is to be verified.

+

Code Example

+
int BlankCheck (unsigned long adr, unsigned long sz, unsigned char pat) {
+
+
unsigned long i, j, k;
+
+
// Recalculate address for External SDRAM addresses
+
if (adr >= SDRAM_START)
+
adr = adr - SDRAM_START + USER_OFFSET;
+
+
for (i = 0; i < sz; i += 256) {
+
// Read 256 bytes
+
ReadPage_HW (adr+i, 256, &rd_buf[0]);
+
+
// Determine size to compare
+
if ((sz-i) >= 256) k = 256;
+
else k = (sz-i);
+
+
// Check up to 256 bytes if equal to pattern "pat"
+
for (j = 0; j < k; j++)
+
if (rd_buf[j] != pat) return (1); // Memory is not blank
+
}
+
+
return (0); // Memory is blank
+
}
+

 

+
+

+EraseChip

+
int EraseChip (void);
+
Returns
status information:
    +
  • 0 on success.
  • +
  • 1 on failure.
  • +
+
+

The function EraseChip deletes the content of the entire Flash memory. It is invoked whenever the uVision menu Flash - Erase is used, or whenever an attempt is made to download the program to Flash and the option Erase Full Chip has been set in the Flash Download Setup dialog. If this function is missing in the Flash Programming Algorithm, the EraseSector function is executed until the entire content of the Flash memory area has been deleted.

+

Code Example

+
int EraseChip (void) {
+
+
FLASH->CR |= FLASH_MER; // Mass Erase Enabled
+
FLASH->CR |= FLASH_STRT; // Start Erase
+
+
while (FLASH->SR & FLASH_BSY) {
+
IWDG->KR = 0xAAAA; // Reload IWDG
+
}
+
+
FLASH->CR &= ~FLASH_MER; // Mass Erase Disabled
+
+
return (0); // Done
+
}
+

 

+
+

+EraseSector

+
int EraseSector (unsigned long adr);
+
Parameters
+ + +
adrSector address
+
+
+
Returns
status information:
    +
  • 0 on success.
  • +
  • 1 on failure.
  • +
+
+

The function EraseSector deletes the content of the sector starting at the address specified by the argument adr. The function is invoked whenever the uVision menu Flash - Erase is used, or whenever an attempt is made to download the program to Flash and the option Erase Sectors has been set in the Flash Download Setup dialog.

+

Code Example

+
int EraseSector (unsigned long adr) {
+
+
FLASH->CR |= FLASH_PER; // Page Erase Enabled
+
FLASH->AR = adr; // Page Address
+
FLASH->CR |= FLASH_STRT; // Start Erase
+
+
while (FLASH->SR & FLASH_BSY) {
+
IWDG->KR = 0xAAAA; // Reload IWDG
+
}
+
+
FLASH->CR &= ~FLASH_PER; // Page Erase Disabled
+
+
return (0); // Done
+
}
+

 

+
+

+Init

+
int Init (unsigned long adr, unsigned long clk, unsigned long fnc);
+
Parameters
+ + + + +
adrDevice base address
clkClock frequency (Hz)
fncFunction code
+
+
+
Returns
status information:
    +
  • 0 on success.
  • +
  • 1 on failure.
  • +
+
+

The function Init initializes the microcontroller for Flash programming. It is invoked whenever an attempt is made to download the program to Flash.

+

The argument adr specifies the base address of the device.

+

The argument clk specifies the clock frequency for prgramming the device.

+

The argument fnc is a number:

+
    +
  • 1 stands for Erase.
  • +
  • 2 stands for Program.
  • +
  • 3 stands for Verify.
  • +
+

Thus, different initialization sections can be implemented for each individual Flash programming step.

+

Code Example

+
int Init (unsigned long adr, unsigned long clk, unsigned long fnc) {
+
+
// Zero Wait State
+
FLASH->ACR = 0x00000000;
+
+
// Unlock Flash
+
FLASH->KEYR = FLASH_KEY1;
+
FLASH->KEYR = FLASH_KEY2;
+
+
// Test if IWDG is running (IWDG in HW mode)
+
if ((FLASH->OBR & 0x04) == 0x00) {
+
// Set IWDG time out to ~32.768 second
+
IWDG->KR = 0x5555; // Enable write access to IWDG_PR and IWDG_RLR
+
IWDG->PR = 0x06; // Set prescaler to 256
+
IWDG->RLR = 4095; // Set reload value to 4095
+
}
+
+
return (0);
+
}
+

 

+
+

+ProgramPage

+
int ProgramPage (unsigned long adr, unsigned long sz, unsigned char *buf);
+
Parameters
+ + + + +
adrPage start address
szPage size
bufData to be written
+
+
+
Returns
status information:
    +
  • 0 on success.
  • +
  • 1 on failure.
  • +
+
+

The function ProgramPage is used to write code into the Flash memory. It is invoked whenever an attempt is made to download a program to Flash.

+

The argument adr specifies the start address of the page that is to be programmed.

+

The argument sz specifies the size of the page that is to be programmed.

+

The argument buf points to the buffer containing the data to be programmed.

+

Code Example

+
int ProgramPage (unsigned long adr, unsigned long sz, unsigned char *buf) {
+
+
sz = (sz + 1) & ~1; // Adjust size for Half Words
+
+
while (sz) {
+
+
FLASH->CR |= FLASH_PG; // Programming Enabled
+
+
M16(adr) = *((unsigned short *)buf); // Program Half Word
+
while (FLASH->SR & FLASH_BSY);
+
+
FLASH->CR &= ~FLASH_PG; // Programming Disabled
+
+
// Check for Errors
+
if (FLASH->SR & (FLASH_PGERR | FLASH_WRPRTERR)) {
+
FLASH->SR |= FLASH_PGERR | FLASH_WRPRTERR;
+
return (1); // Failed
+
}
+
+
// Go to next Half Word
+
adr += 2;
+
buf += 2;
+
sz -= 2;
+
+
}
+
+
return (0); // Done
+
}
+

 

+
+

+UnInit

+
int UnInit (unsigned long fnc);
+
Parameters
+ + +
fncFunction code
+
+
+
Returns
status information:
    +
  • 0 on success.
  • +
  • 1 on failure.
  • +
+
+

The function UnInit de-initializes the microcontroller and is invoked at the end of an erasing, programming, or verifying step.

+

The argument fnc is a number:

+
    +
  • 1 stands for Erase.
  • +
  • 2 stands for Program.
  • +
  • 3 stands for Verify.
  • +
+

Thus, different de-initialization sections can be implemented for each individual Flash programming step.

+

Code Example

+
int UnInit (unsigned long fnc) {
+
+
// Lock Flash
+
FLASH->CR |= FLASH_LOCK;
+
+
return (0);
+
}
+

 

+
+

+Verify

+
unsigned long Verify (unsigned long adr, unsigned long sz, unsigned char *buf);
+
Parameters
+ + + + +
adrStart address
szSize in bytes
bufData to be compared
+
+
+
Returns
status information:
    +
  • the sum of (adr+sz) - on success.
  • +
  • any other number - on failure, and represents the failing address.
  • +
+
+

The function Verify compares the content of the Flash memory with the program code *buf.

+

The argument adr specifies the start address for the verification.

+

The argument sz specifies the size of the verification.

+

The argument buf points to the buffer containing the data to be verified.

+

Code Example

+
unsigned long Verify (unsigned long adr, unsigned long sz, unsigned char *buf) {
+
unsigned long i, adr_dest, in_page_ofs;
+
+
if (adr < block_size) { // Verifying 2-nd level bootloader data
+
adr_dest = adr + page_usr_size; // skip page 0 of block 0
+
} else { // Verifying program data
+
FindBlock(adr, 0);
+
adr_dest = nand_block_offset + (adr & (block_size-1));
+
}
+
in_page_ofs = adr_dest & (page_usr_size-1);
+
+
if (ReadPage_HW(adr_dest, page_usr_size, data_buf)) return (1);
+
for (i=0; i<sz; i++)
+
if (buf[i] != data_buf[i+in_page_ofs])
+
break;
+
+
return (adr+i);
+
}
+
+
+ + + + diff --git a/docs/Pack/html/bc_s.png b/docs/Pack/html/bc_s.png new file mode 100644 index 0000000..224b29a Binary files /dev/null and b/docs/Pack/html/bc_s.png differ diff --git a/docs/Pack/html/bdwn.png b/docs/Pack/html/bdwn.png new file mode 100644 index 0000000..940a0b9 Binary files /dev/null and b/docs/Pack/html/bdwn.png differ diff --git a/docs/Pack/html/closed.png b/docs/Pack/html/closed.png new file mode 100644 index 0000000..98cc2c9 Binary files /dev/null and b/docs/Pack/html/closed.png differ diff --git a/docs/Pack/html/cmsis.css b/docs/Pack/html/cmsis.css new file mode 100644 index 0000000..bba1010 --- /dev/null +++ b/docs/Pack/html/cmsis.css @@ -0,0 +1,1282 @@ +/* The standard CSS for doxygen */ + +body, table, div, p, dl { + font-family: Lucida Grande, Verdana, Geneva, Arial, sans-serif; + font-size: 13px; + line-height: 1.3; +} + +/* CMSIS styles */ + +.style1 { + text-align: center; +} +.style2 { + color: #0000FF; + font-weight: normal; +} +.style3 { + text-align: left; +} +.style4 { + color: #008000; +} +.style5 { + color: #0000FF; +} +.style6 { + color: #000000; + font-style:italic; +} +.mand { + color: #0000FF; +} +.opt { + color: #008000; +} +.cond { + color: #990000; +} + +.choice +{ + background-color:#F7F9D0; +} +.seq +{ + background-color:#C9DECB; +} +.group1 +{ + background-color:#F8F1F1; +} +.group2 +{ + background-color:#DCEDEA; +} + + +ul ul { + list-style-type: disc; +} + +ul ul ul { + list-style-type: disc; +} + +ul.hierarchy { + color: green; +} + +em { + color: #000000; + font-style:italic; +} + + + +/* CMSIS Tables */ +table.cmtab1 { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A3B4D7; + text-align: justify; + width:70%; +} + +th.cmtab1 { + background: #EBEFF6; + font-weight: bold; + height: 28px; +} + +td.cmtab1 { + padding:1px; + text-align: left; +} + +table.cmtable { + border-collapse:collapse; + text-align: justify; +} + +table.cmtable td, table.cmtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.cmtable th { + background-color: #EBEFF6; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; +} + +td.MonoTxt { + font-family:"Arial monospaced for SAP"; +} + +td.XML-Token +{ + azimuth: 180; + font-style:italic; + color:Maroon; + z-index:20; + +} + +span.XML-Token +{ + azimuth: 180; + font-style:italic; + color:Maroon; + z-index:20; + +} + +span.h2 +{ + font-size: 120%; + font-weight: bold; +} + +div.new +{ + background-color:#ccffcc; /* light green */ +} + +div.mod +{ + background-color:#ffe6cc; /* light amber */ +} + +div.del +{ + background-color:#ffcccc; /* light red */ +} + +/* @group Heading Levels */ + +h1 { + font-size: 150%; +} + +.title { + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h2 { + font-size: 120%; +} + +h3 { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px cyan; +} + +dt { + font-weight: bold; +} + +div.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; +} + +p.startli, p.startdd, p.starttd { + margin-top: 2px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.qindex, div.navtab{ + background-color: #EBEFF6; + border: 1px solid #A2B4D8; + text-align: center; +} + +div.qindex, div.navpath { + width: 100%; + line-height: 140%; +} + +div.navtab { + margin-right: 15px; +} + +/* @group Link Styling */ + +a { + color: #3A568E; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4464A5; +} + +a:hover { + text-decoration: underline; +} + +a.qindex { + font-weight: bold; +} + +a.qindexHL { + font-weight: bold; + background-color: #9AAED5; + color: #ffffff; + border: 1px double #849CCC; +} + +.contents a.qindexHL:visited { + color: #ffffff; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited { + color: #4665A2; +} + +a.codeRef, a.codeRef:visited { + color: #4665A2; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +pre.fragment { + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: monospace, fixed; + font-size: 105%; +} + +div.fragment { + padding: 4px; + margin: 4px; + background-color: #FBFCFD; + border: 1px solid #C3CFE6; +} + +div.line { + font-family: monospace, fixed; + font-size: 13px; + line-height: 1.0; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; +} + +span.lineno { + padding-right: 4px; + text-align: right; + border-right: 2px solid #0F0; + background-color: #E8E8E8; + white-space: pre; +} +span.lineno a { + background-color: #D8D8D8; +} + +span.lineno a:hover { + background-color: #C8C8C8; +} + +div.ah { + background-color: black; + font-weight: bold; + color: #ffffff; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000); +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background-color: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +td.indexkey { + background-color: #EBEFF6; + font-weight: bold; + border: 1px solid #C3CFE6; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; +} + +td.indexvalue { + background-color: #EBEFF6; + border: 1px solid #C3CFE6; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #EDF1F7; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +blockquote { + background-color: #F7F8FB; + border-left: 2px solid #9AAED5; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A2B4D8; +} + +th.dirtab { + background: #EBEFF6; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #4769AD; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow { + background-color: cyan; + box-shadow: 0 0 15px cyan; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FAFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memItemLeft, .memItemRight, .memTemplParams { + border-top: 1px solid #C3CFE6; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight { + width: 100%; +} + +.memTemplParams { + color: #4464A5; + white-space: nowrap; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtemplate { + font-size: 80%; + color: #4464A5; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #EBEFF6; + border: 1px solid #A2B4D8; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; +} + +.memitem.glow { + box-shadow: 0 0 15px cyan; +} + +.memname { + font-weight: bold; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #A7B8DA; + border-left: 1px solid #A7B8DA; + border-right: 1px solid #A7B8DA; + padding: 6px 0px 6px 0px; + color: #233456; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E7F3; + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; + border-top-left-radius: 4px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 4px; + -moz-border-radius-topleft: 4px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 4px; + -webkit-border-top-left-radius: 4px; + +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #A7B8DA; + border-left: 1px solid #A7B8DA; + border-right: 1px solid #A7B8DA; + padding: 6px 10px 2px 10px; + background-color: #FBFCFD; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: #FFFFFF; + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: #708CC4; + border-top:1px solid #5072B7; + border-left:1px solid #5072B7; + border-right:1px solid #C3CFE6; + border-bottom:1px solid #C3CFE6; + text-shadow: none; + color: white; + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; +} + + + +/* @end */ + +/* these are for tree view when not used as main index */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.even { + padding-left: 6px; + background-color: #F7F8FB; +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: #3A568E; +} + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: #293C63; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2B4069; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #EBEFF6; + color: #000000; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + width: 100%; + margin-bottom: 10px; + border: 1px solid #A7B8DA; + border-spacing: 0px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid #A7B8DA; + border-bottom: 1px solid #A7B8DA; + vertical-align: top; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #A7B8DA; + width: 100%; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E7F3; + font-size: 90%; + color: #233456; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #A7B8DA; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + height:30px; + line-height:30px; + color:#889FCE; + border:solid 1px #C1CDE5; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#344D7E; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; +} + +.navpath li.navelem a:hover +{ + color:#6583BF; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#344D7E; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +div.ingroups +{ + margin-left: 5px; + font-size: 8pt; + padding-left: 5px; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C3CFE6; +} + +div.headertitle +{ + padding: 5px 5px 5px 7px; +} + +dl +{ + padding: 0 0 0 10px; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */ +dl.section +{ + margin-left: 0px; + padding-left: 0px; +} + +dl.note +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00D000; +} + +dl.deprecated +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #505050; +} + +dl.todo +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00C0E0; +} + +dl.test +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #3030E0; +} + +dl.bug +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectname +{ + font: 300% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font: 120% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5072B7; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +div.zoom +{ + border: 1px solid #8EA4D0; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#314877; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; +} + +dl.citelist dd { + margin:2px 0; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: #F4F6FA; + border: 1px solid #D7DFEE; + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 20px 10px 10px; + width: 200px; +} + +div.toc li { + background: url("bdwn.png") no-repeat scroll 0 5px transparent; + font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 Arial,FreeSans,sans-serif; + color: #4464A5; + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 30px; +} + +div.toc li.level4 { + margin-left: 45px; +} + +.inherit_header { + font-weight: bold; + color: gray; + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + diff --git a/docs/Pack/html/component_files.png b/docs/Pack/html/component_files.png new file mode 100644 index 0000000..5d8c3d4 Binary files /dev/null and b/docs/Pack/html/component_files.png differ diff --git a/docs/Pack/html/configWizard.html b/docs/Pack/html/configWizard.html new file mode 100644 index 0000000..7352e6c --- /dev/null +++ b/docs/Pack/html/configWizard.html @@ -0,0 +1,471 @@ + + + + + +Configuration Wizard Annotations +CMSIS-Pack: Configuration Wizard Annotations + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-Pack +  Version 1.5.0 +
+
Delivery Mechanism for Software Packs
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Configuration Wizard Annotations
+
+
+

+Annotation Rules

+

Configuration Wizard Annotations consist of annotation items and annotation modifiers. They create GUI-like elements in IDEs for configuration files (see Tool-specific display). Using a GUI-like approach makes it easier for the user to check and adapt configuration files to the application needs. The following rules apply:

+
    +
  • The Configuration Wizard section must begin within the first 100 lines of code and must start with the following comment line:
    // <<< Use Configuration Wizard in Context Menu >>>
    +
  • +
  • The Configuration Wizard section can end with the following optional comment:
    // <<< end of configuration section >>>
    +
  • +
  • Annotations are written as comments in the code. Each annotation line must start with a double forward slash (//).
  • +
  • By default, the next code symbol that follows the annotation is modified.
  • +
  • Items marked with * in the table below can be followed by a skip-value. A skip-value omits a number of code symbols (see skip example in table). This overwrites the previous rule.
  • +
  • A descriptive text can be added to items. This text is displayed on screen (see table).
  • +
  • Whitespace characters are ignored in annotation items or annotation modifiers (text excluded).
  • +
  • You must not use < or > within configuration wizard lines other than for enclosing annotation items.
  • +
+

The following table lists the Configuration Wizard Annotations:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Item Text Description
<h> yes Heading. Creates a header section. All items and options enclosed by <h> and </h> belong to one group and can be expanded. This entry makes no changes to code symbols. It is just used to group other items and modifiers.
+ Excerpt from the Code Example
// <h>Thread Configuration -- header without checkbox to group other items
+
// ...
+
// </h>
+
Is the header entry as shown in Tool-specific display.
<e>* yes Heading with enable. Creates a header section with a checkbox to enabled or disabled all items and options enclosed by <e> and </e>. Excerpt from the Code Example.
// <e>Round-Robin Thread switching -- header with checkbox
+
// ===============================
+
//
+
// <i> Enables Round-Robin Thread switching. -- tooltip information for the header
+
#ifndef OS_ROBIN
+
#define OS_ROBIN 1 -- this value is set through the checkbox
+
#endif
+
// <o>Round-Robin Timeout [ticks] <1-1000>
+
// <i> Defines how long a thread will execute before a thread switch.
+
// <i> Default: 5
+
#ifndef OS_ROBINTOUT
+
#define OS_ROBINTOUT 5
+
#endif
+
// </e>
+
The entry <e>Round-Robin Thread switching ... </e> sets OS_ROBIN to 1 (checkbox enabled) or 0 (checkbox disabled) and encloses the OS_ROBINTOUT (Round-Robin Timeout) setting. See screen outcome in Tool-specific display.
<e.i>* yes Heading with Enable: modifies a specific bit (i) (example: <e.4> - changes bit 4 of a value).
// <e.4>Serial Number
+
// <i>Enable Serial Number String.
+
// <i>If disabled, Serial Number String will not be assigned to USB Device.
+
#define USBD0_STR_DESC_SER_EN 1
+
The example creates the heading Serial Number and a checkbox to set the value. If enabled, then bit 4 of USBD0_STR_DESC_SER_EN is set.
</h>, </e>, or </c> yes Heading, Enable, or Comment end.
<n> yes Notification text displayed
// <n> This is shown as plain text
+
<i> yes Tooltip help for previous item.
// <i>This is shown as a tooltip when hovering over a text.
+
Many examples in this table have tooltip examples.
<c>* yes Code enable: creates a checkbox to uncomment or comment code. All lines, including those with white spaces, get commented with double slashes (//) at the first found character when you disable the checkbox.
// <c1> Comment sequence block until block end when disabled
+
//<i> This may carry the block's description
+
+
foo
+
+
+bar
+
+
-xFoo
+
// </c>
+
In this example, the item is enabled, so that the sequence block is not commented.
<!c>* yes Code disable: creates a checkbox to comment or uncomment code. All lines, including those with white spaces, get commented with double slashes (//) at the first found character when you enable the checkbox.
// <!c1> Comment sequence block until block end when enabled
+
//<i> This may carry the block's description
+
//
+
//foo
+
//
+
//+bar
+
//
+
//-xFoo
+
// </c>
+
In this example, the item is enabled, so that the sequence block is commented.
<q>* yes Option for bit values which can be set via a checkbox.
// <h> Chip-select control
+
// <q> ASYNCWAIT: Wait signal during asynchronous transfer
+
// <i> Enables the FSMC to use the wait signal even during an asynchronous protocol.
+
// </h>
+
#define RTE_FSMC_BCR1_ASYNCWAIT 0 -- this is changed via a checkbox
+
<o>* yes Option with selection or number entry.
// <o>Round-Robin Timeout [ticks] <1-1000> -- text displayed on screen. Range of [ticks] is [1..1000]
+
// <i> Defines how long a thread will execute before a thread switch. -- tooltip info
+
// <i> Default: 5 -- tooltip info. Both displayed in one tooltip.
+
#ifndef OS_ROBINTOUT
+
#define OS_ROBINTOUT 5
+
#endif
+
// </e>
+
The example creates an option with the text Round-Robin Timeout [ticks] and a field to enter values that can range between {1..1000].
<o key-identifier>* (new!) yes

Option with identifier selection replacing the identifier after the specified key-identifier:

+
// <o TIMESTAMP_SRC>Time Stamp Source
+
// <dwt=> DWT Cycle Counter
+
// <systick=> SysTick
+
// <user=> User Timer
+
// <i>Selects source for 32-bit time stamp
+
#define TIMESTAMP_SRC dwt
+

The example creates an option with the text Time Stamp Source and a drop down-list showing the text items DWT Cycle Counter, SysTick and User Timer. The corresponding identifier within the tag <...=> will be used for replacement.

+

Use case for an assignment of an enumeration to a variable:

+
// <o redPortMode> Red port mode
+
// <OutPushPull_GPIO=> PushPull
+
// <OutOpenDrain_GPIO=> OpenDrain
+
// <i>Selects GPIO output
+
ledConf.redPortMode = OutOpenDrain_GPIO;
+

The example creates an option with the text Red port mode and a drop down-list showing the text items PushPull and OpenDrain. The corresponding identifier OutPushPull_GPIO or OutOpenDrain_GPIO will be used to replace the identifier after the key-identifier redPortMode.

+
<o.i>* yes Modify a single bit (example: <e.4> - modifies bit 4).
// <o.4> <o.0>High-speed
+
// <i>Enable High-speed functionality (if device supports it).
+
#define USBD0_HS 0
+
The example creates a heading with the text High-speed and a checkbox. If enabled, then bit 4 of USBD0_HS is set.
<o.x..y>* yes Modify a range of bits. (example: <o.4..5> - bit 4 to 5).
// <h>String Settings
+
// <i>These settings are used to create the String Descriptor.
+
// <o.0..15>Language ID <0x0000-0xFCFF>
+
// <i>English (United States) = 0x0409.
+
// </h>
+
#define USBD0_STR_DESC_LANGID 0x0409
+
This example creates an expandable header with the text String Settings and an option Language ID. The range of values is set to <0x0000-0xFCFF>. Users can enter a value from within that range. The option changes the bits 0..15.
<s>* yes Option with ASCII string entry.
// <s>Manufacturer String
+
// <i>String Descriptor describing Manufacturer.
+
#define USBD0_STR_DESC_MAN L"Keil Software"
+
Displays an option with the text Manufacturer String and creates a field in which the user can enter a text. The size of the string is not limited.
<s.i>* yes Option with ASCII string entry and a size limit of i characters.
// <s.126>Manufacturer String
+
// <i>String Descriptor describing Manufacturer.
+
#define USBD0_STR_DESC_MAN L"Keil Software"
+
The example sets a size limit of 126 character. Default string is "Keil Software".
skip example
+ <qi>;
+ <oi>; <oi.x>;
+ <si>; <si.x>
yes Skip i items. Can be applied to all annotation items marked with a * in this table.
// <o2>Skip 2 and modify the third item after this entry <1-9>
+
#define VALUE1 1000
+
#define VALUE2 2000
+
#define MODIFY_THIS 3000
+
The example skips 2 items and modifies the third.
Modifier   Description
<0-31> no Value range for option fields.
<0-100:10> no Value range for option fields with step 10.
<0x40-0x1000:0x10> no Value range in hex format and step 10.
<value=> yes Creates a drop down-list and displays the text. value is written to the next item. Excerpt from the Code Example.
// <o>Timer Thread Priority -- creates a drop-down with the list below.
+
// <1=> Low
+
// <2=> Below Normal <3=> Normal <4=> Above Normal
+
// <5=> High
+
// <6=> Realtime (highest)
+
// <i> Defines priority for Timer Thread -- tooltip info
+
// <i> Default: High -- tooltip info
+
#ifndef OS_TIMERPRIO
+
#define OS_TIMERPRIO 5
+
#endif
+
In this example, the screen would show the option Timer Thread Priority. The field Value would display the text High. OS_TIMERPRIO is set to 5. When clicking on the field, a drop-down would show all options. See Tool-specific display.
<identifier=> yes Creates a drop down-list and displays the text following the definition of the identifiers dwt, systick and user. Note that this must only be used in the context of <o key-identifier>! The identifier corresponding to the selected text replaces the identifier following the key-identifier specified by the <o ...> tag.
// <o TIMESTAMP_SRC>Time Stamp Source
+
// <dwt=> DWT Cycle Counter
+
// <systick=> SysTick
+
// <user=> User Timer
+
// <i>Selects source for 32-bit time stamp
+
#define TIMESTAMP_SRC dwt
+
In this example, the screen would show the option Time Stamp Source. The field value would display the text DWT Cycle Counter. TIMESTAMP_SRC is set to dwt. When clicking on the field, a drop-down would show all options. See Tool-specific display.
<#+1>   <#-1>
+ <#*8>   <#/3>
no Modifies the entered or displayed value according to the operator (add, sub, mul, div). The changed value is set for the code symbol.
+ Excerpt from Code Example.
// <o>Default Thread stack size [bytes] <64-4096:8><#/4>
+
// <i> Defines default stack size for threads with osThreadDef stacksz = 0
+
// <i> Default: 200
+
#ifndef OS_STKSIZE
+
#define OS_STKSIZE 50
+
#endif
+
The option Default Thread stack size [bytes] accepts values in the range [64..4096]. The value (here 200) set in the field is divided by 4 (<#/4>) . The result of the division (200/4) is put into the code symbol OS_STKSIZE, which was set to 50. The screen will display the number 200. See Tool-specific display.
+

+Code Example

+

You can copy the code into a C-file and check the outcome in the uVision Editor.

+
//-------- <<< Use Configuration Wizard in Context Menu >>> -----------------
+
//
+
// <h>Thread Configuration
+
// =======================
+
//
+
// <o>Number of concurrent running threads <0-250>
+
// <i> Defines max. number of threads that will run at the same time.
+
// <i> Default: 6
+
#ifndef OS_TASKCNT
+
#define OS_TASKCNT 6
+
#endif
+
+
// <o>Default Thread stack size [bytes] <64-4096:8><#/4>
+
// <i> Defines default stack size for threads with osThreadDef stacksz = 0
+
// <i> Default: 200
+
#ifndef OS_STKSIZE
+
#define OS_STKSIZE 50
+
#endif
+
+
// <o>Main Thread stack size [bytes] <64-32768:8><#/4>
+
// <i> Defines stack size for main thread.
+
// <i> Default: 200
+
#ifndef OS_MAINSTKSIZE
+
#define OS_MAINSTKSIZE 50
+
#endif
+
+
// <o>Number of threads with user-provided stack size <0-250>
+
// <i> Defines the number of threads with user-provided stack size.
+
// <i> Default: 0
+
#ifndef OS_PRIVCNT
+
#define OS_PRIVCNT 0
+
#endif
+
+
// <o>Total stack size [bytes] for threads with user-provided stack size <0-1048576:8><#/4>
+
// <i> Defines the combined stack size for threads with user-provided stack size.
+
// <i> Default: 0
+
#ifndef OS_PRIVSTKSIZE
+
#define OS_PRIVSTKSIZE 0
+
#endif
+
+
// <q>Check for stack overflow
+
// <i> Includes the stack checking code for stack overflow.
+
// <i> Note that additional code reduces the Kernel performance.
+
#ifndef OS_STKCHECK
+
#define OS_STKCHECK 1
+
#endif
+
+
// <o>Processor mode for thread execution
+
// <0=> Unprivileged mode
+
// <1=> Privileged mode
+
// <i> Default: Privileged mode
+
#ifndef OS_RUNPRIV
+
#define OS_RUNPRIV 1
+
#endif
+
+
// </h>
+
+
// <h>RTX Kernel Timer Tick Configuration
+
// ======================================
+
// <q> Use Cortex-M SysTick timer as RTX Kernel Timer
+
// <i> Use the Cortex-M SysTick timer as a time-base for RTX.
+
#ifndef OS_SYSTICK
+
#define OS_SYSTICK 1
+
#endif
+
//
+
// <o>Timer clock value [Hz] <1-1000000000>
+
// <i> Defines the timer clock value.
+
// <i> Default: 12000000 (12MHz)
+
#ifndef OS_CLOCK
+
#define OS_CLOCK 12000000
+
#endif
+
+
// <o>Timer tick value [us] <1-1000000>
+
// <i> Defines the timer tick value.
+
// <i> Default: 1000 (1ms)
+
#ifndef OS_TICK
+
#define OS_TICK 1000
+
#endif
+
+
// </h>
+
+
// <h>System Configuration
+
// =======================
+
//
+
// <e>Round-Robin Thread switching
+
// ===============================
+
//
+
// <i> Enables Round-Robin Thread switching.
+
#ifndef OS_ROBIN
+
#define OS_ROBIN 1
+
#endif
+
+
// <o>Round-Robin Timeout [ticks] <1-1000>
+
// <i> Defines how long a thread will execute before a thread switch.
+
// <i> Default: 5
+
#ifndef OS_ROBINTOUT
+
#define OS_ROBINTOUT 5
+
#endif
+
+
// </e>
+
+
// <e>User Timers
+
// ==============
+
// <i> Enables user Timers
+
#ifndef OS_TIMERS
+
#define OS_TIMERS 1
+
#endif
+
+
// <o>Timer Thread Priority
+
// <1=> Low
+
// <2=> Below Normal <3=> Normal <4=> Above Normal
+
// <5=> High
+
// <6=> Realtime (highest)
+
// <i> Defines priority for Timer Thread
+
// <i> Default: High
+
#ifndef OS_TIMERPRIO
+
#define OS_TIMERPRIO 5
+
#endif
+
+
// <o>Timer Thread stack size [bytes] <64-4096:8><#/4>
+
// <i> Defines stack size for Timer thread.
+
// <i> Default: 200
+
#ifndef OS_TIMERSTKSZ
+
#define OS_TIMERSTKSZ 50
+
#endif
+
+
// <o>Timer Callback Queue size <1-32>
+
// <i> Number of concurrent active timer callback functions.
+
// <i> Default: 4
+
#ifndef OS_TIMERCBQS
+
#define OS_TIMERCBQS 4
+
#endif
+
+
// </e>
+
+
// <o>ISR FIFO Queue size<4=> 4 entries <8=> 8 entries
+
// <12=> 12 entries <16=> 16 entries
+
// <24=> 24 entries <32=> 32 entries
+
// <48=> 48 entries <64=> 64 entries
+
// <96=> 96 entries
+
// <i> ISR functions store requests to this buffer,
+
// <i> when they are called from the interrupt handler.
+
// <i> Default: 16 entries
+
#ifndef OS_FIFOSZ
+
#define OS_FIFOSZ 16
+
#endif
+
+
// </h>
+
+
//------------- <<< end of configuration section >>> -----------------------
+

+Tool-specific display

+

It is left to the development tool to interpret and display Configuration Wizard Annotations. The uVision IDE displays the code above in the following way:

+
+RTX_Conf_CM_Wizard_View.png +
+Configuration Wizard Display
+

Where

+

Option are device properties, which can be represented in a tree structure. Each item can have an explanatory tooltip.

+

Value sets the option value. Can contain controls to encapsulate data in predefined drop-down lists.

+
+
+ + + + diff --git a/docs/Pack/html/coresight_setup.html b/docs/Pack/html/coresight_setup.html new file mode 100644 index 0000000..f1a8733 --- /dev/null +++ b/docs/Pack/html/coresight_setup.html @@ -0,0 +1,132 @@ + + + + + +Debug Setup with CMSIS-Pack +CMSIS-Pack: Debug Setup with CMSIS-Pack + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-Pack +  Version 1.5.0 +
+
Delivery Mechanism for Software Packs
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Debug Setup with CMSIS-Pack
+
+
+

CMSIS-Pack offers two ways to simplify the debug setup:

+
    +
  • A Debug Description declares a set of standardized debug and trace methods are automatically executed by the debugger. Implementation-specific steps can be described using an XML syntax. This concept is easy to implement for basic chip configurations that mostly rely on a standard implementation of the CoreSight architecture. Most single-core devices should be able to be specified completely with debug descriptions.
  • +
  • For more complex topologies and multi-core devices, a System Description File helps debuggers to connect to the target and access all available cores via trace. An SDF file is more complex (although also specified in XML), but is also more flexible with regards to the underlying debug architecture.
  • +
+
+
+ + + + diff --git a/docs/Pack/html/coresight_setup.js b/docs/Pack/html/coresight_setup.js new file mode 100644 index 0000000..48f3476 --- /dev/null +++ b/docs/Pack/html/coresight_setup.js @@ -0,0 +1,36 @@ +var coresight_setup = +[ + [ "Debug Description", "debug_description.html", [ + [ "Concept", "debug_description.html#das_concept", null ], + [ "Debug description elements", "debug_description.html#das_elements", null ], + [ "Debug access sequences", "debug_description.html#pdsc_SequenceNameEnum_pg", null ], + [ "Usage of debug access sequences", "debug_description.html#usage_of_sequences", null ], + [ "Default debug access sequences", "debug_description.html#default_sequences", [ + [ "DebugPortSetup", "debug_description.html#debugPortSetup", null ], + [ "DebugPortStart", "debug_description.html#debugPortStart", null ], + [ "DebugPortStop", "debug_description.html#debugPortStop", null ], + [ "DebugCoreStart", "debug_description.html#debugCoreStart", null ], + [ "DebugCoreStop", "debug_description.html#debugCoreStop", null ], + [ "ResetSystem", "debug_description.html#resetSystem", null ], + [ "ResetProcessor", "debug_description.html#resetProcessor", null ], + [ "ResetHardware", "debug_description.html#resetHardware", null ], + [ "ResetHardwareAssert", "debug_description.html#resetHardwareAssert", null ], + [ "ResetHardwareDeassert", "debug_description.html#resetHardwareDeassert", null ], + [ "ResetCatchSet", "debug_description.html#resetCatchSet", null ], + [ "ResetCatchClear", "debug_description.html#resetCatchClear", null ] + ] ], + [ "Examples of non-standard debug access sequences", "debug_description.html#nonstdExamples", [ + [ "TraceStart", "debug_description.html#traceStart", null ], + [ "DebugDeviceUnlock", "debug_description.html#debugDeviceUnlock", null ], + [ "User-defined hardware reset sequence", "debug_description.html#hwReset", null ], + [ "Calling sequences in a control block", "debug_description.html#sequenceExample", null ] + ] ], + [ "Writing debug access sequences", "debug_description.html#writing_sequences", [ + [ "Debug access syntax rules", "debug_description.html#DebugSyntaxRules", null ], + [ "Expression rules", "debug_description.html#ExpressionType", null ], + [ "Debug access functions", "debug_description.html#DebugFunctions", null ], + [ "Debug access variables", "debug_description.html#DebugVars", null ], + [ "Using external tools", "debug_description.html#externalTools", null ] + ] ] + ] ] +]; \ No newline at end of file diff --git a/docs/Pack/html/cp_Editors.html b/docs/Pack/html/cp_Editors.html new file mode 100644 index 0000000..eb62eb2 --- /dev/null +++ b/docs/Pack/html/cp_Editors.html @@ -0,0 +1,134 @@ + + + + + +XML Editors +CMSIS-Pack: XML Editors + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-Pack +  Version 1.5.0 +
+
Delivery Mechanism for Software Packs
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
XML Editors
+
+
+

Some text editors are capable of verifying XML code against a schema file. This is helpful to identify syntactical or structural problems in a PDSC or SVD file early in the development process. Useful editors are:

+ +

Usually, the XML file that is to be validated and its corresponding schema file need to reside in the same directory. The CMSIS-Pack schema file Pack.xsd and the CMSIS-SVD schema file CMSIS-SVD.xsd are available in the directory .\CMSIS\Utilities of the ARM::CMSIS Pack.

+
+
+ + + + diff --git a/docs/Pack/html/cp_Packs.html b/docs/Pack/html/cp_Packs.html new file mode 100644 index 0000000..d730a8f --- /dev/null +++ b/docs/Pack/html/cp_Packs.html @@ -0,0 +1,236 @@ + + + + + +Software Packs Overview +CMSIS-Pack: Software Packs Overview + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-Pack +  Version 1.5.0 +
+
Delivery Mechanism for Software Packs
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Software Packs Overview
+
+
+

The CMSIS-Pack format is used to deliver a Software Pack and is aimed to be scalable for future requirements. It provides a management process and supports a tool independent distribution for:

+
    +
  • Device Support for tool chains and software applications to target a specific device:
      +
    • Information about the processor and it's features.
    • +
    • C and assembly files for the device startup and access to the memory mapped peripheral registers.
    • +
    • Parameters, technical information, and data sheets about the device family and the specific devices.
    • +
    • Device description and available peripherals.
    • +
    • Memory layout of internal and external RAM and ROM address ranges.
    • +
    • Flash algorithms for programming the device.
    • +
    • Debug and trace configurations as well as System View Description files for device specific display of the memory mapped peripheral registers.
    • +
    +
  • +
  • Board Support for rapid development in the prototyping stage:
      +
    • Information about the development board and it's features.
    • +
    • Parameters, technical information, and data sheets about the board, the mounted microcontroller and peripheral devices.
    • +
    • Drivers for on-board peripheral devices
    • +
    +
  • +
  • Software Components simplify the re-use of software and the management of 3rd party software. They contain:
      +
    • A collection of source modules, header and configuration files as well as libraries.
    • +
    • Documentation of the software, including features and APIs.
    • +
    +
  • +
  • Application Programming Interfaces specify one or more APIs for software components that are part of another Software Pack.
  • +
  • Example Projects can be used as a reference and starting point for similar applications. They contain:
      +
    • Fully defined application projects that work out of the box in the specified build and debug environments.
    • +
    • Documentation about the purpose of the example, how to build, configure and execute the application.
    • +
    +
  • +
  • User Code Templates help to understand the basic concepts of a software component better and to give the user a good starting point for implementing his application.
  • +
+

+Pack Conventions

+

A Software Pack is a collection of files located in directories that are archived in a file with the extension *.pack using the standard ZIP file format. The Pack Description file (PDSC) with the file extension *.pdsc contains the meta information, describing the content of a pack based on XML. The PDSC file must be:

+ +
Note
    +
  • The base folder is defined to be the root folder './' of a zip archive and it is imperative that the whole Software Pack only contains a single PDSC file.
  • +
  • Future tools shall support this case: if the PDSC file is located in an immediate subdirectory, then the subdirectory becomes the base folder. The Software Pack is installed as if the subdirectory does not exist. All files and directories located in the root folder are ignored and do not get installed.
  • +
+
+

+Pack File Name

+

A Software Pack must have a unique filename. Therefore it is constructed from vendor, packname and version and the file extension *.pack.

+

<vendor>.<name>.<version>.pack.

+

Where:

+
    +
  • <vendor> is the name of the supplier or vendor of the Software Pack.
  • +
  • <name> is the name of the Software Pack. All packs that are published by a vendor must have a unique packname.
  • +
  • <release version="X.Y.Z">specifies the version number of the release for the Software Pack.
  • +
  • .pack is the file extension identifying a Software Pack.
  • +
+
Note
    +
  • The XML elements <vendor>, <name>, and the version attribute of the <release> are specified in the PDSC file. PDSC, Pack filenames are case sensitive and need to match exactly.
  • +
  • <vendor> and <name> must not contain spaces.
  • +
  • The PDSC file needs to reside in the base folder of the Pack. All file references are relative to the location of the PDSC file.
  • +
+
+

+Software Component Cclasses

+

If you add a software component in the PDSC file, you have to specify a component class (CClass), component group (Cgroup), and the component's version number (Cversion). For more information refer to Software Components.

+

If applicable, try to map the Cclass of your software component to one of the following predefined or already well established classes:

+
    +
  • Board Support: Generic interfaces for evaluation and development boards
  • +
  • CMSIS: Cortex Microcontroller Software Interface Standard components
  • +
  • CMSIS Driver: Unified device drivers compliant to the CMSIS-Driver specification
  • +
  • Compiler: Arm Compiler software extensions
  • +
  • Data Exchange: Software components for data exchange
  • +
  • Device: Startup and system setup components
  • +
  • File System*: File drive support and file system
  • +
  • Graphics*: Graphical libraries for user interfaces
  • +
  • Network*: Network stack using Internet protocols
  • +
  • RTOS*: Real-time operating systems
  • +
  • Safety: Components for testing application software against safety standards
  • +
  • Security*: Encryption for secure communication or storage
  • +
  • USB*: Universal Serial Bus stack
  • +
  • Wireless*: Communication stacks such as Bluetooth, WiFi, and ZigBee
  • +
+

Classes with a * should always be used together with a bundle to avoid conflicts with other software components.

+

If you wish to standardize a new Cclass, please send an inquiry to cmsis.nosp@m.@arm.nosp@m..com or raise an issue on the public CMSIS GitHub development repository.

+

+Steps to Create a Pack

+

The following image shows the basic steps that are required to create a Software Pack:

+
+PackCreateSteps.png +
+
    +
  1. Produce input: Create the files that will be delivered with the Pack.
  2. +
  3. Organize files: Use directories to separate the content of the Pack.
  4. +
  5. Create PDSC file: The XML based PDSC file can be created using any text editor. Editors that can validate XML code against a schema file help to find bugs early in the Pack development stage.
  6. +
  7. Generate Pack: Any compression tool supporting the ZIP format can be used to create a Pack file. packChk.exe is helpful for the validation of the contents of a Pack.
  8. +
+

The following pages will show how to create a Software Pack from scratch. The page Pack with Software Components will start with a simple Pack containing only the PDSC file and a single software component and will then explain further elements of a Pack in more detail. The page Pack with Device Support adds information on the additional requirements that a DFP has, while Pack with Board Support will elaborate on the content specific to a BSP.

+

+Pack Tutorial

+

The ARM::CMSIS Pack contains tutorials that are explained on the following pages. In the \CMSIS\Pack\Tutorials directory the following three ZIP files are available:

+ + + + + + + + + +
ZIP File Documentation
Pack_with_Software_Components.zip Pack with Software Components
Pack_with_Device_Support.zip Pack with Device Support
Pack_with_Board_Support.zip Pack with Board Support
+
+
+ + + + diff --git a/docs/Pack/html/cp_SWComponents.html b/docs/Pack/html/cp_SWComponents.html new file mode 100644 index 0000000..0783053 --- /dev/null +++ b/docs/Pack/html/cp_SWComponents.html @@ -0,0 +1,538 @@ + + + + + +Pack with Software Components +CMSIS-Pack: Pack with Software Components + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-Pack +  Version 1.5.0 +
+
Delivery Mechanism for Software Packs
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Pack with Software Components
+
+
+

This section is a tutorial that explains how to create a Software Pack. Initially, a Software Pack with a simple PDSC file is created that contains only one software component. This Software Pack is then extended to show the various features for describing software components.

+

Preparations

+
    +
  1. Create a working directory on you PC, for example C:\temp\working.
  2. +
  3. Go to the directory \CMSIS\Pack\Tutorials available in the ARM::CMSIS Pack installation. Please consult your development tool's documentation for more information on the Pack installation directory structure. In a standard µVision installation, you will find it below C:\Keil_v5\ARM\Pack\ARM\CMSIS\version.
  4. +
  5. Open the file Pack_with_Software_Components.zip.
  6. +
  7. Copy the content of the ZIP file's 01_Create_PDSC directory into your working directory.
  8. +
  9. Make sure that files/directories are not write protected (remove read-only flag).
  10. +
  11. Copy from the directory \CMSIS\Utilities available in the ARM::CMSIS Pack installation the following files into your working directory:
      +
    • PackChk.exe
    • +
    • PACK.xsd
    • +
    +
  12. +
+

+Create PDSC File

+
    +
  1. +

    Open the file vendor.pack_name.pdsc in an editor and change it like this:

    +
    <?xml version="1.0" encoding="UTF-8"?>
    +
    <package schemaVersion="1.4" xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:noNamespaceSchemaLocation="PACK.xsd">
    +
    <vendor>MyVendor</vendor>
    +
    <name>MyPack</name>
    +
    <description>Internal Software Pack</description>
    +
    <url></url>
    +
    <supportContact></supportContact>
    +
    <license>Docs/license.txt</license>
    +
    Note
    All code examples in this and the following sections can be found in the snippets.xml file in the 01_Create_PDSC directory.
    +

    A PDSC file starts with information on the XML version and the encoding. The <package> element declares the version of the schema file and the XSD file that is used to validate the PDSC file (hence the copy of the PACK.xsd file into the working directory):

    +
      +
    • <name> specifies the name of the Pack and must not contain spaces. Example: MyPack and My_Pack are ok, My Pack is not ok.
    • +
    • <description> describes the Pack in a few words
    • +
    • <vendor> states the name of the Pack's vendor and must not contain spaces. Example: ACMECorp and ACME_Corp are OK, ACME Corporation is not OK.
    • +
    • <url> defines the download URL of the Pack (may be left empty)
      Note
        +
      • In this tutorial, the URL is not specified. This means that the Pack will be marked in Pack Installer as Offline and needs to be updated manually. To resolve this issue, it is possible to specify the file "download" location using a file URI. For Windows users, this would look like the following:
              <url>file:///c:/temp/working</url>
      • +
      • It is important to understand how the <url> element works. If you specify a URL, for example http://www.keil.com/pack, then you have to make the PDSC file and the corresponding Pack file(s) available for download at that exact location. The naming of the files follow the standard naming rules. For example, the ARM::CMSIS PDSC and Pack files are available here:
        + http://www.keil.com/pack/ARM.CMSIS.pdsc and
        + http://www.keil.com/pack/ARM.CMSIS.4.3.0.pack and
        + http://www.keil.com/pack/ARM.CMSIS.4.2.0.pack and ...
        + At the specified location, you need to have one (unversioned) PDSC file and can have multiple versioned Pack files, but at least the latest one.
      • +
      +
      +
    • +
    • <supportContact> may provide an email address or web page URL for Pack specific questions/problems
    • +
    • <license> links to an optional license file that will be shown during the installation of the Pack. The installation in development tools will abort if the license agreement is not accepted.
    • +
    +
  2. +
  3. +

    Add release information and keywords:

    +
    <releases>
    +
    <release version="1.0.0" date="2015-03-09">
    +
    Initial version
    +
    </release>
    +
    </releases>
    +
    +
    <keywords>
    +
    <keyword>MyVendor</keyword>
    +
    <keyword>My Software Component</keyword>
    +
    </keywords>
    +

    The information from the <releases> section will be used for:

    +
      +
    • Determining the Pack version (required for the file name of the Pack file)
    • +
    • Display of release information
    • +
    +

    <keywords> may be used for better visibility for search engines.

    +
  4. +
  5. +Add a <components> section with the following:
    <components>
    +
    <component Cclass="MyClass" Cgroup="MyGroup" Csub="MySubGroup" Cversion="1.0.0">
    +
    <description>MySWComp</description>
    +
    <files>
    +
    <file category="doc" name="Docs/MySWComp.htm"/>
    +
    <file category="header" name="MySWComp/header_mylib.h"/>
    +
    <file category="header" name="MySWComp/config/config_mylib.h" attr="config" version="1.0.0"/>
    +
    <file category="source" name="MySWComp/mylib_one.c"/>
    +
    <file category="source" name="MySWComp/mylib_two.c"/>
    +
    </files>
    +
    </component>
    +
    </components>
    +
    Note
    If you are using a header file with the attribute config, save it in a separate directory from all other header files as in this example. Configuration files are copied into the project folder and are adopted specifically for that project but chances are that due to the include path search order of the compiler, the unmodified header file in the pack repository is found first and used by the compiler (creating unexpected results).
    +More information on <components> will be given in section Software Components. Save the file and close your editor. In the next section, the generation of a Pack will be explained in detail.
  6. +
+

+Generate a Pack

+
    +
  1. +Rename the file vendor.pack_name.pdsc to MyVendor.MyPack.pdsc.
  2. +
  3. +Open the batch file gen_pack.bat from your working directory in a text editor. Check if the following line of code reflects your setup:
    "C:\Program Files\7-Zip\7z.exe" a %PackName% Files -tzip
    +
    If you do not have 7-Zip installed on your PC, you can specify any other ZIP tool that supports command line calls. In that case you have to adapt the command line arguments accordingly.
  4. +
  5. +Having saved gen_pack.bat, you can execute it either by double-clicking or by using the command line which is recommended to see the output of PackChk.exe (open a command window at the location of the files and enter gen_pack.bat). The batch file will:
      +
    • Check the availability of the PDSC file
    • +
    • Copy the PDSC file to the Files directory
    • +
    • Run PackChk.exe on the Files directory
      +
    • +
    • Create a Pack file in the working directory. It will be called MyVendor.MyPack.1.0.0.pack.
    • +
    +
  6. +
  7. +

    Install the Pack by double-clicking it. Depending on the development software that is used, the display of the Pack contents may differ:

    +
    +simplepack_rte.png +
    +MyClass:MyGroup:MySubGroup shown in development tool
    +
  8. +
+

+Software Components

+

A component lists the files that belong to it and that are relevant for a project. The component itself or each individual file may refer to a condition that must resolve to true; if it is false, the component or file is not applicable in the given context.

+

Each software components must have the following attributes that are used to identify the component:

+
    +
  • Component Class (Cclass): examples are CMSIS, Device, File System
  • +
  • Component Group (Cgroup): examples are CMSIS:RTOS, Device:Startup, File System:CORE
  • +
  • Component Version (Cversion): the version number of the software component.
  • +
+

Optionally, a software component may have additional attributes:

+
    +
  • Component Sub-Group (Csub): examples are CMSIS:RTOS:MyRTOS, Device:Driver USBD:Full-speed
  • +
  • Component Variant (Cvariant): a variant of the software component.
  • +
  • Component Vendor (Cvendor): the supplier of the software component.
  • +
+

The Cclass, Cgroup, Csub, Cvariant and Cversion attributes are used together with the vendor specified by the Pack to identify a component. A component vendor must ensure that the combination Cclass, Cgroup, Csub and Cversion is unique and not used by multiple components within the same Pack.

+

For a list of established Cclasses, refer to Software Component Cclasses.

+

In case multiple interdependent components (belonging to the same Cclass) form part of a solution, these can be grouped in a so called bundle.

+

Use the following syntax to reference to software components and APIs:
+<Vendor>::<Cclass>:<Cgroup>:<Csub>

+

Examples:

+
    +
  • ::CMSIS:RTOS (API) - the CMSIS-RTOS API.
  • +
  • ARM::CMSIS:DSP - the CMSIS-DSP Library.
  • +
  • ::File System:Drive:NOR - the NOR Flash Drive of a file system.
  • +
+

Here is an example for the display of software components in a development tool:

+
+ComponentDisplay.png +
+Display of a software component in development tools
+

Software Component Files

+

Each software component consists of a certain number of files. Each file has at least the following attributes:

+
    +
  • name: File path, file name, and file extension in the format path/name.extension. The file path is relative to the root directory of the Pack.
  • +
  • category: Defines the purpose of the file. Select the predefined value as listed in the table File Categories.
  • +
+

Optionally, every file may have the following attributes:

+
    +
  • attr: Defines the special use and handling of a file. Select a predefined value as defined in the table File Attributes.
  • +
  • condition: Enter the identifier (attribute id) of a condition. The element is used if the condition resolves to true.
  • +
  • select: Brief description and purpose of the file. The select attribute is required when attr is set to template or interface. When multiple template files of a component have the same select string, they are treated as a single selectable template. This way, multiple template or interface files can be bundled.
  • +
  • src: Path information. The path is specified relative to the Pack Description File (PDSC).
  • +
  • version: File-specific version information. This is used particularly for files copied into the project workspace. Before a file gets copied, a version check avoids unnecessary copy actions. If a file does not have a version, then the component version is used.
  • +
+

+Conditions

+

A condition describes dependencies on:

+
    +
  • a specific device
  • +
  • a certain processor
  • +
  • tool attributes
  • +
  • the presence of other components
  • +
+

Conditions are used to define AND/OR rules that make components conditional and therefore only available under certain circumstances, for example for specific devices or processors. Conditions are also used to express dependencies between software components.

+

Each condition has an id that is unique within the scope of a the PDSC file. An id can be referenced in the condition attribute of components, APIs, examples, files and other conditions. All attributes set in a accept, require, or deny element must resolve to true for the element to become true. A condition becomes true when:

+
    +
  • At least one accept element is true, AND
  • +
  • all require elements are true, AND
  • +
  • no deny element is true.
  • +
+

If a condition resolves to false during processing, the respective element will be ignored.

+

Let's modify the example from the Create PDSC File section by adding the requirement for a CMSIS-RTOS and libraries that are specific to a certain Cortex-M class core:

+
    +
  • mylib_cm0.lib for use with a Cortex-M0 and Cortex-M0+ processor
  • +
  • mylib_cm3.lib for use with a Cortex-M3 processor
  • +
  • mylib_cm4.lib for use with a Cortex-M4 or Cortex-M7 processor
  • +
+

Copy the content of the 02_Conditions directory of the Pack_with_Software_Components.zip file to the Files directory in your working environment:

+
    +
  1. +Add a <conditions> section with the following:
    <conditions>
    +
    <condition id="ARM Compiler">
    +
    <require Tcompiler="ARMCC"/>
    +
    </condition>
    +
    <condition id="CM0">
    +
    <description>Cortex-M0 based device</description>
    +
    <require condition="ARM Compiler"/>
    +
    <accept Dcore="Cortex-M0"/>
    +
    <accept Dcore="Cortex-M0+"/>
    +
    </condition>
    +
    <condition id="CM3">
    +
    <description>Cortex-M3 based device</description>
    +
    <require condition="ARM Compiler"/>
    +
    <accept Dcore="Cortex-M3"/>
    +
    </condition>
    +
    <condition id="CM4_CM7">
    +
    <description>Cortex-M4 based device</description>
    +
    <require condition="ARM Compiler"/>
    +
    <accept Dcore="Cortex-M4"/>
    +
    <accept Dcore="Cortex-M7"/>
    +
    </condition>
    +
    <condition id="CMSIS Core with RTOS">
    +
    <description>CMSIS Core with RTOS for Cortex-M processor</description>
    +
    <accept condition="CM0"/>
    +
    <accept condition="CM3"/>
    +
    <accept condition="CM4_CM7"/>
    +
    <require Cclass="CMSIS" Cgroup="Core"/>
    +
    <require Cclass="CMSIS" Cgroup="RTOS"/>
    +
    </condition>
    +
    </conditions>
    +
  2. +
  3. +Change the first line of the already existing component by adding the condition and increasing the version number of the component:
    <component Cclass="MyClass" Cgroup="MyGroup" Csub="MySubGroup" Cversion="1.0.1" condition="CMSIS Core with RTOS">
    +
  4. +
  5. +Add the following code to the already existing component:
    <file category="library" condition="CM0" name="MySWComp/Lib/mylib_cm0.lib"/>
    +
    <file category="library" condition="CM3" name="MySWComp/Lib/mylib_cm3.lib"/>
    +
    <file category="library" condition="CM4_CM7" name="MySWComp/Lib/mylib_cm4.lib"/>
    +
    Note that library files should always have a condition with regards to a specific C/C++ compiler. To accomplish this, each processor condition has the additional requirement for the Arm C/C++ compiler.
  6. +
  7. +Add a new version number to the header of the PDSC file so that a Pack with a new version number will be created:
    <release version="1.0.1">
    +
    Conditions added
    +
    </release>
    +
  8. +
  9. +

    Finally, save the PDSC file and regenerate the Pack file using the gen_pack.bat script. See Generate a Pack for further details. Afterwards, install the Pack in your development tool and observe the differences to version 1.0.0.

    +
    +ConditionsDisplay.png +
    +Display of conditionally added files for a Cortex-M3 device in development tools
    +
  10. +
+
Note
PackChk.exe will will now display an M362 warning:
WARNING M362: (Line 80)
+
Not all Component Dependencies for 'Cclass=MyClass, Cgroup=MyGroup, Csub=MySubGroup, Cversion=1.0.1, Capiversion=' can be resolved.
+
M502: RTE Model reports: #error 511: MyVendor::MyClass:MyGroup:MySubGroup : Additional software components required
+
M504: RTE Model reports: MISSING: -- require CMSIS:CORE
+
M504: RTE Model reports: MISSING: -- require CMSIS:RTOS
+
This is because it cannot resolve and check dependencies on components that are not part of this Pack (in this case the CMSIS components CORE and RTOS). You can either safely ignore these warnings or include the ARM.CMSIS.pdsc in the checking process, so that the correctness of the references to the CMSIS pack can be validated.
PackChk.exe <InFile.pdsc> -i <path to installed CMSIS pack>\ARM.CMSIS.pdsc
+
+

+Variants

+

Software components may have variants, for example:

+
    +
  • Debug version with or release version without diagnostic output
  • +
  • Long/short file names
  • +
  • Fast/slow modes
  • +
+

Variants are mutually exclusive (only one variant can be chosen at a time). Cvariant is an optional part of the component ID. The variant specifier is a brief string (e.g. release, debug).

+
Note
Version management relies on variants to remain unchanged between versions.
+

The following example introduces a new component to the Pack in two variants: debug and release. Copy the content of the 03_Variants directory of the Pack_with_Software_Components.zip file to the Files directory in your working environment.

+
    +
  1. +Add the following lines to the components section in your PDSC file:
    <component Cclass="MyVariant" Cgroup="MyGroup" Cvariant="Release" Cversion="1.0.2" condition="CMSIS Core with RTOS">
    +
    <description>Release version of MyVariant</description>
    +
    <RTE_Components_h>
    +
    <!-- the following content goes into file 'RTE_Components.h' -->
    +
    #define RTE_MyVariant_Release /* MyVariant Release Version */
    +
    </RTE_Components_h>
    +
    <files>
    +
    <file category="doc" name="Docs/MySWComp.htm"/>
    +
    <file category="header" name="MySWComp/header_mylib.h"/>
    +
    <file category="header" name="MySWComp/config/config_mylib.h" attr="config" version="1.0.0"/>
    +
    <file category="source" name="MySWComp/mylib_one.c"/>
    +
    <file category="source" name="MySWComp/mylib_two.c"/>
    +
    <file category="library" condition="CM0" name="MySWComp/Lib/mylib_cm0.lib"/>
    +
    <file category="library" condition="CM3" name="MySWComp/Lib/mylib_cm3.lib"/>
    +
    <file category="library" condition="CM4_CM7" name="MySWComp/Lib/mylib_cm4.lib"/>
    +
    </files>
    +
    </component>
    +
    <component Cclass="MyVariant" Cgroup="MyGroup" Cvariant="Debug" Cversion="1.0.2" condition="CMSIS Core with RTOS">
    +
    <description>Debug version of MyVariant</description>
    +
    <RTE_Components_h>
    +
    <!-- the following content goes into file 'RTE_Components.h' -->
    +
    #define RTE_MyVariant_Debug /* MyVariant Debug Version */
    +
    </RTE_Components_h>
    +
    <files>
    +
    <file category="doc" name="Docs/MySWComp.htm"/>
    +
    <file category="header" name="MySWComp/header_mylib.h"/>
    +
    <file category="header" name="MySWComp/config/debug_config_mylib.h" attr="config" version="1.0.0"/>
    +
    <file category="source" name="MySWComp/debug_mylib_one.c"/>
    +
    <file category="source" name="MySWComp/debug_mylib_two.c"/>
    +
    <file category="library" condition="CM0" name="MySWComp/Lib/debug_mylib_cm0.lib"/>
    +
    <file category="library" condition="CM3" name="MySWComp/Lib/debug_mylib_cm3.lib"/>
    +
    <file category="library" condition="CM4_CM7" name="MySWComp/Lib/debug_mylib_cm4.lib"/>
    +
    </files>
    +
    </component>
    +
  2. +
  3. +Add a new revision to reflect the changes in a newly generated Pack:
    <release version="1.0.2">
    +
    Variants introduced
    +
    </release>
    +
  4. +
  5. +

    Finally, save the PDSC file and regenerate the Pack file using the gen_pack.bat script. See Generate a Pack for further details. Afterwards, install the Pack in your development tool and observe the differences to version 1.0.1.

    +
    +VariantDisplay.png +
    +Display of MyVariant in development tools
    +
  6. +
+

+RTE_Components.h

+

Sometimes, software components need to know of other components. Depending on the availability or configuration of another component, certain settings may be required. A distinct header file is available to make components aware of each other: RTE_Components.h. To add a line of C code to this header file, simply add this to your component:

+
<RTE_Components_h>
+  #define RTE_MyVariant_Debug               /* MyVariant Debug Version */
+</RTE_Components_h>
+

The #define can be checked by other components in a project.

+
Note
The RTE_components.h file needs to be included somewhere in your source files. Refer to RTE_Components.h for more information.
+

+Bundles

+

A bundle is basically a variant on the Cclass level. It specifies the attributes Cclass, Cversion and optionally Cgroup and Cvendor for a collection of interdependent components. Components within a bundle inherit the attributes set by the bundle and must not set these attributes again. Bundles ensure consistency of attributes across multiple interworking components and restrict the mix and match of components within a Cclass from different solutions. In addition to components, a bundle has the mandatory elements description and doc (for documentation).

+

An example of a bundle is shown in the Create a BSP Bundle section where the bundle is used to deliver board support files for a certain development platform.

+

+Instances

+

Some software components allow several instances. This is useful if more than one peripheral can be connected.

+
    +
  1. +Adding the information about a maximum number of instances is easy. Change the first component (::MyClass:MyGroup:MySub) as follows:
    <component Cclass="MyClass" Cgroup="MyGroup" Csub="MySubGroup" Cversion="1.0.3" condition="CMSIS Core with RTOS" maxInstances="3">
    +
  2. +
  3. +Add a new version number:
    <release version="1.0.3">
    +
    Maximum number of instances specified
    +
    </release>
    +
  4. +
  5. +

    Finally, save the PDSC file and regenerate the Pack file using the gen_pack.bat script. See Generate a Pack for further details. Afterwards, install the Pack in your development tool and observe the differences to version 1.0.2. When selecting a certain number of instances of the component, causes the development tool to copy the required configuration files multiple times into the project. This ensures that each component instance can be configured separately.

    +
    +maxInstancesDisplay.png +
    +Display of component instances in development tools
    +
  6. +
+

+API Interface

+

An API is a special form of a software component that only defines a C/C++ Application Programming Interface (API). An API does not contain the actual implementation (usually provided by source code or library files) and cannot be selected in a development tool. One example is the CMSIS-RTOS API, which is specified as part of CMSIS. However, the actual RTOS implementation is provided by different vendors. An API consists of a name, a brief description as well as one or more header files, and a document containing a detailed specification of the API.

+

Copy the content of the 05_APIs directory of the Pack_with_Software_Components.zip file to the Files directory in your working environment:

+
    +
  1. +Add a <apis> section with the following:
    <api Cclass="Device" Cgroup="MyAPI" exclusive="0">
    +
    <description>API for MyAPI</description>
    +
    <files>
    +
    <file category="doc" name="Docs/API/MyAPI.htm"/>
    +
    <file category="header" name="API/Include/MyAPI.h"/>
    +
    </files>
    +
    </api>
    +
  2. +
  3. +Add a new version number:
    <release version="1.0.4">
    +
    MyAPI added
    +
    </release>
    +
  4. +
  5. +Finally, save the PDSC file and regenerate the Pack file using the gen_pack.bat script. See Generate a Pack for further details. Afterwards, install the Pack in your development tool and observe the differences to version 1.0.3. Most likely, you will see none as APIs are not selectable and are thus not displayed in the tools.
  6. +
+

+User Code Templates

+

User code templates provide a quick start for implementing an application. To add user code templates, add source files with the attribute attr=“template” in a <component>. The select attribute is used to identify template files. Template files with the same select attribute will be added to a project simultaneously.

+

Copy the content of the 06_User_Code_Templates directory of the Pack_with_Software_Components.zip file to the Files directory in your working environment:

+
    +
  1. +Add the following code to both variants (debug and release) of the ::MyVariant:MyGroup component:
    <file category="source" name="MySWComp/Templates/mylib_template1.c" attr="template" select="Easy Template"/>
    +
    <file category="source" name="MySWComp/Templates/mylib_template2.c" attr="template" select="Complex Template"/>
    +
    <file category="source" name="MySWComp/Templates/mylib_template3.c" attr="template" select="Complex Template"/>
    +
  2. +
  3. +Add a new version number:
    <release version="1.0.5">
    +
    User Code Templates added
    +
    </release>
    +
  4. +
  5. +

    Finally, save the PDSC file and regenerate the Pack file using the gen_pack.bat script. See Generate a Pack for further details. Afterwards, install the Pack in your development tool and observe the differences to version 1.0.4.

    +
    +UserCodeTemplatesDisplay.png +
    +Display of user code templates in development tools
    +
  6. +
+

+Example Projects

+

Example projects help to understand a certain MCU or development board better. An example and each individual file of it may refer to a condition that must resolve to true; if it is false, the example or file will be ignored. The board element is used to reference to one or more board descriptions using the board vendor and name an example is targeted for. Each example can specify attributes listing related components using Cclass, Cgroup, Csub and Cversion. The <project> element contains the names of the supported development tools and the project files to be loaded.

+

Copy the content of the 07_Example_Projects directory of the Pack_with_Software_Components.zip file to the Files directory in your working environment:

+
    +
  1. +Add an <examples> section with the following:
    <examples>
    +
    <example name="MyDevBoard Example" doc="Abstract.txt" folder="MyPackExample">
    +
    <description>CMSIS-RTOS based example</description>
    +
    <board name="MyDevBoard" vendor="MyVendor"/>
    +
    <project>
    +
    <environment name="uv" load="MyPackExample.uvprojx"/>
    +
    </project>
    +
    <attributes>
    +
    <component Cclass="CMSIS" Cgroup="Core"/>
    +
    <component Cclass="Device" Cgroup="Startup"/>
    +
    <component Cclass="CMSIS" Cgroup="RTOS"/>
    +
    <component Cclass="MyVariant" Cgroup="MyGroup"/>
    +
    </attributes>
    +
    </example>
    +
    </examples>
    +
  2. +
  3. +Add a new version number:
    <release version="1.0.6">
    +
    Example project added
    +
    </release>
    +
  4. +
  5. +

    Finally, save the PDSC file and regenerate the Pack file using the gen_pack.bat script. See Generate a Pack for further details. Afterwards, install the Pack in your development tool and observe the differences to version 1.0.5.

    +
    +ExampleDisplay.png +
    +Display of example projects in development tools
    +
  6. +
+

Example projects rely on a development board to be present (as the code needs to run on real hardware). In the code above you will notice that a development board called "MyDevBoard" was specified. Pack with Board Support explains how to integrate boards into a Pack.

+
+
+ + + + diff --git a/docs/Pack/html/cp_ZIPTool.html b/docs/Pack/html/cp_ZIPTool.html new file mode 100644 index 0000000..ea57c45 --- /dev/null +++ b/docs/Pack/html/cp_ZIPTool.html @@ -0,0 +1,130 @@ + + + + + +ZIP Compression Tools +CMSIS-Pack: ZIP Compression Tools + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-Pack +  Version 1.5.0 +
+
Delivery Mechanism for Software Packs
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
ZIP Compression Tools
+
+
+

Any ZIP software utility supporting the compression method DEFLATE can be used to create a Pack file. Simply, create the ZIP file and rename it to *.pack.

+

The compression tool 7-Zip supports command line calls and can be used in batch scripts like gen_pack.bat for automated Pack file creation (and verification with packChk.exe). Installers for 7-Zip are available for 32-bit and 64-bit Windows operating systems.

+
+
+ + + + diff --git a/docs/Pack/html/cpdsc_pg.html b/docs/Pack/html/cpdsc_pg.html new file mode 100644 index 0000000..d650397 --- /dev/null +++ b/docs/Pack/html/cpdsc_pg.html @@ -0,0 +1,753 @@ + + + + + +Project Description (*.cpdsc) Format +CMSIS-Pack: Project Description (*.cpdsc) Format + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-Pack +  Version 1.5.0 +
+
Delivery Mechanism for Software Packs
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Project Description (*.cpdsc) Format
+
+
+

The CPDSC format provides the XML elements for defining CMSIS software projects. The CPDSC file content is considered static, so you do not have to keep the projects synchronized.

+

The scope of the description includes:

+
    +
  • CMSIS Run-Time Environment configuration (RTE)
  • +
  • Project build, including linker script generation
  • +
  • Flash programming
  • +
  • Basic configuration of debug probs
  • +
+

The project format creates a basic project configuration and does not reflect tool-specific features or configurations. The import and conversion from the CPDSC format into a toolchain-specific format is the responsibility of the tool vendor.

+

+Definition of CMSIS project

+

A CMSIS software project is a collection of files in a directory structure. The CPDSC file is located in the base folder of the directory structure. Only one CPDSC file is allowed. A CPDSC file can describe one or more projects.

+

Example CMSIS Project Description File (*.cpdsc):

+
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+
<package xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="PACK.xsd">
+
<vendor>Keil</vendor>
+
<name>STM32F407_Flash</name>
+
<description>CMSIS RTOS Blinky for STM32F407 microcontroller using Keil 'MCBSTM32F400 Evaluation Board.</description>
+
<url>www.keil.com/pack/Keil.STM32F4xx_DFP.pdsc</url>
+
+
<releases>
+
<release version="5.25.1">Generated 2018-02-20T09:10:26</release>
+
</releases>
+
+
<requirements>
+
<packages>
+
<package name="CMSIS" vendor="ARM"/>
+
<package name="MDK-Middleware" vendor="Keil"/>
+
<package name="STM32F4xx_DFP" vendor="Keil"/>
+
</packages>
+
</requirements>
+
+
<create>
+
<project>
+
<target Ddsp="NO_DSP" Dendian="Little-endian" Dfpu="SP_FPU" Dname="STM32F407IGHx" Dtz="NO_TZ" Dvendor="STMicroelectronics:13">
+
<output debug="1" name="Blinky" type="exe"/>
+
<debugProbe coreClock="10000000" name="ULINK2" protocol="swd"/>
+
<memory access="rx" default="1" name="IROM1" size="0x100000" start="0x8000000" startup="1"/>
+
<memory access="rw" default="1" init="1" name="IRAM1" size="0x20000" start="0x20000000"/>
+
<memory access="rw" default="0" init="1" name="IRAM2" size="0x10000" start="0x10000000"/>
+
</target>
+
<select>
+
<component Cclass="CMSIS" Cgroup="CORE" Cvendor="ARM"/>
+
<component Cclass="CMSIS" Cgroup="RTOS" Csub="Keil RTX" Cvendor="ARM">
+
<file attr="config" category="source" name="CMSIS/RTOS/RTX/Templates/RTX_Conf_CM.c" version="4.70.1"/>
+
</component>
+
<component Cbundle="MCBSTM32F400" Cclass="Board Support" Cgroup="A/D Converter" Cvendor="Keil"/>
+
<component Cbundle="MCBSTM32F400" Cclass="Board Support" Cgroup="Buttons" Cvendor="Keil"/>
+
<component Cbundle="MCBSTM32F400" Cclass="Board Support" Cgroup="LED" Cvendor="Keil"/>
+
<component Cclass="Device" Cgroup="STM32Cube Framework" Csub="Classic" Cvendor="Keil">
+
<file attr="config" category="header" name="CMSIS/Driver/Config/RTE_Device.h" version="2.4.4"/>
+
<file attr="config" category="header" name="MDK/Templates/Inc/stm32f4xx_hal_conf.h" version="1.6.0"/>
+
</component>
+
<component Cclass="Device" Cgroup="STM32Cube HAL" Csub="ADC" Cvendor="Keil"/>
+
<component Cclass="Device" Cgroup="STM32Cube HAL" Csub="Common" Cvendor="Keil"/>
+
<component Cclass="Device" Cgroup="STM32Cube HAL" Csub="Cortex" Cvendor="Keil"/>
+
<component Cclass="Device" Cgroup="STM32Cube HAL" Csub="DMA" Cvendor="Keil"/>
+
<component Cclass="Device" Cgroup="STM32Cube HAL" Csub="GPIO" Cvendor="Keil"/>
+
<component Cclass="Device" Cgroup="STM32Cube HAL" Csub="PWR" Cvendor="Keil"/>
+
<component Cclass="Device" Cgroup="STM32Cube HAL" Csub="RCC" Cvendor="Keil"/>
+
<component Cclass="Device" Cgroup="Startup" Cvendor="Keil">
+
<file attr="config" category="source" condition="STM32F407xx_ARMCC" name="Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/arm/startup_stm32f407xx.s" version="2.6.0"/>
+
<file attr="config" category="source" name="Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.c" version="2.6.0"/>
+
</component>
+
</select>
+
<files>
+
<group name="Source Files">
+
<file category="sourceC" name="./Blinky.c"/>
+
<file category="sourceC" name="./Thread_LED.c"/>
+
<file category="sourceC" name="./Thread_ADC.c"/>
+
</group>
+
<group name="Documentation">
+
<file category="doc" name="./Abstract.txt"/>
+
</group>
+
</files>
+
</project>
+
</create>
+
</package>
+

+CPDSC top level structure

+

The CPDSC file format shares the schema file (PACK.xsd) with the PDSC and GPDSC format. However, a CPDSC file can only contain the top level elements listed in this table.

+

+/package (for CPDSC)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Parents Element Chain
root description root point for CPDSC
Attributes Description Type Use
schemaVersion Version of PACK.xsd the description is compatible with VersionType required
Child Elements Description Type Occurrence
name Name of the CPDSC Software Pack file. Could be displayed by an installer. RestrictedString 1..1
vendor Creator or owner of the CPDSC file. RestrictedString 1..1
description High level description of the projects. xs:string 1..1
url File location if generated, link to the Pack this file belongs to. If left empty, the Pack cannot be updated automatically from a server location. xs:anyURI 1..1
supportContact Email or web page for reporting errors or problems related to this project. xs:string 0..1
license Reference to a license file relative to this CPDSC. xs:string 0..1
requirements Specify required packs, compiler, and programming languages for the project. RequirementsType 1..1
create Section capturing the project configuration. CreateType 1..1
releases Release history and release notes for tracking changes to this project. The attributes <deprecated> and <replacement> are not supported in the context of CPDSC files. ReleasesType 1..1
+

You can refer to /package for more details.

+

 

+
+

+/package/create

+

This element groups one or more projects, which should be related. For example, the Secure and Non-secure part of an application, or a set of library projects and the final application project. We recommend to use different CPDSC files for each individual project.

+ + + + + + + + + +
Parents Element Chain
package /package
Child Elements Description Type Occurrence
project Grouping element to add project descriptions ProjectType 1..*
+

 

+
+

+/package/create/project

+

This element bundles one project.

+

Example project section:

+
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+
<package xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="PACK.xsd">
+
...
+
<create>
+
<project name="STM32F429_Flash" documentation="./Abstract.txt">
+
<target Dendian="Little-endian" Dfpu="SP_FPU" Dname="STM32F429ZITx" Dvendor="STMicroelectronics:13">
+
...
+
</target>
+
<select>
+
...
+
</select>
+
<files>
+
...
+
</files>
+
</project>
+
</create>
+
</package>
+


+

+ + + + + + + + + + + + + + + + + + + + + +
Parents Element Chain
create /package/create
Attributes Description Type Use
name Name of the project. Will be used as file name as well. If not specified, then the name on the package level is used. RestrictedString optional
documentation Path and file name of a document relative to the CPDSC file, or an url providing detailed information about the software project. xs:string optional
public Set publishing permissions for the documentation. If <public> is true, then the vendor gives permission to extract the documentation from the pack and publish it on a web-page. Links to web pages are assumed to be public. The default value is false. xs:boolean optional
Child Elements Description Type Occurrence
target Section containing details, for example about the board, device, memory, debug, or algorithms. TargetType 1..1
select Specify the software components selected in the Run-Time Environment (RTE). SelectType 0..1
files List all files used for the project build, which are not configured using components. ProjectFilesType 0..1
+

 

+
+

+/package/create/project/target

+

This element describes the hardware target, including memory layout, debug probes, or flash programming algorithms.

+

Example target section:

+
<package xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="PACK.xsd"/>
+
...
+
<create>
+
<project>
+
...
+
<target Dendian="Little-endian" Dfpu="SP_FPU" Dname="STM32F429ZITx" Dvendor="STMicroelectronics:13">
+
<output debug="1" name="Blinky" type="exe"/>
+
<debugProbe coreClock="10000000" name="ST-Link" protocol="swd"/>
+
<memory access="rx" default="1" name="IROM1" size="0x200000" start="0x8000000" startup="1"/>
+
<memory access="rw" default="1" init="1" name="IRAM1" size="0x30000" start="0x20000000"/>
+
<memory access="rw" default="0" init="1" name="IRAM2" size="0x10000" start="0x10000000"/>
+
</target>
+
...
+
</project>
+
</create>
+
</package>
+


+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Parents Element Chain
project /package/create/project
Attributes Description Type Use
Bvendor Board vendor name. Either a board vendor and board name with optional board revision, or a device vendor and a device name. xs:string optional
Bname SPecify the board name. Either a board vendor and board name with optional board revision, or a device vendor and a device name. xs:string optional
Bversion Board version. Either a board vendor and board name with optional board revision, or a device vendor and a device name. xs:string optional
Dvendor Device vendor name. Either a board vendor and board name with optional board revision, or a device vendor and a device name. xs:string optional
Dname Device name. Either a board vendor and board name with optional board revision, or a device vendor and a device name. xs:string optional
Pname Processor instance name. In case of multi-processor devices, this processor ID is required. xs:string optional
Dfpu Selects the floating point unit option that is active for the project. Note, even if the device implements an FPU, setting Dfpu=0 here, will disable FPU code generation. Use predefined values from the table Device FPU. DfpuEnum optional

Dendian

+

+
Selects the endianness to be used for the project. Note that selecting an endianness that is not supported by the device, will result in a build that will not run on the device. Use predefined values from the table DendianEnum. DendianEnum optional
Dmpu Selects the memory protection unit to be enabled or disabled for the project. Use predefined values from the table Device MPU. DmpuEnum optional
Child Elements Description Type Occurrence
output Configure the build output name and type, and specify whether to include debug information. OutputType 1..1
memory Specify the memory configuration for this application. Based on the memory layout, the linker script will be generated by the toolchain. TargetMemoryType 0..*
stack Specify the stack size in bytes allocated by the linker to the application. This element consists of one attribute named <size>. Set the value for this attribute. Only positive numbers are allowed. StackType 1..1
heap Specify the heap size in bytes allocated by the linker to the application. This element consists of one attribute named <size>. Set the value for this attribute. Only positive numbers are allowed. HeapType 1
algorithm Selects from the list of available flash programming algorithms specified for this device in the corresponding Device Family Pack. Target and RAM memory ranges can be reconfigured from the defaults specified in the device description. TargetAlgorithmType 0..*
debugProbe Selects and configures the debug probe to be used for this project. DebugProbeType 0..*
+

 

+
+

+/package/create/project/target/algorithm

+

Example algorithm element

+
...
+
<project name="STM32F429_Flash" documentation="./Abstract.txt">
+
<target Dendian="Little-endian" Dfpu="SP_FPU" Dname="STM32F429ZITx" Dvendor="STMicroelectronics:13">
+
...
+
<algorithm name="CMSIS/Flash/STM32F4xx_1024.FLM" start="0x08000000" size="0x100000" RAMstart=0x20000000 RAMsize=0x1000/>
+
...
+
</target>
+
</project>
+
...
+


+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Parents Element Chain
target /package/create/project/target
Attributes Description Type Use
Pname Processor name xs:string RestrictedString
name References the name (without path) of the flash programming algorithm as defined by the DFP. xs:string required
start Overrides the predefined programming start address of the flash programming algorithm as specified in the DFP. NonNegativeInteger optional
size Overrides the predefined programming size of the flash programming algorithm as specified in the DFP. NonNegativeInteger optional
RAMstart Overrides the predefined start address in RAM where the flash programming algorithm is loaded as specified in the DFP. NonNegativeInteger optional
RAMsize Overrides the predefined RAM size in RAM where the flash programming algorithm is loaded as specified in the DFP. NonNegativeInteger optional
default Sets this algorithm as the default algorithm for flash programming when the value is set to 1. The defualt value is 0 - false. xs:boolean optional
style Sets flash programming format. The default value is Keil. Use the predefinde values as listed in the table Algorithm Styles. AlgorithmStyleType optional
parameter Parameter string passed when invoking the algorithm. xs:string optional
endian Specify the endianness of the algorithm. Default value is Little-endian. Use the predefined values as listed in the table Endinaness. DendianEnum optional
+

 

+
+

+/package/create/project/target/debugProbe

+

Specify the attributes of a debug probe.

+

Example debugProbe element

+
...
+
<project name="STM32F429_Flash" documentation="./Abstract.txt">
+
<target Dendian="Little-endian" Dfpu="SP_FPU" Dname="STM32F429ZITx" Dvendor="STMicroelectronics:13">
+
...
+
<debugProbe coreClock="10000000" name="ST-Link" protocol="swd"/>
+
...
+
</target>
+
</project>
+
...
+


+

+ + + + + + + + + + + + + + + +
Parents Element Chain
target /package/create/project/target
Attributes Description Type Use
name Name of of the debug probe, for example JLink, ULink2, ULinkPro, CMSIS-DAP, or ST-Link. xs:string required
protocol Select the debug protocol, for example, swd. Use the predefined values listed in the table Debug Protocol Type. xs:string required
coreClock Clock frequency of the core once the system is initialized. NonNegativeInteger required
tpiuClock Clock frequency of the TPIU block of the CoreSight debug logic. Only relevant for tracing. NonNegativeInteger optional
+

 

+
+

+/package/create/project/target/memory

+

Specify the memory layout. The linker script file will be genereted according to these settings.

+

Example memory element

+
...
+
<project name="STM32F429_Flash" documentation="./Abstract.txt">
+
<target Dendian="Little-endian" Dfpu="SP_FPU" Dname="STM32F429ZITx" Dvendor="STMicroelectronics:13">
+
...
+
<memory access="rx" default="1" name="IROM1" size="0x200000" start="0x8000000" startup="1"/>
+
<memory access="rw" default="1" init="1" name="IRAM1" size="0x30000" start="0x20000000"/>
+
<memory access="rw" default="0" init="1" name="IRAM2" size="0x10000" start="0x10000000"/>
+
...
+
</target>
+
</project>
+
...
+


+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Parents Element Chain
target /package/create/project/target
Attributes Description Type Use
Pname Identifies the processor. RestrictedString optional
id Eunmerated ID of memory. Deprecated since version 1.4.4 MemoryIDTypeEnum optional
name Reference to the name of the memory as defined by the DFP. xs:string required
start Overrides the predefined memory start address. NonNegativeInteger optional
size Overrides the predefined memory size. NonNegativeInteger optional
access Overrides the predefined access permissions for the memory as specified in the DFP. The default value is r, for 'read' permission. Use the predefined values defined in the table MemoryAccessTypeString. AccessType optional
alias Reference by 'name' to another memory to express that the same physical memory is mapped at another address. AccessType optional
init Deprecated; do not use! Ignore!!!. xs:boolean optional
default Use to define the default memory for the linker. xs:boolean optional
startup Specify whether the memory is used by the linker for the startup. The default value is 0 - false. xs:boolean optional
+

 

+
+

+/package/create/project/target/output

+

Specify the characteristics for the build output file.

+

Example output element

+
<project name="STM32F429_Flash" documentation="./Abstract.txt">
+
<target Dendian="Little-endian" Dfpu="SP_FPU" Dname="STM32F429ZITx" Dvendor="STMicroelectronics:13">
+
<output debug="1" name="Blinky" type="exe"/>
+
...
+
</target>
+
...
+
</project>
+


+

+ + + + + + + + + + + + + +
Parents Element Chain
target /package/create/project/target
Attributes Description Type Use
name Name of the build output file. xs:string required
type Select the build target to be lib - library or exe - executable. You can use the wildcard * for CompilerOutputType required
debug Select whether the output will contain debug information. Use the values 1;0 for true and false. xs:boolean required
+

 

+
+

+/package/create/project/select

+

This element lists all software components that are selected within the Manage Run-Time Environment.

+

Example select section:

+
<package xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="PACK.xsd"/>
+
...
+
<create>
+
<project>
+
...
+
<select>
+
<component Cclass="CMSIS" Cgroup="Core" Cvendor="ARM" Cversion="4.1.0"/>
+
<component Cclass="CMSIS" Cgroup="RTOS" Csub="Keil RTX" Cvendor="ARM" Cversion="4.78.0">
+
<file attr="config" category="source" name="CMSIS/RTOS/RTX/Templates/RTX_Conf_CM.c" version="4.70.1"/>
+
</component>
+
<component Cbundle="STM32F429I-Discovery" Cclass="Board Support" Cgroup="Buttons" Cvendor="Keil" Cversion="1.0.0"/>
+
<component Cbundle="STM32F429I-Discovery" Cclass="Board Support" Cgroup="LED" Cvendor="Keil" Cversion="1.0.0"/>
+
<component Cclass="Device" Cgroup="STM32Cube Framework" Csub="Classic" Cvendor="Keil" Cversion="1.4.0">
+
<file attr="config" category="header" name="CMSIS/Driver/Config/RTE_Device.h" version="2.3.1"/>
+
<file attr="config" category="header" name="MDK/Templates/Inc/stm32f4xx_hal_conf.h" version="1.4.2"/>
+
</component>
+
<component Cclass="Device" Cgroup="STM32Cube HAL" Csub="Common" Cvendor="Keil" Cversion="1.4.0"/>
+
<component Cclass="Device" Cgroup="STM32Cube HAL" Csub="Cortex" Cvendor="Keil" Cversion="1.4.0"/>
+
<component Cclass="Device" Cgroup="STM32Cube HAL" Csub="GPIO" Cvendor="Keil" Cversion="1.4.0"/>
+
<component Cclass="Device" Cgroup="STM32Cube HAL" Csub="PWR" Cvendor="Keil" Cversion="1.4.0"/>
+
<component Cclass="Device" Cgroup="STM32Cube HAL" Csub="RCC" Cvendor="Keil" Cversion="1.4.0"/>
+
<component Cclass="Device" Cgroup="Startup" Cvendor="Keil" Cversion="2.4.0">
+
<file attr="config" category="source" condition="STM32F429xx_ARMCC" name="Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/arm/startup_stm32f429xx.s" version="2.4.2"/>
+
<file attr="config" category="source" name="Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.c" version="2.4.2"/>
+
</component>
+
</select>
+
...
+
</project>
+
</create>
+
</package>
+


+

+ + + + + + + + + +
Parents Element Chain
project /package/create/project
Child Elements Description Type Occurrence
component Group element for defining the selected software components. ComponentSelectType 1..*
+

 

+
+

+/package/create/project/select/component

+

Specify the software components.

+

Example component element

+
...
+
<select>
+
<component Cclass="CMSIS" Cgroup="Core" Cvendor="ARM" Cversion="4.1.0"/>
+
<component Cclass="Device" Cgroup="STM32Cube Framework" Csub="Classic" Cvendor="Keil" Cversion="1.4.0">
+
<file attr="config" category="header" name="CMSIS/Driver/Config/RTE_Device.h" version="2.3.1"/>
+
<file attr="config" category="header" name="MDK/Templates/Inc/stm32f4xx_hal_conf.h" version="1.4.2"/>
+
</component>
+
</select>
+
...
+


+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Parents Element Chain
select /package/create/project/select
Attributes Description Type Use
Cvendor Vendor name of the component. xs:string optional
Cbundle Name of bundle to which the selected component belongs. xs:string optional
Cclass Component class name. Predefined values can be used as listed in the table Component Classes. xs:string required
Cgroup Component group name following the taxonomy. Predefined values can be used as listed in the table Component Groups. xs:string required
Csub Component sub group name following the taxonomy (string may be empty) CsubType optional
Cvariant Name of the variant of the selected component. CvariantType optional
Cversion Version of the selected component. Note, a higher version number can be entered in case the matching version is not available. ComponentVersionType optional
Capiversion Implemented api version defined for the corresponding Cclass:Cgroup:Csub. Set the value only for components that have an associated <api>. ComponentVersionType optional
instances Number of instances created for the component. Set the value only for components that are multi-instance capable. Defaults to 1 if not set. InstancesType optional
Child Elements Description Type Occurrence
file Specify configuration files from the selected component. ComponentSelectType 0..*
+

 

+
+

+/package/create/project/select/component/file

+

Specify the configuration files for the selected component. These files must already exist in the project folder structure and contain a configuration setup specifically for the project.

+

Example file element

+
...
+
<component Cclass="Device" Cgroup="STM32Cube Framework" Csub="Classic" Cvendor="Keil" Cversion="1.4.0">
+
<file attr="config" category="header" name="CMSIS/Driver/Config/RTE_Device.h" version="2.3.1"/>
+
<file attr="config" category="header" name="MDK/Templates/Inc/stm32f4xx_hal_conf.h" version="1.4.2"/>
+
</component>
+
...
+


+

+ + + + + + + + + + + + + + + + + +
Parents Element Chain
component /package/create/project/select/component
Attributes Description Type Use
condition Condition id being used at the time of runtime configuration. xs:string optional
category File type, for example header. Use predefined values from the table File Category. FileCategoryType required
attr File action attribute, for example copy. Use predefined values from the table File Category. FileAttributeType optional
name File path and name within pack it originates from. xs:string required
version Version of the configuration file being used in the example. VersionType required
+

 

+
+

+/package/create/project/files

+

The files section specifies files to be included into the project build that are not managed through software components. Files can be sorted into named groups.

+

Example files section:

+
<package xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="PACK.xsd"/>
+
...
+
<create>
+
<project>
+
<files>
+
<group name="Source Files">
+
<file category="sourceC" name="./Blinky.c"/>
+
<file category="sourceC" name="./Thread_LED.c"/>
+
</group>
+
<group name="Documentation">
+
<file category="doc" name="./Abstract.txt"/>
+
</group>
+
</files>
+
</project>
+
</create>
+
</package>
+


+

+ + + + + + + + + + + +
Parents Element Chain
project /package/create/project
Child Elements Description Type Occurrence
file Specify a file. ProjectFileType 0..*
group Specify a group of files. GroupType 0..*
+

 

+
+

+/package/project/create/files/.../file

+

Specify files that are not included through software components.

+ + + + + + + + + + + + + + + +
Parents Element Chain
files /package/create/project/files
group /package/create/project/files/.../group
Attributes Description Type Use
name Path and name of the file, relative to CPDSC location. xs:string required
category Type of file, for example, whether the file is a C or assembler file. Use the predefined values from the table File Categories. FileCategoryType required
src Folder specifying the source code location for a library. xs:string optional
+

 

+
+

+/package/create/project/files/.../group

+

Nesting of groups is supported. It is tool dependent how grouping is represented in the tool, because the grouping of files has no impact on the build by default.

+

Example files section:

+
<package xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="PACK.xsd"/>
+
...
+
<create>
+
<project>
+
<files>
+
<group name="Source">
+
<group name="C">
+
<file category="sourceC" name="./Blinky.c"/>
+
<file category="sourceC" name="./Thread_LED.c"/>
+
</group>
+
<group name="ASM">
+
<file category="sourceAsm" name="./startup_add.s"/>
+
</group>
+
</group>
+
<group name="Documentation">
+
<file category="doc" name="./Abstract.txt"/>
+
</group>
+
</files>
+
</project>
+
</create>
+
</package>
+


+

+ + + + + + + + + + + + + + + +
Parents Element Chain
files /package/create/project/files
Attributes Description Type Use
name name of the group of files RestrictedString required
Child Elements Description Type Occurrence
file Specify a file. ProjectFileType 0..*
group Specify a group (nesting). GroupType 0..*
+

 

+
+
+
+ + + + diff --git a/docs/Pack/html/createPackBoard.html b/docs/Pack/html/createPackBoard.html new file mode 100644 index 0000000..c3532ae --- /dev/null +++ b/docs/Pack/html/createPackBoard.html @@ -0,0 +1,256 @@ + + + + + +Pack with Board Support +CMSIS-Pack: Pack with Board Support + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-Pack +  Version 1.5.0 +
+
Delivery Mechanism for Software Packs
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Pack with Board Support
+
+
+

A Software Pack that contains a <board> element is called Board Support Pack (BSP). A BSP may contain additional Software Components, Example Projects, as well as Code Templates. The typical content of a BSP is:

+
    +
  • Source code, libraries, header/configuration files for the underlying hardware and documentation (for example user manuals, getting started guides, and schematics).
  • +
  • Example Projects that show the usage of the development board and its peripherals.
  • +
  • User Code Templates that can be used as a starting point for using the development board or the mounted device.
  • +
+

This section is a tutorial that explains how to create a BSP. Initially the PDSC file in the BSP only describes an evaluation board. This BSP is then extended to contain also software components that interface with the hardware of the board. Example projects and code templates may be added as described in the section Pack with Software Components.

+

BSP Use Cases

+

A BSP is typically provided by a Board Vendor and is used to extend development tools with support for development boards. In general, the BSP enables Board Vendors to distribute tool independent board support for their development platforms.
+BSPs can also be used to provide information for the display on web sites. One example is the new boards page on www.keil.com/boards2/:

+
+BoardsSectionMCB1500.png +
+Board information on a web site extracted from a BSP
+

+Specify a Development Board

+

Preparations

+
    +
  1. Install the Software Pack Keil::ARMCortex_DFP as this will be required for the BSP to function properly.
  2. +
  3. Create a working directory on your PC, for example C:\temp\working_bsp.
  4. +
  5. Go to the directory \CMSIS\Pack\Tutorials available in the ARM::CMSIS Pack installation. Please consult your development tool's documentation for more information on the Pack installation directory structure. In a standard µVision installation, you will find it below C:\Keil_v5\ARM\Pack\ARM\CMSIS\version.
  6. +
  7. Open the file Pack_with_Board_Support.zip.
  8. +
  9. Copy the content of the ZIP file's 01_Specify_Dev_Board directory into your working directory.
  10. +
  11. Make sure that files/directories are not write protected (remove read-only flag).
  12. +
  13. Copy from the directory \CMSIS\Utilities available in the ARM::CMSIS Pack installation the following files into your working directory:
      +
    • packChk.exe
    • +
    • PACK.xsd
    • +
    +
  14. +
  15. Open the MyVendor.MyBSP.pdsc file in an editor.
  16. +
+

Code Example

+
    +
  1. +Add a <boards> section in the PDSC file with the following:
    <boards>
    +
    <board vendor="MyVendor" name="MyDevBoard" revision="V1" salesContact="sales@keil.com" orderForm="http://www.keil.com">
    +
    <description>MyVendor MyDevBoard Board Description</description>
    +
    <image small="Images/MyDevBoard_small.png" large="Images/MyDevBoard_large.png"/>
    +
    <book category="setup" name="Docs/MyDevBoard/MyDevBoard_setup.pdf" title="Getting Started"/>
    +
    <book category="schematic" name="Docs/MyDevBoard/MyDevBoard_schematics.pdf" title="Schematics"/>
    +
    <book category="manual" name="Docs/MyDevBoard/MyDevBoard_um.pdf" title="User Manual"/>
    +
    <mountedDevice deviceIndex="0" Dvendor="ARM:82" Dname="ARMCM3"/>
    +
    <compatibleDevice deviceIndex="0" Dvendor="ARM:82" Dfamily="ARM Cortex M3"/>
    +
    <feature type="ODbg" n="1" name="On-board J-LINK Lite"/>
    +
    <feature type="PWR" n="5" name="USB Powered"/>
    +
    <feature type="DIO" n="8"/>
    +
    <feature type="SPI" n="1"/>
    +
    <feature type="LED" n="6" name="User LEDs"/>
    +
    <feature type="ArduinoFF" n="1"/>
    +
    <debugInterface adapter="J-Link Lite" connector="Mini-USB"/>
    +
    </board>
    +
    </boards>
    +
    Note
    All code examples in this and the following sections can be found in the snippets.xml file in the 01_Specify_Dev_Board directory.
    +
  2. +
  3. +

    Finally, save the PDSC file and generate the Pack file using the gen_pack.bat script. See Generate a Pack for further details. Afterwards, install the Pack in your development tool.

    +
    +DevBoardDisplay.png +
    +Display of development boards in development tools
    +
  4. +
+
Note
packChk.exe will display M346 informations:
*** WARNING M346: .\Files\MyVendor.MyBSP.pdsc (Line 29)
+  Referenced device(s) in 'MyDevBoard' not found: 'ARMCM3'
+
+*** WARNING M346: .\Files\MyVendor.MyBSP.pdsc (Line 29)
+  Referenced device(s) in 'MyDevBoard' not found: 'ARM Cortex M3'
+
This is because this BSP does not contain a device section with the mentioned devices. To work aroung this problem, you might add the ARM:CMSIS PDSC file to the checking process.
+

+Create a BSP Bundle

+

A bundle is basically a variant on the Cclass level. It specifies the attributes Cclass, Cversion and optionally Cgroup and Cvendor for a collection of interdependent components. Components within a bundle inherit the attributes set by the bundle and must not set these attributes again. Bundles ensure consistency of attributes across multiple interworking components and restrict the mix and match of components within a Cclass from different solutions. In addition to components, a bundle has the mandatory elements description and doc (for documentation).

+

Copy the content of the 02_BSP_Bundle directory of the Pack_with_Board_Support.zip file to the Files directory in your working environment:

+
    +
  1. +Add a <conditions> section in your PDSC with the following (the conditions section provides more information on this step):
    <condition id="ARM Cortex M3 Series">
    +
    <description>ARM Cortex M3 device required</description>
    +
    <require Dfamily="ARM Cortex M3" Dvendor="ARM:82"/>
    +
    </condition>
    +
    <condition id="MyDevBoard Board Setup">
    +
    <description>Board Setup Code required</description>
    +
    <require condition="ARM Cortex M3 Series"/>
    +
    <require Cclass="Board Support" Cgroup="Board Setup"/>
    +
    </condition>
    +
  2. +
  3. +Add a <components> section in your PDSC with the following (the components section provides more information on this step):
    <bundle Cbundle="MyDevBoardSupport" Cclass="Board Support" Cversion="1.0.1">
    +
    <description>MyDevBoard custom board support package</description>
    +
    <doc>Docs/BSP/MyBSP.htm</doc>
    +
    <component Cgroup="Board Setup" condition="ARM Cortex M3 Series">
    +
    <description>Custom board setup code</description>
    +
    <files>
    +
    <file category="doc" name="Docs/BSP/Setup.htm"/>
    +
    <file category="header" name="MySWComp/Include/setup.h"/>
    +
    <file category="source" name="MySWComp/Source/setup.c"/>
    +
    </files>
    +
    </component>
    +
    <component Cgroup="I/O" Csub="LED" condition="MyDevBoard Board Setup">
    +
    <description>LED code for custom board</description>
    +
    <files>
    +
    <file category="doc" name="Docs/BSP/LED.htm"/>
    +
    <file category="header" name="MySWComp/Include/led.h"/>
    +
    <file category="header" name="MySWComp/Include/config_led.h" attr="config" version="1.0.0"/>
    +
    <file category="source" name="MySWComp/Source/led.c"/>
    +
    </files>
    +
    </component>
    +
    <component Cgroup="I/O" Csub="GPIO" condition="MyDevBoard Board Setup">
    +
    <description>GPIO code for custom board</description>
    +
    <files>
    +
    <file category="doc" name="Docs/BSP/GPIO.htm"/>
    +
    <file category="header" name="MySWComp/Include/gpio.h"/>
    +
    <file category="header" name="MySWComp/Include/config_gpio.h" attr="config" version="1.0.0"/>
    +
    <file category="source" name="MySWComp/Source/gpio.c"/>
    +
    </files>
    +
    </component>
    +
    </bundle>
    +
  4. +
  5. +Add a new version number:
    <release version="1.0.1">
    +
    Board support bundle added
    +
    </release>
    +
  6. +
  7. +

    Finally, save the PDSC file and regenerate the Pack file using the gen_pack.bat script. Afterwards, install the Pack in your development tool and observe the differences to version 1.0.0.

    +
    +BSPBundleDisplay.png +
    +BSP bundle display in development tools
    +
  8. +
+
+
+ + + + diff --git a/docs/Pack/html/createPackPublish.html b/docs/Pack/html/createPackPublish.html new file mode 100644 index 0000000..4a5207a --- /dev/null +++ b/docs/Pack/html/createPackPublish.html @@ -0,0 +1,192 @@ + + + + + +Publish a Pack +CMSIS-Pack: Publish a Pack + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-Pack +  Version 1.5.0 +
+
Delivery Mechanism for Software Packs
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Publish a Pack
+
+
+

There are multiple ways to distribute a software pack:

+

+Local Installation

+

The easiest way to distribute a software pack is attaching it to an email or using other means of electronic distribution (for example using a company internal file server). The installation of a software pack is usually triggered by double-clicking the Pack file. The pack management tool is invoked and the Pack is installed on the local machine. After installation, the Pack will be shown in the list of installed packs (tool dependent). If the PDSC file does not contain a valid <url> element, a manual installation is required to update a software pack. Otherwise, pack management tools can check for updates on the server or the local machine that is specified by <url>.

+
+LocalInstallation.png +
+Local installation and update from URL
+
Note
For automatic updates on a local machine, specify the <url> using the file URI scheme.
+

+Web Download

+

Any web server can be used to host a software pack (specified by the <url> element in the PDSC file). At this location, the following files can be present:

+
    +
  1. <vendor>.<name>.pdsc [required]: pack description file.
  2. +
  3. <vendor>.<name>.<version>.pack [required]: pack file where <version> refers to the latest version specified in the PDSC file.
  4. +
  5. <vendor>.pidx [optional]: list with all packs hosted and maintained by the vendor (refer to Package Index File (pidx))
  6. +
  7. <vendor>.vidx [optional]: list of package index files known to the vendor (refer to Vendor Index File (vidx))
  8. +
+

All previous versions listed in the <releases> section of the PDSC file should be present in that folder as well. This will enable customers to revert updates or to be able to download a specific version of a software pack (for code maintenance purposes for example).

+
+WebInstallation.png +
+Web installation and update
+
Note
    +
  • It is important to understand how the <url> element works. If you specify a URL, for example www.keil.com/pack, then you have to make the PDSC file and the corresponding PACK file(s) available for download at that exact location. The naming of the files follow the standard naming rules. For example, the ARM::CMSIS PDSC and Pack files are available here:
    + www.keil.com/pack/ARM.CMSIS.pdsc and
    + www.keil.com/pack/ARM.CMSIS.5.0.1.pack and
    + www.keil.com/pack/ARM.CMSIS.5.0.0.pack and ...
    + At the specified location, you need to have one (unversioned) PDSC file and can have multiple versioned Pack files, but at least the latest one.
  • +
  • If the URL or the PDSC/Pack files become unavailable (temporarily or permanently), users will not be able to retrieve updates.
  • +
  • Do not replace PDSC/Pack files without updating the version number because the Pack management tools will not recognize the update unless the version has been changed.
  • +
  • Older packs should remain available.
  • +
+
+

+Publishing on www.keil.com/pack

+

Arm maintains a list of available software packs. If you wish to add your packs to that list, send either your vendor.pidx file or your PDSC file to the following email address: CMSIS@arm.com. The PIDX file will be processed and all referenced PDSC files will be validated. The following content will be processed in order to generate the web site (www.keil.com/dd2/pack) and index file (www.keil.com/pack/index.pidx):

+
    +
  • Version
  • +
  • Release Notes
  • +
  • Devices
  • +
  • Boards
  • +
  • Examples
  • +
  • Software Components
  • +
+

Please allow up to seven working days for the process. If the files contain any errors, you will be notified. Otherwise, the information is added to the index server.

+

+Moving a pack from one URL to another

+

Sometimes, it is necessary to rehost a pack. This implies that you need to change the <url> element in the PDSC file. To ensure that the pack is found by the indexer of the keil.com server, follow this procedure:

+
    +
  • Create a new version of the pack: update the PDSC file with the new URL ("url_B") and make sure to increment the version
  • +
  • Place a copy of this latest PDSC at url_B and url_A (the original URL).
  • +
  • Place a copy of the new pack in url_B (only)
  • +
  • Copy all packs from url_A to url_B
  • +
  • Inform Arm about the new URL by either
      +
    • updating the <vendor>.pidx with url_B for this pack or
    • +
    • sending a link to the PDSC file via email if your company does not maintain a <vendor>.pidx
    • +
    +
  • +
+
Note
    +
  • PDSC and pack versions need to be accessible from the same new URL
  • +
  • You must keep url_A alive as is. But there is no need to maintain/update url_A going forward otherwise users with an old PDSC file will no longer find the pack versions.
  • +
+
+
+
+ + + + diff --git a/docs/Pack/html/createPackUtil.html b/docs/Pack/html/createPackUtil.html new file mode 100644 index 0000000..4dde94c --- /dev/null +++ b/docs/Pack/html/createPackUtil.html @@ -0,0 +1,134 @@ + + + + + +Utilities for Creating Packs +CMSIS-Pack: Utilities for Creating Packs + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-Pack +  Version 1.5.0 +
+
Delivery Mechanism for Software Packs
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Utilities for Creating Packs
+
+
+

Software Packs are ZIP files that contain a PDSC file and other content, that is specified within the PDSC file in XML. While the PDSC file can be created with any text editor, some of the contents have to be generated by additional programs. Also, verification of a PDSC file requires the help of additional tools. This section gives and overview over programs that are either part of the CMSIS Pack or are available for download on the Internet.

+
    +
  • packChk.exe is part of the CMSIS Pack and is used to check the validity of a PDSC file.
  • +
  • Validation of SVD files with SVDConv.exe is required for SVD files that are part of Device Family Packs.
  • +
  • Several XML Editors can verify XML files using the XML schema files that are part of the CMSIS Pack.
  • +
  • ZIP Compression Tools create the actual ZIP archive of a Software Pack.
  • +
+
+
+ + + + diff --git a/docs/Pack/html/createPackUtil.js b/docs/Pack/html/createPackUtil.js new file mode 100644 index 0000000..adcc064 --- /dev/null +++ b/docs/Pack/html/createPackUtil.js @@ -0,0 +1,8 @@ +var createPackUtil = +[ + [ "packChk.exe", "packChk.html", [ + [ "Error and Warning Messages", "packChk.html#packChkMessages", null ] + ] ], + [ "XML Editors", "cp_Editors.html", null ], + [ "ZIP Compression Tools", "cp_ZIPTool.html", null ] +]; \ No newline at end of file diff --git a/docs/Pack/html/createPack_DFP.html b/docs/Pack/html/createPack_DFP.html new file mode 100644 index 0000000..eea9e37 --- /dev/null +++ b/docs/Pack/html/createPack_DFP.html @@ -0,0 +1,536 @@ + + + + + +Pack with Device Support +CMSIS-Pack: Pack with Device Support + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-Pack +  Version 1.5.0 +
+
Delivery Mechanism for Software Packs
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Pack with Device Support
+
+
+

A Software Pack that contains a <devices> element is called Device Family Pack (DFP). A DFP may contain additional Software Components or Example Projects or any combination of those. The typical content of a DFP is:

+ +

This section explains how to create a DFP. Initially, the PDSC file in the DFP only describes devices. This DFP is then extended to contain also SVD files, Flash algorithms, and device related software components such as system and HAL files. Example projects and code templates may be added as described in the section Pack with Software Components.

+

DFP Use Cases

+

A Device Family Pack (DFP) may be provided by a Silicon Vendor and is used to extend development tools with support for new devices. In general, the DFP enables Silicon Vendors to distribute tool independent device support for their device families.
+DFPs can also be used to provide information for the display on web sites. One example is the new device database on www.keil.com/dd2/:

+

+
+DeviceDatabase2.png +
+Device information on a web site extracted from a DFP
+

Steps to Create a DFP

+
+DFPFlow.png +
+

+Basic Device Family Pack

+

In the following sections, a DFP will be created for a fictional device family called MVCM3 from the device vendor MyVendor. The device family consists of four member that are separated into two sub-families. The specification of the MVCM3 family is as follows:

+
+MVCM3SpecTable.png +
+MVCM3 Device Family Specification
+

Preparations

+
    +
  1. Create a working directory on you PC, for example C:\temp\working_dfp.
  2. +
  3. Go to the directory \CMSIS\Pack\Tutorials available in the ARM::CMSIS Pack installation. Please consult your development tool's documentation for more information on the Pack installation directory structure. In a standard µVision installation, you will find it below C:\Keil_v5\ARM\Pack\ARM\CMSIS\version.
  4. +
  5. Open the file Pack_with_Device_Support.zip.
  6. +
  7. Copy the content of the ZIP file's 01_Basic_Pack directory into your working directory.
  8. +
  9. Make sure that files/directories are not write protected (remove read-only flag).
  10. +
  11. Copy from the directory \CMSIS\Utilities available in the ARM::CMSIS Pack installation the following files into your working directory:
      +
    • packChk.exe
    • +
    • PACK.xsd
    • +
    • SVDConv.exe
    • +
    +
  12. +
  13. Open the MyVendor.MVCM3.pdsc file in an editor.
  14. +
+

Code Example

+
    +
  1. +Add a <devices> section in the PDSC file with the following:
    <devices>
    +
    <family Dfamily="MVCM3 Series" Dvendor="Generic:5">
    +
    <processor Dcore="Cortex-M3" DcoreVersion="r2p1" Dfpu="0" Dmpu="0" Dendian="Little-endian"/>
    +
    <description>
    +
    The MVCM3 device family contains an ARM Cortex-M3 processor, running up to 100 MHz with a versatile set of on-chip peripherals.
    +
    </description>
    +
    <!-- ************************ Sub-family 'MVCM3100' **************************** -->
    +
    <subFamily DsubFamily="MVCM3100">
    +
    <processor Dclock="50000000"/>
    +
    <!-- ************************* Device 'MVCM3110' ***************************** -->
    +
    <device Dname="MVCM3110">
    +
    <memory name="IROM1" access="rx" start="0x00000000" size="0x4000" startup="1" default="1"/>
    +
    <memory name="IRAM1" access="rw" start="0x20000000" size="0x0800" init ="0" default="1"/>
    +
    </device>
    +
    <!-- ************************* Device 'MVCM3120' ***************************** -->
    +
    <device Dname="MVCM3120">
    +
    <memory name="IROM1" access="rx" start="0x00000000" size="0x8000" startup="1" default="1"/>
    +
    <memory name="IRAM1" access="rx" start="0x20000000" size="0x1000" init ="0" default="1"/>
    +
    </device>
    +
    </subFamily>
    +
    <!-- ************************ Sub Family 'MVCM3200' **************************** -->
    +
    <subFamily DsubFamily="MVCM3200">
    +
    <processor Dclock="100000000"/>
    +
    <!-- ************************* Device 'MVCM3250' ***************************** -->
    +
    <device Dname="MVCM3250">
    +
    <memory name="IROM1" access="rx" start="0x00000000" size="0x4000" startup="1" default="1"/>
    +
    <memory name="IRAM1" access="rw" start="0x20000000" size="0x0800" init ="0" default="1"/>
    +
    </device>
    +
    <!-- ************************* Device 'MVCM3260' ***************************** -->
    +
    <device Dname="MVCM3260">
    +
    <memory name="IROM1" access="rx" start="0x00000000" size="0x8000" startup="1" default="1"/>
    +
    <memory name="IRAM1" access="rw" start="0x20000000" size="0x1000" init ="0" default="1"/>
    +
    </device>
    +
    </subFamily>
    +
    </family>
    +
    </devices>
    +
    Note
      +
    • Dvendor IDs are not freely selectable. The current set of IDs can be found in the PACK.xsd file (available in the ARM::CMSIS Pack in the CMSIS\Pack\Utilities directory).
    • +
    • All code examples in this and the following sections can be found in the snippets.xml file in the 01_Basic_Pack directory.
    • +
    +
    +
  2. +
  3. +

    Save the PDSC file and generate the Pack file using the gen_pack.bat script. See Generate a Pack for further details. Afterwards, install the Pack in your development tool.

    +
    +BasicDFPDisplay.png +
    +Display of microcontroller devices in development tools
    +
  4. +
+
Note
packChk.exe will display M350 informations:
*** INFO M350:
+  No 'Startup' found for [Generic:5] 'MVCM3110' ()
+
We will address this problem in the next section.
+

+System and Startup Files

+

CMSIS-Core (Cortex-M) defines the following files to be used by an embedded application:

+
    +
  • startup_<device>.s with reset handler and exception vectors. It is executed after reset and calls SystemInit and may contain stack and heap configurations for the user application.
  • +
  • system_<device>.c and system_<device>.h with general system configuration information (i.e. for clock and BUS setup).
  • +
  • <device.h> gives access to processor core and all peripherals. This file should be generated out of the SVD file using SVDConv.exe to ensure consistency between the header file and what is being displayed by the debugger.
  • +
+
+SystemStartupFiles.png +
+System and startup files in relation to user code
+
Note
CMSIS-Core (Cortex-M) explains the structure of the system and startup files and how to create them.
+

Copy the content of the 02_System_and_Startup directory of the Pack_with_Device_Support.zip file to the Files directory in your working environment:

+
    +
  1. +Add a <conditions> section in your PDSC with the following (the conditions section provides more information on this step):
    <condition id="MVCM3 CMSIS-Core">
    +
    <!-- conditions selecting Devices -->
    +
    <description>MyVendor MVCM3 Series devices and CMSIS-Core (Cortex-M)</description>
    +
    <require Cclass="CMSIS" Cgroup="Core"/>
    +
    <require Dvendor="Generic:5" Dname="MVCM3*"/>
    +
    </condition>
    +
    <condition id="Startup ARM">
    +
    <description>Startup assembler file for ARMCC</description>
    +
    <require Tcompiler="ARMCC"/>
    +
    </condition>
    +
    <condition id="Startup GCC">
    +
    <description>Startup assembler file for GCC</description>
    +
    <require Tcompiler="GCC"/>
    +
    </condition>
    +
    <condition id="Startup IAR">
    +
    <description>Startup assembler file for IAR</description>
    +
    <require Tcompiler="IAR"/>
    +
    </condition>
    +
    Note
    The assembler based startup_<device>.s file is tool dependent. Therefore, separate conditions for the various tool vendors are required.
    +
  2. +
  3. +Add a <components> section in your PDSC with the following (the components section provides more information on this step):
    <component Cclass="Device" Cgroup="Startup" Cversion="1.0.0" condition="MVCM3 CMSIS-Core">
    +
    <description>System Startup for MyVendor MVCM3 Series</description>
    +
    <files>
    +
    <!-- include folder -->
    +
    <file category="include" name="Device/Include/"/>
    +
    +
    <file category="source" name="Device/Source/ARM/startup_MVCM3xxx.s" attr="config" condition="Startup ARM" version="1.0.0"/>
    +
    <file category="source" name="Device/Source/GCC/startup_MVCM3xxx.S" attr="config" condition="Startup GCC" version="1.0.0"/>
    +
    <file category="source" name="Device/Source/IAR/startup_MVCM3xxx.s" attr="config" condition="Startup IAR" version="1.0.0"/>
    +
    +
    <file category="source" name="Device/Source/system_MVCM3xxx.c" attr="config" version="1.0.0"/>
    +
    </files>
    +
    </component>
    +
  4. +
  5. +Add a new version number:
    <release version="1.0.1">
    +
    Startup files included
    +
    </release>
    +
  6. +
  7. +

    Finally, save the PDSC file and regenerate the Pack file using the gen_pack.bat script. Afterwards, install the Pack in your development tool and create a new project. Select the software components ::CMSIS:CORE and ::Device:Startup for the project:

    +
    +StartupSystemFilesAdded.png +
    +Startup and system files added to a project
    +
  8. +
+
Note
packChk.exe will display M350 informations:
*** INFO M353: .\Files\MyVendor.MVCM3.pdsc (Line 98)
+  No 'Device Headerfile' File found for Component 'Startup' (MyVendor::Device.Startup:1.0.0) for '[Generic:5] MVCM3110' (ARMCC)
+
We will address this problem in the next section.
+

+System View Description File

+

CMSIS-SVD formalizes the description of the programmer's view for the system contained in ARM Cortex-M processor-based microcontrollers, in particular the memory mapped registers of the peripherals. The level of detail contained in system view descriptions is comparable to what is found in device reference manuals published by silicon vendors. The information ranges from a high level functional description of a peripheral all the way down to the definition and purpose of an individual bit field in a memory mapped register. CMSIS-SVD files are developed and maintained by the silicon vendors. The XML based SVD file is the input for SVDConv.exe that generates the tool dependent debug view and the device header file.

+
+SVDFlow.png +
+SVD file conversion flow
+

Copy the content of the 03_SVD_File directory of the Pack_with_Device_Support.zip file to the Files directory in your working environment:

+
    +
  1. +Open the file MVCM3xxx.svd in the Files\SVD directory in an editor and change the following:
    <device schemaVersion="1.1" xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:noNamespaceSchemaLocation="CMSIS-SVD.xsd" >
    +
    <vendor>MyVendor</vendor> <!-- device vendor name -->
    +
    <vendorID>Generic</vendorID> <!-- device vendor short name -->
    +
    <name>MVCM3xxx</name> <!-- name of part-->
    +
    <series>MVCM3xxx</series> <!-- device series the device belongs to -->
    +
    <version>1.2</version> <!-- version of this description, adding CMSIS-SVD 1.1 tags -->
    +
    <description>Arm 32-bit Cortex-M3 Microcontroller based device, CPU clock up to 100 MHz.</description>
    +
  2. +
  3. +Open a command window in your working directory and enter:
    C:\temp\working_dfp>SVDConv.exe Files\SVD\MVCM3xxx.svd --generate=header –-fields=macro
    +
  4. +
  5. +You should see some output of SVDConv similar to this:
    CMSIS-SVD SVD Consistency Checker / Header File Generator V2.86g
    +Copyright (C) 2010 - 2014 Arm Ltd and Arm Germany GmbH. All rights reserved.
    +Options: "Files\SVD\MVCM3xxx.svd" --generate=header --fields=macro
    +Reading file: "Files\SVD\MVCM3xxx.svd"
    + 
    +Decoding using XML SVD Schema V1.1
    + 
    +Found 0 Errors and 0 Warnings
    + 
    +Return Code: 0 (OK)
    +
    Move the generated header file MVCM3xxx.h to the Device\Include directory.
  6. +
  7. +Add the following two lines at the family level in the PDSC file:
    <compile header="Device/Include/MVCM3xxx.h"/>
    +
    <debug svd="SVD/MVCM3xxx.svd"/>
    +
  8. +
  9. +Add a new version number:
    <release version="1.0.2">
    +
    SVD and header file included
    +
    </release>
    +
  10. +
  11. +

    Finally, save the PDSC file and regenerate the Pack file using the gen_pack.bat script. Afterwards, install the Pack in your development tool and create a new project. Depending on your development environment, you will be able to see the SVD file included in your project:

    +
    +SVDIncluded.png +
    +Project with SVD file
    +
    Note
    For more information on CMSIS-SVD, please visit www.keil.com/cmsis/svd
    +
  12. +
+

+Flash Programming Algorithms

+

Flash Programming are used to erase or download applications to Flash devices. A DFP usually contains predefined Flash algorithms for programming its supported devices. The page Algorithm Functions explains the mechanisms in more detail.

+

For the MVCM3 device family, two flash algorithms have to be created. MVCM3110/250 have 16 kB of Flash, whereas MVCM3120/260 have 32 kB of Flash memory.

+

Copy the content of the 04_Flash_Programming directory of the Pack_with_Device_Support.zip file to the working directory:

+
    +
  1. +Rename the project file NewDevice.uvproj (in the _Template_Flash directory) to represent the new Flash ROM device name, for example MVCM3XXX_16.uvproj.
  2. +
  3. +

    Open the project with uVision. The selected target (Cortex-M) is fine for the device.

    +
    Note
    Creating a Flash programming algorithm with MDK-Lite is not supported.
    +
  4. +
  5. +

    Open the dialog Project - Options for Target - Output and change the content of the field Name of Executable to represent the device, here MCVM3XXX_16.

    +
    +FPATargetOptions.png +
    +Options for Target 'Cortex-M'
    +
  6. +
  7. +In the real world, you would now start to adapt the programming algorithms in the file FlashPrg.c. For now, only change the device parameters (Device Name, Device Size, and Sector Size) in the FlashDev.c file:
    struct FlashDevice const FlashDevice = {
    +
    FLASH_DRV_VERS, // Driver Version, do not modify!
    +
    "MVCM3110/250 Flash", // Device Name
    +
    ONCHIP, // Device Type
    +
    0x00000000, // Device Start Address
    +
    0x00004000, // Device Size in Bytes (16kB)
    +
    1024, // Programming Page Size
    +
    0, // Reserved, must be 0
    +
    0xFF, // Initial Content of Erased Memory
    +
    100, // Program Page Timeout 100 mSec
    +
    3000, // Erase Sector Timeout 3000 mSec
    +
    +
    // Specify Size and Address of Sectors
    +
    0x002000, 0x000000, // Sector Size 8kB (2 Sectors)
    +
    SECTOR_END
    +
    };
    +
  8. +
  9. +Use Project - Build Target to generate the new Flash programming algorithm. The algorithm will be created in the parent directory of the _Template_Flash directory.
  10. +
  11. +Copy the output file ..\MVCM3XXX_16.FLM to a new subdirectory called Files\Flash. Add these lines to the MVCM3110/250 device sections:
    algorithm name="Flash/MVCM3XXX_16.FLM" start="0x00000000" size="0x4000" default="1"/>
    +
  12. +
  13. +Create a MVCM3XXX_32.flm for the MVCM3120/260 devices.
  14. +
  15. +Add these lines to the MVCM3120/260 device sections:
    algorithm name="Flash/MVCM3XXX_32.FLM" start="0x00000000" size="0x8000" default="1"/>
    +
  16. +
  17. +Add a new version number:
    <release version="1.0.3">
    +
    Flash Programming Algorithms added
    +
    </release>
    +
  18. +
  19. +

    Finally, save the PDSC file and regenerate the Pack file using the gen_pack.bat script. Afterwards, install the Pack in your development tool. Depending on your development environment, you will be able to see the Flash Programming Algorithms included in your project (either for a new project or by adding it manually to an existing project):

    +
    +FPADisplay.png +
    +Display of Flash Programming Algorithm
    +
    Note
    The page Flash Programming gives more information on the subject.
    +
  20. +
+

+Debug Descriptions

+

+Device Properties

+

To limit redundancy, devices can be organized in two hierarchy groups:

+
    +
  • family: the attributes of a device family which includes also the processor.
  • +
  • subFamily: attributes of an optional sub-family; this adds or modifies features of a family.
  • +
+

Parameters of each single device are defined in:

+
    +
  • device: attributes of a specific silicon device
  • +
  • variant: attributes of a device variant (for example, with different package or temperature range) or an OEM device or board that integrates the device.
  • +
+

A device is described by the following properties:

+
    +
  • description: textual device description
  • +
  • feature: categorized list of device peripherals and features. This list is used on web sites for the display of device features.
  • +
  • book: documentation about the device and its processor(s)
  • +
  • processor: processor and processor features embedded in the device
  • +
  • compile: device specific general settings for the build tools
  • +
  • debugconfig: default settings for a debug connection
  • +
  • debugport: debug port description of the device for the debugger to configure a debug connection.
  • +
  • debug: device specific information for the debugger to configure a debug connection including System View Description files.
  • +
  • trace: device specific information for the debugger to configure trace.
  • +
  • memory: memory layout of the device for internal and external RAM and ROM regions
  • +
  • algorithm: device specific Flash programming algorithms
  • +
+

A device inherits all specifications from both the family and sub-family levels. Some properties are required to be unique. For example, the name of the SVD file attribute of the <debug> property. Therefore, the SVD file specified on the family level can be redefined by the attribute on the sub-family or device level. Other information like the <description> and <feature> entries are adding up, starting with the information from the family and sub-family level and finalizing with the information on the device level.

+

The following shows how to specify the device properties for the MVCM3110 device (refer to the specification shown in Basic Device Family Pack). The other members of the family are specified accordingly.

+

Copy the content of the 05_Device_Properties directory of the Pack_with_Device_Support.zip file to the Files directory of your working environment:

+
    +
  1. +The MVCM3 Series family properties processor, compile, description, and debug are already specified. There are additional common properties that can be specified on the family level: book and feature. Add the following lines to the PDSC file in the <family> section:
    <book name="Docs/dui0552a_cortex_m3_dgug.pdf" title="Cortex-M3 Generic User Guide"/>
    +
    <book name="Docs/MVCM3XXX_Datasheet.pdf" title="MVCM3 Series Datasheet"/>
    +
    <book name="Docs/MVCM3XXX_Product_Brief.pdf" title="MVCM3 Product Brief"/>
    +
    <feature type="ExtInt" n="16"/>
    +
    <feature type="Temp" n="-40" m="105" name="Extended Temperature Range"/>
    +
    <feature type="VCC" n="2.5" m="3.6"/>
    +
    <feature type="RTC" n="32768"/>
    +
    <feature type="WDT" n="1"/>
    +
  2. +
  3. +The MVCM31xx sub-family has some features that are common for the two member devices. Please add the following code to the MVCM31100 <subFamily> section:
    <feature type="IOs" n="26"/>
    +
    <feature type="I2C" n="1"/>
    +
    <feature type="UART" n="4"/>
    +
    <feature type="Timer" n="6" m="32"/>
    +
    <feature type="QFP" n="32"/>
    +
  4. +
  5. +The MVCM3110 device has some features that are unique to that device. Please add the following code to the MVCM3110 <device> section:
    <feature type="PWM" n="2" m="16"/>
    +
  6. +
+

+Device Specific Software Components

+

Finally, software components and example projects need to be added to the DFP.

+
    +
  1. +Add the following lines to the PDSC file in the <components> section:
    <component Cclass="Device" Cgroup="HAL" Csub="GPIO" Cversion="1.0.0" condition="MVCM3 CMSIS-Core">
    +
    <description>GPIO HAL for MyVendor MVCM3 Series</description>
    +
    <files>
    +
    <file category="header" name="Device/Include/GPIO.h"/>
    +
    <file category="source" name="Device/Source/GPIO.c"/>
    +
    </files>
    +
    </component>
    +
    +
    <component Cclass="Device" Cgroup="HAL" Csub="ADC" Cversion="1.0.0" condition="MVCM3 CMSIS-Core">
    +
    <description>ADC HAL for MyVendor MVCM3 Series</description>
    +
    <files>
    +
    <file category="header" name="Device/Include/ADC.h"/>
    +
    <file category="source" name="Device/Source/ADC.c"/>
    +
    </files>
    +
    </component>
    +
    +
    <component Cclass="CMSIS Driver" Cgroup="I2C" Cversion="1.0.0" condition="MVCM3 CMSIS-Core" maxInstances="3">
    +
    <description>I2C Driver for MVCM3 Series</description>
    +
    <RTE_Components_h>
    +
    #define RTE_Drivers_I2C0 /* Driver I2C0 */
    +
    #define RTE_Drivers_I2C1 /* Driver I2C1 */
    +
    #define RTE_Drivers_I2C2 /* Driver I2C2 */
    +
    </RTE_Components_h>
    +
    <files>
    +
    <file category="source" name="Drivers/I2C/I2C_MVCM3.c"/>
    +
    <file category="header" name="Drivers/I2C/I2C_MVCM3.h"/>
    +
    </files>
    +
    </component>
    +
    +
    <component Cclass="CMSIS Driver" Cgroup="UART" Cversion="1.0.0" condition="MVCM3 CMSIS-Core" maxInstances="5">
    +
    <description>UART Driver for MVCM3 Series</description>
    +
    <RTE_Components_h>
    +
    #define RTE_Drivers_UART0 /* Driver UART0 */
    +
    #define RTE_Drivers_UART1 /* Driver UART1 */
    +
    #define RTE_Drivers_UART2 /* Driver UART2 */
    +
    #define RTE_Drivers_UART3 /* Driver UART3 */
    +
    #define RTE_Drivers_UART4 /* Driver UART4 */
    +
    </RTE_Components_h>
    +
    <files>
    +
    <file category="source" name="Drivers/UART/UART_MVCM3.c"/>
    +
    <file category="header" name="Drivers/UART/UART_MVCM3.h"/>
    +
    </files>
    +
    </component>
    +
    Note
    The first two software components are added to Device::HAL because they are specific to the device family and are not using a published API. The drivers for I2C and UART are adhering to the CMSIS-Driver specification. Thus, they are added to the Cclass CMSIS Driver.
    +
  2. +
  3. +An example project has also been created. Add an <examples> section with the following:
    <examples>
    +
    <example name="Dummy" doc="Abstract.txt" folder="Examples/dummy">
    +
    <description>Dummy project</description>
    +
    <board name="MVCM3 Starter Kit" vendor="MyVendor"/>
    +
    <project>
    +
    <environment name="uv" load="dummy.uvprojx"/>
    +
    </project>
    +
    <attributes>
    +
    <category>Getting Started</category>
    +
    </attributes>
    +
    </example>
    +
    </examples>
    +
  4. +
  5. +Add a new version number:
    <release version="1.0.4">
    +
    DFP finalized
    +
    </release>
    +
  6. +
  7. +Finally, save the PDSC file and regenerate the Pack file using the gen_pack.bat script. Afterwards, install the Pack in your development tool.
  8. +
+
+
+ + + + diff --git a/docs/Pack/html/debug_description.html b/docs/Pack/html/debug_description.html new file mode 100644 index 0000000..7085c9a --- /dev/null +++ b/docs/Pack/html/debug_description.html @@ -0,0 +1,1625 @@ + + + + + +Debug Description +CMSIS-Pack: Debug Description + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-Pack +  Version 1.5.0 +
+
Delivery Mechanism for Software Packs
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Debug Description
+
+
+

Debug descriptions allow silicon vendors to create tool-agnostic debug and trace configurations so that the development environment settings can be reduced to simple checkboxes for selecting for example either standard run/stop debugging or complex instruction tracing.

+

+Concept

+

A set of standardized debug and trace methods are automatically executed by the debugger:

+
    +
  • Setting breakpoints and watchpoints
  • +
  • Reading memory and registers
  • +
  • Starting and stopping trace
  • +
+

Implementation-specific steps can be described using an XML syntax:

+
    +
  • Special hardware reset
  • +
  • Trace buffer setup
  • +
  • Patch silicon issues
  • +
+

+Debug description elements

+

A complete debug description for a device consists of the following elements:

+ +

+Debug access sequences

+

Debug access sequences define the activities of development tools to connect to a device using the debug channel for debugging, tracing, or flash programming. Several debug access sequences are predefined and executed in specific context. Refer to sequences for details.

+

Software development tools should implement Default debug access sequences. These default sequences can be overwritten by device specific sequences using the sequence element in the sequences section of the PDSC file. Additionally, a PDSC file can contain user-defined sequences, for example to reuse access sequence fragments:

+
    +
  • Usage of debug access sequences explains how the sequences are used from a development tool point of view.
  • +
  • Default debug access sequences lists all debug access sequences that are predefined by the CMSIS-Pack standard and shows the details of the default debug access sequences.
  • +
  • Writing debug access sequences explains how to write custom debug access sequences. These can be used to either override default sequences or to define device specific sequences.
  • +
+

+Usage of debug access sequences

+

Predefined Debug Access Sequences are used in the following context:

+
    +
  • Connect Debugger to Device is executed when debugging or flash programming with the target starts.
  • +
  • Reset Device is executed to reset the target.
  • +
  • Verify Code is executed to verify the content after flash programming.
  • +
  • Disconnect Debugger is executed when debugging or flash programming with the target stops.
  • +
+

The following diagrams show how the Debug Access Sequences are executed by a development tool.

+

Connect Debugger to Device is executed when debugging or flash programming with the target starts.

+
+DebugConnect.png +
+

Reset Device is executed to reset the target.

+
+Reset.png +
+

Verify Code is executed to verify the content after flash programming.

+
+CodeVerify.png +
+

Disconnect Debugger is executed when debugging or flash programming with the target stops.

+
+DebugDisconnect.png +
+

+Default debug access sequences

+

Debug access sequences get defined in the sequence element. The following table lists the available predefined debug access sequences. Default debug access sequences are executed if they are not overwritten using a sequence element. Refer to Usage of debug access sequences for more information about the execution of these sequences.

+

For debug access sequences marked in ItalicRed, no default sequence exists. The usage in a debug description requires a related sequence element to be present. The other sequences should be implemented in a development tool. They are executed when no sequence definition exists in the PDSC file.

+
Note
Default debug access sequences read the System Control Space (SCS) of the processor and assume that the SCS offset is implemented as defined in the Armv6-M/Armv7-M/Armv8-M architecture reference manual.
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
name= Description
DebugPortSetup Prepare the target debug port for connection; is executed before acquiring access to the debug port.
+ May include for example an SWJ-DP switch sequence as defined in the Arm Debug Interface (ADI) Architecture Specification.
+ This sequence must not contain debug port/access port register and target memory accesses other than:
    +
  • Reading the DPIDR debug port register to release an SWD connection from its line reset.
  • +
  • Writing the TARGETSEL debug port register (SWD protocol v2).
  • +
+
DebugPortStart Connect to the target debug port and power it up; is executed after DebugPortSetup.
+ The parent debugport is default debug port for this sequence.
+ This sequence must not contain access port register and target memory accesses.
DebugPortStop Power down and disconnect from target debug port.
+ Executed as last step during target disconnect unless another debugger connection to this port is active. The parent debugport is default debug port for this sequence.
+ This sequence must not contain access port register and target memory accesses.
DebugDeviceUnlock Check if the device is in a locked state and unlock it. Use query command elements for user confirmation.
+ Executed after having powered up the debug port.
DebugCoreStart Initialize core debug system.
+ Executed after having connected and powered up the default debug port for the connection.
DebugCoreStop Uninitialized core debug system.
+ Executed as last step during disconnect before powering down any debug ports no longer required for concurrent connections.
DebugCodeMemRemap Remap memory to execution location.
+ Executed before verifying memory content after flash programming. This is required to replicate a memory remap of a device bootloader (that is not executed during debug connection).
ResetSystem Execute a system-wide reset via software mechanisms.
ResetProcessor Execute a processor reset via software mechanisms.
ResetHardware Execute a system-wide reset via the dedicated debugger reset line, e.g. nRST.
ResetHardwareAssert Assert a system-wide reset via the dedicated debugger reset line, e.g. nRST.
ResetHardwareDeassert De-assert a system-wide reset via the dedicated debugger reset line, e.g. nRST.
ResetCatchSet Executed before a target reset to configure the vector catch to stop code execution after the reset.
+ The implementation of ResetCatchSet requires an implementation of ResetCatchClear to free any hardware resources used for stopping the core.
ResetCatchClear Executed after a target reset to free hardware resources allocated by ResetCatchSet.
FlashInit Executed before starting a flash operation.
FlashUninit Executed after a flash operation finished.
FlashEraseSector Executed to erase a flash memory sector.
FlashEraseChip Executed to erase all on-chip flash memory with target device specific erase technology. If this sequence is not implemented then a debugger can use FlashEraseSector to erase all flash memory.
FlashEraseDone Executed after all flash memory erase operations are finished.
FlashProgramPage Executed to program a single flash page.
FlashProgramDone Executed after all flash programming operations are finished.
TraceStart Enable target trace capture.
+ Executed before the debugger powers up and configures standard CoreSight trace components, e.g. after the initial target connection as well as after a system-wide reset.
TraceStop Disable target trace capture.
+ Executed after the debugger disabled and powered down standard CoreSight trace components.
RecoverySupportStart Executed before step or run command to support recovery from a lost target connection, e.g. after a low power mode.
RecoverySupportStop Executed after step or run command in context of the RecoverySupportStart sequence.
RecoveryAcknowledge Debugger acknowledge after recovering from a lost target connection. Can be executed independently from a RecoverySupportStart sequence.
+

Predefined default debug access sequences

+

The following sections the show the details of the predefined default debug access sequences.

+

+DebugPortSetup

+

Prepare the target debug port for connection.

+
<sequence name="DebugPortSetup">
+
<block>
+
__var isSWJ = ((__protocol &amp; 0x00010000) != 0);
+
__var protType = __protocol &amp; 0x0000FFFF;
+
</block>
+
+
<!-- JTAG Protocol -->
+
<control if="protType == 1">
+
+
<control if="isSWJ">
+
+
<block atomic="1">
+
// Ensure current debug interface is in reset state
+
DAP_SWJ_Sequence(51, 0x0007FFFFFFFFFFFF);
+
+
// Execute SWJ-DP Switch Sequence SWD to JTAG (0xE73C)
+
// Change if SWJ-DP uses deprecated switch code (0xAEAE)
+
DAP_SWJ_Sequence(16, 0xE73C);
+
+
// Ensure JTAG interface is reset
+
DAP_SWJ_Sequence(6, 0x3F);
+
</block>
+
+
</control>
+
+
<block atomic="1">
+
// JTAG "Soft" Reset
+
DAP_JTAG_Sequence(6, 1, 0x3F);
+
DAP_JTAG_Sequence(1, 0, 0x01);
+
</block>
+
+
</control>
+
+
<!-- SWD Protocol -->
+
<control if="protType == 2">
+
+
<control if="isSWJ">
+
+
<block atomic="1">
+
// Ensure current debug interface is in reset state
+
DAP_SWJ_Sequence(51, 0x0007FFFFFFFFFFFF);
+
+
// Execute SWJ-DP Switch Sequence JTAG to SWD (0xE79E)
+
// Change if SWJ-DP uses deprecated switch code (0xEDB6)
+
DAP_SWJ_Sequence(16, 0xE79E);
+
+
// Enter SWD Line Reset State
+
DAP_SWJ_Sequence(51, 0x0007FFFFFFFFFFFF); // &gt; 50 cycles SWDIO/TMS High
+
DAP_SWJ_Sequence(3, 0x00); // At least 2 idle cycles (SWDIO/TMS Low)
+
</block>
+
+
</control>
+
+
<control if="!isSWJ">
+
+
<block atomic="1">
+
// Enter SWD Line Reset State
+
DAP_SWJ_Sequence(51, 0x0007FFFFFFFFFFFF); // &gt; 50 cycles SWDIO/TMS High
+
DAP_SWJ_Sequence(3, 0x00); // At least 2 idle cycles (SWDIO/TMS Low)
+
</block>
+
+
</control>
+
+
<block>
+
// Read DPIDR to enable SWD interface (SW-DPv1 and SW-DPv2)
+
ReadDP(0x0);
+
</block>
+
+
</control>
+
+
</sequence>
+

+DebugPortStart

+

Connect to the target debug port and power it up.

+
<sequence name="DebugPortStart">
+
+
<block>
+
__var SW_DP_ABORT = 0x0;
+
__var DP_CTRL_STAT = 0x4;
+
__var DP_SELECT = 0x8;
+
__var powered_down = 0;
+
+
// Switch to DP Register Bank 0
+
WriteDP(DP_SELECT, 0x00000000);
+
+
// Read DP CTRL/STAT Register and check if CSYSPWRUPACK and CDBGPWRUPACK bits are set
+
powered_down = ((ReadDP(DP_CTRL_STAT) &amp; 0xA0000000) != 0xA0000000);
+
</block>
+
+
<control if="powered_down">
+
+
<block>
+
// Request Debug/System Power-Up
+
WriteDP(DP_CTRL_STAT, 0x50000000);
+
</block>
+
+
<!-- Wait for Power-Up Request to be acknowledged -->
+
<control while="(ReadDP(DP_CTRL_STAT) &amp; 0xA0000000) != 0xA0000000" timeout="1000000"/>
+
+
<!-- JTAG Specific Part of sequence -->
+
<control if="(__protocol &amp; 0xFFFF) == 1">
+
+
<block>
+
// Init AP Transfer Mode, Transaction Counter, and Lane Mask (Normal Transfer Mode, Include all Byte Lanes)
+
// Additionally clear STICKYORUN, STICKYCMP, and STICKYERR bits by writing '1'
+
WriteDP(DP_CTRL_STAT, 0x50000F32);
+
</block>
+
+
</control>
+
+
<!-- SWD Specific Part of sequence -->
+
<control if="(__protocol &amp; 0xFFFF) == 2">
+
+
<block>
+
// Init AP Transfer Mode, Transaction Counter, and Lane Mask (Normal Transfer Mode, Include all Byte Lanes)
+
WriteDP(DP_CTRL_STAT, 0x50000F00);
+
+
// Clear WDATAERR, STICKYORUN, STICKYCMP, and STICKYERR bits of CTRL/STAT Register by write to ABORT register
+
WriteDP(SW_DP_ABORT, 0x0000001E);
+
</block>
+
+
</control>
+
+
</control>
+
+
</sequence>
+

+DebugPortStop

+

Power down and disconnect from target debug port.

+
<sequence name="DebugPortStop">
+
+
<block>
+
__var DP_CTRL_STAT = 0x4;
+
__var DP_SELECT = 0x8;
+
+
// Switch to DP Register Bank 0
+
WriteDP(DP_SELECT, 0x00000000);
+
+
// Power Down Debug port
+
WriteDP(DP_CTRL_STAT, 0x00000000);
+
</block>
+
+
</sequence>
+

+DebugCoreStart

+

Initialize core debug system.

+
<sequence name="DebugCoreStart">
+
+
<block>
+
// System Control Space (SCS) offset as defined in Armv6-M/Armv7-M.
+
+
__var SCS_Addr = 0xE000E000;
+
__var DHCSR_Addr = SCS_Addr + 0xDF0;
+
+
// Enable Core Debug via DHCSR
+
Write32(DHCSR_Addr, 0xA05F0001);
+
</block>
+
+
</sequence>
+

+DebugCoreStop

+

Un-initialize core debug system.

+
<sequence name="DebugCoreStop">
+
+
<block>
+
// System Control Space (SCS) offset as defined in Armv6-M/Armv7-M.
+
+
__var SCS_Addr = 0xE000E000;
+
__var DHCSR_Addr = SCS_Addr + 0xDF0;
+
__var DEMCR_Addr = SCS_Addr + 0xDFC;
+
+
// Disable Core Debug via DHCSR
+
Write32(DHCSR_Addr, 0xA05F0000);
+
+
// Disable DWT and ITM blocks, DebugMonitor handler,
+
// halting debug traps, and Reset Vector Catch.
+
Write32(DEMCR_Addr, 0x00000000);
+
</block>
+
+
</sequence>
+

+ResetSystem

+

Execute a system-wide reset via software mechanisms.

+
<sequence name="ResetSystem">
+
+
<block>
+
// System Control Space (SCS) offset as defined in Armv6-M/Armv7-M.
+
+
__var SCS_Addr = 0xE000E000;
+
__var AIRCR_Addr = SCS_Addr + 0xD0C;
+
__var DHCSR_Addr = SCS_Addr + 0xDF0;
+
+
// Execute SYSRESETREQ via AIRCR
+
Write32(AIRCR_Addr, 0x05FA0004);
+
</block>
+
+
<!-- Reset Recovery: Wait for DHCSR.S_RESET_ST bit to clear on read -->
+
<control while="(Read32(DHCSR_Addr) &amp; 0x02000000)" timeout="500000"/>
+
+
</sequence>
+

+ResetProcessor

+

Execute a processor reset via software mechanisms.

+
Note
This Default Debug Access Sequence is empty for Armv6-M and Armv8-M based processors.
+
<sequence name="ResetProcessor">
+
+
<block>
+
// System Control Space (SCS) offset as defined in Armv7-M.
+
+
__var SCS_Addr = 0xE000E000;
+
__var AIRCR_Addr = SCS_Addr + 0xD0C;
+
__var DHCSR_Addr = SCS_Addr + 0xDF0;
+
+
// Execute VECTRESET via AIRCR
+
Write32(AIRCR_Addr, 0x05FA0001);
+
</block>
+
+
<!-- Reset Recovery: Wait for DHCSR.S_RESET_ST bit to clear on read -->
+
<control while="(Read32(DHCSR_Addr) &amp; 0x02000000)" timeout="500000"/>
+
+
</sequence>
+

+ResetHardware

+

Execute a system-wide reset via the dedicated debugger reset line nRST.

+
<sequence name="ResetHardware">
+
+
<block>
+
__var nReset = 0x80;
+
__var canReadPins = 0;
+
+
// De-assert nRESET line
+
canReadPins = (DAP_SWJ_Pins(0x00, nReset, 0) != 0xFFFFFFFF);
+
</block>
+
+
<!-- Keep reset active for 50 ms -->
+
<control while="1" timeout="50000"/>
+
+
<control if="canReadPins">
+
+
<!-- Assert nRESET line and wait max. 1s for recovery -->
+
<control while="(DAP_SWJ_Pins(nReset, nReset, 0) &amp; nReset) == 0" timeout="1000000"/>
+
+
</control>
+
+
<control if="!canReadPins">
+
+
<block>
+
// Assert nRESET line
+
DAP_SWJ_Pins(nReset, nReset, 0);
+
</block>
+
+
<!-- Wait 100ms for recovery if nRESET not readable -->
+
<control while="1" timeout="100000"/>
+
+
</control>
+
+
</sequence>
+

+ResetHardwareAssert

+

Assert a system-wide reset line nRST.

+
<sequence name="ResetHardwareAssert">
+
+
<block>
+
__var nReset = 0x80;
+
+
// De-assert nRESET line to activate the hardware reset
+
DAP_SWJ_Pins(0, nReset, 0);
+
</block>
+
+
</sequence>
+

+ResetHardwareDeassert

+

De-Assert a system-wide reset line nRST.

+
<sequence name="ResetHardwareDeassert">
+
+
<block>
+
__var nReset = 0x80;
+
__var canReadPins = 0;
+
+
// Assert nRESET line and check if nRESET is readable
+
canReadPins = (DAP_SWJ_Pins(nReset, nReset, 0) != 0xFFFFFFFF);
+
</block>
+
+
<!-- Wait max. 1s for nRESET to recover from reset if readable-->
+
<control if="canReadPins" while="(DAP_SWJ_Pins(nReset, nReset, 0) &amp; nReset) == 0" timeout="1000000"/>
+
+
<!-- Wait 100ms for recovery if nRESET not readable -->
+
<control if="!canReadPins" while="1" timeout="100000"/>
+
+
</sequence>
+

+ResetCatchSet

+

Configure the target to stop code execution after a reset.

+
<sequence name="ResetCatchSet">
+
+
<block>
+
// System Control Space (SCS) offset as defined
+
// in Armv6-M/Armv7-M. Reimplement this sequence
+
// if the SCS is located at a different offset.
+
+
__var SCS_Addr = 0xE000E000;
+
__var DHCSR_Addr = SCS_Addr + 0xDF0;
+
__var DEMCR_Addr = SCS_Addr + 0xDFC;
+
__var value = 0;
+
+
// Enable Reset Vector Catch in DEMCR
+
value = Read32(DEMCR_Addr);
+
Write32(DEMCR_Addr, (value | 0x00000001));
+
+
// Read DHCSR to clear potentially set DHCSR.S_RESET_ST bit
+
Read32(DHCSR_Addr);
+
</block>
+
+
</sequence>
+

+ResetCatchClear

+

Free hardware resources allocated by ResetCatchSet.

+
<sequence name="ResetCatchClear">
+
+
<block>
+
// System Control Space (SCS) offset as defined
+
// in Armv6-M/Armv7-M. Reimplement this sequence
+
// if the SCS is located at a different offset.
+
+
__var SCS_Addr = 0xE000E000;
+
__var DEMCR_Addr = SCS_Addr + 0xDFC;
+
__var value = 0;
+
+
// Disable Reset Vector Catch in DEMCR
+
value = Read32(DEMCR_Addr);
+
Write32(DEMCR_Addr, (value &amp; (~0x00000001)));
+
</block>
+
+
</sequence>
+

+Examples of non-standard debug access sequences

+

+TraceStart

+
<sequence name="TraceStart">
+
<block>
+
__var value = 0;
+
+
//Enable SWO
+
value = Read8(0x40004D2A);
+
Write8(0x40004D2A, (value | 0x20)); // Set the register
+
value = Read8(0x40004D2C);
+
Write8(0x40004D2C, (value &amp; (~0x20))); // Clear the register
+
</block>
+
</sequence>
+

+DebugDeviceUnlock

+
<sequence name="DebugDeviceUnlock">
+
<block>
+
__var DAuthUserInput = 0;
+
__var DAUTHSTATUS_Val = 0;
+
__var DHCSR_Val = 0;
+
__var SecureDebugEna = 0;
+
__var SecureDebugAvail = 0;
+
__var DAuthVal = 0;
+
__var Status = 0; // AP Status value
+
+
DAUTHSTATUS_Val = Read32(0xE000EFB8);
+
DHCSR_Val = Read32(0xE000EDF0);
+
DAP_Delay(100000);
+
SecureDebugAvail = (DAUTHSTATUS_Val &amp; 0x00000020) ? 1 : 0; // SID: Secure Invasive Debug Implemented
+
Status = ReadAP(0x0); // Read Status register
+
</block>
+
+
<control if="SecureDebugAvail" info="Configure Debug Authentication if Security Extensions available">
+
<block>
+
SecureDebugEna = ((DHCSR_Val &amp; 0x00100000) || ((DAUTHSTATUS_Val &amp; 0x00000030) == 0x00000030)) ? 1 : 0;
+
</block>
+
+
<control if="DAuthFixed">
+
<block>
+
// Debug Authentication as per Debug Configuration File
+
DAuthVal = DAuthConfig;
+
</block>
+
</control>
+
<control if="DAuthFixed == 0">
+
<block>
+
DAuthUserInput = Query(1, "Enable Secure Debug?", 3);
+
</block>
+
<control if="DAuthUserInput == 3">
+
<block>
+
// Enable Secure Debug
+
DAuthVal = 0xF;
+
</block>
+
</control>
+
<control if="DAuthUserInput != 3">
+
<block>
+
// Disable Secure Debug
+
DAuthVal = 0x3;
+
</block>
+
</control>
+
</control>
+
+
<control if="SecureDebugEna">
+
<block>
+
// Setup Secure Debug
+
Write32(0x50007000, DAuthVal);
+
</block>
+
</control>
+
<control if="SecureDebugEna == 0">
+
<control if="DAuthVal &amp; 0x4">
+
<block>
+
Query(0, "Cannot configure Debug Authentication, secure debug disabled! Please reboot FPGA!", 1);
+
</block>
+
</control>
+
</control>
+
</control>
+
</sequence>
+

+User-defined hardware reset sequence

+
<sequence name="HWReset">
+
<block>
+
__var protType = __protocol &amp; 0x0000FFFF;
+
</block>
+
+
<!-- JTAG variant-->
+
<control if="protType == 1">
+
<block atomic="true">
+
// HW Reset Pulse
+
DAP_SWJ_Pins(0x00, 0x80, 0);
+
DAP_Delay(50000);
+
DAP_SWJ_Pins(0x80, 0x80, 0);
+
+
// Wait at least 200us
+
DAP_Delay(200);
+
+
// Register to SSW (Start-up Software) within 2ms
+
+
// JTAG Reset
+
DAP_JTAG_Sequence(6, 1, 0x7F);
+
DAP_JTAG_Sequence(1, 0, 0x01);
+
+
// Request Debug and System Power-Up
+
WriteDP(0x4, 0x50000F00);
+
+
// Init DP SELECT register
+
WriteDP(0x8, 0x00000000);
+
+
// Init AP CSW register
+
WriteAP(0x00, 0x23000052);
+
+
// Set TAR register to DHCSR address
+
WriteAP(0x4, 0xE000EDF0);
+
+
// Enable core debug (finishes tool register process)
+
WriteAP(0xC, 0xA05F0001);
+
+
// SSW will configure a HW BP0 at User Code start
+
</block>
+
</control>
+
+
...
+
+
</sequence>
+

+Calling sequences in a control block

+
...
+
<control if="siliconRevision &gt;= 3" >
+
<block>
+
Sequence("SecurityUnlock"); // Execute TAP Sequence according to SiliconRevision
+
Sequence("Set_JTAG_CTL");
+
Sequence("WaitIdleState");
+
Sequence("SetIDCODES");
+
</block>
+
</control>
+
...
+

+Writing debug access sequences

+

To override a default sequence or to create a custom (default) sequence, you need to write sequence elements. The following sections show how to use the built-in debug access syntax, expressions, and debug access functions to create custom sequences.

+

+Debug access syntax rules

+

Debug accesses are described in block elements of a debug access sequence (sequence element). The following syntax is used for this purpose:

+
    +
  • The contents of a block element is a series of statements.
  • +
  • Each statement must begin in a new line and is terminated by a ; character.
  • +
  • A typical statement consists of variable, followed by a = character and an expression, where the = character is an assignment of the expression result to the variable:
    variable = expression;
    +
  • +
  • Alternatively, a statement can be a sole expression without storing its result to a variable.
    expression;
    +
  • +
  • Comments begin with two slashes (//) and end with a line break:
    // Whole line is a comment
    +
    variable = expression; // Comment appended to statement
    +
  • +
  • Variables must be defined using the keyword __var. The definition must include an initialization of the variable:
    __var variable = 0;
    +
  • +
  • Variables can be defined only once within a scope. Scopes begin with entering a debug access sequence or a control element. They are extended to child control elements. Variables of a parent scope can be modified. Leaving a scope destroys all variables defined in it.
    + block elements do not begin a new scope.
    <sequence name="MySequence">
    +
    +
    <block info="Block 1">
    +
    __var condvar = 1;
    +
    __var myvar1 = 5;
    +
    __var myvar2 = 0;
    +
    </block>
    +
    +
    <control if="condvar">
    +
    <block>
    +
    // __var myvar1 = 2; // Redefinition, not allowed!
    +
    __var myvar3 = 2;
    +
    myvar2 = myvar1 + myvar3; // Assign value (5+2) = 7
    +
    </block>
    +
    </control>
    +
    +
    <block info="Block 2">
    +
    myvar1 = myvar2 + 1; // Variable myvar1 holds the value '8' after this statement
    +
    // myvar2 = myvar3; // myvar3 does not exist in this scope, not allowed!
    +
    </block>
    +
    +
    </sequence>
    +
  • +
  • The debug access variables __dp, __ap, and __errorcontrol can be modified within a debug access sequence. An assigned value is held until leaving the sequence. Calling another sequence by the Sequence debug access function will push their values on a sequence execution stack. The values are restored when returning from such a call.
  • +
  • The debug access variable __Result can be modified within a debug access sequence. Its value is held until the debug access sequence returns to the debugger. Hence its value is not pushed on a sequence execution stack when calling into another sequence by the Sequence debug access function.
  • +
+

+Expression rules

+

Expressions are used in various places to describe one of the following:

+
    +
  • A value as assigned in a debug access statement.
  • +
  • A condition to use in the if attribute of a control element.
  • +
  • A condition to use in the while attribute of a control element.
  • +
  • A parameter to a debug access function as described below.
  • +
+

An expression may consist of the following:

+
    +
  • Constant numbers in decimal and hexadecimal representation (prefix 0x).
  • +
  • Arithmetic operators such as +, -, *, /, and %.
  • +
  • Bit-arithmetic operators such as &, |, ~, ^, >>, and <<.
  • +
  • Comparison-operators such as ==, !=, <, >, <=, and >=.
  • +
  • Logic operators such as !, &&, ||, and ==.
  • +
  • Conditional expression operations like:
    (x < y) ? a : b
    +
  • +
  • Precedence of sub-expressions is indicated by brackets ((, )). C-like precedence applies if brackets are omitted.
  • +
  • References to debug access variables for evaluating debug settings.
  • +
  • Calls to debug access functions.
  • +
+
Note
    +
  • All values used in expressions resolve to 64-bit unsigned integer values.
  • +
  • All logic-operations and comparisons resolve to the value 1 if true, to 0 otherwise.
  • +
  • XML prohibits the use of the characters &, <, and >. Use the corresponding XML entity names instead: &amp;, &lt;, and &gt;.
  • +
+
+

 

+

+Debug access functions

+

Debug access functions can be called in expressions in order to interact with the target device and the user. Parameters to functions can again be expressions.
+ By default, a debugger must abort the execution of a debug access sequence if a function call fails. However, this behavior can be controlled from a sequence by the __errorcontrol debug access variable.
+
+ The following table describes the existing debug access functions, their parameters and the debug access variables which are evaluated for the function call.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Function Description
Sequence("name")

Execute a debug access sequence. Calling a sequence by this function causes the modifiable debug access variables __dp, __ap, and __errorcontrol to be pushed on a sequence execution stack. Returning from such a call will restore the state of these variables.
+
+ Parameters:
+

+
    +
  • name: Name of the sequence to execute. It must be enclosed by quotes.
  • +
+

Return Value:
+ Always returns 0.

+

Code Example:
+ Refer to Calling sequences in a control block

+
Read8(addr)

Read an 8-bit value from target memory. A device must support native 8-bit memory accesses for this function to succeed.
+
+ Parameters:
+

+
    +
  • addr: Memory address to read from.
  • +
+

Debug Access Variables:
+

+
    +
  • __dp: The debug port to use for this memory access.
  • +
  • __ap: The access port to use for this memory access.
  • +
+

Return Value:
+ The 8-bit value as read from target memory.

+

Code Example:
+ Refer to TraceStart

+
Read16(addr)

Read an 16-bit value from target memory. A device must support native 16-bit memory accesses for this function to succeed.
+
+ Parameters:
+

+
    +
  • addr: Memory address to read from.
  • +
+

Debug Access Variables:
+

+
    +
  • __dp: The debug port to use for this memory access.
  • +
  • __ap: The access port to use for this memory access.
  • +
+

Return Value:
+ The 16-bit value as read from target memory.

+
Read32(addr)

Read an 32-bit value from target memory. A device must support native 32-bit memory accesses for this function to succeed.
+
+ Parameters:
+

+
    +
  • addr: Memory address to read from.
  • +
+

Debug Access Variables:
+

+
    +
  • __dp: The debug port to use for this memory access.
  • +
  • __ap: The access port to use for this memory access.
  • +
+

Return Value:
+ The 32-bit value as read from target memory.

+

Code Example:
+ Refer to ResetSystem

+
Read64(addr)

Read an 64-bit value from target memory. A device must support native 64-bit memory accesses for this function to succeed.
+
+ Parameters:
+

+
    +
  • addr: Memory address to read from.
  • +
+

Debug Access Variables:
+

+
    +
  • __dp: The debug port to use for this memory access.
  • +
  • __ap: The access port to use for this memory access.
  • +
+

Return Value:
+ The 64-bit value as read from target memory.

+
ReadAP(addr)

Read a 32-bit value from an access port register.
+
+ Parameters:
+

+
    +
  • addr: AP register address to read from. Addresses larger than 0xF automatically cause an AP register bank switch.
  • +
+

Debug Access Variables:
+

+
    +
  • __dp: The debug port to use for this memory access.
  • +
  • __ap: The access port to use for this memory access.
  • +
+

Return Value:
+ The 32-bit value as read from the AP register.

+

Code Example:
+ Refer to DebugDeviceUnlock

+
ReadDP(addr)

Read a 32-bit value from a debug port register.
+
+ Parameters:
+

+
    +
  • addr: DP register address to read from.
  • +
+

Debug Access Variables:
+

+
    +
  • __dp: The debug port to use for this memory access.
  • +
+

Return Value:
+ The 32-bit value as read from the DP register.

+

Code Example:
+ Refer to DebugPortSetup

+
Write8(addr, val)

Write an 8-bit value to target memory. A device must support native 8-bit memory accesses for this function to succeed.
+
+ Parameters:
+

+
    +
  • addr: Memory address to write to.
  • +
  • val: Value to write.
  • +
+

Debug Access Variables:
+

+
    +
  • __dp: The debug port to use for this memory access.
  • +
  • __ap: The access port to use for this memory access.
  • +
+

Return Value:
+ Always returns 0.

+

Code Example:
+ Refer to TraceStart

+
Write16(addr, val)

Write a 16-bit value to target memory. A device must support native 16-bit memory accesses for this function to succeed.
+
+ Parameters:
+

+
    +
  • addr: Memory address to write to.
  • +
  • val: Value to write.
  • +
+

Debug Access Variables:
+

+
    +
  • __dp: The debug port to use for this memory access.
  • +
  • __ap: The access port to use for this memory access.
  • +
+

Return Value:
+ Always returns 0.

+
Write32(addr, val)

Write a 32-bit value to target memory. A device must support native 32-bit memory accesses for this function to succeed.
+
+ Parameters:
+

+
    +
  • addr: Memory address to write to.
  • +
  • val: Value to write.
  • +
+

Debug Access Variables:
+

+
    +
  • __dp: The debug port to use for this memory access.
  • +
  • __ap: The access port to use for this memory access.
  • +
+

Return Value:
+ Always returns 0.

+

Code Example:
+ Refer to DebugCoreStart

+
Write64(addr, val)

Write a 64-bit value to target memory. A device must support native 64-bit memory accesses for this function to succeed.
+
+ Parameters:
+

+
    +
  • addr: Memory address to write to.
  • +
  • val: Value to write.
  • +
+

Debug Access Variables:
+

+
    +
  • __dp: The debug port to use for this memory access.
  • +
  • __ap: The access port to use for this memory access.
  • +
+

Return Value:
+ Always returns 0.

+
WriteAP(addr, val)

Write a 32-bit value to an access port register. Addresses larger than 0xF automatically cause an AP register bank switch.
+
+ Parameters:
+

+
    +
  • addr: Memory address to write to.
  • +
  • val: Value to write.
  • +
+

Debug Access Variables:
+

+
    +
  • __dp: The debug port to use for this memory access.
  • +
  • __ap: The access port to use for this memory access.
  • +
+

Return Value:
+ Always returns 0.

+

Code Example:
+ Refer to User-defined hardware reset sequence

+
WriteDP(addr, val)

Write a 32-bit value to a debug port register.
+
+ Parameters:
+

+
    +
  • addr: Memory address to write to.
  • +
  • val: Value to write.
  • +
+

Debug Access Variables:
+

+
    +
  • __dp: The debug port to use for this memory access.
  • +
+

Return Value:
+ Always returns 0.

+

Code Example:
+ Refer to DebugPortStart

+
FlashBufferWrite(addr, offs, len, mode)

Write flash buffer contents into target memory. A debugger fills the flash buffer before it executes a flash programming sequence.
+
+ Parameters:
+

+
    +
  • addr: Target memory buffer or register interface address to write the flash buffer contents. Must be a multiple of the number of bytes as specified by access size in parameter mode.
  • +
  • offs: Offset into the flash buffer to start writing from. Must be a multiple of the number of bytes as specified by access size in parameter mode.
  • +
  • len : Number of bytes to write to the target. If offs + len exceeds the flash buffer length set in variable __FlashLen, then the remaining bytes are filled with the pattern as specified by attribute filler of the block element. Must be a multiple of the number of bytes as specified by access size in parameter mode.
  • +
  • mode: Target access mode. The following bit map applies:
      +
    • Bit 0..8: Debug access size. One of 8, 16, 32 and 64. The specified debug access size must be supported by the target debug access port.
    • +
    • Bit 0: Additionally, set this Bit to 1 to increment the target address after each debug write access of the specified size.
    • +
    • Bit 9..63: Reserved
    • +
    +
  • +
+

Debug Access Variables:
+

+
    +
  • __dp: The debug port to use for this memory access.
  • +
  • __ap: The access port to use for this memory access.
  • +
+

Return Value:
+ Always returns 0.

+
DAP_Delay(delay)

Debug probe command to wait for a specific delay.
+
+ Parameters:
+

+
    +
  • delay: Wait time in microseconds.
  • +
+

Return Value:
+ Always returns 0.

+

Code Example:
+ Refer to DebugDeviceUnlock

+
DAP_WriteABORT(value)

Debug probe command to write an abort request to the CoreSight ABORT register of the target debug port.
+
+ Parameters:
+

+
    +
  • value: 32-bit value to write into the CoreSight ABORT register.
  • +
+

Debug Access Variables:
+

+
    +
  • __dp: The debug port to use for this memory access.
  • +
+

Return Value:
+ Always returns 0.

+
DAP_SWJ_Pins(pinout, pinselect, pinwait)

Debug probe command to monitor and control the I/O Pins including the nRESET device reset line.
+ I/O Pin Mapping for pinout, pinselect, and pinwait:

+
    +
  • Bit 0: SWCLK/TCK
  • +
  • Bit 1: SWDIO/TMS
  • +
  • Bit 2: TDI
  • +
  • Bit 3: TDO
  • +
  • Bit 5: nTRST
  • +
  • Bit 7: nRESET
  • +
+


+ The pinwait time is useful in systems where the nRESET pin is implemented as open-drain output. After nRESET is de-asserted by the debugger, external circuit may still hold the target Device under reset for a time. Using the pinwait time, the debugger may monitor selected I/O Pins and wait until they the expected value appears or a timeout expires.
+
+ Parameters:
+

+
    +
  • pinout: Value for selected output pins.
  • +
  • pinselect: Selects which output pins will be modified.
  • +
  • pinwait: Wait timeout for the selected output to stabilize. A debugger must extend this timeout to the closest possible time granularity.
      +
    • 0 = no wait
    • +
    • 1 .. 3000000 = time in microseconds (max 3s)
    • +
    +
  • +
+

Return Value:
+ The state of the I/O Pins at the end of this operation. If a debugger is not capable of monitoring the I/O Pins, it must return a value of 0xFFFFFFFF.

+
DAP_SWJ_Clock(val)

Debug probe command to set the clock frequency for JTAG and SWD communication mode.
+
+ Parameters:
+

+
    +
  • val: Maximum SWD/JTAG Clock (SWCLK/TCK) value in Hz.
  • +
+

Return Value:
+ Always returns 0.

+

Code Example:
+ Refer to ResetHardware

+
DAP_SWJ_Sequence(cnt, val)

Debug probe command to generate required SWJ sequences, e.g. for SWD/JTAG Reset, SWD<->JTAG switch and Dormant operation.
+
+ Parameters:
+

+
    +
  • cnt: Number of bits in sequence: 1..64. Larger sequences need to be implemented by multiple subsequent DAP_SWJ_Sequence calls. Such a sequence of DAP_SWJ_Sequence commands must be encapsulated in an atomic block to ensure correct execution.
  • +
  • val: Sequence generated on SWDIO/TMS (with clock @SWCLK/TCK), LSB transmitted first.
  • +
+

Return Value:
+ Always returns 0.

+

Code Example:
+ Refer to DebugPortSetup

+
DAP_JTAG_Sequence(cnt, tms, tdi)

Debug probe command to generate a JTAG sequence with fixed TMS value and capture TDO.
+
+ Parameters:
+

+
    +
  • cnt: Length of the JTAG sequence (number of TCK cycles and TDI bits): 1..64
  • +
  • tms: Fixed TMS value: 0..1
  • +
  • tdi: Data generated on TDI with one bit per TCK cycle, LSB transmitted first.
  • +
+

Return Value:
+ Data captured from TDO with one bit per TCK cycle, LSB captured first and padded with 0s.

+
Query(type, "message", default)

Query user input. The sequence execution stalls depending on the used type. If the debugger runs in a batch mode, this function returns the value default.
+
+ Parameters:
+

+
    +
  • type: Query type. Can be one of:
      +
    • 0 : Query_Ok, displays an informative message which has to be confirmed by the user. This type allows the result OK.
    • +
    • 1 : Query_YesNo, displays a query with the allowed results Yes and No.
    • +
    • 2 : Query_YesNoCancel, displays a query with the allowed results Yes, No, and Cancel.
    • +
    • 3 : Query_OkCancel, displays a query with the allowed results OK and Cancel.
    • +
    +
  • +
  • message: A constant string with the query message to display. It must not be an expression and it must be enclosed by quotes.
  • +
  • default: The default value to return if the debugger runs in batch mode. See Return Values for a list of allowed values.
  • +
+

Return Value:
+ The result of the query. The user input maps to the following numbers:

+
    +
  • Error : 0
  • +
  • OK : 1
  • +
  • Cancel : 2
  • +
  • Yes : 3
  • +
  • No : 4
  • +
+

Code Example:
+ Refer to DebugPortSetup

+
QueryValue("message", default)

Query input value from user. The sequence execution stalls until the user has entered a value or canceled the query. This function returns the default value if the user canceled the query or if the debugger runs in a batch mode.
+
+ Parameters:
+

+
    +
  • message: A constant string with the query message to display. It must not be an expression and it must be enclosed by quotes.
  • +
  • default: The default value to return if the user cancels the query or if the debugger runs in batch mode.
  • +
+

Return Value:
+ The queried value.

+

+
Message(type, "format", ...)

Outputs a message to a log window.
+
+ Parameters:
+

+
    +
  • type: Message type. Can be one of:
      +
    • 0 : Info, outputs an informative message.
    • +
    • 1 : Warning, outputs a warning.
    • +
    • 2 : Error, outputs an error. Sequence execution aborts.
    • +
    +
  • +
  • format: A constant string with the message format. It must not be an expression and it must be enclosed by quotes. The string has the following format:
    +
    %[flags][width][.precision]specifier
    +
      +
    • Specifiers:
        +
      • %u: 32-bit unsigned decimal integer.
      • +
      • %llu: 64-bit unsigned decimal integer.
      • +
      • %x: 32-bit unsigned hexadecimal integer, lower case letters.
      • +
      • %llx: 64-bit unsigned hexadecimal integer, lower case letters.
      • +
      • %X: 32-bit unsigned hexadecimal integer, upper case letters.
      • +
      • %llX: 64-bit unsigned hexadecimal integer, upper case letters.
      • +
      • %o: 32-bit unsigned octal integer.
      • +
      • %llo: 64-bit unsigned octal integer.
      • +
      • %b: 32-bit unsigned binary integer.
      • +
      • %llb: 64-bit unsigned binary integer.
      • +
      • %f: Single-precision (32-bit) floating point value.
      • +
      • %Lf: Double-precision (64-bit) floating point value.
      • +
      • %s: Constant character string. Must not be an expression.
      • +
      • %%: Print % character.
      • +
      +
    • +
    • Flags:
        +
      • 0: Pad the displayed value with zeros instead of spaces if padding is required by the width option.
      • +
      +
    • +
    • Width: Minimum number of displayed characters. If width is less than the number of characters of the value, then the value is padded with spaces to the left.
    • +
    • .Precision:
        +
      • Integer: Minimum number of displayed digits. Padded with zeros to the left if the value has less digits than specified with .precision.
      • +
      • Floating Point: Number of displayed digits after decimal point. Defaults to 6 if not specified.
      • +
      • Constant String: Maximum number of displayed characters.
      • +
      +
    • +
    +
  • +
  • ... : Additional function parameters to replace format string specifiers. Each parameter can be a constant string, or an expression that resolves to an unsigned 64-bit integer. A parameter type must match the corresponding specifier type.
  • +
+

Return Value:
+ Always returns 0.

+
Note
For 32-bit specifiers the Message command must print the lower 32 Bit of a 64 Bit debug access variable.
+
LoadDebugInfo("file")

Loads DWARF debug information from an application executable.
+
+ Parameters:
+

+
    +
  • file: A constant string with the path to the executable. The path must be relative to the root folder of the pack and use the format path/name.extension. It must not be an expression and it must be enclosed by quotes.
  • +
+

Return Value:
+ Returns 0 after successful debug information load.
+ Returns 1 if debug information load failed.

+

+
Functions for communicating with external tools
BufferSet (buffID, buffOffset, count, size, value)

Fill a buffer with a specific value pattern. A new buffer of required size is created if it does not exist. An existing buffer is extended if it is too small.
+
+ Parameters:
+

+
    +
  • buffID: Numeric buffer ID. Must be a constant number.
  • +
  • buffOffset: First byte in the buffer to start writing the specified value pattern. Must be a multiple of size.
  • +
  • count: Number of size items to write with the specified value pattern.
  • +
  • size: Size of a single item to set. Must be in the range of 1 - 8.
  • +
  • value: Value pattern to set. The size least significant bytes of value are used as value pattern for writing the buffer.
  • +
+

Return Value:
+ Number of written bytes (written bytes * access size).

+

+
BufferGet (buffID, buffOffset, size)

Get a data item from the buffer.
+
+ Parameters:
+

+
    +
  • buffID: Numeric buffer ID. Must be a constant number. Function fails if buffer does not exist.
  • +
  • buffOffset: Buffer offset in bytes to get the data item from. Must be a multiple of size.
  • +
  • size: Size of a single item to get. Must be in the range of 1 - 8.
  • +
+

Return Value:
+ Date value of specified size at buffer offset.

+
BufferSize (buffID)

Get the current size of a data buffer.
+
+ Parameters:
+

+
    +
  • buffID: Numeric buffer ID. Must be a constant number.
  • +
+

Return Value:
+ Current buffer size in bytes. Return value is 0 if a buffer does not exist.

+
BufferRead (buffID, buffOffset, addr, length, mode)

Read data from target and store in buffer. A new buffer of required size is created if it does not exist. An existing buffer is extended if it is too small.
+
+ Parameters:
+

+
    +
  • buffID: Numeric buffer ID. Must be a constant number.
  • +
  • buffOffset: First byte in the buffer to store the read data. Must be a multiple of the number of bytes as specified by access size in mode.
  • +
  • addr: Target address to start reading from. Must be a multiple of the number of bytes as specified by access size in mode.
  • +
  • length: Number of bytes to read from target. Must be a multiple of the number of bytes as specified by access size in mode.
  • +
  • mode: The target access mode.
      +
    • Bit 0..8: Debug access size. One of 8, 16, 32 and 64. Specified debug access size must be supported by the target hardware. For example a DP register access must always be 32-Bit.
    • +
    • Bit 0: Additionally set this Bit to 1 to increment the target address after each debug read access of the specified size.
    • +
    • Bit 9..63: Reserved
    • +
    +
  • +
+

Return Value:
+ Always 0. Function causes fatal error if not successful.

+

Code Example:
+ Refer to Calculating a hash sum

+
BufferWrite(buffID, buffOffset, addr, length, mode)

Write data from buffer into target.
+
+ Parameters:
+

+
    +
  • buffID: Numeric buffer ID. Must be a constant number. Function fails if buffer does not exist.
  • +
  • buffOffset: First byte in the buffer to transfer into target. Must be a multiple of the number of bytes as specified by access size in mode.
  • +
  • addr: Target address to start writing to. Must be a multiple of the number of bytes as specified by access size in mode.
  • +
  • length: Number of bytes to write to the target. Must be a multiple of the number of bytes as specified by access size in mode. If size of valid buffer data is less than (buffOffset + length) then the function ends early and returns the number of actually written bytes.
  • +
  • mode: The target access mode.
      +
    • Bit 0..8: Debug access size. One of 8, 16, 32 and 64. Specified debug access size must be supported by the target hardware. For example a DP register access must always be 32-Bit.
    • +
    • Bit 0: Additionally set this Bit to 1 to increment the target address after each debug write access of the specified size.
    • +
    • Bit 9..63: Reserved
    • +
    +
  • +
+

Return Value:
+ Always 0. Function causes fatal error if not successful.

+

Code Example:
+ Refer to Calculating a hash sum

+
BufferStreamIn (buffID, buffOffset, length, path, mode, timeout)

Stream data from an external source, e.g. a file, into a buffer. A new buffer of required size is created if it does not exist. An existing buffer is extended if it is too small.
+
+ Parameters:
+

+
    +
  • buffID: Numeric buffer ID. Must be a constant number.
  • +
  • buffOffset: First byte in the buffer to store the received data.
  • +
  • length: Maximum number of bytes to stream in. Use value 0xFFFFFFFFFFFFFFFF to for example read a complete file of unknown size.
  • +
  • path: Constant string value representing the source from which to stream data in. Refer to character sequences for path/file name place holders.
  • +
  • mode: Specifies how to treat the data source in the specified mode.
      +
    • Bit 0..3: Format of the data source:
      + 0 - Binary File
      + Others - Reserved
      +
    • +
    • Bit 4..7: Communication options for data source:
      + Reserved
    • +
    +
  • +
  • timeout: Timeout in microseconds. If 0, then synchronously wait for the operation to finish.
  • +
+

Return Value:
+ Number of bytes streamed into buffer. Can be less than length if the data source signals its end.

+

Code Example:
+ Refer to Calculating a hash sum

+
BufferStreamOut (buffID, buffOffset, length, destPath, destMode, timeout)

Stream data from a buffer to an external data sink, e.g. a file.
+
+ Parameters:
+

+
    +
  • buffID: Numeric buffer ID. Must be a constant number. Function fails if buffer does not exist.
  • +
  • buffOffset: First byte in the buffer to transfer to the external data sink.
  • +
  • length: Maximum number of bytes to stream out.
  • +
  • path: Constant string value representing the destination to which to stream data to. Refer to character sequences for path/file name place holders.
  • +
  • mode: Specifies how to treat the data source in the specified mode.
      +
    • Bit 0..3: Format of the data source:
      + 0 - Binary File
      + Others - Reserved
      +
    • +
    • Bit 4..7: Communication options for data sink:
      + 0 - Overwrite
      + 1 - Append
      + Others - Reserved
      +
    • +
    +
  • +
  • timeout: Timeout in microseconds. If 0, then synchronously wait for the operation to finish.
  • +
+

Return Value:
+ Number of bytes streamed to data sink.

+

Code Example:
+ Refer to Calculating a hash sum

+
RunApplication (appPath, arguments, workDirectory, timeout)

Run an external application.
+
+ Parameters:
+

+
    +
  • appPath: Constant string representing the application path. Refer to character sequences for path/file name place holders.
  • +
  • arguments: Constant string with arguments to pass to the command line. Same placeholder character sequences apply as for appPath.
  • +
  • workDirectory: A constant string with the work directory for the command line tool. An empty string means that the work directory is the current project folder. Same placeholder character sequences apply as for appPath.
  • +
  • timeout: Timeout in microseconds
  • +
+

Return Value:
+ Application specific exit code.

+

Code Example:
+ Refer to Calculating a hash sum

+
FilePathExists(path, timeout)

Check if a path exists. If timeout is other than 0 then check the path until it becomes valid or until the timeout has elapsed.
+
+ Parameters:
+

+
    +
  • path: Constant string with the path to check. Refer to character sequences for path/file name place holders.
  • +
  • timeout: Timeout in microseconds:
    + If 0, then the path is checked and the function immediately returns.
    + If other than 0, check the path until it is valid or until the function times out. If timeout is hit while executing a check and that check ends successfully, then the function returns success.
    +
  • +
+

Return Value:
+ 0 - Path exists
+ 1 - Path not found
+ Others - Reserved
+

+

Code Example:
+ Refer to Calculating a hash sum

+
+
Note
    +
  • Target memory access functions must perform a debug access of the size indicated by their name. The target system must support debug accesses of this size.
  • +
  • Results of all functions are casted to 64-bit unsigned integer values.
  • +
  • Some target access functions determine the used debug and access port by the current values of the __dp and __ap debug access variables. If a target access requires a different debug or access port than the default ones, it must change these values. This change is held until finishing the sequence the change has occurred in.
  • +
+
+

+Debug access variables

+

Debug access variables hold 64-bit unsigned integer values and are used in debug access sequences to query debugger settings and states. They are read-only within a sequence except from a limited set of the pre-defined debug access variables. Use the debugvars element to specify additional user-defined debug access variables.

+

Table: Pre-defined Debug Access Variables
+ A debugger needs to support a set of pre-defined debug access variables. These are described in the following table.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
Variable Access Description Value=
__protocol
Read-Only Debug protocol selection and parameters for target connection. The following bit map applies:
+
    +
  • Bit 0..15: Type
      +
    • 0: Error
      +
    • +
    • 1: JTAG
      +
    • +
    • 2: Serial Wire Debug (SWD)
      +
    • +
    • 3: CJTAG
      +
    • +
    +
  • +
  • Bit 16: SWJ-DP
  • +
  • Bit 17..63: Reserved
  • +
+
__connection
Read-Only Target connection configuration. The following bit map applies:
+
    +
  • Bit 0..7: Connection type
      +
    • 0: Error or target is disconnected.
    • +
    • 1: Connection for target debug.
    • +
    • 2: Connection for downloading application to flash.
    • +
    +
  • +
  • Bit 8..15: Reset type
      +
    • 0: Error.
    • +
    • 1: Hardware Reset (debugger reset line).
    • +
    • 2: System Reset Request.
    • +
    • 3: Processor Reset Request ("Vector Reset").
    • +
    +
  • +
  • Bit 16: Connection under Hardware Reset (debugger reset line)
  • +
  • Bit 17: Hardware Reset is executed as a pre-connection reset (only used for debugger calls to ResetHardware)
  • +
  • Bit 18..63: Reserved
  • +
+
__dp
Read/Write Debug Port selected for target accesses.
+ This variable is initialized when entering a pre-defined debug access sequence on a debug event. The initialization value is the __dp as defined for the used debug element.
Debug port ID as specified in a debugport element or 0 if no debugport element exists.
__ap
Read/Write Access Port selected for target accesses.
+ This variable is initialized when entering a pre-defined debug access sequence on a debug event. The initialization value is the __ap as defined for the used debug element.
Access Port index.
__traceout
Read-Only Activated trace outputs (sinks). Additionally holds information on the selected port width if a parallel trace port is enabled. The following bit map applies:
+
    +
  • Bit 0: Serial Wire Output (SWO) Trace enabled.
  • +
  • Bit 1: Parallel Trace Port enabled.
  • +
  • Bit 2: Trace Buffer enabled.
  • +
  • Bit 3..15: Reserved.
  • +
  • Bit 16..21: Selected Parallel Trace Port size.
  • +
  • Bit 22..63: Reserved.
  • +
+
__errorcontrol
Read/Write Control variable for debug access error handling. All of its bit fields are intialized to 0 when entering a pre-defined debug access sequence because of a debug event. The following bit map applies:
+
    +
  • Bit 0: Skip errors if set to 1. A debugger must continue the sequence execution.
  • +
  • Bit 1..63: Reserved
  • +
+
__Result
Read/Write Sequence result. A debugger sets this variable to 0 before it calls a sequence. The sequence implementation sets it to its result. The following values apply:
+
    +
  • 0: Success
  • +
  • (-1): Error
      +
    • Other - reserved.
    • +
    +
  • +
+
__FlashOp
Read-Only Type of the currently executed Flash operation. A debugger sets this value to 0 if the executed sequence is not part of a Flash operation. The following values apply:
+
    +
  • 0: No flash operation
  • +
  • 1: Erase full chip
  • +
  • 2: Erase flash sector
  • +
  • 3: Program flash
  • +
  • Other - reserved.
  • +
+
__FlashAddr
Read-Only Start address for the current Flash operation. A debugger sets this value to 0 if the executed sequence is not part of a Flash operation. Memory-mapped target address the currently programmed block is visible at.
__FlashLen
Read-Only Flash buffer length for the current flash operation. A debugger sets this value to 0 if the executed sequence is not part of a flash operation.
__FlashArg
Read-Only Argument for the flash operation as specified in block. A debugger sets this value to 0 if the executed sequence is not part of a flash operation. The argument encoding is specific to the debug description for the target device.
+

+Using external tools

+

Some functionality cannot be implemented by debug sequences, for example checksum/hash calculations or debug authentication. It is supposed to be provided or implemented by external tools or applications. To communicate with external tools, debug sequences currently provide input/output files. To create these files, buffers are used (see below). To run an external application, use the RunApplication function. To check the availability of an external resource (for example a file), use the FilePathExists function.

+

Buffer handling

+

Buffers are hidden inside the sequence engine. They can be accessed only via the following functions:

+
    +
  • For direct buffer access (for example for initialization or "memset" operations): BufferSet, BufferGet, and BufferSize.
  • +
  • For interaction with the target's memory: BufferRead and BufferWrite.
  • +
  • For external interaction via file stream: BufferStreamIn and BufferStreamOut.
  • +
  • Buffer sizes are adjusted as per operations. They cannot get smaller during a sequence execution, only larger.
  • +
  • Buffers can internally have a size of '0', causing an error if calling BufferWrite/BufferStreamOut without having previously filled the buffer.
  • +
  • Newly allocated buffer space is filled with 0's, e.g. for an initial call to BufferRead with a buffer offset.
  • +
  • Buffers are only valid within the sequence creating them. When calling for example a "ChildSequence", it does not see buffers from the caller (even when using the same buffer ID). All buffer operations are only valid for buffers of the "ChildSequence".
  • +
+

Character sequences

+

For communication with external tools, you sometimes need to specify file names and paths to the files that contain the data to be exchanged. The following character sequences can be used as placeholders:

+
    +
  • $P: Software project path including trailing slash
  • +
  • #P: Software project path + project name, e.g. /project_path/project_name
  • +
  • $L: Folder path of the main output file of a software project including trailing slash
  • +
  • %L: Full path to the main output file of a software project including file ending
  • +
  • $S: Path to the device support pack including trailing slash
  • +
  • $D: Name of the selected device
  • +
+
Note
Characters '$', '#', and '%' must be duplicated to escape them, i.e. if a path contains the '$' character it must be written as '$$'.
+

Code Example: Calculating a hash sum

+

The following code example shows how to call an external tool to calculate a hash for an image file.

+
<block>
+
__var length = 0;
+
__var exitCode = 0;
+
__var fileExists = 0;
+
+
BufferRead (0, 0, 0x0080C000, 0xE0, (32|1)); // Implicit allocation of buffer 0
+
BufferStreamOut(0, 0, 0xE0, "$P/SAML11_SHA256_BOCOR_input.bin", 0, 0);
+
exitCode = RunApplication ("$S/Tools/CalcSHA256.exe", "$P/SAML11_SHA256_BOCOR_input.bin --some-SHA256-parameters --out $P/SAML11_SHA256_BOCOR_output.bin", "$P", 10000000); // Timeout is 10 seconds
+
</block>
+
+
<control if="exitCode == 0" info="0 means OK">
+
<block>
+
fileExists = (FilePathExists("$P/SAML11_SHA256_BOCOR_output.bin", 5000000) == 0);
+
</block>
+
<control if="fileExists">
+
<block>
+
BufferStreamIn(0, 0xE0, 0x20, "$P/SAML11_SHA256_BOCOR_output.bin", 0, 10000000); // Append to buffer, timeout 10s
+
BufferWrite (0, 0, 0x0080C000, 0x100, (32|1));
+
</block>
+
</control>
+
</control>
+
+
<control if="(exitCode != 0) || (fileExists == 0)">
+
<block>
+
Message(2, "Error while creating hashsum. Aborting sequence.");
+
</block>
+
</control>
+
+
+ + + + diff --git a/docs/Pack/html/doxygen.css b/docs/Pack/html/doxygen.css new file mode 100644 index 0000000..f0f36f8 --- /dev/null +++ b/docs/Pack/html/doxygen.css @@ -0,0 +1,1366 @@ +/* The standard CSS for doxygen 1.8.6 */ + +body, table, div, p, dl { + font: 400 14px/22px Roboto,sans-serif; +} + +/* @group Heading Levels */ + +h1.groupheader { + font-size: 150%; +} + +.title { + font: 400 14px/28px Roboto,sans-serif; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h2.groupheader { + border-bottom: 1px solid #879ECB; + color: #354C7B; + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px cyan; +} + +dt { + font-weight: bold; +} + +div.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.qindex, div.navtab{ + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; +} + +div.qindex, div.navpath { + width: 100%; + line-height: 140%; +} + +div.navtab { + margin-right: 15px; +} + +/* @group Link Styling */ + +a { + color: #3D578C; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4665A2; +} + +a:hover { + text-decoration: underline; +} + +a.qindex { + font-weight: bold; +} + +a.qindexHL { + font-weight: bold; + background-color: #9CAFD4; + color: #ffffff; + border: 1px double #869DCA; +} + +.contents a.qindexHL:visited { + color: #ffffff; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: #4665A2; +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: #4665A2; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +pre.fragment { + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: monospace, fixed; + font-size: 105%; +} + +div.fragment { + padding: 4px 6px; + margin: 4px 8px 4px 2px; + background-color: #FBFCFD; + border: 1px solid #C4CFE5; +} + +div.line { + font-family: monospace, fixed; + font-size: 13px; + min-height: 13px; + line-height: 1.0; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line.glow { + background-color: cyan; + box-shadow: 0 0 10px cyan; +} + + +span.lineno { + padding-right: 4px; + text-align: right; + border-right: 2px solid #0F0; + background-color: #E8E8E8; + white-space: pre; +} +span.lineno a { + background-color: #D8D8D8; +} + +span.lineno a:hover { + background-color: #C8C8C8; +} + +div.ah { + background-color: black; + font-weight: bold; + color: #ffffff; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000); +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background-color: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +td.indexkey { + background-color: #EBEFF6; + font-weight: bold; + border: 1px solid #C4CFE5; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; +} + +td.indexvalue { + background-color: #EBEFF6; + border: 1px solid #C4CFE5; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #EEF1F7; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +blockquote { + background-color: #F7F8FB; + border-left: 2px solid #9CAFD4; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A3B4D7; +} + +th.dirtab { + background: #EBEFF6; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #4A6AAA; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: cyan; + box-shadow: 0 0 15px cyan; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FAFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memSeparator { + border-bottom: 1px solid #DEE4F0; + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight { + width: 100%; +} + +.memTemplParams { + color: #4665A2; + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtemplate { + font-size: 80%; + color: #4665A2; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px cyan; +} + +.memname { + font-weight: bold; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 0px 6px 0px; + color: #253555; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; + border-top-left-radius: 4px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 4px; + -moz-border-radius-topleft: 4px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 4px; + -webkit-border-top-left-radius: 4px; + +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 10px 2px 10px; + background-color: #FBFCFD; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: #FFFFFF; + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: #728DC1; + border-top:1px solid #5373B4; + border-left:1px solid #5373B4; + border-right:1px solid #C4CFE5; + border-bottom:1px solid #C4CFE5; + text-shadow: none; + color: white; + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view when not used as main index */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.even { + padding-left: 6px; + background-color: #F7F8FB; +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: #3D578C; +} + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: #2A3D61; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + /*width: 100%;*/ + margin-bottom: 10px; + border: 1px solid #A8B8D9; + border-spacing: 0px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #A8B8D9; + /*width: 100%;*/ +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + font-size: 90%; + color: #253555; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #A8B8D9; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:#8AA0CC; + border:solid 1px #C2CDE4; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#364D7C; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: #283A5D; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color:#6884BD; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#364D7C; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C4CFE5; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +dl +{ + padding: 0 0 0 10px; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */ +dl.section +{ + margin-left: 0px; + padding-left: 0px; +} + +dl.note +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00D000; +} + +dl.deprecated +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #505050; +} + +dl.todo +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00C0E0; +} + +dl.test +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #3030E0; +} + +dl.bug +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectname +{ + font: 300% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font: 120% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5373B4; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +div.zoom +{ + border: 1px solid #90A5CE; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#334975; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; +} + +dl.citelist dd { + margin:2px 0; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: #F4F6FA; + border: 1px solid #D8DFEE; + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 20px 10px 10px; + width: 200px; +} + +div.toc li { + background: url("bdwn.png") no-repeat scroll 0 5px transparent; + font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 Arial,FreeSans,sans-serif; + color: #4665A2; + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 30px; +} + +div.toc li.level4 { + margin-left: 45px; +} + +.inherit_header { + font-weight: bold; + color: gray; + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + white-space: nowrap; + background-color: white; + border: 1px solid gray; + border-radius: 4px 4px 4px 4px; + box-shadow: 1px 1px 7px gray; + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: grey; + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: #006318; +} + +#powerTip div { + margin: 0px; + padding: 0px; + font: 12px/16px Roboto,sans-serif; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: #ffffff; + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before { + border-top-color: #808080; + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: #ffffff; + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: #808080; + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: #ffffff; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: #ffffff; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + diff --git a/docs/Pack/html/doxygen.png b/docs/Pack/html/doxygen.png new file mode 100644 index 0000000..3ff17d8 Binary files /dev/null and b/docs/Pack/html/doxygen.png differ diff --git a/docs/Pack/html/dynsections.js b/docs/Pack/html/dynsections.js new file mode 100644 index 0000000..ed092c7 --- /dev/null +++ b/docs/Pack/html/dynsections.js @@ -0,0 +1,97 @@ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); +} +function toggleLevel(level) +{ + $('table.directory tr').each(function(){ + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l + + + + +/package/keywords element +CMSIS-Pack: /package/keywords element + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-Pack +  Version 1.5.0 +
+
Delivery Mechanism for Software Packs
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
/package/keywords element
+
+
+

Is the group element for wrapping keywords, which can be used to find a Pack. Keywords can be exported to web pages to provide information for search engines, such as Google.

+

Example:

+
<package>
+
...
+
<keywords>
+
<keyword>ARM</keyword>
+
<keyword>Cortex-M</keyword>
+
<keyword>TCP/IP Stack</keyword>
+
</keywords>
+
...
+
</package>
+

 

+ + + + + + + + + +
Parent Element Element Chain
package /package
Child Elements Description Type Occurrence
keyword Element that encloses one keyword. Enter a keyword between the opening and closing tag of this element. xs:string 1..1
+

 

+
+
+
+ + + + diff --git a/docs/Pack/html/element_releases.html b/docs/Pack/html/element_releases.html new file mode 100644 index 0000000..1890844 --- /dev/null +++ b/docs/Pack/html/element_releases.html @@ -0,0 +1,199 @@ + + + + + +/package/releases element +CMSIS-Pack: /package/releases element + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-Pack +  Version 1.5.0 +
+
Delivery Mechanism for Software Packs
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
/package/releases element
+
+
+

Contains the release history of the Pack. This element is mandatory. No more than one such group can exist in a Pack. It contains the full release history of the Pack.

+

Example:

+
<package>
+
...
+
<releases>
+
...
+
</releases>
+
...
+
</package>
+

 

+ + + + + + + + + +
Parent Element Element Chain
package /package
Child Element Description Type Occurrence
release Contains the version number of the release with some brief information about the main changes in that specific release. xs:string 1..*
+

 

+
+

+/package/releases/release

+

Contains brief information of the main changes in each release version of a Pack. The content is a string written between the opening and closing release tags. The latest release version is always listed on top.

+

Example:

+
<releases>
+
<release version="1.1.1">Fixed a problem with the feature xyz.
+
</release>
+
<release version="1.1.0">Introduces a new feature xyz.
+
</release>
+
<release version="1.0.0">First published version.
+
</release>
+
</releases>
+

Example for a public repository:

+
<package>
+
...
+
<repository type="git">https://github.com/ARM-software/CMSIS-Driver.git</repository
+
<releases>
+
<release version="2.1.0" tag="2.1.0" url="https://github.com/ARM-software/CMSIS-Driver/archive/2.1.0.zip">
+
Added LAN9220 Ethernet MAC+PHY driver.
+
</release>
+
<release version="2.0.0" tag="2.0.0" url="https://github.com/ARM-software/CMSIS-Driver/archive/2.0.0.zip">
+
First published version.
+
</release>
+
</releases>
+
...
+
</package>
+

 

+ + + + + + + + + + + + + + + + + + + +
Parent Element Element Chain
releases /package/releases element
Attributes Description Type Use
version Version number of the release. The version format is described in Version Type. VersionType required
date Release date (specified as YYYY-MM-DD, for example 2014-12-14 (14th December 2014). xs:date optional
tag In case the repository element is specified, the tag attribute is used to specify the repository tag that corresponds to this release of the pack. xs:string optional
url URL specifying the location of the pack of the specified version. This can be used to override the default location being <url>/<vendor>.<name>.<version>.pack xs:anyURI optional
deprecated Pack is no longer officially supported after the set date. It will be excluded from checks for update. Deprecated packs may remain available for download from the server. Tools will continue to work but may provide indicators highlighting end of support for the pack and its content. Not recommended for use with new projects. Note this attribute is only relevant when set for the latest release located on top of the releases section. xs:date optional
replacement Specifies the vendor and name of the Pack that shall be used instead. Use in conjunction with the deprecated attribute. E.g. the maintainer of the Pack A.X_DFP changes from vendor A to vendor B. In this case the attribute deprecated gets set in the A.X_DFP.pdsc and the replacement attribute set to B.X_DFP. Tools use this information to redirect users to a supported pack. xs:string optional
+

 

+
+
+
+ + + + diff --git a/docs/Pack/html/element_repository.html b/docs/Pack/html/element_repository.html new file mode 100644 index 0000000..4e10a26 --- /dev/null +++ b/docs/Pack/html/element_repository.html @@ -0,0 +1,159 @@ + + + + + +/package/repository element +CMSIS-Pack: /package/repository element + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-Pack +  Version 1.5.0 +
+
Delivery Mechanism for Software Packs
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
/package/repository element
+
+
+

The element specifies the URL of the public repository the pack originates from. The attribute 'type' specifies the repository technology and therefore the tools required to be used with this repository.

+

Example:

+
<package>
+
...
+
<repository type="git">https://github.com/ARM-software/CMSIS-Driver.git</repository>
+
...
+
</releases>
+
...
+
</package>
+

 

+ + + + + + + + + +
Parent Element Element Chain
package /package
Attributes Description Type Use
type Repository management technology used by the specified public repository (e.g. git, svn). xs:string required
+

Example:

+

Contributing to a software pack hosted on GitHub:

+
    +
  • Open the URL specified by the <repository> element in a browser.
  • +
  • Create a fork of the repository.
  • +
  • Clone the fork on your machine (you may want to checkout the tag specified in the <release> element).
  • +
  • Create a branch for you modifications.
  • +
  • Develop and test the modifications of your branch and push the branch to GitHub.
  • +
  • Create a pull request of your branch into the upstream repository.
  • +
+
+
+
+ + + + diff --git a/docs/Pack/html/element_requirements_pg.html b/docs/Pack/html/element_requirements_pg.html new file mode 100644 index 0000000..99fbe69 --- /dev/null +++ b/docs/Pack/html/element_requirements_pg.html @@ -0,0 +1,262 @@ + + + + + +/package/requirements +CMSIS-Pack: /package/requirements + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-Pack +  Version 1.5.0 +
+
Delivery Mechanism for Software Packs
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
/package/requirements
+
+
+

There are three different requirement types:

+
    +
  • The <packages> section lists CMSIS Packs that have been used to configure the project. This includes the specification of a version range to ensure compatibility. If no version is provided, the latest installed version is used. If not yet installed, the latest available version will be installed before resolving the configuration.
  • +
  • The <compilers> section specifies the toolchains that are supported by this example. The required compiler version is specified using the version element. If no compiler is specified, it is assumed that any toolchain will work.
  • +
  • The <languages> section allows to specify requirements regarding the programming language, for example C99 standard. If no language requirements are set, ANSI C is assumed.
  • +
+

Example requirements section:

+
<package xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="PACK.xsd"/>
+
...
+
<requirements>
+
<packages>
+
<package name="STM32F4xx_DFP" vendor="Keil" version="2.8.0:2.8.0"/>
+
</packages>
+
<compilers>
+
<compiler name="ARMCC" version="5.0.0:5.99.0"/>
+
</compilers>
+
<languages>
+
<language name="C" version="99"/>
+
</languages>
+
</requirements>
+
...
+
</package>
+

/requirements

+ + + + + + + + + + + + + + + +
Parents Element Chain
package /package
Attributes Description Type Use
Child Elements Description Type Occurrence
packages List of software packs required for the project to build. PackagesType <0..1>
compilers List of compilers required for the project to build. Support for all compilers is assumed when not specified. CompilersType <0..1>
languages List of language standards required for the project to build. Assuming ANSI C if not set. LanguagesType <0..1>
+

 

+
+

+/package/requirements/packages

+

Example packages section:

+
<package xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="PACK.xsd"/>
+
...
+
<requirements>
+
<packages>
+
<package name="STM32F4xx_DFP" vendor="Keil" version="2.8.0:2.8.0"/>
+
</packages>
+
</requirements>
+
...
+
</package>
+

/package

+ + + + + + + + + + + + + +
Parents Element Chain
packages /package/requirements/packages
Attributes Description Type Use
vendor specify vendor of the package (e.g. "ARM") RestrictedString required
name Name of the pack RestrictedString required
version Version of the required software pack which can be:
    +
  • Minimum version (higher versions are accepted).
  • +
  • Version range specified with min_version:max_version. min_version must be lower or equal than max_version. If min_version and max_version are equal, the version must match.
  • +
  • If no version is specified, the latest available version is assumed.
  • +
+
VersionType optional
+

 

+
+

+/package/requirements/compilers

+

Example compilers section:

+
<package xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="PACK.xsd"/>
+
...
+
<requirements>
+
<compilers>
+
<compiler name="ARMCC" version="5.0.0:5.99.0"/>
+
</compilers>
+
</requirements>
+
...
+
</package>
+

/compiler

+ + + + + + + + + + + +
Parents Element Chain
requirements element_requirements
Attributes Description Type Use
name Name of the required compiler (i.e. "ARMCC", "IAR") CompilerEnumType required
version Version of the required compiler which can be:
    +
  • Minimum version (higher versions are accepted).
  • +
  • Version range specified with min_version:max_version. min_version must be lower or equal than max_version. If min_version and max_version are equal, the version must match.
    +
  • +
+
VersionType required
+

 

+
+

+/package/requirements/languages

+

Example languages section:

+
<package xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="PACK.xsd"/>
+
...
+
<requirements>
+
<languages>
+
<language name="C" version="99"/>
+
<languages>
+
</requirements>
+
...
+
</package>
+

/language

+ + + + + + + + + + + +
Parents Element Chain
requirements element_requirements
Attributes Description Type Use
name Name of the programming language (i.e. "C", "C++") xs:string required
version Version of the language standard (i.e. 90, 99, etc.). The setting will be reflected in the compiler commandline. xs:string required
+

 

+
+
+
+ + + + diff --git a/docs/Pack/html/element_taxonomy.html b/docs/Pack/html/element_taxonomy.html new file mode 100644 index 0000000..f2b99e2 --- /dev/null +++ b/docs/Pack/html/element_taxonomy.html @@ -0,0 +1,268 @@ + + + + + +/package/taxonomy element +CMSIS-Pack: /package/taxonomy element + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-Pack +  Version 1.5.0 +
+
Delivery Mechanism for Software Packs
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
/package/taxonomy element
+
+
+

Group to list description elements that define component classes and component group names used within a package description. This element is optional.

+

Example:

+
<package>
+
...
+
<taxonomy>
+
...
+
</taxonomy>
+
...
+
</package>
+

 

+ + + + + + + + + +
Parent Element Element Chain
package /package
Child Elements Description Type Occurrence
description Describes or defines a component class or class-group combination. TaxonomyDescriptionType 1..*
+

 

+
+

+/package/taxonomy/description

+

This element describes a component class or the combination between a component class and a component group. Components are categorized by Cclass and Cgroup. The creator of a package can define names for Cclass and Cgroup. Thus, configuration tools can display the set of available components. A document can be referenced using the attribute doc. The attribute generator can be used to reference to a generator tool. The id of the generator needs to be the same as specified in the element /package/generators/generator. The description itself is a string entered between the opening and closing tags of the element description.

+

It is recommended to use an already agreed taxonomy for interchangeable components. For example, the combination of class CMSIS and group Startup is defined for the device-specific CMSIS-Core (Cortex-M) files.

+

 

+

Example:

+
<taxonomy>
+
<description Cclass="Board Support">Generic Interfaces for Evaluation and Development Boards</description>
+
<description Cclass="CMSIS" doc="CMSIS/Documentation/General/html/index.html">Cortex Microcontroller Software Interface Components</description>
+
<description Cclass="Device" doc="CMSIS/Documentation/Core/html/index.html">Startup, System Setup</description>
+
<description Cclass="CMSIS Driver" doc="CMSIS/Documentation/Driver/html/index.html">Unified Device Drivers compliant to CMSIS-Driver Specifications</description>
+
<description Cclass="File System">File Drive Support and File System</description>
+
<description Cclass="Graphics">Graphical User Interface</description>
+
<description Cclass="Network">Network Stack using Internet Protocols</description>
+
<description Cclass="USB">Universal Serial Bus Stack</description>
+
<description Cclass="RTOS">Realtime Operating System</description>
+
</taxonomy>
+
Note
You must not use Windows or Linux reserved characters for Cclass, Cgrouop, and Csub names! Some development tools use these names to create a directory structure for the software components in projects. Reserved characters are:
< (less than)
+> (greater than)
+: (colon)
+" (double quote)
+/ (forward slash)
+\ (backslash)
+| (vertical bar or pipe)
+? (question mark)
+* (asterisk)
+
+

 

+ + + + + + + + + + + + + + + + + +
Parent Element Element Chain
taxonomy /package/taxonomy element
Attributes Description Type Use
Cclass Component Class Name. Can be defined by the creator of the package. Predefined values can be used as listed in the table Component Classes. Cclass required
Cgroup Component Group Name. Can be defined by the creator of the package. Predefined values can be used as listed in the table Component Groups. CgroupType optional
doc Reference to documentation. xs:string optional
generator Reference to a generator. Enter the id value of the element /package/generators/generator. xs:string optional
public Set publishing permissions for the documentation. If <public> is true, then the vendor gives permission to extract the documentation from the pack and publish it on a web-page. Links to web pages are assumed to be public. The default value is false. xs:boolean optional
+

 

+

Table: Component Classes

+

Component Class names are strings with a minimum length of 3 characters and a maximum length of 32 characters. Component class names are specified in the section /package/taxonomy/description.

+

These values can be used in the elements:

+ +

Example:

+
<... Cclass="CMSIS" ...>
+

 

+

The table lists predefined Component Classes.

+ + + + + + + + + + + + + + + + + + + + + + + +
Cclass= Description
Board Support Components providing interfaces for Evaluation and Development Boards
CMSIS Components defined by Cortex Microcontroller Software Interface Standard (e.g. CMSIS-Core(M), CMSIS-Core(A), CMSIS-DSP and CMSIS-RTOS)
Device Components containing device specific implementations of non-standard APIs (e.g. HAL drivers, CMSIS Startup files)
CMSIS Driver Components implementing unified device drivers compliant to CMSIS-Driver (e.g. UART, SPI, USB, etc.)
File System Components implementing some kind of File Systems (e.g. Flash or RAM based file systems)
Graphics Components implementing some kind of Display and Graphics Software
Network Components implementing some kind of Network Communications (e.g. TCP/IP Stack)
USB Components implementing some kind of USB interfaces (e.g. Host and Device interfaces)
Compiler Components implementing Compiler specific interfaces (e.g. Retargeting)
RTOS Components implementing some kind of Real-time Operating System (e.g. FreeRTOS, Micrium Real Time Kernel)
+

 

+

Table: Component Groups

+

Component Group names are specified by the element Cgroup and create categories within a Component Class specified by the element Cclass. The creator of the Pack can define the names in the element /package/taxonomy/description. A Component Group name is string with a length between 3 and 32 characters.

+

Example:

+
<... Cgroup="RTOS" Cclass="CMSIS"...>
+

 

+

Component Groups can be used in the elements:

+ +

The table lists predefined values for the Component Class Cclass="CMSIS". No other Component Groups have been defined so far.

+ + + + + + + + + +
Cgroup= Description
CORE A component containing device support in accordance to the CMSIS-Core(M) or CMSIS-Core(A) specifications (startup, system and device files)
DSP A component implementing the CMSIS-DSP API specification.
RTOS A component implementing the CMSIS-RTOS API specification.
+

 

+
+
+ + + + diff --git a/docs/Pack/html/flashAlgorithm.html b/docs/Pack/html/flashAlgorithm.html new file mode 100644 index 0000000..a76a8f8 --- /dev/null +++ b/docs/Pack/html/flashAlgorithm.html @@ -0,0 +1,195 @@ + + + + + +Flash Programming +CMSIS-Pack: Flash Programming + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-Pack +  Version 1.5.0 +
+
Delivery Mechanism for Software Packs
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Flash Programming
+
+
+

Flash Programming Algorithms are a piece of software to erase or download applications to Flash devices. A Pack with Device Support usually contains predefined Flash algorithms for programming the devices that are supported by the DFP. A template for creating new algorithms are available in the ARM:CMSIS Pack. The following section describes the process in more detail.

+

+Creating a new Algorithm

+

Flash programming algorithms are defined with functions to erase and program the Flash device. Special compiler and linker settings are required. Follow these steps to create and configure a new Flash programming algorithm:

+
    +
  1. Copy the content from the ARM:CMSIS Pack folder (usually C:\Keil\ARM\Pack\ARM\CMSIS\version\Device\_Template_Flash) to a new folder.
  2. +
  3. Rename the project file NewDevice.uvprojx to represent the new Flash ROM device name, for example MyDevice.uvprojx.
  4. +
  5. Open the project with uVision. From the toolbar, use the drop-down Select Target to define the processor architecture. Cortex-M fits for all Cortex-M0/M0+, M3, and M4 devices. The configuration assumes a little-endian microcontroller. In case of a big-endian microcontroller, select the correct processor core with Project - Options for Target - Device.
  6. +
  7. Open the dialog Project - Options for Target - Output and change the content of the field Name of Executable to represent the device, for example MyDevice.
  8. +
  9. Adapt the programming algorithms in the file FlashPrg.
  10. +
  11. Adapt the device parameters in the file FlashDev.
  12. +
  13. Use Project - Build Target to generate the new Flash programming algorithm. The output file (for example MyDevice.FLM) has to be added to the DFP.
  14. +
+
Note
    +
  • Creating a Flash programming algorithm with MDK-Lite is not supported.
  • +
  • Flash programming algorithms use Read-Only Position Independent and Read-Write Position Independent program code. These options are set in the dialogs Project - Options for Target - C/C++ and Project - Options for Target - Asm.
  • +
  • The dialog Project - Options for Target - Linker defines the linker scatter file Target.lin. The error L6305 is disabled with –diag_suppress L6305.
  • +
  • The Flash Algorithm Functions section contains reference for all the available functions.
  • +
+
+

+

FlashPrg.c

+

The file FlashPrg.c contains the mandatory Flash programming functions Init, UnInit, EraseSector, and ProgramPage. Optionally, depending on the device features (or to speed-up execution), the functions EraseChip, BlankCheck, and Verify can be implemented.

+

+

FlashDev.c

+

The file FlashDev.c contains parameter definitions for:

+
    +
  1. the Flash programming functions.
  2. +
  3. the FlashDevice structure:
    struct FlashDevice const FlashDevice = {
    +
    FLASH_DRV_VERS, // Driver Version, do not modify!
    +
    "New Device 256kB Flash", // Device Name
    +
    ONCHIP, // Device Type
    +
    0x00000000, // Device Start Address
    +
    0x00040000, // Device Size in Bytes (256kB)
    +
    1024, // Programming Page Size
    +
    0, // Reserved, must be 0
    +
    0xFF, // Initial Content of Erased Memory
    +
    100, // Program Page Timeout 100 mSec
    +
    3000, // Erase Sector Timeout 3000 mSec
    +
    +
    // Specify Size and Address of Sectors
    +
    0x002000, 0x000000, // Sector Size 8kB (8 Sectors)
    +
    0x010000, 0x010000, // Sector Size 64kB (2 Sectors)
    +
    0x002000, 0x030000, // Sector Size 8kB (8 Sectors)
    +
    SECTOR_END
    +
    };
    +
  4. +
+
Note
The Device Name will usually be shown in tools to identify the Flash algorithm. Make sure that this is changed to the correct device name from the DFP.
+

+Adding an Algorithm to a Pack

+

The generated *.FLM file needs to be added to the Pack with Device Support, so that it is available to the tool user for programming his device. Usually, a directory Flash is created and the algorithm is saved in this directory.

+

The algorithm is specified within the the /package/devices/family level:

+
<family Dfamily="STM32F4" Dvendor="STMicroelectronics:13">
+
...
+
<algorithm name="Flash/STM32F2xx_512.flm" start=0x08000000 size=0x10000 default="1"/> <!-- valid for all devices of the family -->
+
+
<subFamily DsubFamily="STM32F405">
+
<algorithm name="Flash/STM32F2xx_1024.flm" start=0x08000000 size=0x20000 default="1"/> <!-- valid for all devices of a subFamily -->
+
+
<device Dname="STM32F405OE">
+
<algorithm name="Flash/STM32F2xx_2048.flm" start=0x08000000 size=0x40000 default="1"/> <!-- finally, this is the default for the device -->
+
</device>
+
...
+
</family>
+

The argument start specifies the base address for the Flash programming algorithm.

+

The argument size specifies the size covered by the Flash programming algorithm. End address = start + size - 1.

+

The argument default specifies whether a Flash programming algorithm is set as the default algorithm in a project (when true). If default is not set or false, the Flash programming algorithm can be configured on a lower level. However, the Flash programming algorithm of a project can be changed manually at any time during development.

+
+
+ + + + diff --git a/docs/Pack/html/flashAlgorithm.js b/docs/Pack/html/flashAlgorithm.js new file mode 100644 index 0000000..6bcbb81 --- /dev/null +++ b/docs/Pack/html/flashAlgorithm.js @@ -0,0 +1,14 @@ +var flashAlgorithm = +[ + [ "Creating a new Algorithm", "flashAlgorithm.html#CreateFPA", null ], + [ "Adding an Algorithm to a Pack", "flashAlgorithm.html#AddFPA", null ], + [ "Algorithm Functions", "algorithmFunc.html", [ + [ "BlankCheck", "algorithmFunc.html#BlankCheck", null ], + [ "EraseChip", "algorithmFunc.html#EraseChip", null ], + [ "EraseSector", "algorithmFunc.html#EraseSector", null ], + [ "Init", "algorithmFunc.html#Init", null ], + [ "ProgramPage", "algorithmFunc.html#ProgramPage", null ], + [ "UnInit", "algorithmFunc.html#UnInit", null ], + [ "Verify", "algorithmFunc.html#Verify", null ] + ] ] +]; \ No newline at end of file diff --git a/docs/Pack/html/ftv2blank.png b/docs/Pack/html/ftv2blank.png new file mode 100644 index 0000000..63c605b Binary files /dev/null and b/docs/Pack/html/ftv2blank.png differ diff --git a/docs/Pack/html/ftv2cl.png b/docs/Pack/html/ftv2cl.png new file mode 100644 index 0000000..132f657 Binary files /dev/null and b/docs/Pack/html/ftv2cl.png differ diff --git a/docs/Pack/html/ftv2doc.png b/docs/Pack/html/ftv2doc.png new file mode 100644 index 0000000..17edabf Binary files /dev/null and b/docs/Pack/html/ftv2doc.png differ diff --git a/docs/Pack/html/ftv2folderclosed.png b/docs/Pack/html/ftv2folderclosed.png new file mode 100644 index 0000000..bb8ab35 Binary files /dev/null and b/docs/Pack/html/ftv2folderclosed.png differ diff --git a/docs/Pack/html/ftv2folderopen.png b/docs/Pack/html/ftv2folderopen.png new file mode 100644 index 0000000..d6c7f67 Binary files /dev/null and b/docs/Pack/html/ftv2folderopen.png differ diff --git a/docs/Pack/html/ftv2lastnode.png b/docs/Pack/html/ftv2lastnode.png new file mode 100644 index 0000000..63c605b Binary files /dev/null and b/docs/Pack/html/ftv2lastnode.png differ diff --git a/docs/Pack/html/ftv2link.png b/docs/Pack/html/ftv2link.png new file mode 100644 index 0000000..17edabf Binary files /dev/null and b/docs/Pack/html/ftv2link.png differ diff --git a/docs/Pack/html/ftv2mlastnode.png b/docs/Pack/html/ftv2mlastnode.png new file mode 100644 index 0000000..0b63f6d Binary files /dev/null and b/docs/Pack/html/ftv2mlastnode.png differ diff --git a/docs/Pack/html/ftv2mnode.png b/docs/Pack/html/ftv2mnode.png new file mode 100644 index 0000000..0b63f6d Binary files /dev/null and b/docs/Pack/html/ftv2mnode.png differ diff --git a/docs/Pack/html/ftv2mo.png b/docs/Pack/html/ftv2mo.png new file mode 100644 index 0000000..4bfb80f Binary files /dev/null and b/docs/Pack/html/ftv2mo.png differ diff --git a/docs/Pack/html/ftv2node.png b/docs/Pack/html/ftv2node.png new file mode 100644 index 0000000..63c605b Binary files /dev/null and b/docs/Pack/html/ftv2node.png differ diff --git a/docs/Pack/html/ftv2ns.png b/docs/Pack/html/ftv2ns.png new file mode 100644 index 0000000..72e3d71 Binary files /dev/null and b/docs/Pack/html/ftv2ns.png differ diff --git a/docs/Pack/html/ftv2plastnode.png b/docs/Pack/html/ftv2plastnode.png new file mode 100644 index 0000000..c6ee22f Binary files /dev/null and b/docs/Pack/html/ftv2plastnode.png differ diff --git a/docs/Pack/html/ftv2pnode.png b/docs/Pack/html/ftv2pnode.png new file mode 100644 index 0000000..c6ee22f Binary files /dev/null and b/docs/Pack/html/ftv2pnode.png differ diff --git a/docs/Pack/html/ftv2splitbar.png b/docs/Pack/html/ftv2splitbar.png new file mode 100644 index 0000000..fe895f2 Binary files /dev/null and b/docs/Pack/html/ftv2splitbar.png differ diff --git a/docs/Pack/html/ftv2vertline.png b/docs/Pack/html/ftv2vertline.png new file mode 100644 index 0000000..63c605b Binary files /dev/null and b/docs/Pack/html/ftv2vertline.png differ diff --git a/docs/Pack/html/index.html b/docs/Pack/html/index.html new file mode 100644 index 0000000..76898c5 --- /dev/null +++ b/docs/Pack/html/index.html @@ -0,0 +1,182 @@ + + + + + +Main Page +CMSIS-Pack: Main Page + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-Pack +  Version 1.5.0 +
+
Delivery Mechanism for Software Packs
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
CMSIS-Pack Documentation
+
+
+

CMSIS-Pack describes a delivery mechanism for software components, device parameters, and evaluation board support. The XML-based package description (PDSC) file describes the content of a Software Pack (file collection) that includes:

+
    +
  • Source code, header files, and software libraries
  • +
  • Documentation and source code templates
  • +
  • Device parameters along with startup code and programming algorithms
  • +
  • Example projects
  • +
+

The complete file collection along with the PDSC file is shipped in ZIP-format as a Software Pack. The PDSC file is designed for software development environments and describes the user and device relevant context for the files supplied within such a Software Pack. A Software Pack can be used for multiple purposes (see below).

+

After installing a Software Pack, all included software components are available to the development tools. Software components are a collection of source modules, header and configuration files as well as libraries. Packs containing software components can also include Example Projects and User Code Templates.

+

The Revision History of CMSIS-Pack lists the main changes between versions.

+

+Software Pack Use Cases

+
+SPVariants_small.png +
+Software Pack Use Cases
+

The figure above shows the following use cases for Software Packs:

+
    +
  • Device Family Pack (DFP): contains CMSIS system/startup files, drivers, and flash algorithms for a microcontroller device family.
  • +
  • CMSIS Software Pack: contains the generic CMSIS components (CORE, DSP Library, and RTOS implementation) supplied by Arm.
  • +
  • Middleware Pack: contains software components belonging to a middleware (such as source code or libraries).
  • +
  • Board Support Pack (BSP): contains documentation, schematics, and drivers for a certain development board.
  • +
  • In-house Software Packs: usually contain software components that can be distributed within a company or engineering group.
  • +
+
Note
A Software Pack can address multiple use cases at the same time!
+

The following sections give you more details on the basics:

+ +
+

CMSIS-Pack in ARM::CMSIS Pack

+

Files relevant to CMSIS-Pack are present in the following ARM::CMSIS directories:

+ + + + + + + + + +
Folder Content
Utilities Utilities for Creating Packs
Pack\Example Reference Software Pack
Pack\Tutorials Tutorials for Creating Packs
+
+
+
+ + + + diff --git a/docs/Pack/html/jquery.js b/docs/Pack/html/jquery.js new file mode 100644 index 0000000..3db33e6 --- /dev/null +++ b/docs/Pack/html/jquery.js @@ -0,0 +1,72 @@ +/*! + * jQuery JavaScript Library v1.7.1 + * http://jquery.com/ + * + * Copyright 2011, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Mon Nov 21 21:11:03 2011 -0500 + */ +(function(bb,L){var av=bb.document,bu=bb.navigator,bl=bb.location;var b=(function(){var bF=function(b0,b1){return new bF.fn.init(b0,b1,bD)},bU=bb.jQuery,bH=bb.$,bD,bY=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,bM=/\S/,bI=/^\s+/,bE=/\s+$/,bA=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,bN=/^[\],:{}\s]*$/,bW=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,bP=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,bJ=/(?:^|:|,)(?:\s*\[)+/g,by=/(webkit)[ \/]([\w.]+)/,bR=/(opera)(?:.*version)?[ \/]([\w.]+)/,bQ=/(msie) ([\w.]+)/,bS=/(mozilla)(?:.*? rv:([\w.]+))?/,bB=/-([a-z]|[0-9])/ig,bZ=/^-ms-/,bT=function(b0,b1){return(b1+"").toUpperCase()},bX=bu.userAgent,bV,bC,e,bL=Object.prototype.toString,bG=Object.prototype.hasOwnProperty,bz=Array.prototype.push,bK=Array.prototype.slice,bO=String.prototype.trim,bv=Array.prototype.indexOf,bx={};bF.fn=bF.prototype={constructor:bF,init:function(b0,b4,b3){var b2,b5,b1,b6;if(!b0){return this}if(b0.nodeType){this.context=this[0]=b0;this.length=1;return this}if(b0==="body"&&!b4&&av.body){this.context=av;this[0]=av.body;this.selector=b0;this.length=1;return this}if(typeof b0==="string"){if(b0.charAt(0)==="<"&&b0.charAt(b0.length-1)===">"&&b0.length>=3){b2=[null,b0,null]}else{b2=bY.exec(b0)}if(b2&&(b2[1]||!b4)){if(b2[1]){b4=b4 instanceof bF?b4[0]:b4;b6=(b4?b4.ownerDocument||b4:av);b1=bA.exec(b0);if(b1){if(bF.isPlainObject(b4)){b0=[av.createElement(b1[1])];bF.fn.attr.call(b0,b4,true)}else{b0=[b6.createElement(b1[1])]}}else{b1=bF.buildFragment([b2[1]],[b6]);b0=(b1.cacheable?bF.clone(b1.fragment):b1.fragment).childNodes}return bF.merge(this,b0)}else{b5=av.getElementById(b2[2]);if(b5&&b5.parentNode){if(b5.id!==b2[2]){return b3.find(b0)}this.length=1;this[0]=b5}this.context=av;this.selector=b0;return this}}else{if(!b4||b4.jquery){return(b4||b3).find(b0)}else{return this.constructor(b4).find(b0)}}}else{if(bF.isFunction(b0)){return b3.ready(b0)}}if(b0.selector!==L){this.selector=b0.selector;this.context=b0.context}return bF.makeArray(b0,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return bK.call(this,0)},get:function(b0){return b0==null?this.toArray():(b0<0?this[this.length+b0]:this[b0])},pushStack:function(b1,b3,b0){var b2=this.constructor();if(bF.isArray(b1)){bz.apply(b2,b1)}else{bF.merge(b2,b1)}b2.prevObject=this;b2.context=this.context;if(b3==="find"){b2.selector=this.selector+(this.selector?" ":"")+b0}else{if(b3){b2.selector=this.selector+"."+b3+"("+b0+")"}}return b2},each:function(b1,b0){return bF.each(this,b1,b0)},ready:function(b0){bF.bindReady();bC.add(b0);return this},eq:function(b0){b0=+b0;return b0===-1?this.slice(b0):this.slice(b0,b0+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(bK.apply(this,arguments),"slice",bK.call(arguments).join(","))},map:function(b0){return this.pushStack(bF.map(this,function(b2,b1){return b0.call(b2,b1,b2)}))},end:function(){return this.prevObject||this.constructor(null)},push:bz,sort:[].sort,splice:[].splice};bF.fn.init.prototype=bF.fn;bF.extend=bF.fn.extend=function(){var b9,b2,b0,b1,b6,b7,b5=arguments[0]||{},b4=1,b3=arguments.length,b8=false;if(typeof b5==="boolean"){b8=b5;b5=arguments[1]||{};b4=2}if(typeof b5!=="object"&&!bF.isFunction(b5)){b5={}}if(b3===b4){b5=this;--b4}for(;b40){return}bC.fireWith(av,[bF]);if(bF.fn.trigger){bF(av).trigger("ready").off("ready")}}},bindReady:function(){if(bC){return}bC=bF.Callbacks("once memory");if(av.readyState==="complete"){return setTimeout(bF.ready,1)}if(av.addEventListener){av.addEventListener("DOMContentLoaded",e,false);bb.addEventListener("load",bF.ready,false)}else{if(av.attachEvent){av.attachEvent("onreadystatechange",e);bb.attachEvent("onload",bF.ready);var b0=false;try{b0=bb.frameElement==null}catch(b1){}if(av.documentElement.doScroll&&b0){bw()}}}},isFunction:function(b0){return bF.type(b0)==="function"},isArray:Array.isArray||function(b0){return bF.type(b0)==="array"},isWindow:function(b0){return b0&&typeof b0==="object"&&"setInterval" in b0},isNumeric:function(b0){return !isNaN(parseFloat(b0))&&isFinite(b0)},type:function(b0){return b0==null?String(b0):bx[bL.call(b0)]||"object"},isPlainObject:function(b2){if(!b2||bF.type(b2)!=="object"||b2.nodeType||bF.isWindow(b2)){return false}try{if(b2.constructor&&!bG.call(b2,"constructor")&&!bG.call(b2.constructor.prototype,"isPrototypeOf")){return false}}catch(b1){return false}var b0;for(b0 in b2){}return b0===L||bG.call(b2,b0)},isEmptyObject:function(b1){for(var b0 in b1){return false}return true},error:function(b0){throw new Error(b0)},parseJSON:function(b0){if(typeof b0!=="string"||!b0){return null}b0=bF.trim(b0);if(bb.JSON&&bb.JSON.parse){return bb.JSON.parse(b0)}if(bN.test(b0.replace(bW,"@").replace(bP,"]").replace(bJ,""))){return(new Function("return "+b0))()}bF.error("Invalid JSON: "+b0)},parseXML:function(b2){var b0,b1;try{if(bb.DOMParser){b1=new DOMParser();b0=b1.parseFromString(b2,"text/xml")}else{b0=new ActiveXObject("Microsoft.XMLDOM");b0.async="false";b0.loadXML(b2)}}catch(b3){b0=L}if(!b0||!b0.documentElement||b0.getElementsByTagName("parsererror").length){bF.error("Invalid XML: "+b2)}return b0},noop:function(){},globalEval:function(b0){if(b0&&bM.test(b0)){(bb.execScript||function(b1){bb["eval"].call(bb,b1)})(b0)}},camelCase:function(b0){return b0.replace(bZ,"ms-").replace(bB,bT)},nodeName:function(b1,b0){return b1.nodeName&&b1.nodeName.toUpperCase()===b0.toUpperCase()},each:function(b3,b6,b2){var b1,b4=0,b5=b3.length,b0=b5===L||bF.isFunction(b3);if(b2){if(b0){for(b1 in b3){if(b6.apply(b3[b1],b2)===false){break}}}else{for(;b40&&b0[0]&&b0[b1-1])||b1===0||bF.isArray(b0));if(b3){for(;b21?aJ.call(arguments,0):bG;if(!(--bw)){bC.resolveWith(bC,bx)}}}function bz(bF){return function(bG){bB[bF]=arguments.length>1?aJ.call(arguments,0):bG;bC.notifyWith(bE,bB)}}if(e>1){for(;bv
a";bI=bv.getElementsByTagName("*");bF=bv.getElementsByTagName("a")[0];if(!bI||!bI.length||!bF){return{}}bG=av.createElement("select");bx=bG.appendChild(av.createElement("option"));bE=bv.getElementsByTagName("input")[0];bJ={leadingWhitespace:(bv.firstChild.nodeType===3),tbody:!bv.getElementsByTagName("tbody").length,htmlSerialize:!!bv.getElementsByTagName("link").length,style:/top/.test(bF.getAttribute("style")),hrefNormalized:(bF.getAttribute("href")==="/a"),opacity:/^0.55/.test(bF.style.opacity),cssFloat:!!bF.style.cssFloat,checkOn:(bE.value==="on"),optSelected:bx.selected,getSetAttribute:bv.className!=="t",enctype:!!av.createElement("form").enctype,html5Clone:av.createElement("nav").cloneNode(true).outerHTML!=="<:nav>",submitBubbles:true,changeBubbles:true,focusinBubbles:false,deleteExpando:true,noCloneEvent:true,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableMarginRight:true};bE.checked=true;bJ.noCloneChecked=bE.cloneNode(true).checked;bG.disabled=true;bJ.optDisabled=!bx.disabled;try{delete bv.test}catch(bC){bJ.deleteExpando=false}if(!bv.addEventListener&&bv.attachEvent&&bv.fireEvent){bv.attachEvent("onclick",function(){bJ.noCloneEvent=false});bv.cloneNode(true).fireEvent("onclick")}bE=av.createElement("input");bE.value="t";bE.setAttribute("type","radio");bJ.radioValue=bE.value==="t";bE.setAttribute("checked","checked");bv.appendChild(bE);bD=av.createDocumentFragment();bD.appendChild(bv.lastChild);bJ.checkClone=bD.cloneNode(true).cloneNode(true).lastChild.checked;bJ.appendChecked=bE.checked;bD.removeChild(bE);bD.appendChild(bv);bv.innerHTML="";if(bb.getComputedStyle){bA=av.createElement("div");bA.style.width="0";bA.style.marginRight="0";bv.style.width="2px";bv.appendChild(bA);bJ.reliableMarginRight=(parseInt((bb.getComputedStyle(bA,null)||{marginRight:0}).marginRight,10)||0)===0}if(bv.attachEvent){for(by in {submit:1,change:1,focusin:1}){bB="on"+by;bw=(bB in bv);if(!bw){bv.setAttribute(bB,"return;");bw=(typeof bv[bB]==="function")}bJ[by+"Bubbles"]=bw}}bD.removeChild(bv);bD=bG=bx=bA=bv=bE=null;b(function(){var bM,bU,bV,bT,bN,bO,bL,bS,bR,e,bP,bQ=av.getElementsByTagName("body")[0];if(!bQ){return}bL=1;bS="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;";bR="visibility:hidden;border:0;";e="style='"+bS+"border:5px solid #000;padding:0;'";bP="
";bM=av.createElement("div");bM.style.cssText=bR+"width:0;height:0;position:static;top:0;margin-top:"+bL+"px";bQ.insertBefore(bM,bQ.firstChild);bv=av.createElement("div");bM.appendChild(bv);bv.innerHTML="
t
";bz=bv.getElementsByTagName("td");bw=(bz[0].offsetHeight===0);bz[0].style.display="";bz[1].style.display="none";bJ.reliableHiddenOffsets=bw&&(bz[0].offsetHeight===0);bv.innerHTML="";bv.style.width=bv.style.paddingLeft="1px";b.boxModel=bJ.boxModel=bv.offsetWidth===2;if(typeof bv.style.zoom!=="undefined"){bv.style.display="inline";bv.style.zoom=1;bJ.inlineBlockNeedsLayout=(bv.offsetWidth===2);bv.style.display="";bv.innerHTML="
";bJ.shrinkWrapBlocks=(bv.offsetWidth!==2)}bv.style.cssText=bS+bR;bv.innerHTML=bP;bU=bv.firstChild;bV=bU.firstChild;bN=bU.nextSibling.firstChild.firstChild;bO={doesNotAddBorder:(bV.offsetTop!==5),doesAddBorderForTableAndCells:(bN.offsetTop===5)};bV.style.position="fixed";bV.style.top="20px";bO.fixedPosition=(bV.offsetTop===20||bV.offsetTop===15);bV.style.position=bV.style.top="";bU.style.overflow="hidden";bU.style.position="relative";bO.subtractsBorderForOverflowNotVisible=(bV.offsetTop===-5);bO.doesNotIncludeMarginInBodyOffset=(bQ.offsetTop!==bL);bQ.removeChild(bM);bv=bM=null;b.extend(bJ,bO)});return bJ})();var aS=/^(?:\{.*\}|\[.*\])$/,aA=/([A-Z])/g;b.extend({cache:{},uuid:0,expando:"jQuery"+(b.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},hasData:function(e){e=e.nodeType?b.cache[e[b.expando]]:e[b.expando];return !!e&&!S(e)},data:function(bx,bv,bz,by){if(!b.acceptData(bx)){return}var bG,bA,bD,bE=b.expando,bC=typeof bv==="string",bF=bx.nodeType,e=bF?b.cache:bx,bw=bF?bx[bE]:bx[bE]&&bE,bB=bv==="events";if((!bw||!e[bw]||(!bB&&!by&&!e[bw].data))&&bC&&bz===L){return}if(!bw){if(bF){bx[bE]=bw=++b.uuid}else{bw=bE}}if(!e[bw]){e[bw]={};if(!bF){e[bw].toJSON=b.noop}}if(typeof bv==="object"||typeof bv==="function"){if(by){e[bw]=b.extend(e[bw],bv)}else{e[bw].data=b.extend(e[bw].data,bv)}}bG=bA=e[bw];if(!by){if(!bA.data){bA.data={}}bA=bA.data}if(bz!==L){bA[b.camelCase(bv)]=bz}if(bB&&!bA[bv]){return bG.events}if(bC){bD=bA[bv];if(bD==null){bD=bA[b.camelCase(bv)]}}else{bD=bA}return bD},removeData:function(bx,bv,by){if(!b.acceptData(bx)){return}var bB,bA,bz,bC=b.expando,bD=bx.nodeType,e=bD?b.cache:bx,bw=bD?bx[bC]:bC;if(!e[bw]){return}if(bv){bB=by?e[bw]:e[bw].data;if(bB){if(!b.isArray(bv)){if(bv in bB){bv=[bv]}else{bv=b.camelCase(bv);if(bv in bB){bv=[bv]}else{bv=bv.split(" ")}}}for(bA=0,bz=bv.length;bA-1){return true}}return false},val:function(bx){var e,bv,by,bw=this[0];if(!arguments.length){if(bw){e=b.valHooks[bw.nodeName.toLowerCase()]||b.valHooks[bw.type];if(e&&"get" in e&&(bv=e.get(bw,"value"))!==L){return bv}bv=bw.value;return typeof bv==="string"?bv.replace(aU,""):bv==null?"":bv}return}by=b.isFunction(bx);return this.each(function(bA){var bz=b(this),bB;if(this.nodeType!==1){return}if(by){bB=bx.call(this,bA,bz.val())}else{bB=bx}if(bB==null){bB=""}else{if(typeof bB==="number"){bB+=""}else{if(b.isArray(bB)){bB=b.map(bB,function(bC){return bC==null?"":bC+""})}}}e=b.valHooks[this.nodeName.toLowerCase()]||b.valHooks[this.type];if(!e||!("set" in e)||e.set(this,bB,"value")===L){this.value=bB}})}});b.extend({valHooks:{option:{get:function(e){var bv=e.attributes.value;return !bv||bv.specified?e.value:e.text}},select:{get:function(e){var bA,bv,bz,bx,by=e.selectedIndex,bB=[],bC=e.options,bw=e.type==="select-one";if(by<0){return null}bv=bw?by:0;bz=bw?by+1:bC.length;for(;bv=0});if(!e.length){bv.selectedIndex=-1}return e}}},attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(bA,bx,bB,bz){var bw,e,by,bv=bA.nodeType; +if(!bA||bv===3||bv===8||bv===2){return}if(bz&&bx in b.attrFn){return b(bA)[bx](bB)}if(typeof bA.getAttribute==="undefined"){return b.prop(bA,bx,bB)}by=bv!==1||!b.isXMLDoc(bA);if(by){bx=bx.toLowerCase();e=b.attrHooks[bx]||(ao.test(bx)?aY:be)}if(bB!==L){if(bB===null){b.removeAttr(bA,bx);return}else{if(e&&"set" in e&&by&&(bw=e.set(bA,bB,bx))!==L){return bw}else{bA.setAttribute(bx,""+bB);return bB}}}else{if(e&&"get" in e&&by&&(bw=e.get(bA,bx))!==null){return bw}else{bw=bA.getAttribute(bx);return bw===null?L:bw}}},removeAttr:function(bx,bz){var by,bA,bv,e,bw=0;if(bz&&bx.nodeType===1){bA=bz.toLowerCase().split(af);e=bA.length;for(;bw=0)}}})});var bd=/^(?:textarea|input|select)$/i,n=/^([^\.]*)?(?:\.(.+))?$/,J=/\bhover(\.\S+)?\b/,aO=/^key/,bf=/^(?:mouse|contextmenu)|click/,T=/^(?:focusinfocus|focusoutblur)$/,U=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,Y=function(e){var bv=U.exec(e);if(bv){bv[1]=(bv[1]||"").toLowerCase();bv[3]=bv[3]&&new RegExp("(?:^|\\s)"+bv[3]+"(?:\\s|$)")}return bv},j=function(bw,e){var bv=bw.attributes||{};return((!e[1]||bw.nodeName.toLowerCase()===e[1])&&(!e[2]||(bv.id||{}).value===e[2])&&(!e[3]||e[3].test((bv["class"]||{}).value)))},bt=function(e){return b.event.special.hover?e:e.replace(J,"mouseenter$1 mouseleave$1")};b.event={add:function(bx,bC,bJ,bA,by){var bD,bB,bK,bI,bH,bF,e,bG,bv,bz,bw,bE;if(bx.nodeType===3||bx.nodeType===8||!bC||!bJ||!(bD=b._data(bx))){return}if(bJ.handler){bv=bJ;bJ=bv.handler}if(!bJ.guid){bJ.guid=b.guid++}bK=bD.events;if(!bK){bD.events=bK={}}bB=bD.handle;if(!bB){bD.handle=bB=function(bL){return typeof b!=="undefined"&&(!bL||b.event.triggered!==bL.type)?b.event.dispatch.apply(bB.elem,arguments):L};bB.elem=bx}bC=b.trim(bt(bC)).split(" ");for(bI=0;bI=0){bG=bG.slice(0,-1);bw=true}if(bG.indexOf(".")>=0){bx=bG.split(".");bG=bx.shift();bx.sort()}if((!bA||b.event.customEvent[bG])&&!b.event.global[bG]){return}bv=typeof bv==="object"?bv[b.expando]?bv:new b.Event(bG,bv):new b.Event(bG);bv.type=bG;bv.isTrigger=true;bv.exclusive=bw;bv.namespace=bx.join(".");bv.namespace_re=bv.namespace?new RegExp("(^|\\.)"+bx.join("\\.(?:.*\\.)?")+"(\\.|$)"):null;by=bG.indexOf(":")<0?"on"+bG:"";if(!bA){e=b.cache;for(bC in e){if(e[bC].events&&e[bC].events[bG]){b.event.trigger(bv,bD,e[bC].handle.elem,true)}}return}bv.result=L;if(!bv.target){bv.target=bA}bD=bD!=null?b.makeArray(bD):[];bD.unshift(bv);bF=b.event.special[bG]||{};if(bF.trigger&&bF.trigger.apply(bA,bD)===false){return}bB=[[bA,bF.bindType||bG]];if(!bJ&&!bF.noBubble&&!b.isWindow(bA)){bI=bF.delegateType||bG;bH=T.test(bI+bG)?bA:bA.parentNode;bz=null;for(;bH;bH=bH.parentNode){bB.push([bH,bI]);bz=bH}if(bz&&bz===bA.ownerDocument){bB.push([bz.defaultView||bz.parentWindow||bb,bI])}}for(bC=0;bCbA){bH.push({elem:this,matches:bz.slice(bA)})}for(bC=0;bC0?this.on(e,null,bx,bw):this.trigger(e)};if(b.attrFn){b.attrFn[e]=true}if(aO.test(e)){b.event.fixHooks[e]=b.event.keyHooks}if(bf.test(e)){b.event.fixHooks[e]=b.event.mouseHooks}}); +/*! + * Sizzle CSS Selector Engine + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){var bH=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,bC="sizcache"+(Math.random()+"").replace(".",""),bI=0,bL=Object.prototype.toString,bB=false,bA=true,bK=/\\/g,bO=/\r\n/g,bQ=/\W/;[0,0].sort(function(){bA=false;return 0});var by=function(bV,e,bY,bZ){bY=bY||[];e=e||av;var b1=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!bV||typeof bV!=="string"){return bY}var bS,b3,b6,bR,b2,b5,b4,bX,bU=true,bT=by.isXML(e),bW=[],b0=bV;do{bH.exec("");bS=bH.exec(b0);if(bS){b0=bS[3];bW.push(bS[1]);if(bS[2]){bR=bS[3];break}}}while(bS);if(bW.length>1&&bD.exec(bV)){if(bW.length===2&&bE.relative[bW[0]]){b3=bM(bW[0]+bW[1],e,bZ)}else{b3=bE.relative[bW[0]]?[e]:by(bW.shift(),e);while(bW.length){bV=bW.shift();if(bE.relative[bV]){bV+=bW.shift()}b3=bM(bV,b3,bZ)}}}else{if(!bZ&&bW.length>1&&e.nodeType===9&&!bT&&bE.match.ID.test(bW[0])&&!bE.match.ID.test(bW[bW.length-1])){b2=by.find(bW.shift(),e,bT);e=b2.expr?by.filter(b2.expr,b2.set)[0]:b2.set[0]}if(e){b2=bZ?{expr:bW.pop(),set:bF(bZ)}:by.find(bW.pop(),bW.length===1&&(bW[0]==="~"||bW[0]==="+")&&e.parentNode?e.parentNode:e,bT);b3=b2.expr?by.filter(b2.expr,b2.set):b2.set;if(bW.length>0){b6=bF(b3)}else{bU=false}while(bW.length){b5=bW.pop();b4=b5;if(!bE.relative[b5]){b5=""}else{b4=bW.pop()}if(b4==null){b4=e}bE.relative[b5](b6,b4,bT)}}else{b6=bW=[]}}if(!b6){b6=b3}if(!b6){by.error(b5||bV)}if(bL.call(b6)==="[object Array]"){if(!bU){bY.push.apply(bY,b6)}else{if(e&&e.nodeType===1){for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&(b6[bX]===true||b6[bX].nodeType===1&&by.contains(e,b6[bX]))){bY.push(b3[bX])}}}else{for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&b6[bX].nodeType===1){bY.push(b3[bX])}}}}}else{bF(b6,bY)}if(bR){by(bR,b1,bY,bZ);by.uniqueSort(bY)}return bY};by.uniqueSort=function(bR){if(bJ){bB=bA;bR.sort(bJ);if(bB){for(var e=1;e0};by.find=function(bX,e,bY){var bW,bS,bU,bT,bV,bR;if(!bX){return[]}for(bS=0,bU=bE.order.length;bS":function(bW,bR){var bV,bU=typeof bR==="string",bS=0,e=bW.length;if(bU&&!bQ.test(bR)){bR=bR.toLowerCase();for(;bS=0)){if(!bS){e.push(bV)}}else{if(bS){bR[bU]=false}}}}return false},ID:function(e){return e[1].replace(bK,"")},TAG:function(bR,e){return bR[1].replace(bK,"").toLowerCase()},CHILD:function(e){if(e[1]==="nth"){if(!e[2]){by.error(e[0])}e[2]=e[2].replace(/^\+|\s*/g,"");var bR=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(bR[1]+(bR[2]||1))-0;e[3]=bR[3]-0}else{if(e[2]){by.error(e[0])}}e[0]=bI++;return e},ATTR:function(bU,bR,bS,e,bV,bW){var bT=bU[1]=bU[1].replace(bK,"");if(!bW&&bE.attrMap[bT]){bU[1]=bE.attrMap[bT]}bU[4]=(bU[4]||bU[5]||"").replace(bK,"");if(bU[2]==="~="){bU[4]=" "+bU[4]+" "}return bU},PSEUDO:function(bU,bR,bS,e,bV){if(bU[1]==="not"){if((bH.exec(bU[3])||"").length>1||/^\w/.test(bU[3])){bU[3]=by(bU[3],null,null,bR)}else{var bT=by.filter(bU[3],bR,bS,true^bV);if(!bS){e.push.apply(e,bT)}return false}}else{if(bE.match.POS.test(bU[0])||bE.match.CHILD.test(bU[0])){return true}}return bU},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(bS,bR,e){return !!by(e[3],bS).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(bS){var e=bS.getAttribute("type"),bR=bS.type;return bS.nodeName.toLowerCase()==="input"&&"text"===bR&&(e===bR||e===null)},radio:function(e){return e.nodeName.toLowerCase()==="input"&&"radio"===e.type},checkbox:function(e){return e.nodeName.toLowerCase()==="input"&&"checkbox"===e.type},file:function(e){return e.nodeName.toLowerCase()==="input"&&"file"===e.type},password:function(e){return e.nodeName.toLowerCase()==="input"&&"password"===e.type},submit:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"submit"===bR.type},image:function(e){return e.nodeName.toLowerCase()==="input"&&"image"===e.type},reset:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"reset"===bR.type},button:function(bR){var e=bR.nodeName.toLowerCase();return e==="input"&&"button"===bR.type||e==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)},focus:function(e){return e===e.ownerDocument.activeElement}},setFilters:{first:function(bR,e){return e===0},last:function(bS,bR,e,bT){return bR===bT.length-1},even:function(bR,e){return e%2===0},odd:function(bR,e){return e%2===1 +},lt:function(bS,bR,e){return bRe[3]-0},nth:function(bS,bR,e){return e[3]-0===bR},eq:function(bS,bR,e){return e[3]-0===bR}},filter:{PSEUDO:function(bS,bX,bW,bY){var e=bX[1],bR=bE.filters[e];if(bR){return bR(bS,bW,bX,bY)}else{if(e==="contains"){return(bS.textContent||bS.innerText||bw([bS])||"").indexOf(bX[3])>=0}else{if(e==="not"){var bT=bX[3];for(var bV=0,bU=bT.length;bV=0)}}},ID:function(bR,e){return bR.nodeType===1&&bR.getAttribute("id")===e},TAG:function(bR,e){return(e==="*"&&bR.nodeType===1)||!!bR.nodeName&&bR.nodeName.toLowerCase()===e},CLASS:function(bR,e){return(" "+(bR.className||bR.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(bV,bT){var bS=bT[1],e=by.attr?by.attr(bV,bS):bE.attrHandle[bS]?bE.attrHandle[bS](bV):bV[bS]!=null?bV[bS]:bV.getAttribute(bS),bW=e+"",bU=bT[2],bR=bT[4];return e==null?bU==="!=":!bU&&by.attr?e!=null:bU==="="?bW===bR:bU==="*="?bW.indexOf(bR)>=0:bU==="~="?(" "+bW+" ").indexOf(bR)>=0:!bR?bW&&e!==false:bU==="!="?bW!==bR:bU==="^="?bW.indexOf(bR)===0:bU==="$="?bW.substr(bW.length-bR.length)===bR:bU==="|="?bW===bR||bW.substr(0,bR.length+1)===bR+"-":false},POS:function(bU,bR,bS,bV){var e=bR[2],bT=bE.setFilters[e];if(bT){return bT(bU,bS,bR,bV)}}}};var bD=bE.match.POS,bx=function(bR,e){return"\\"+(e-0+1)};for(var bz in bE.match){bE.match[bz]=new RegExp(bE.match[bz].source+(/(?![^\[]*\])(?![^\(]*\))/.source));bE.leftMatch[bz]=new RegExp(/(^(?:.|\r|\n)*?)/.source+bE.match[bz].source.replace(/\\(\d+)/g,bx))}var bF=function(bR,e){bR=Array.prototype.slice.call(bR,0);if(e){e.push.apply(e,bR);return e}return bR};try{Array.prototype.slice.call(av.documentElement.childNodes,0)[0].nodeType}catch(bP){bF=function(bU,bT){var bS=0,bR=bT||[];if(bL.call(bU)==="[object Array]"){Array.prototype.push.apply(bR,bU)}else{if(typeof bU.length==="number"){for(var e=bU.length;bS";e.insertBefore(bR,e.firstChild);if(av.getElementById(bS)){bE.find.ID=function(bU,bV,bW){if(typeof bV.getElementById!=="undefined"&&!bW){var bT=bV.getElementById(bU[1]);return bT?bT.id===bU[1]||typeof bT.getAttributeNode!=="undefined"&&bT.getAttributeNode("id").nodeValue===bU[1]?[bT]:L:[]}};bE.filter.ID=function(bV,bT){var bU=typeof bV.getAttributeNode!=="undefined"&&bV.getAttributeNode("id");return bV.nodeType===1&&bU&&bU.nodeValue===bT}}e.removeChild(bR);e=bR=null})();(function(){var e=av.createElement("div");e.appendChild(av.createComment(""));if(e.getElementsByTagName("*").length>0){bE.find.TAG=function(bR,bV){var bU=bV.getElementsByTagName(bR[1]);if(bR[1]==="*"){var bT=[];for(var bS=0;bU[bS];bS++){if(bU[bS].nodeType===1){bT.push(bU[bS])}}bU=bT}return bU}}e.innerHTML="";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){bE.attrHandle.href=function(bR){return bR.getAttribute("href",2)}}e=null})();if(av.querySelectorAll){(function(){var e=by,bT=av.createElement("div"),bS="__sizzle__";bT.innerHTML="

";if(bT.querySelectorAll&&bT.querySelectorAll(".TEST").length===0){return}by=function(b4,bV,bZ,b3){bV=bV||av;if(!b3&&!by.isXML(bV)){var b2=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b4);if(b2&&(bV.nodeType===1||bV.nodeType===9)){if(b2[1]){return bF(bV.getElementsByTagName(b4),bZ)}else{if(b2[2]&&bE.find.CLASS&&bV.getElementsByClassName){return bF(bV.getElementsByClassName(b2[2]),bZ)}}}if(bV.nodeType===9){if(b4==="body"&&bV.body){return bF([bV.body],bZ)}else{if(b2&&b2[3]){var bY=bV.getElementById(b2[3]);if(bY&&bY.parentNode){if(bY.id===b2[3]){return bF([bY],bZ)}}else{return bF([],bZ)}}}try{return bF(bV.querySelectorAll(b4),bZ)}catch(b0){}}else{if(bV.nodeType===1&&bV.nodeName.toLowerCase()!=="object"){var bW=bV,bX=bV.getAttribute("id"),bU=bX||bS,b6=bV.parentNode,b5=/^\s*[+~]/.test(b4);if(!bX){bV.setAttribute("id",bU)}else{bU=bU.replace(/'/g,"\\$&")}if(b5&&b6){bV=bV.parentNode}try{if(!b5||b6){return bF(bV.querySelectorAll("[id='"+bU+"'] "+b4),bZ)}}catch(b1){}finally{if(!bX){bW.removeAttribute("id")}}}}}return e(b4,bV,bZ,b3)};for(var bR in e){by[bR]=e[bR]}bT=null})()}(function(){var e=av.documentElement,bS=e.matchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.msMatchesSelector;if(bS){var bU=!bS.call(av.createElement("div"),"div"),bR=false;try{bS.call(av.documentElement,"[test!='']:sizzle")}catch(bT){bR=true}by.matchesSelector=function(bW,bY){bY=bY.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!by.isXML(bW)){try{if(bR||!bE.match.PSEUDO.test(bY)&&!/!=/.test(bY)){var bV=bS.call(bW,bY);if(bV||!bU||bW.document&&bW.document.nodeType!==11){return bV}}}catch(bX){}}return by(bY,null,null,[bW]).length>0}}})();(function(){var e=av.createElement("div");e.innerHTML="
";if(!e.getElementsByClassName||e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}bE.order.splice(1,0,"CLASS");bE.find.CLASS=function(bR,bS,bT){if(typeof bS.getElementsByClassName!=="undefined"&&!bT){return bS.getElementsByClassName(bR[1])}};e=null})();function bv(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT0){bU=e;break}}}e=e[bR]}bZ[bT]=bU}}}if(av.documentElement.contains){by.contains=function(bR,e){return bR!==e&&(bR.contains?bR.contains(e):true)}}else{if(av.documentElement.compareDocumentPosition){by.contains=function(bR,e){return !!(bR.compareDocumentPosition(e)&16)}}else{by.contains=function(){return false}}}by.isXML=function(e){var bR=(e?e.ownerDocument||e:0).documentElement;return bR?bR.nodeName!=="HTML":false};var bM=function(bS,e,bW){var bV,bX=[],bU="",bY=e.nodeType?[e]:e;while((bV=bE.match.PSEUDO.exec(bS))){bU+=bV[0];bS=bS.replace(bE.match.PSEUDO,"")}bS=bE.relative[bS]?bS+"*":bS;for(var bT=0,bR=bY.length;bT0){for(bB=bA;bB=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(by,bx){var bv=[],bw,e,bz=this[0];if(b.isArray(by)){var bB=1;while(bz&&bz.ownerDocument&&bz!==bx){for(bw=0;bw-1:b.find.matchesSelector(bz,by)){bv.push(bz);break}else{bz=bz.parentNode;if(!bz||!bz.ownerDocument||bz===bx||bz.nodeType===11){break}}}}bv=bv.length>1?b.unique(bv):bv;return this.pushStack(bv,"closest",by)},index:function(e){if(!e){return(this[0]&&this[0].parentNode)?this.prevAll().length:-1}if(typeof e==="string"){return b.inArray(this[0],b(e))}return b.inArray(e.jquery?e[0]:e,this)},add:function(e,bv){var bx=typeof e==="string"?b(e,bv):b.makeArray(e&&e.nodeType?[e]:e),bw=b.merge(this.get(),bx);return this.pushStack(C(bx[0])||C(bw[0])?bw:b.unique(bw))},andSelf:function(){return this.add(this.prevObject)}});function C(e){return !e||!e.parentNode||e.parentNode.nodeType===11}b.each({parent:function(bv){var e=bv.parentNode;return e&&e.nodeType!==11?e:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(bv,e,bw){return b.dir(bv,"parentNode",bw)},next:function(e){return b.nth(e,2,"nextSibling")},prev:function(e){return b.nth(e,2,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(bv,e,bw){return b.dir(bv,"nextSibling",bw)},prevUntil:function(bv,e,bw){return b.dir(bv,"previousSibling",bw)},siblings:function(e){return b.sibling(e.parentNode.firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.makeArray(e.childNodes)}},function(e,bv){b.fn[e]=function(by,bw){var bx=b.map(this,bv,by);if(!ab.test(e)){bw=by}if(bw&&typeof bw==="string"){bx=b.filter(bw,bx)}bx=this.length>1&&!ay[e]?b.unique(bx):bx;if((this.length>1||a9.test(bw))&&aq.test(e)){bx=bx.reverse()}return this.pushStack(bx,e,P.call(arguments).join(","))}});b.extend({filter:function(bw,e,bv){if(bv){bw=":not("+bw+")"}return e.length===1?b.find.matchesSelector(e[0],bw)?[e[0]]:[]:b.find.matches(bw,e)},dir:function(bw,bv,by){var e=[],bx=bw[bv];while(bx&&bx.nodeType!==9&&(by===L||bx.nodeType!==1||!b(bx).is(by))){if(bx.nodeType===1){e.push(bx)}bx=bx[bv]}return e},nth:function(by,e,bw,bx){e=e||1;var bv=0;for(;by;by=by[bw]){if(by.nodeType===1&&++bv===e){break}}return by},sibling:function(bw,bv){var e=[];for(;bw;bw=bw.nextSibling){if(bw.nodeType===1&&bw!==bv){e.push(bw)}}return e}});function aG(bx,bw,e){bw=bw||0;if(b.isFunction(bw)){return b.grep(bx,function(bz,by){var bA=!!bw.call(bz,by,bz);return bA===e})}else{if(bw.nodeType){return b.grep(bx,function(bz,by){return(bz===bw)===e})}else{if(typeof bw==="string"){var bv=b.grep(bx,function(by){return by.nodeType===1});if(bp.test(bw)){return b.filter(bw,bv,!e)}else{bw=b.filter(bw,bv)}}}}return b.grep(bx,function(bz,by){return(b.inArray(bz,bw)>=0)===e})}function a(e){var bw=aR.split("|"),bv=e.createDocumentFragment();if(bv.createElement){while(bw.length){bv.createElement(bw.pop())}}return bv}var aR="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ag=/ jQuery\d+="(?:\d+|null)"/g,ar=/^\s+/,R=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,d=/<([\w:]+)/,w=/",""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]},ac=a(av); +ax.optgroup=ax.option;ax.tbody=ax.tfoot=ax.colgroup=ax.caption=ax.thead;ax.th=ax.td;if(!b.support.htmlSerialize){ax._default=[1,"div
","
"]}b.fn.extend({text:function(e){if(b.isFunction(e)){return this.each(function(bw){var bv=b(this);bv.text(e.call(this,bw,bv.text()))})}if(typeof e!=="object"&&e!==L){return this.empty().append((this[0]&&this[0].ownerDocument||av).createTextNode(e))}return b.text(this)},wrapAll:function(e){if(b.isFunction(e)){return this.each(function(bw){b(this).wrapAll(e.call(this,bw))})}if(this[0]){var bv=b(e,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){bv.insertBefore(this[0])}bv.map(function(){var bw=this;while(bw.firstChild&&bw.firstChild.nodeType===1){bw=bw.firstChild}return bw}).append(this)}return this},wrapInner:function(e){if(b.isFunction(e)){return this.each(function(bv){b(this).wrapInner(e.call(this,bv))})}return this.each(function(){var bv=b(this),bw=bv.contents();if(bw.length){bw.wrapAll(e)}else{bv.append(e)}})},wrap:function(e){var bv=b.isFunction(e);return this.each(function(bw){b(this).wrapAll(bv?e.call(this,bw):e)})},unwrap:function(){return this.parent().each(function(){if(!b.nodeName(this,"body")){b(this).replaceWith(this.childNodes)}}).end()},append:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.appendChild(e)}})},prepend:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.insertBefore(e,this.firstChild)}})},before:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this)})}else{if(arguments.length){var e=b.clean(arguments);e.push.apply(e,this.toArray());return this.pushStack(e,"before",arguments)}}},after:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this.nextSibling)})}else{if(arguments.length){var e=this.pushStack(this,"after",arguments);e.push.apply(e,b.clean(arguments));return e}}},remove:function(e,bx){for(var bv=0,bw;(bw=this[bv])!=null;bv++){if(!e||b.filter(e,[bw]).length){if(!bx&&bw.nodeType===1){b.cleanData(bw.getElementsByTagName("*"));b.cleanData([bw])}if(bw.parentNode){bw.parentNode.removeChild(bw)}}}return this},empty:function(){for(var e=0,bv;(bv=this[e])!=null;e++){if(bv.nodeType===1){b.cleanData(bv.getElementsByTagName("*"))}while(bv.firstChild){bv.removeChild(bv.firstChild)}}return this},clone:function(bv,e){bv=bv==null?false:bv;e=e==null?bv:e;return this.map(function(){return b.clone(this,bv,e)})},html:function(bx){if(bx===L){return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(ag,""):null}else{if(typeof bx==="string"&&!ae.test(bx)&&(b.support.leadingWhitespace||!ar.test(bx))&&!ax[(d.exec(bx)||["",""])[1].toLowerCase()]){bx=bx.replace(R,"<$1>");try{for(var bw=0,bv=this.length;bw1&&bw0?this.clone(true):this).get();b(bC[bA])[bv](by);bz=bz.concat(by)}return this.pushStack(bz,e,bC.selector)}}});function bg(e){if(typeof e.getElementsByTagName!=="undefined"){return e.getElementsByTagName("*")}else{if(typeof e.querySelectorAll!=="undefined"){return e.querySelectorAll("*")}else{return[]}}}function az(e){if(e.type==="checkbox"||e.type==="radio"){e.defaultChecked=e.checked}}function E(e){var bv=(e.nodeName||"").toLowerCase();if(bv==="input"){az(e)}else{if(bv!=="script"&&typeof e.getElementsByTagName!=="undefined"){b.grep(e.getElementsByTagName("input"),az)}}}function al(e){var bv=av.createElement("div");ac.appendChild(bv);bv.innerHTML=e.outerHTML;return bv.firstChild}b.extend({clone:function(by,bA,bw){var e,bv,bx,bz=b.support.html5Clone||!ah.test("<"+by.nodeName)?by.cloneNode(true):al(by);if((!b.support.noCloneEvent||!b.support.noCloneChecked)&&(by.nodeType===1||by.nodeType===11)&&!b.isXMLDoc(by)){ai(by,bz);e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){if(bv[bx]){ai(e[bx],bv[bx])}}}if(bA){t(by,bz);if(bw){e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){t(e[bx],bv[bx])}}}e=bv=null;return bz},clean:function(bw,by,bH,bA){var bF;by=by||av;if(typeof by.createElement==="undefined"){by=by.ownerDocument||by[0]&&by[0].ownerDocument||av}var bI=[],bB;for(var bE=0,bz;(bz=bw[bE])!=null;bE++){if(typeof bz==="number"){bz+=""}if(!bz){continue}if(typeof bz==="string"){if(!W.test(bz)){bz=by.createTextNode(bz)}else{bz=bz.replace(R,"<$1>");var bK=(d.exec(bz)||["",""])[1].toLowerCase(),bx=ax[bK]||ax._default,bD=bx[0],bv=by.createElement("div");if(by===av){ac.appendChild(bv)}else{a(by).appendChild(bv)}bv.innerHTML=bx[1]+bz+bx[2];while(bD--){bv=bv.lastChild}if(!b.support.tbody){var e=w.test(bz),bC=bK==="table"&&!e?bv.firstChild&&bv.firstChild.childNodes:bx[1]===""&&!e?bv.childNodes:[];for(bB=bC.length-1;bB>=0;--bB){if(b.nodeName(bC[bB],"tbody")&&!bC[bB].childNodes.length){bC[bB].parentNode.removeChild(bC[bB])}}}if(!b.support.leadingWhitespace&&ar.test(bz)){bv.insertBefore(by.createTextNode(ar.exec(bz)[0]),bv.firstChild)}bz=bv.childNodes}}var bG;if(!b.support.appendChecked){if(bz[0]&&typeof(bG=bz.length)==="number"){for(bB=0;bB=0){return bx+"px"}}else{return bx}}}});if(!b.support.opacity){b.cssHooks.opacity={get:function(bv,e){return au.test((e&&bv.currentStyle?bv.currentStyle.filter:bv.style.filter)||"")?(parseFloat(RegExp.$1)/100)+"":e?"1":""},set:function(by,bz){var bx=by.style,bv=by.currentStyle,e=b.isNumeric(bz)?"alpha(opacity="+bz*100+")":"",bw=bv&&bv.filter||bx.filter||"";bx.zoom=1;if(bz>=1&&b.trim(bw.replace(ak,""))===""){bx.removeAttribute("filter");if(bv&&!bv.filter){return}}bx.filter=ak.test(bw)?bw.replace(ak,e):bw+" "+e}}}b(function(){if(!b.support.reliableMarginRight){b.cssHooks.marginRight={get:function(bw,bv){var e;b.swap(bw,{display:"inline-block"},function(){if(bv){e=Z(bw,"margin-right","marginRight")}else{e=bw.style.marginRight}});return e}}}});if(av.defaultView&&av.defaultView.getComputedStyle){aI=function(by,bw){var bv,bx,e;bw=bw.replace(z,"-$1").toLowerCase();if((bx=by.ownerDocument.defaultView)&&(e=bx.getComputedStyle(by,null))){bv=e.getPropertyValue(bw);if(bv===""&&!b.contains(by.ownerDocument.documentElement,by)){bv=b.style(by,bw)}}return bv}}if(av.documentElement.currentStyle){aX=function(bz,bw){var bA,e,by,bv=bz.currentStyle&&bz.currentStyle[bw],bx=bz.style;if(bv===null&&bx&&(by=bx[bw])){bv=by}if(!bc.test(bv)&&bn.test(bv)){bA=bx.left;e=bz.runtimeStyle&&bz.runtimeStyle.left;if(e){bz.runtimeStyle.left=bz.currentStyle.left}bx.left=bw==="fontSize"?"1em":(bv||0);bv=bx.pixelLeft+"px";bx.left=bA;if(e){bz.runtimeStyle.left=e}}return bv===""?"auto":bv}}Z=aI||aX;function p(by,bw,bv){var bA=bw==="width"?by.offsetWidth:by.offsetHeight,bz=bw==="width"?an:a1,bx=0,e=bz.length; +if(bA>0){if(bv!=="border"){for(;bx)<[^<]*)*<\/script>/gi,q=/^(?:select|textarea)/i,h=/\s+/,br=/([?&])_=[^&]*/,K=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,A=b.fn.load,aa={},r={},aE,s,aV=["*/"]+["*"];try{aE=bl.href}catch(aw){aE=av.createElement("a");aE.href="";aE=aE.href}s=K.exec(aE.toLowerCase())||[];function f(e){return function(by,bA){if(typeof by!=="string"){bA=by;by="*"}if(b.isFunction(bA)){var bx=by.toLowerCase().split(h),bw=0,bz=bx.length,bv,bB,bC;for(;bw=0){var e=bw.slice(by,bw.length);bw=bw.slice(0,by)}var bx="GET";if(bz){if(b.isFunction(bz)){bA=bz;bz=L}else{if(typeof bz==="object"){bz=b.param(bz,b.ajaxSettings.traditional);bx="POST"}}}var bv=this;b.ajax({url:bw,type:bx,dataType:"html",data:bz,complete:function(bC,bB,bD){bD=bC.responseText;if(bC.isResolved()){bC.done(function(bE){bD=bE});bv.html(e?b("
").append(bD.replace(a6,"")).find(e):bD)}if(bA){bv.each(bA,[bD,bB,bC])}}});return this},serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?b.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||q.test(this.nodeName)||aZ.test(this.type))}).map(function(e,bv){var bw=b(this).val();return bw==null?null:b.isArray(bw)?b.map(bw,function(by,bx){return{name:bv.name,value:by.replace(bs,"\r\n")}}):{name:bv.name,value:bw.replace(bs,"\r\n")}}).get()}});b.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,bv){b.fn[bv]=function(bw){return this.on(bv,bw)}});b.each(["get","post"],function(e,bv){b[bv]=function(bw,by,bz,bx){if(b.isFunction(by)){bx=bx||bz;bz=by;by=L}return b.ajax({type:bv,url:bw,data:by,success:bz,dataType:bx})}});b.extend({getScript:function(e,bv){return b.get(e,L,bv,"script")},getJSON:function(e,bv,bw){return b.get(e,bv,bw,"json")},ajaxSetup:function(bv,e){if(e){am(bv,b.ajaxSettings)}else{e=bv;bv=b.ajaxSettings}am(bv,e);return bv},ajaxSettings:{url:aE,isLocal:aM.test(s[1]),global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":aV},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":bb.String,"text html":true,"text json":b.parseJSON,"text xml":b.parseXML},flatOptions:{context:true,url:true}},ajaxPrefilter:f(aa),ajaxTransport:f(r),ajax:function(bz,bx){if(typeof bz==="object"){bx=bz;bz=L}bx=bx||{};var bD=b.ajaxSetup({},bx),bS=bD.context||bD,bG=bS!==bD&&(bS.nodeType||bS instanceof b)?b(bS):b.event,bR=b.Deferred(),bN=b.Callbacks("once memory"),bB=bD.statusCode||{},bC,bH={},bO={},bQ,by,bL,bE,bI,bA=0,bw,bK,bJ={readyState:0,setRequestHeader:function(bT,bU){if(!bA){var e=bT.toLowerCase();bT=bO[e]=bO[e]||bT;bH[bT]=bU}return this},getAllResponseHeaders:function(){return bA===2?bQ:null},getResponseHeader:function(bT){var e;if(bA===2){if(!by){by={};while((e=aD.exec(bQ))){by[e[1].toLowerCase()]=e[2]}}e=by[bT.toLowerCase()]}return e===L?null:e},overrideMimeType:function(e){if(!bA){bD.mimeType=e}return this},abort:function(e){e=e||"abort";if(bL){bL.abort(e)}bF(0,e);return this}};function bF(bZ,bU,b0,bW){if(bA===2){return}bA=2;if(bE){clearTimeout(bE)}bL=L;bQ=bW||"";bJ.readyState=bZ>0?4:0;var bT,b4,b3,bX=bU,bY=b0?bj(bD,bJ,b0):L,bV,b2;if(bZ>=200&&bZ<300||bZ===304){if(bD.ifModified){if((bV=bJ.getResponseHeader("Last-Modified"))){b.lastModified[bC]=bV}if((b2=bJ.getResponseHeader("Etag"))){b.etag[bC]=b2}}if(bZ===304){bX="notmodified";bT=true}else{try{b4=G(bD,bY);bX="success";bT=true}catch(b1){bX="parsererror";b3=b1}}}else{b3=bX;if(!bX||bZ){bX="error";if(bZ<0){bZ=0}}}bJ.status=bZ;bJ.statusText=""+(bU||bX);if(bT){bR.resolveWith(bS,[b4,bX,bJ])}else{bR.rejectWith(bS,[bJ,bX,b3])}bJ.statusCode(bB);bB=L;if(bw){bG.trigger("ajax"+(bT?"Success":"Error"),[bJ,bD,bT?b4:b3])}bN.fireWith(bS,[bJ,bX]);if(bw){bG.trigger("ajaxComplete",[bJ,bD]);if(!(--b.active)){b.event.trigger("ajaxStop")}}}bR.promise(bJ);bJ.success=bJ.done;bJ.error=bJ.fail;bJ.complete=bN.add;bJ.statusCode=function(bT){if(bT){var e;if(bA<2){for(e in bT){bB[e]=[bB[e],bT[e]]}}else{e=bT[bJ.status];bJ.then(e,e)}}return this};bD.url=((bz||bD.url)+"").replace(bq,"").replace(c,s[1]+"//");bD.dataTypes=b.trim(bD.dataType||"*").toLowerCase().split(h);if(bD.crossDomain==null){bI=K.exec(bD.url.toLowerCase());bD.crossDomain=!!(bI&&(bI[1]!=s[1]||bI[2]!=s[2]||(bI[3]||(bI[1]==="http:"?80:443))!=(s[3]||(s[1]==="http:"?80:443))))}if(bD.data&&bD.processData&&typeof bD.data!=="string"){bD.data=b.param(bD.data,bD.traditional)}aW(aa,bD,bx,bJ);if(bA===2){return false}bw=bD.global;bD.type=bD.type.toUpperCase();bD.hasContent=!aQ.test(bD.type);if(bw&&b.active++===0){b.event.trigger("ajaxStart")}if(!bD.hasContent){if(bD.data){bD.url+=(M.test(bD.url)?"&":"?")+bD.data;delete bD.data}bC=bD.url;if(bD.cache===false){var bv=b.now(),bP=bD.url.replace(br,"$1_="+bv);bD.url=bP+((bP===bD.url)?(M.test(bD.url)?"&":"?")+"_="+bv:"")}}if(bD.data&&bD.hasContent&&bD.contentType!==false||bx.contentType){bJ.setRequestHeader("Content-Type",bD.contentType)}if(bD.ifModified){bC=bC||bD.url;if(b.lastModified[bC]){bJ.setRequestHeader("If-Modified-Since",b.lastModified[bC])}if(b.etag[bC]){bJ.setRequestHeader("If-None-Match",b.etag[bC])}}bJ.setRequestHeader("Accept",bD.dataTypes[0]&&bD.accepts[bD.dataTypes[0]]?bD.accepts[bD.dataTypes[0]]+(bD.dataTypes[0]!=="*"?", "+aV+"; q=0.01":""):bD.accepts["*"]);for(bK in bD.headers){bJ.setRequestHeader(bK,bD.headers[bK])}if(bD.beforeSend&&(bD.beforeSend.call(bS,bJ,bD)===false||bA===2)){bJ.abort();return false}for(bK in {success:1,error:1,complete:1}){bJ[bK](bD[bK])}bL=aW(r,bD,bx,bJ);if(!bL){bF(-1,"No Transport")}else{bJ.readyState=1;if(bw){bG.trigger("ajaxSend",[bJ,bD])}if(bD.async&&bD.timeout>0){bE=setTimeout(function(){bJ.abort("timeout")},bD.timeout)}try{bA=1;bL.send(bH,bF)}catch(bM){if(bA<2){bF(-1,bM)}else{throw bM}}}return bJ},param:function(e,bw){var bv=[],by=function(bz,bA){bA=b.isFunction(bA)?bA():bA;bv[bv.length]=encodeURIComponent(bz)+"="+encodeURIComponent(bA)};if(bw===L){bw=b.ajaxSettings.traditional}if(b.isArray(e)||(e.jquery&&!b.isPlainObject(e))){b.each(e,function(){by(this.name,this.value)})}else{for(var bx in e){v(bx,e[bx],bw,by)}}return bv.join("&").replace(k,"+")}});function v(bw,by,bv,bx){if(b.isArray(by)){b.each(by,function(bA,bz){if(bv||ap.test(bw)){bx(bw,bz)}else{v(bw+"["+(typeof bz==="object"||b.isArray(bz)?bA:"")+"]",bz,bv,bx)}})}else{if(!bv&&by!=null&&typeof by==="object"){for(var e in by){v(bw+"["+e+"]",by[e],bv,bx)}}else{bx(bw,by)}}}b.extend({active:0,lastModified:{},etag:{}});function bj(bD,bC,bz){var bv=bD.contents,bB=bD.dataTypes,bw=bD.responseFields,by,bA,bx,e;for(bA in bw){if(bA in bz){bC[bw[bA]]=bz[bA]}}while(bB[0]==="*"){bB.shift();if(by===L){by=bD.mimeType||bC.getResponseHeader("content-type")}}if(by){for(bA in bv){if(bv[bA]&&bv[bA].test(by)){bB.unshift(bA);break}}}if(bB[0] in bz){bx=bB[0]}else{for(bA in bz){if(!bB[0]||bD.converters[bA+" "+bB[0]]){bx=bA;break}if(!e){e=bA}}bx=bx||e}if(bx){if(bx!==bB[0]){bB.unshift(bx)}return bz[bx]}}function G(bH,bz){if(bH.dataFilter){bz=bH.dataFilter(bz,bH.dataType)}var bD=bH.dataTypes,bG={},bA,bE,bw=bD.length,bB,bC=bD[0],bx,by,bF,bv,e;for(bA=1;bA=bw.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();bw.animatedProperties[this.prop]=true;for(bA in bw.animatedProperties){if(bw.animatedProperties[bA]!==true){e=false}}if(e){if(bw.overflow!=null&&!b.support.shrinkWrapBlocks){b.each(["","X","Y"],function(bC,bD){bz.style["overflow"+bD]=bw.overflow[bC]})}if(bw.hide){b(bz).hide()}if(bw.hide||bw.show){for(bA in bw.animatedProperties){b.style(bz,bA,bw.orig[bA]);b.removeData(bz,"fxshow"+bA,true);b.removeData(bz,"toggle"+bA,true)}}bv=bw.complete;if(bv){bw.complete=false;bv.call(bz)}}return false}else{if(bw.duration==Infinity){this.now=bx}else{bB=bx-this.startTime;this.state=bB/bw.duration;this.pos=b.easing[bw.animatedProperties[this.prop]](this.state,bB,0,1,bw.duration);this.now=this.start+((this.end-this.start)*this.pos)}this.update()}return true}};b.extend(b.fx,{tick:function(){var bw,bv=b.timers,e=0;for(;e").appendTo(e),bw=bv.css("display");bv.remove();if(bw==="none"||bw===""){if(!a8){a8=av.createElement("iframe");a8.frameBorder=a8.width=a8.height=0}e.appendChild(a8);if(!m||!a8.createElement){m=(a8.contentWindow||a8.contentDocument).document;m.write((av.compatMode==="CSS1Compat"?"":"")+"");m.close()}bv=m.createElement(bx);m.body.appendChild(bv);bw=b.css(bv,"display");e.removeChild(a8)}Q[bx]=bw}return Q[bx]}var V=/^t(?:able|d|h)$/i,ad=/^(?:body|html)$/i;if("getBoundingClientRect" in av.documentElement){b.fn.offset=function(bI){var by=this[0],bB;if(bI){return this.each(function(e){b.offset.setOffset(this,bI,e)})}if(!by||!by.ownerDocument){return null}if(by===by.ownerDocument.body){return b.offset.bodyOffset(by)}try{bB=by.getBoundingClientRect()}catch(bF){}var bH=by.ownerDocument,bw=bH.documentElement;if(!bB||!b.contains(bw,by)){return bB?{top:bB.top,left:bB.left}:{top:0,left:0}}var bC=bH.body,bD=aK(bH),bA=bw.clientTop||bC.clientTop||0,bE=bw.clientLeft||bC.clientLeft||0,bv=bD.pageYOffset||b.support.boxModel&&bw.scrollTop||bC.scrollTop,bz=bD.pageXOffset||b.support.boxModel&&bw.scrollLeft||bC.scrollLeft,bG=bB.top+bv-bA,bx=bB.left+bz-bE;return{top:bG,left:bx}}}else{b.fn.offset=function(bF){var bz=this[0];if(bF){return this.each(function(bG){b.offset.setOffset(this,bF,bG)})}if(!bz||!bz.ownerDocument){return null}if(bz===bz.ownerDocument.body){return b.offset.bodyOffset(bz)}var bC,bw=bz.offsetParent,bv=bz,bE=bz.ownerDocument,bx=bE.documentElement,bA=bE.body,bB=bE.defaultView,e=bB?bB.getComputedStyle(bz,null):bz.currentStyle,bD=bz.offsetTop,by=bz.offsetLeft;while((bz=bz.parentNode)&&bz!==bA&&bz!==bx){if(b.support.fixedPosition&&e.position==="fixed"){break}bC=bB?bB.getComputedStyle(bz,null):bz.currentStyle;bD-=bz.scrollTop;by-=bz.scrollLeft;if(bz===bw){bD+=bz.offsetTop;by+=bz.offsetLeft;if(b.support.doesNotAddBorder&&!(b.support.doesAddBorderForTableAndCells&&V.test(bz.nodeName))){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}bv=bw;bw=bz.offsetParent}if(b.support.subtractsBorderForOverflowNotVisible&&bC.overflow!=="visible"){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}e=bC}if(e.position==="relative"||e.position==="static"){bD+=bA.offsetTop;by+=bA.offsetLeft}if(b.support.fixedPosition&&e.position==="fixed"){bD+=Math.max(bx.scrollTop,bA.scrollTop);by+=Math.max(bx.scrollLeft,bA.scrollLeft)}return{top:bD,left:by}}}b.offset={bodyOffset:function(e){var bw=e.offsetTop,bv=e.offsetLeft;if(b.support.doesNotIncludeMarginInBodyOffset){bw+=parseFloat(b.css(e,"marginTop"))||0;bv+=parseFloat(b.css(e,"marginLeft"))||0}return{top:bw,left:bv}},setOffset:function(bx,bG,bA){var bB=b.css(bx,"position");if(bB==="static"){bx.style.position="relative"}var bz=b(bx),bv=bz.offset(),e=b.css(bx,"top"),bE=b.css(bx,"left"),bF=(bB==="absolute"||bB==="fixed")&&b.inArray("auto",[e,bE])>-1,bD={},bC={},bw,by;if(bF){bC=bz.position();bw=bC.top;by=bC.left}else{bw=parseFloat(e)||0;by=parseFloat(bE)||0}if(b.isFunction(bG)){bG=bG.call(bx,bA,bv)}if(bG.top!=null){bD.top=(bG.top-bv.top)+bw}if(bG.left!=null){bD.left=(bG.left-bv.left)+by}if("using" in bG){bG.using.call(bx,bD)}else{bz.css(bD)}}};b.fn.extend({position:function(){if(!this[0]){return null}var bw=this[0],bv=this.offsetParent(),bx=this.offset(),e=ad.test(bv[0].nodeName)?{top:0,left:0}:bv.offset();bx.top-=parseFloat(b.css(bw,"marginTop"))||0;bx.left-=parseFloat(b.css(bw,"marginLeft"))||0;e.top+=parseFloat(b.css(bv[0],"borderTopWidth"))||0;e.left+=parseFloat(b.css(bv[0],"borderLeftWidth"))||0;return{top:bx.top-e.top,left:bx.left-e.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||av.body;while(e&&(!ad.test(e.nodeName)&&b.css(e,"position")==="static")){e=e.offsetParent}return e})}});b.each(["Left","Top"],function(bv,e){var bw="scroll"+e;b.fn[bw]=function(bz){var bx,by;if(bz===L){bx=this[0];if(!bx){return null}by=aK(bx);return by?("pageXOffset" in by)?by[bv?"pageYOffset":"pageXOffset"]:b.support.boxModel&&by.document.documentElement[bw]||by.document.body[bw]:bx[bw]}return this.each(function(){by=aK(this);if(by){by.scrollTo(!bv?bz:b(by).scrollLeft(),bv?bz:b(by).scrollTop())}else{this[bw]=bz}})}});function aK(e){return b.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:false}b.each(["Height","Width"],function(bv,e){var bw=e.toLowerCase();b.fn["inner"+e]=function(){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,"padding")):this[bw]():null};b.fn["outer"+e]=function(by){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,by?"margin":"border")):this[bw]():null};b.fn[bw]=function(bz){var bA=this[0];if(!bA){return bz==null?null:this}if(b.isFunction(bz)){return this.each(function(bE){var bD=b(this);bD[bw](bz.call(this,bE,bD[bw]()))})}if(b.isWindow(bA)){var bB=bA.document.documentElement["client"+e],bx=bA.document.body;return bA.document.compatMode==="CSS1Compat"&&bB||bx&&bx["client"+e]||bB}else{if(bA.nodeType===9){return Math.max(bA.documentElement["client"+e],bA.body["scroll"+e],bA.documentElement["scroll"+e],bA.body["offset"+e],bA.documentElement["offset"+e])}else{if(bz===L){var bC=b.css(bA,bw),by=parseFloat(bC);return b.isNumeric(by)?by:bC}else{return this.css(bw,typeof bz==="string"?bz:bz+"px")}}}}});bb.jQuery=bb.$=b;if(typeof define==="function"&&define.amd&&define.amd.jQuery){define("jquery",[],function(){return b +})}})(window); +/*! + * jQuery UI 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI + */ +(function(a,d){a.ui=a.ui||{};if(a.ui.version){return}a.extend(a.ui,{version:"1.8.18",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(e,f){return typeof e==="number"?this.each(function(){var g=this;setTimeout(function(){a(g).focus();if(f){f.call(g)}},e)}):this._focus.apply(this,arguments)},scrollParent:function(){var e;if((a.browser.msie&&(/(static|relative)/).test(this.css("position")))||(/absolute/).test(this.css("position"))){e=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test(a.curCSS(this,"position",1))&&(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}else{e=this.parents().filter(function(){return(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}return(/fixed/).test(this.css("position"))||!e.length?a(document):e},zIndex:function(h){if(h!==d){return this.css("zIndex",h)}if(this.length){var f=a(this[0]),e,g;while(f.length&&f[0]!==document){e=f.css("position");if(e==="absolute"||e==="relative"||e==="fixed"){g=parseInt(f.css("zIndex"),10);if(!isNaN(g)&&g!==0){return g}}f=f.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});a.each(["Width","Height"],function(g,e){var f=e==="Width"?["Left","Right"]:["Top","Bottom"],h=e.toLowerCase(),k={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};function j(m,l,i,n){a.each(f,function(){l-=parseFloat(a.curCSS(m,"padding"+this,true))||0;if(i){l-=parseFloat(a.curCSS(m,"border"+this+"Width",true))||0}if(n){l-=parseFloat(a.curCSS(m,"margin"+this,true))||0}});return l}a.fn["inner"+e]=function(i){if(i===d){return k["inner"+e].call(this)}return this.each(function(){a(this).css(h,j(this,i)+"px")})};a.fn["outer"+e]=function(i,l){if(typeof i!=="number"){return k["outer"+e].call(this,i)}return this.each(function(){a(this).css(h,j(this,i,true,l)+"px")})}});function c(g,e){var j=g.nodeName.toLowerCase();if("area"===j){var i=g.parentNode,h=i.name,f;if(!g.href||!h||i.nodeName.toLowerCase()!=="map"){return false}f=a("img[usemap=#"+h+"]")[0];return !!f&&b(f)}return(/input|select|textarea|button|object/.test(j)?!g.disabled:"a"==j?g.href||e:e)&&b(g)}function b(e){return !a(e).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}a.extend(a.expr[":"],{data:function(g,f,e){return !!a.data(g,e[3])},focusable:function(e){return c(e,!isNaN(a.attr(e,"tabindex")))},tabbable:function(g){var e=a.attr(g,"tabindex"),f=isNaN(e);return(f||e>=0)&&c(g,!f)}});a(function(){var e=document.body,f=e.appendChild(f=document.createElement("div"));f.offsetHeight;a.extend(f.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});a.support.minHeight=f.offsetHeight===100;a.support.selectstart="onselectstart" in f;e.removeChild(f).style.display="none"});a.extend(a.ui,{plugin:{add:function(f,g,j){var h=a.ui[f].prototype;for(var e in j){h.plugins[e]=h.plugins[e]||[];h.plugins[e].push([g,j[e]])}},call:function(e,g,f){var j=e.plugins[g];if(!j||!e.element[0].parentNode){return}for(var h=0;h0){return true}h[e]=1;g=(h[e]>0);h[e]=0;return g},isOverAxis:function(f,e,g){return(f>e)&&(f<(e+g))},isOver:function(j,f,i,h,e,g){return a.ui.isOverAxis(j,i,e)&&a.ui.isOverAxis(f,h,g)}})})(jQuery);/*! + * jQuery UI Widget 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Widget + */ +(function(b,d){if(b.cleanData){var c=b.cleanData;b.cleanData=function(f){for(var g=0,h;(h=f[g])!=null;g++){try{b(h).triggerHandler("remove")}catch(j){}}c(f)}}else{var a=b.fn.remove;b.fn.remove=function(e,f){return this.each(function(){if(!f){if(!e||b.filter(e,[this]).length){b("*",this).add([this]).each(function(){try{b(this).triggerHandler("remove")}catch(g){}})}}return a.call(b(this),e,f)})}}b.widget=function(f,h,e){var g=f.split(".")[0],j;f=f.split(".")[1];j=g+"-"+f;if(!e){e=h;h=b.Widget}b.expr[":"][j]=function(k){return !!b.data(k,f)};b[g]=b[g]||{};b[g][f]=function(k,l){if(arguments.length){this._createWidget(k,l)}};var i=new h();i.options=b.extend(true,{},i.options);b[g][f].prototype=b.extend(true,i,{namespace:g,widgetName:f,widgetEventPrefix:b[g][f].prototype.widgetEventPrefix||f,widgetBaseClass:j},e);b.widget.bridge(f,b[g][f])};b.widget.bridge=function(f,e){b.fn[f]=function(i){var g=typeof i==="string",h=Array.prototype.slice.call(arguments,1),j=this;i=!g&&h.length?b.extend.apply(null,[true,i].concat(h)):i;if(g&&i.charAt(0)==="_"){return j}if(g){this.each(function(){var k=b.data(this,f),l=k&&b.isFunction(k[i])?k[i].apply(k,h):k;if(l!==k&&l!==d){j=l;return false}})}else{this.each(function(){var k=b.data(this,f);if(k){k.option(i||{})._init()}else{b.data(this,f,new e(i,this))}})}return j}};b.Widget=function(e,f){if(arguments.length){this._createWidget(e,f)}};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(f,g){b.data(g,this.widgetName,this);this.element=b(g);this.options=b.extend(true,{},this.options,this._getCreateOptions(),f);var e=this;this.element.bind("remove."+this.widgetName,function(){e.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions:function(){return b.metadata&&b.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(f,g){var e=f;if(arguments.length===0){return b.extend({},this.options)}if(typeof f==="string"){if(g===d){return this.options[f]}e={};e[f]=g}this._setOptions(e);return this},_setOptions:function(f){var e=this;b.each(f,function(g,h){e._setOption(g,h)});return this},_setOption:function(e,f){this.options[e]=f;if(e==="disabled"){this.widget()[f?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",f)}return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(e,f,g){var j,i,h=this.options[e];g=g||{};f=b.Event(f);f.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase();f.target=this.element[0];i=f.originalEvent;if(i){for(j in i){if(!(j in f)){f[j]=i[j]}}}this.element.trigger(f,g);return !(b.isFunction(h)&&h.call(this.element[0],f,g)===false||f.isDefaultPrevented())}}})(jQuery);/*! + * jQuery UI Mouse 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Mouse + * + * Depends: + * jquery.ui.widget.js + */ +(function(b,c){var a=false;b(document).mouseup(function(d){a=false});b.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var d=this;this.element.bind("mousedown."+this.widgetName,function(e){return d._mouseDown(e)}).bind("click."+this.widgetName,function(e){if(true===b.data(e.target,d.widgetName+".preventClickEvent")){b.removeData(e.target,d.widgetName+".preventClickEvent");e.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(f){if(a){return}(this._mouseStarted&&this._mouseUp(f));this._mouseDownEvent=f;var e=this,g=(f.which==1),d=(typeof this.options.cancel=="string"&&f.target.nodeName?b(f.target).closest(this.options.cancel).length:false);if(!g||d||!this._mouseCapture(f)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(f)&&this._mouseDelayMet(f)){this._mouseStarted=(this._mouseStart(f)!==false);if(!this._mouseStarted){f.preventDefault();return true}}if(true===b.data(f.target,this.widgetName+".preventClickEvent")){b.removeData(f.target,this.widgetName+".preventClickEvent")}this._mouseMoveDelegate=function(h){return e._mouseMove(h)};this._mouseUpDelegate=function(h){return e._mouseUp(h)};b(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);f.preventDefault();a=true;return true},_mouseMove:function(d){if(b.browser.msie&&!(document.documentMode>=9)&&!d.button){return this._mouseUp(d)}if(this._mouseStarted){this._mouseDrag(d);return d.preventDefault()}if(this._mouseDistanceMet(d)&&this._mouseDelayMet(d)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,d)!==false);(this._mouseStarted?this._mouseDrag(d):this._mouseUp(d))}return !this._mouseStarted},_mouseUp:function(d){b(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;if(d.target==this._mouseDownEvent.target){b.data(d.target,this.widgetName+".preventClickEvent",true)}this._mouseStop(d)}return false},_mouseDistanceMet:function(d){return(Math.max(Math.abs(this._mouseDownEvent.pageX-d.pageX),Math.abs(this._mouseDownEvent.pageY-d.pageY))>=this.options.distance)},_mouseDelayMet:function(d){return this.mouseDelayMet},_mouseStart:function(d){},_mouseDrag:function(d){},_mouseStop:function(d){},_mouseCapture:function(d){return true}})})(jQuery);(function(c,d){c.widget("ui.resizable",c.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1000},_create:function(){var f=this,k=this.options;this.element.addClass("ui-resizable");c.extend(this,{_aspectRatio:!!(k.aspectRatio),aspectRatio:k.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:k.helper||k.ghost||k.animate?k.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){this.element.wrap(c('
').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle=this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=k.handles||(!c(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all"){this.handles="n,e,s,w,se,sw,ne,nw"}var l=this.handles.split(",");this.handles={};for(var g=0;g
');if(/sw|se|ne|nw/.test(j)){h.css({zIndex:++k.zIndex})}if("se"==j){h.addClass("ui-icon ui-icon-gripsmall-diagonal-se")}this.handles[j]=".ui-resizable-"+j;this.element.append(h)}}this._renderAxis=function(q){q=q||this.element;for(var n in this.handles){if(this.handles[n].constructor==String){this.handles[n]=c(this.handles[n],this.element).show()}if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var o=c(this.handles[n],this.element),p=0;p=/sw|ne|nw|se|n|s/.test(n)?o.outerHeight():o.outerWidth();var m=["padding",/ne|nw|n/.test(n)?"Top":/se|sw|s/.test(n)?"Bottom":/^e$/.test(n)?"Right":"Left"].join("");q.css(m,p);this._proportionallyResize()}if(!c(this.handles[n]).length){continue}}};this._renderAxis(this.element);this._handles=c(".ui-resizable-handle",this.element).disableSelection();this._handles.mouseover(function(){if(!f.resizing){if(this.className){var i=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)}f.axis=i&&i[1]?i[1]:"se"}});if(k.autoHide){this._handles.hide();c(this.element).addClass("ui-resizable-autohide").hover(function(){if(k.disabled){return}c(this).removeClass("ui-resizable-autohide");f._handles.show()},function(){if(k.disabled){return}if(!f.resizing){c(this).addClass("ui-resizable-autohide");f._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var e=function(g){c(g).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){e(this.element);var f=this.element;f.after(this.originalElement.css({position:f.css("position"),width:f.outerWidth(),height:f.outerHeight(),top:f.css("top"),left:f.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);e(this.originalElement);return this},_mouseCapture:function(f){var g=false;for(var e in this.handles){if(c(this.handles[e])[0]==f.target){g=true}}return !this.options.disabled&&g},_mouseStart:function(g){var j=this.options,f=this.element.position(),e=this.element;this.resizing=true;this.documentScroll={top:c(document).scrollTop(),left:c(document).scrollLeft()};if(e.is(".ui-draggable")||(/absolute/).test(e.css("position"))){e.css({position:"absolute",top:f.top,left:f.left})}this._renderProxy();var k=b(this.helper.css("left")),h=b(this.helper.css("top"));if(j.containment){k+=c(j.containment).scrollLeft()||0;h+=c(j.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:k,top:h};this.size=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalSize=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalPosition={left:k,top:h};this.sizeDiff={width:e.outerWidth()-e.width(),height:e.outerHeight()-e.height()};this.originalMousePosition={left:g.pageX,top:g.pageY};this.aspectRatio=(typeof j.aspectRatio=="number")?j.aspectRatio:((this.originalSize.width/this.originalSize.height)||1);var i=c(".ui-resizable-"+this.axis).css("cursor");c("body").css("cursor",i=="auto"?this.axis+"-resize":i);e.addClass("ui-resizable-resizing");this._propagate("start",g);return true},_mouseDrag:function(e){var h=this.helper,g=this.options,m={},q=this,j=this.originalMousePosition,n=this.axis;var r=(e.pageX-j.left)||0,p=(e.pageY-j.top)||0;var i=this._change[n];if(!i){return false}var l=i.apply(this,[e,r,p]),k=c.browser.msie&&c.browser.version<7,f=this.sizeDiff;this._updateVirtualBoundaries(e.shiftKey);if(this._aspectRatio||e.shiftKey){l=this._updateRatio(l,e)}l=this._respectSize(l,e);this._propagate("resize",e);h.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});if(!this._helper&&this._proportionallyResizeElements.length){this._proportionallyResize()}this._updateCache(l);this._trigger("resize",e,this.ui());return false},_mouseStop:function(h){this.resizing=false;var i=this.options,m=this;if(this._helper){var g=this._proportionallyResizeElements,e=g.length&&(/textarea/i).test(g[0].nodeName),f=e&&c.ui.hasScroll(g[0],"left")?0:m.sizeDiff.height,k=e?0:m.sizeDiff.width;var n={width:(m.helper.width()-k),height:(m.helper.height()-f)},j=(parseInt(m.element.css("left"),10)+(m.position.left-m.originalPosition.left))||null,l=(parseInt(m.element.css("top"),10)+(m.position.top-m.originalPosition.top))||null;if(!i.animate){this.element.css(c.extend(n,{top:l,left:j}))}m.helper.height(m.size.height);m.helper.width(m.size.width);if(this._helper&&!i.animate){this._proportionallyResize()}}c("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",h);if(this._helper){this.helper.remove()}return false},_updateVirtualBoundaries:function(g){var j=this.options,i,h,f,k,e;e={minWidth:a(j.minWidth)?j.minWidth:0,maxWidth:a(j.maxWidth)?j.maxWidth:Infinity,minHeight:a(j.minHeight)?j.minHeight:0,maxHeight:a(j.maxHeight)?j.maxHeight:Infinity};if(this._aspectRatio||g){i=e.minHeight*this.aspectRatio;f=e.minWidth/this.aspectRatio;h=e.maxHeight*this.aspectRatio;k=e.maxWidth/this.aspectRatio;if(i>e.minWidth){e.minWidth=i}if(f>e.minHeight){e.minHeight=f}if(hl.width),s=a(l.height)&&i.minHeight&&(i.minHeight>l.height);if(h){l.width=i.minWidth}if(s){l.height=i.minHeight}if(t){l.width=i.maxWidth}if(m){l.height=i.maxHeight}var f=this.originalPosition.left+this.originalSize.width,p=this.position.top+this.size.height;var k=/sw|nw|w/.test(q),e=/nw|ne|n/.test(q);if(h&&k){l.left=f-i.minWidth}if(t&&k){l.left=f-i.maxWidth}if(s&&e){l.top=p-i.minHeight}if(m&&e){l.top=p-i.maxHeight}var n=!l.width&&!l.height;if(n&&!l.left&&l.top){l.top=null}else{if(n&&!l.top&&l.left){l.left=null}}return l},_proportionallyResize:function(){var k=this.options;if(!this._proportionallyResizeElements.length){return}var g=this.helper||this.element;for(var f=0;f');var e=c.browser.msie&&c.browser.version<7,g=(e?1:0),h=(e?2:-1);this.helper.addClass(this._helper).css({width:this.element.outerWidth()+h,height:this.element.outerHeight()+h,position:"absolute",left:this.elementOffset.left-g+"px",top:this.elementOffset.top-g+"px",zIndex:++i.zIndex});this.helper.appendTo("body").disableSelection()}else{this.helper=this.element}},_change:{e:function(g,f,e){return{width:this.originalSize.width+f}},w:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{left:i.left+f,width:g.width-f}},n:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{top:i.top+e,height:g.height-e}},s:function(g,f,e){return{height:this.originalSize.height+e}},se:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},sw:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[g,f,e]))},ne:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},nw:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[g,f,e]))}},_propagate:function(f,e){c.ui.plugin.call(this,f,[e,this.ui()]);(f!="resize"&&this._trigger(f,e,this.ui()))},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});c.extend(c.ui.resizable,{version:"1.8.18"});c.ui.plugin.add("resizable","alsoResize",{start:function(f,g){var e=c(this).data("resizable"),i=e.options;var h=function(j){c(j).each(function(){var k=c(this);k.data("resizable-alsoresize",{width:parseInt(k.width(),10),height:parseInt(k.height(),10),left:parseInt(k.css("left"),10),top:parseInt(k.css("top"),10)})})};if(typeof(i.alsoResize)=="object"&&!i.alsoResize.parentNode){if(i.alsoResize.length){i.alsoResize=i.alsoResize[0];h(i.alsoResize)}else{c.each(i.alsoResize,function(j){h(j)})}}else{h(i.alsoResize)}},resize:function(g,i){var f=c(this).data("resizable"),j=f.options,h=f.originalSize,l=f.originalPosition;var k={height:(f.size.height-h.height)||0,width:(f.size.width-h.width)||0,top:(f.position.top-l.top)||0,left:(f.position.left-l.left)||0},e=function(m,n){c(m).each(function(){var q=c(this),r=c(this).data("resizable-alsoresize"),p={},o=n&&n.length?n:q.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];c.each(o,function(s,u){var t=(r[u]||0)+(k[u]||0);if(t&&t>=0){p[u]=t||null}});q.css(p)})};if(typeof(j.alsoResize)=="object"&&!j.alsoResize.nodeType){c.each(j.alsoResize,function(m,n){e(m,n)})}else{e(j.alsoResize)}},stop:function(e,f){c(this).removeData("resizable-alsoresize")}});c.ui.plugin.add("resizable","animate",{stop:function(i,n){var p=c(this).data("resizable"),j=p.options;var h=p._proportionallyResizeElements,e=h.length&&(/textarea/i).test(h[0].nodeName),f=e&&c.ui.hasScroll(h[0],"left")?0:p.sizeDiff.height,l=e?0:p.sizeDiff.width;var g={width:(p.size.width-l),height:(p.size.height-f)},k=(parseInt(p.element.css("left"),10)+(p.position.left-p.originalPosition.left))||null,m=(parseInt(p.element.css("top"),10)+(p.position.top-p.originalPosition.top))||null; +p.element.animate(c.extend(g,m&&k?{top:m,left:k}:{}),{duration:j.animateDuration,easing:j.animateEasing,step:function(){var o={width:parseInt(p.element.css("width"),10),height:parseInt(p.element.css("height"),10),top:parseInt(p.element.css("top"),10),left:parseInt(p.element.css("left"),10)};if(h&&h.length){c(h[0]).css({width:o.width,height:o.height})}p._updateCache(o);p._propagate("resize",i)}})}});c.ui.plugin.add("resizable","containment",{start:function(f,r){var t=c(this).data("resizable"),j=t.options,l=t.element;var g=j.containment,k=(g instanceof c)?g.get(0):(/parent/.test(g))?l.parent().get(0):g;if(!k){return}t.containerElement=c(k);if(/document/.test(g)||g==document){t.containerOffset={left:0,top:0};t.containerPosition={left:0,top:0};t.parentData={element:c(document),left:0,top:0,width:c(document).width(),height:c(document).height()||document.body.parentNode.scrollHeight}}else{var n=c(k),i=[];c(["Top","Right","Left","Bottom"]).each(function(p,o){i[p]=b(n.css("padding"+o))});t.containerOffset=n.offset();t.containerPosition=n.position();t.containerSize={height:(n.innerHeight()-i[3]),width:(n.innerWidth()-i[1])};var q=t.containerOffset,e=t.containerSize.height,m=t.containerSize.width,h=(c.ui.hasScroll(k,"left")?k.scrollWidth:m),s=(c.ui.hasScroll(k)?k.scrollHeight:e);t.parentData={element:k,left:q.left,top:q.top,width:h,height:s}}},resize:function(g,q){var t=c(this).data("resizable"),i=t.options,f=t.containerSize,p=t.containerOffset,m=t.size,n=t.position,r=t._aspectRatio||g.shiftKey,e={top:0,left:0},h=t.containerElement;if(h[0]!=document&&(/static/).test(h.css("position"))){e=p}if(n.left<(t._helper?p.left:0)){t.size.width=t.size.width+(t._helper?(t.position.left-p.left):(t.position.left-e.left));if(r){t.size.height=t.size.width/i.aspectRatio}t.position.left=i.helper?p.left:0}if(n.top<(t._helper?p.top:0)){t.size.height=t.size.height+(t._helper?(t.position.top-p.top):t.position.top);if(r){t.size.width=t.size.height*i.aspectRatio}t.position.top=t._helper?p.top:0}t.offset.left=t.parentData.left+t.position.left;t.offset.top=t.parentData.top+t.position.top;var l=Math.abs((t._helper?t.offset.left-e.left:(t.offset.left-e.left))+t.sizeDiff.width),s=Math.abs((t._helper?t.offset.top-e.top:(t.offset.top-p.top))+t.sizeDiff.height);var k=t.containerElement.get(0)==t.element.parent().get(0),j=/relative|absolute/.test(t.containerElement.css("position"));if(k&&j){l-=t.parentData.left}if(l+t.size.width>=t.parentData.width){t.size.width=t.parentData.width-l;if(r){t.size.height=t.size.width/t.aspectRatio}}if(s+t.size.height>=t.parentData.height){t.size.height=t.parentData.height-s;if(r){t.size.width=t.size.height*t.aspectRatio}}},stop:function(f,n){var q=c(this).data("resizable"),g=q.options,l=q.position,m=q.containerOffset,e=q.containerPosition,i=q.containerElement;var j=c(q.helper),r=j.offset(),p=j.outerWidth()-q.sizeDiff.width,k=j.outerHeight()-q.sizeDiff.height;if(q._helper&&!g.animate&&(/relative/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}if(q._helper&&!g.animate&&(/static/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}}});c.ui.plugin.add("resizable","ghost",{start:function(g,h){var e=c(this).data("resizable"),i=e.options,f=e.size;e.ghost=e.originalElement.clone();e.ghost.css({opacity:0.25,display:"block",position:"relative",height:f.height,width:f.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof i.ghost=="string"?i.ghost:"");e.ghost.appendTo(e.helper)},resize:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost){e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})}},stop:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost&&e.helper){e.helper.get(0).removeChild(e.ghost.get(0))}}});c.ui.plugin.add("resizable","grid",{resize:function(e,m){var p=c(this).data("resizable"),h=p.options,k=p.size,i=p.originalSize,j=p.originalPosition,n=p.axis,l=h._aspectRatio||e.shiftKey;h.grid=typeof h.grid=="number"?[h.grid,h.grid]:h.grid;var g=Math.round((k.width-i.width)/(h.grid[0]||1))*(h.grid[0]||1),f=Math.round((k.height-i.height)/(h.grid[1]||1))*(h.grid[1]||1);if(/^(se|s|e)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f}else{if(/^(ne)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f}else{if(/^(sw)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.left=j.left-g}else{p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f;p.position.left=j.left-g}}}}});var b=function(e){return parseInt(e,10)||0};var a=function(e){return !isNaN(parseInt(e,10))}})(jQuery);/*! + * jQuery hashchange event - v1.3 - 7/21/2010 + * http://benalman.com/projects/jquery-hashchange-plugin/ + * + * Copyright (c) 2010 "Cowboy" Ben Alman + * Dual licensed under the MIT and GPL licenses. + * http://benalman.com/about/license/ + */ +(function($,e,b){var c="hashchange",h=document,f,g=$.event.special,i=h.documentMode,d="on"+c in e&&(i===b||i>7);function a(j){j=j||location.href;return"#"+j.replace(/^[^#]*#?(.*)$/,"$1")}$.fn[c]=function(j){return j?this.bind(c,j):this.trigger(c)};$.fn[c].delay=50;g[c]=$.extend(g[c],{setup:function(){if(d){return false}$(f.start)},teardown:function(){if(d){return false}$(f.stop)}});f=(function(){var j={},p,m=a(),k=function(q){return q},l=k,o=k;j.start=function(){p||n()};j.stop=function(){p&&clearTimeout(p);p=b};function n(){var r=a(),q=o(m);if(r!==m){l(m=r,q);$(e).trigger(c)}else{if(q!==m){location.href=location.href.replace(/#.*/,"")+q}}p=setTimeout(n,$.fn[c].delay)}$.browser.msie&&!d&&(function(){var q,r;j.start=function(){if(!q){r=$.fn[c].src;r=r&&r+a();q=$(' + + +
+
+
packChk.exe
+
+
+

packChk.exe is a utility for validation of a Software Pack. It operates on the unzipped content of the Software Pack and is located in the directory .\CMSIS\Utilities of the ARM::CMSIS Pack.

+

packChk.exe performs the following operations:

+
    +
  • Reads the content of the specified *.pdsc file. The path to this *.pdsc file is considered as root directory of the Software Pack.
  • +
  • Verifies the existence of all files in the Software Pack that are referenced in the *.pdsc file.
  • +
  • Checks for presence and correctness of mandatory elements such as <vendor>, <version>, etc.
  • +
  • Optionally, reads other PDSC files to resolve dependencies on <apis>, <boards>, and <conditions>.
  • +
  • Optionally, checks all System View Description files (*.SVD) referenced in the *.pdsc file using SVDConv.exe. Refer to SVD File Validation for details.
  • +
  • Optionally, verifies the element <url>.
  • +
  • Optionally, creates the standardized name of the Software Pack file for further processing in scripts.
  • +
  • Sets the exit status reflecting the validation result to:
    + 0 : no errors detected
    + 1 : errors during validation detected
  • +
+

Operation

+

packChk.exe is invoked from the command line:
+

+
packChk.exe <pdsc_file> <options>
+


+

+
+ + + + + + + + + + + + + + + + +
<options> Short Name Description
-i <file> Check component dependencies Reference PDSC file(s) used to resolve component dependencies in conditions.
-n <file> Write Pack file name Write a standardized name for the Software Pack to the specified ASCII file.
-s Verify SVD files Each SVD file referenced in the *.pdsc file is validated with SVDConv.exe. With this option set, SVDConv.exe is invoked from the same directory as packChk.exe.
-u <url> Pack Server URL Verifies that the specified URL matches the <url> element in the *.pdsc file.
-v Verbose Prints extra process information.
-x <msg-list> Suppress Suppress all listed validation messages. You can separate the values with blanks to create a list or repeat the option. Ranges are not allowed. Suppressing validation messages does not affect error and warning counters. For a list of messages refer to Validation Messages.
-h/-? Help Show help.
+

Examples

+

Run packChk.exe on the package description file called MyVendor.MyPack.pdsc. packChk.exe verifies the file against the Software Pack that is located in the same directory.

+
packChk.exe MyVendor.MyPack.pdsc
+

Run packChk.exe on the package description file called MyVendor.MyPack.pdsc in the current directory and try to resolve conditions using the ARM.CMSIS.pdsc file based in another directory.

+
packChk.exe MyVendor.MyPack.pdsc -i ..\..\PACK\ARM\CMSIS\ARM.CMSIS.pdsc
+

Run packChk.exe on the package description file called MyVendor.MVCM3.pdsc, verify SVD files, verify the URL to the Pack Server, and generate a ASCII text file with the standardized name of the Software Pack.

+
packChk.exe "MyVendor.MVCM3.pdsc" -s -u "http://www.myvendor.com/pack" -n packname.txt
+

Run packChk.exe on the package description file called MyVendor.MVCM3.pdsc. Suppress validation messages M304 and M331.

+
packChk.exe MyVendor.MVCM3.pdsc -x M304 M331           // messages as a list
+packChk.exe MyVendor.MVCM3.pdsc -x M304 -x M331        // option repeated
+

+Error and Warning Messages

+

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

+

Internal Errors

+

If you encounter one of the following errors, please send a problem report via email to cmsis.nosp@m.@arm.nosp@m..com.

+ + + + + + + + + + + + + + + + + + + +
Message Number Type Description Action
M100 ERROR GetModuleHandle failed Call support.
M101 ERROR Unknown error! Call support.
M102 ERROR MFC initialization failed Call support.
M103 ERROR Internal Error: 'REF' Call support and submit the error message.
M104 - M107 N.A. not in use
M108 ERROR Reading PDSC File failed! Verify file and folder permissions. Verify whether the file is corrupt or in another folder. Repeat the process. If this error persists, call support.
M109 ERROR Constructing Model failed! Building Model based on the PDSC information failed. Repeat the process. If this error persists, call support.
M110 ERROR Verifying Model failed Model based verification of the PDCS information failed. Repeat the process. If this error persists, call support.
+

Invocation Errors

+ + + + + + + + + + + + + + + + + + + + + + + + + +
Message Number Type Description Action
M200 ERROR Invalid arguments! At least one argument is wrong. Correct the argument.
M201 ERROR Too many arguments! The list of arguments is too long. Verify if you have used one argument twice.
M202 ERROR No PDSC input file specified Correct the command line. packChk.exe expects a *.pdsc file name as input.
M203 ERROR Error reading PDSC file 'PATH/FILENAME'! Verify the PDSC file for consistency.
M204 ERROR File not found: 'PATH' The specified PDSC file could not be found in the PATH displayed in the message. Correct the path or the filename.
M205 ERROR Cannot create Pack Name file 'PATH' Check the disk space or your permissions. Correct the path name.
M206 ERROR Multiple PDSC files found in package: 'FILES' Only one PDSC file is allowed in a package. Remove unnecessary PDSC files. The message lists all *.pdsc files found.
M207 ERROR PDSC file name mismatch!
+ Expected: 'PDSC1.pdsc'
+ Actual : 'PDSC2.pdsc'
The PDSC file expected has not been found. Rename or exchange the PDSC file.
M208 ERROR Error calling SVDConv.exe: 'PATH' SVDConv.exe was not found. Copy the executable into the directory of packChk.exe or enter the path where SVDConv.exe is located. Default is CMSIS\Utilities.
M209 ERROR Unknown Option: 'OPT' The command line option entered is not known or invalid.
M210 ERROR Only one input file to be checked is allowed. You can only check one PDSC file at a time.
+

+

Validation Messages

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Message Number Type Description Action
M300 ERROR The following files are listed in PDSC but not part of the package:
+ 'PATH':
+ 'FILES'
The files listed should be part of the package. However, these files could not be added to the package. Verify whether the files exist. Verify the file permissions.
M301 ERROR Checking Pack URL of PDSC file failed:
+ Expected URL : 'URL1'
+ Package URL : 'URL2'
The URL entered in the package does not match the value entered for comparison. Change the URL in the package. Check for possible misspellings of URL1.
M302 ERRORNo vendor tag found in the PDSC file! Add the <vendor> tag and provide the vendor name. For example: <vendor>Keil</vendor>. No vendor entered in the PDSC file. Enter the tag <vendor> and add the vendor name. Refer to /package.
M303 ERRORNo package name found in the PDSC file! Add the <name> tag and provide the package name. For example: <name>MCU-Name_DFP</name>. No package name found in the PDSC file. Enter the tag <name> and add the package name. For example <name>MCU-Name_DFP</name>. The package name is mandatory to create the package. Refer to /package.
M304 ERROR No package URL (<url>-tag and/or value) found in PDSC file! Add the tag <url> and enter a URL in the PDSC file. The URL points to the web page from which users can download the package. Refer to /package.
M305 ERRORNo package version ("version"-attribute in a <release>-tag) found in PDSC file! No version or release information found in the PDSC file. Add the attribute version to the tag <release> and enter the version number. Refer to /package/releases/release.
M306 ERRORNo package description found in the PDSC file. Add the <description>-tag and provide a descriptive text. No package description was found in the PDSC file. Enter the tag <description> and briefly describe the package content. Refer to /package.
M307 ERROR Checking SVD file 'PATH' failed! Verify the consistency of the *.SVD file. Refer to SVD File Validation.
M308 ERROR SVD file 'PATH' not found. Add the SVD file or correct the PDSC entry. The *.SVD file was not found in the path specified in the message. Add the SVD file or correct the entry in the *.pdsc file.
M309 ERROR Cannot read file information: 'PATH'. Access to the file specified failed. Verify permissions and spelling.
M310 ERROR Filename mismatch (case sensitive):
+ PDSC name : 'PDSC_FILENAME'
+ Filename : 'SYSTEM'
Filenames are case sensitive. Correct spelling.
M323 ERROR File/Path not found: 'PATH' The file or path entered in the PDSC file could not be found. Verify the path information.
M324 ERROR Board referenced in Example 'EXAMPLE' is undefined: 'VENDOR' : 'BOARD' The board referenced in the example application could not be found. Define the board (/package/boards/board) or correct the reference information (/package/examples/example/board).
M325 ERROR Board 'NAME' redefined, already defined in Line 'LINE': 'PATH' This board has been defined already in the line 'LINE' of the file 'PATH'. Verify and remove one of the board definitions.
M326 ERROR Path is not conformant: 'PATH': Absolute Paths or Drive references are not allowed, use Paths relative to PDSC file. The path needs to be relative to the PDSC file so that a dependency of a certain file system does not occur.
M327 ERROR Path is not conformant: 'PATH': Backslashes are not recommended, use forward slashes. Paths to files should adhere to the POSIX standard using forward slashes (/).
M328 ERROR Version not set for Release Information 'DESCR' The release defined through the description 'DESCR' requires the attribute <version>. Refer to /package/releases/release.
M329 ERROR Description not set for Release Information 'VER' The release defined through the version 'VER' needs a description. Refer to /package/releases/release.
M330 ERROR Condition redefined: 'COND', already defined in Line 'LINE' The condition has been defined already in a previous line. Correct the condition name, or remove the duplicate.
M331 WARNING Condition unused: 'COND' The condition has been defined but not used further. Remove the condition or add condition rules. Refer to /package/conditions/condition.
M332 ERROR Condition undefined: 'COND' A condition has been used but not defined. Correct the name of the condition or define the missing condition. Refer to /package/conditions/condition.
M333 WARNING Component has no condition: Cclass= 'CCLASS', Cgroup= 'CGROUP', Csub='CSUB', Cversion= 'CVER' The component defined has no condition. If the component has restrictions, then add a condition to the component definition. Refer to /package/components/.../component.
M334 WARNING Config File has no version: 'PATH' Add version information to the configuration file.
M335 WARNING Component declared as 'Board Support' has no ref to a device: Cclass= 'CCLASS', Cgroup= 'CGROUP', Cversion= 'CVER' A component defined as 'board support' needs a reference to a device. Add a device or correct the component definition. Refer to attribute Cclass of /package/components/.../component and /package/boards/board/mountedDevice.
M336 WARNING No reference to a device or device not found: Cclass= 'CCLASS', Cgroup= 'CGROUP', Cversion= 'CVER' Define the device /package/devices/family/../device or correct the information about the device in the reference.
M337 WARNING File with category 'CAT' has wrong extension 'EXT': 'PATH' The extension of the file does not match the file category. Verify the extension to match the category. Refer to /package/.../files/file.
M338 WARNING No releases found. The PDSC file is missing release information. Add <release> information to the file. Refer to /package/releases element.
M339 WARNING Include Path 'PATH' must not be a file! The path specified contains a filename. Correct the path infomation and remove the filename.
M340 WARNING Include Path 'PATH' must end with '/' or '\' Include paths must end with a slash or backslash. Verify and correct the path name.
M341 WARNING File with 'COMP' dependency must have extension 'EXT' : 'PATH' A file defining component dependencies must have the extension mentioned in the message. Verify the settings and correct the file extension.
M342 WARNING File with attribute 'ATTR' must not have category 'CAT': 'PATH' A file with the attribute mentioned in the message must not have the category specified. Correct the attribute or the category.Refer to /package/.../files/file.
M343 WARNING File with attribute 'ATTR' requires 'ATTR2' attribute: 'PATH' A file with the attribute 'ATTR' requires another attribute 'ATTR2'. Add the required attribute or correct attribute 'ATTR'. Refer to /package/.../files/file.
M344 WARNING File shall have condition containing 'COND': 'PATH' The file should have a condition. Define a condition in the file specified in the message.
M345 WARNING URL not found : 'URL' The specified URL could not be found. Correct the URL. Refer to /package.
M346 WARNING Referenced device(s) in 'BOARD' not found: 'DEVICE' The device or devices specified for the board could not be found. Verify and correct the device name or the board name. Refer to /package/boards/board/mountedDevice and /package/boards/board/compatibleDevice.
M347 WARNING Generator ID in Component Cclass= 'CCLASS', Cgroup= 'CGROUP', Cversion= 'CVER' is undefined: 'GENID' The generator ID used in the component could not be found. Verify and correct the generator ID (/package/components/.../component), or define the generator ID (ref /package/generators/generator).
M348 WARNING Feature redefined for 'MCU', see Line 'REF_LINE': 'FEATURE' This feature 'FEATURE' has been defined already on the same level in line 'REF_LINE'. The feature characteristics defined on line 'LINE' overwrite those from 'REF_LINE'. Correct the feature (/package/devices/family/.../feature).
M349 WARNING Examples found, but no board description(s) found Example projects have been found for a board that was not defined. Correct the entry for the examples (/package/examples/example/board) or define the board (/package/boards/board).
M350 WARNING No 'COMP' found for 'VENDOR' : 'MCU' ('COMPILER') The package (/package) defines a Vendor-MCU combination for which no component was defined. Define a component (/package/components/.../component) or verify the 'VENDOR' - 'MCU' settings.
M351 WARNING Component 'COMP' ('COMPID') error for 'VENDOR': 'MCU' ( 'COMPILER'): 'MSG' An unspecified error was found for the component. The message might give detailed information about the error.
M352 WARNING No Directories/Files found for 'COMP' ('COMPID') for 'VENDOR': 'MCU' ('COMPILER') No files or directories could be found for the defined component. Add the missing information. Refer to /package/.../files.
M353 WARNING No 'FILECAT' File found for Component 'COMP' ('COMPID') for 'VENDOR' : 'MCU' ('COMPILER') No file with the mentioned file category was found for the component. Verify whether the file exists or correct the information. Refer to attribute category in /package/.../files/file.
M354 WARNING Multiple 'FILECAT' Files found for Component 'COMP' ('COMPID') for 'VENDOR' : 'MCU' ('COMPILER') Multiple files with the mentioned file category were found for the specified component. Verify and rename the files, or correct the component settings (/package/.../files/file).
M355 WARNING No 'FILECAT' Directory found for Component 'COMP' ('COMPID') for 'VENDOR' : 'MCU' ('COMPILER') The directory specified for the file category was not found. Correct the information in the component settings (/package/components/.../component).
M356 WARNING Multiple 'FILECAT' Directories found for Component 'COMP' ('COMPID') for 'VENDOR' : 'MCU' ('COMPILER') Multiple directories were found for the same file category in the specified component. Remove obsolete information or correct the component settings.
M358 WARNING Header File 'HFILE' for 'CFILE' missing for Component 'COMP' ('COMPID') for 'VENDOR' : 'MCU' ('COMPILER') The header file defined for the component could not be found. Verify the header file settings (/package/.../files/file) or whether the file exists.
M359 WARNING Family has no Device(s) or Subfamilies: 'FAMILY' The device family has no devices or subfamilies. Add the missing information (/package/devices/family).
M360 WARNING Subfamily has no Device(s): 'SUBFAMILY' Add the missing information. Refer to /package/devices/family/subFamily.
M361 WARNING Generator ID in Taxonomy Cclass= 'CCLASS', Cgroup= 'CGROUP' is undefined: 'GENID' The generator ID used in the taxonomy is not defined. Define or correct the generator ID (/package/taxonomy element).
M362 WARNING Not all Component Dependencies for Cclass= 'CCLASS', Cgroup= 'CGROUP', Csub= 'CSUB', Cversion= 'CVER', Capiversion= 'APIVER' can be resolved.
+ RTE Model reports: 'MSG'
Some of the component dependencies could not be resolved. The message might contain additional information. Verify and correct component definition and dependency information. Refer to /package/components/.../component attribute condition.
M363 WARNING No API defined for Component Cclass= 'CCLASS', Cgroup= 'CGROUP', Csub= 'CSUB', Cversion= 'CVER', Capiversion= 'APIVER' The package is missing the API information for the specified component. Refer to /package/apis.
M364 WARNING No Devices for Condition 'COND' available. The specified condition refers to a device that does not exist. Define the device (/package/devices/family/../device) or correct the information for the condition (/package/conditions/condition).
M365 ERROR Redefined DEVTYPE 'MCU' found, see Line LINE Remove duplicate device/variant entries.
M366 ERROR Redefined DEVTYPEEXIST as DEVTYPE 'MCU' found, see Line LINE Device has been redefined as variant or vice versa. Remove duplicate device/variant entries.
M368 INFO Redefined TYPEEXISTING as TYPE 'NAME' found, see Line LINE Family/subfamily/device/variant has been redefined as different type.
M369 INFO Feature is already defined for 'DEVICE' and will be added, see Line 'LINE': 'FEATURE'. This feature 'FEATURE' has been defined already on a higher level and as such it gets added to this 'DEVICE'. This is usually done when some devices have a higher number of basic features. Correct the feature (/package/devices/family/.../feature) if this is a typo.
M370 WARNING URL is not conformant: 'URL':
+ Backslashes are not allowed in URL, use forward slashes.
Use standard URL notation using forward slashes (/).
M371 ERROR 'SECTION' Feature for 'MCU': 'FEATURE' unknown. This feature 'FEATURE' is unknwon to the specified 'MCU'. Correct the feature (/package/devices/family/.../feature) if this is a typo.
M372 ERROR 'SECTION' Feature for 'MCU': 'FEATURE' misspelled, did you mean 'KNOWNFEATURE' ('DESCR'). This feature 'FEATURE' resembles the feature 'KNOWNFEATURE'. Correct the feature (/package/devices/family/.../feature) if this is a typo.
M373 ERROR Unsupported Schema Version: 'VER'. The schema version is not supported. Verify the attribute schemaVersion of the element /package.
M374 ERROR While checking Feature for 'MCU': Pname 'CPU' not found. The processor could not be found for the specified device. Refer to /package/devices/family/../device and /package/devices/family/.../processor.
M375 ERROR 'path/pdsc_file': No <mountedDevice> for board 'BOARD' found. If a board element does not contain a <mountedDevice> element, then the examples for this board are not shown and example projects may not appear in the development tools. Refer to /package/boards/board/mountedDevice of /package/boards.
M376 ERROR Schema Version not set! Set a valid schema version in the PDSC file.
M377 INFO File 'NAME' TYPE must have 'attr="config"' This file has to be configurable. Add the required attribute to achieve this.
+

XML Reader Errors

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Message Number Type Description Action
M401 INFO Did you mean 'TAG'? Specify the tag to be used.
M410 WARNING Lost xml file stream. File corrupted.
M411 WARNING Preamble for 'UTF' should not be used, specify via '<?xml' Specify encoding as UTF-8 only, without BOM.
M412 WARNING Unsupported format or extra characters found before '<?xml': 'TEXT' Correct the XML file.
M413 WARNING UTF Format not supported: 'UTF' Select another UTF format.
M414 ERROR Cannot decode XML special character: 'SPECIALCHAR'. Correct the XML file.
M415 ERROR '<–' found, should this be a comment '<!–' ? Looks like a misspelled comment.
M416 ERROR Begin Tag seems to end with a Single Tag. Is this a typo? Correct the XML file.
M417 ERROR Inconsistent XML Structure Correct the XML file.
M418 ERROR XML Stack deeper than 30 Items! Giving up. Reduce the nested nodes.
M419 ERROR Begin Tag follows Text. Missing End Tag? Correct the XML file.
M420 ERROR Missing quotes (") in Attributes: 'ATTRLINE' Correct the XML file. Enclose values in " ".
M421 ERROR XML Hierarchy Error: Missing End Tags. Correct the XML file. Verify for enclosing or nested tags.
M422 ERROR Error reading file 'NAME' File could not be read.
+

Model Errors

+ + + + + + + + + +
Message Number Type Description Action
M500 TEXT RTE Model reports: MSG Error while preparing data. See massage for more details.
M502 TEXT RTE Model reports: #error NUM: NAME : MSG Additional software components required.
M504 TEXT RTE Model reports: MISSING: – SPACE NAME Add the missing component.
+ + + + + + diff --git a/docs/Pack/html/packFormat.html b/docs/Pack/html/packFormat.html new file mode 100644 index 0000000..4889917 --- /dev/null +++ b/docs/Pack/html/packFormat.html @@ -0,0 +1,196 @@ + + + + + +Pack Description (*.pdsc) Format +CMSIS-Pack: Pack Description (*.pdsc) Format + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-Pack +  Version 1.5.0 +
+
Delivery Mechanism for Software Packs
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Pack Description (*.pdsc) Format
+
+
+ +

The Pack Description (*.pdsc) Format uses standard XML annotations and is defined in the schema file PACK.xsd. Software components are distributed through Software Packs. A Software Pack is a zip file containing a single Pack Description file that describes dependencies to devices, processors, tool chains, or other software components.

+

A descriptive text of the Software Packalong the text information for devices, components, and examples is part of each a Pack Description (*.pdsc) file. In addition, information is provided which facilitates downloading, updating, and versioning of of a Software Pack. The *.pdsc file contains also the complete version history of the Software Pack with a brief list of the most significant changes.

+

+Filename Conventions

+

A Software Pack must have a unique filename which uses the following format: <vendor>.<name>.<version>.pack.

+

Where:

+ +
Note
<vendor> and <name> must not contain spaces.
+


+The Pack Description (*.pdsc) file belonging to such a Software Pack file (<vendor>.<name>.<version>.pack) is version independent and has the format: <vendor>.<name>.pdsc.

+

Where:

+ +
Note
<vendor> and <name> must not contain spaces.
+

Example filenames for software packs:

+

Software Pack for CMSIS Version 4.0 released by Arm.

+
    +
  • ARM.CMSIS.4.0.0.pack: filename of the Software Pack.
  • +
  • ARM.CMSIS.pdsc: filename of the Pack Description (*.pdsc) file.
  • +
+

Device Family Pack for STM32F4 Version 1.0.0 released by ST Microelectronics.

+
    +
  • ST.STM32F4xx_DFP.1.0.0.pack: filename of the Software Pack.
  • +
  • ST.STM32F4xx.pdsc: filename of the Pack Description (*.pdsc) file.
  • +
+
Note
All elements are case sensitive and must be consistently spelled in all places, i.e. the definition in the PDSC file must match the filenames of the *.pdsc and *.pack files. The file extensions (*.pdsc and *.pack) must be lower case.
+

+Pack Schema

+

The XML schema file PACK.xsd defines the sections used in a *.pdsc file. The current PACK.xsd can be found in the ARM.CMSIS pack in the directory .\CMSIS\Utilities.

+

The Pack Description (*.pdsc) Format is structured using grouping elements and contains the following top level elements:

+
    +
  • <package>: describes package related information like vendor, package name, description, version. Is the root element.
  • +
  • <keywords>: lists keywords to search for packages. Can be used for search engines.
  • +
  • <repository>: specifies the URL and repository type of a public repository where the pack originates from.
  • +
  • <releases>: lists release versions with descriptions.
  • +
  • <requirements>: lists required packs, compiler, programming language standards and their version or version range.
  • +
  • <taxonomy>: lists description elements that define component classes and component group names.
  • +
  • <apis>: describes Application Programming Interfaces (API) Specifications contained in the Software Pack.
  • +
  • <generators>: specifies the tools that have been used to generate the PDSC file.
  • +
  • <devices>: lists the devices supported by this Software Pack. It specifies the device attributes and files like flash programming algorithms, CMSIS device header files, CMSIS System View Descriptions, etc.
  • +
  • <boards>: lists the development boards supported by the Software Pack.
  • +
  • <conditions>: defines dependencies to devices, processors, components, and tools that are used within the Software Pack. It allows making components and files conditional.
  • +
  • <components>: lists the software components contained in the Software Pack.
  • +
  • <examples>: specifies example projects contained in the PACK.
  • +
+

+Example of a *.pdsc File

+

This example of a *.pdsc File explains the sections, particularly how dependencies are used to identify individual files of Software Components.

+
+PDSC_Example_top.png +
+
+PDSC_Example_bottom.png +
+Example of a *.pdsc File
+
+
+ + + + diff --git a/docs/Pack/html/packFormat.js b/docs/Pack/html/packFormat.js new file mode 100644 index 0000000..b69e1fd --- /dev/null +++ b/docs/Pack/html/packFormat.js @@ -0,0 +1,77 @@ +var packFormat = +[ + [ "Filename Conventions", "packFormat.html#Filenames", null ], + [ "Pack Schema", "packFormat.html#PackSchema", null ], + [ "Example of a *.pdsc File", "packFormat.html#PDSC_Example", null ], + [ "/package element", "pdsc_package_pg.html", [ + [ "/package", "pdsc_package_pg.html#element_package", null ] + ] ], + [ "/package/keywords element", "element_keywords.html", null ], + [ "/package/repository element", "element_repository.html", null ], + [ "/package/releases element", "element_releases.html", [ + [ "/package/releases/release", "element_releases.html#element_release", null ] + ] ], + [ "/package/requirements", "element_requirements_pg.html", [ + [ "/package/requirements/packages", "element_requirements_pg.html#element_packages", null ], + [ "/package/requirements/compilers", "element_requirements_pg.html#element_compilers", null ], + [ "/package/requirements/languages", "element_requirements_pg.html#element_languages", null ] + ] ], + [ "/package/taxonomy element", "element_taxonomy.html", [ + [ "/package/taxonomy/description", "element_taxonomy.html#element_taxonomyDescription", null ] + ] ], + [ "/package/apis element", "pdsc_apis_pg.html", [ + [ "/package/apis", "pdsc_apis_pg.html#element_apis", null ], + [ "/package/apis/api", "pdsc_apis_pg.html#element_api", null ] + ] ], + [ "/package/generators element", "pdsc_generators_pg.html", [ + [ "/package/generators", "pdsc_generators_pg.html#element_generators", null ], + [ "/package/generators/generator", "pdsc_generators_pg.html#element_generator", null ], + [ "/package/generators/generator/select", "pdsc_generators_pg.html#element_gen_select", null ], + [ "/package/generators/generator/exe", "pdsc_generators_pg.html#element_gen_exe", null ], + [ "/package/generators/generator/eclipse", "pdsc_generators_pg.html#element_gen_eclipse", null ], + [ "/package/generators/generator/web", "pdsc_generators_pg.html#element_gen_web", null ], + [ "/package/generators/generator/.../command", "pdsc_generators_pg.html#element_gen_command", null ], + [ "/package/generators/generator/.../argument", "pdsc_generators_pg.html#element_gen_argument", null ], + [ "/package/generators/generator/project_files", "pdsc_generators_pg.html#element_gen_project_files", null ], + [ "/package/generators/generator/files", "pdsc_generators_pg.html#element_gen_files", null ], + [ "/package/generators/generator/files/file", "pdsc_generators_pg.html#element_gen_file", null ] + ] ], + [ "/package/devices element", "pdsc_devices_pg.html", "pdsc_devices_pg" ], + [ "/package/boards element", "pdsc_boards_pg.html", [ + [ "/package/boards", "pdsc_boards_pg.html#element_boards", null ], + [ "/package/boards/board", "pdsc_boards_pg.html#element_board", null ], + [ "/package/boards/board/feature", "pdsc_boards_pg.html#element_board_feature", null ], + [ "/package/boards/board/mountedDevice", "pdsc_boards_pg.html#element_board_mountedDevice", null ], + [ "/package/boards/board/compatibleDevice", "pdsc_boards_pg.html#element_board_compatibleDevice", null ], + [ "/package/boards/board/image", "pdsc_boards_pg.html#element_board_image", null ], + [ "/package/boards/board/debugInterface", "pdsc_boards_pg.html#element_board_debugInterface", null ], + [ "/package/boards/board/book", "pdsc_boards_pg.html#element_board_book", null ] + ] ], + [ "/package/conditions element", "pdsc_conditions_pg.html", [ + [ "/package/conditions", "pdsc_conditions_pg.html#element_conditions", null ], + [ "/package/conditions/condition", "pdsc_conditions_pg.html#element_condition", null ], + [ "/package/conditions/condition/accept", "pdsc_conditions_pg.html#element_accept", null ], + [ "/package/conditions/condition/require", "pdsc_conditions_pg.html#element_require", null ], + [ "/package/conditions/condition/deny", "pdsc_conditions_pg.html#element_deny", null ] + ] ], + [ "/package/components element", "pdsc_components_pg.html", [ + [ "Component Bundle", "pdsc_components_pg.html#Component_Bundle", null ], + [ "Component Files", "pdsc_components_pg.html#Component_Files", null ], + [ "Component Instances", "pdsc_components_pg.html#Component_Instances", null ], + [ "RTE_Components.h", "pdsc_components_pg.html#RTE_Components_h", null ], + [ "/package/components", "pdsc_components_pg.html#element_components", null ], + [ "/package/components/bundle", "pdsc_components_pg.html#element_bundle", null ], + [ "/package/components/.../component", "pdsc_components_pg.html#element_component", null ], + [ "/package/.../files", "pdsc_components_pg.html#element_files", null ], + [ "/package/.../files/file", "pdsc_components_pg.html#element_file", null ] + ] ], + [ "/package/examples element", "pdsc_examples_pg.html", [ + [ "/package/examples", "pdsc_examples_pg.html#element_examples", null ], + [ "/package/examples/example", "pdsc_examples_pg.html#element_example", null ], + [ "/package/examples/example/board", "pdsc_examples_pg.html#element_example_board", null ], + [ "/package/examples/project", "pdsc_examples_pg.html#element_example_project", null ], + [ "/package/examples/project/environment", "pdsc_examples_pg.html#element_example_project_env", null ], + [ "/package/examples/example/attributes", "pdsc_examples_pg.html#element_example_attributes", null ], + [ "/package/examples/example/attributes/component", "pdsc_examples_pg.html#element_example_attribute_component", null ] + ] ] +]; \ No newline at end of file diff --git a/docs/Pack/html/packIndexFile.html b/docs/Pack/html/packIndexFile.html new file mode 100644 index 0000000..c46e667 --- /dev/null +++ b/docs/Pack/html/packIndexFile.html @@ -0,0 +1,286 @@ + + + + + +CMSIS-Pack Index Files +CMSIS-Pack: CMSIS-Pack Index Files + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-Pack +  Version 1.5.0 +
+
Delivery Mechanism for Software Packs
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
CMSIS-Pack Index Files
+
+
+

CMSIS-Pack is designed as a web-based distribution network. Each provider of a CMSIS-Pack (also referred to as vendor) is responsible for hosting, maintaining and publishing unique versions of a CMSIS-Pack.

+

A CMSIS-Pack is uniquely identified by <vendor>.<pack name>.<version>.pack. All published versions of a pack and the PDSC file need to be available in the same web folder specified by <url>. Multiple different packs may be located in the same web folder.

+

+Package Index File (pidx)

+

The package index file lists all CMSIS-Packs hosted and maintained by a vendor. The file is hosted by the vendor and has the name <vendor>.pidx. The <vendor> tag needs to match the file name. The file also contains the <url> to it's origin, as well as a <timestamp> of it's last update.

+

It is the vendor's obligation to update this file whenever:

+
    +
  • a new pack is added.
  • +
  • a new version of a pack is added.
  • +
  • a pack is deprecated.
  • +
  • a replacement for a pack becomes available.
  • +
+

Example MyVendor.pidx:

+
<?xml version="1.0" encoding="UTF-8" ?>
+
+
<index schemaVersion="1.0.0" xs:noNamespaceSchemaLocation="PackIndex.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema-instance">
+
<vendor>MyVendor</vendor>
+
<url>http://www.MyVendor.com/pack/</url>
+
<timestamp>2017-01-25T15:00:10.7300074+00:00</timestamp>
+
<pindex>
+
<pdsc url="http://www.MyVendor.com/pack/mypack/" vendor="MyVendor" name="MyPack" version="1.1.0"/>
+
...
+
</pindex>
+
</index>
+

Each individual pack is referenced by the attributes:

+
    +
  • url = web folder where the PDSC and packs reside.
  • +
  • vendor = vendor of the pack.
  • +
  • name = the name of the pack.
  • +
  • version = the version number of the latest available release for the pack.
  • +
+

The package index file for the CMSIS-Pack compliant packs, hosted on www.keil.com can be found here: www.keil.com/pack/Keil.pidx

+

The benefit of a single package index file is, that this file only needs to be exchanged once and can be polled for updates and additions of packs by a vendor. To add a vendor's packs to the public list maintained on www.keil.com, send an email to CMSIS@arm.com attaching a version of the <vendor>.pidx file.

+

+Vendor Index File (vidx)

+

A vendor index file lists package index files from different vendors. This information can be used to compile a list of known packs.

+

Example MyVendor.vidx:

+
<?xml version="1.0" encoding="UTF-8" ?>
+
+
<index schemaVersion="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:noNamespaceSchemaLocation="PackIndex.xsd">
+
<vendor>MyVendor</vendor>
+
<url>www.MyVendor.com/pack</url>
+
<timestamp>2017-01-08T10:30:00</timestamp>
+
<vindex>
+
<pidx url="http://www.othervendor.com/MyPacks/" vendor="OtherVendor" />
+
...
+
</vindex>
+
<!-- the section below is only intended for the transition until all vendors use the <vendor>.pidx file
+
<pindex>
+
<pdsc url="http://www.othervendor2.com/packs/" vendor="OtherVendor2" name="MyPack" version="2.3.0"/>
+
...
+
</pindex>
+
</index>
+

The latest index file of CMSIS-Packs belonging to vendor="ARM" and vendor="Keil" that are hosted on www.keil.com/pack is maintained here: www.keil.com/pack/Keil.pidx

+

ARM also maintains a flat list of all CMSIS-Pack compliant packs reported to ARM here: www.keil.com/pack/index.pidx

+

The vendor index file containing references to the package index files (or optionally PDSC files) used for compiling this summary index file are listed in the Keil.vidx file and can be downloaded from here: www.keil.com/pack/Keil.vidx

+

Based on these publicly available index files, everyone is equally positioned to create an index of available packs and their latest versions.

+

+CMSIS-Pack Index Schema File

+
<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+ 
+  Copyright (c) 2013-2017 ARM Limited. All rights reserved.
+ 
+  SPDX-License-Identifier: Apache-2.0
+ 
+  Licensed under the Apache License, Version 2.0 (the License); you may
+  not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+ 
+  http://www.apache.org/licenses/LICENSE-2.0
+ 
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an AS IS BASIS, WITHOUT
+  WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+ 
+  $Date:        23. Januar 2017
+  $Revision:    1.1.0
+
+  $Project: Schema File for Package Index File Format Specification
+
+  Package Index file naming convention <vendor>.pidx
+  Vendor  Index file naming convention <vendor>.vidx
+  SchemaVersion=1.1.0
+-->
+
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="qualified" version="1.1.0">
+
+  <!-- semantic versioning (semver.org) <major>.<minor>.<patch>-<quality> --> 
+  <xs:simpleType name="SemanticVersionType">
+    <xs:restriction  base="xs:string">
+      <!--               <major>         . <minor>        . <patch>        - <quality>                                                                                       + <build meta info>               -->
+      <xs:pattern value="(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)(-(0|[1-9][0-9]*|[0-9]*[a-zA-Z-][0-9a-zA-Z-]*)(\.(0|[1-9][0-9]*|[0-9]*[a-zA-Z-][0-9a-zA-Z-]*))*)?(\+[0-9a-zA-Z-]+(\.[0-9a-zA-Z-]+)*)?"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <!-- a basic string of letters and numbers plus a dash and underbar, no leading nor trailing spaces and a minimum of 3 characters and a maximum of 32 -->
+  <xs:simpleType name="RestrictedString">
+    <xs:restriction base="xs:string">
+      <xs:minLength value="3"/>
+      <xs:maxLength value="32"/>
+      <xs:pattern value="[-_A-Za-z0-9]+"/>
+      <xs:pattern value="\S(.*\S)?"></xs:pattern>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <!-- Vendor index file Description Type -->
+  <xs:complexType name="VidxType">
+    <xs:attribute name="url"             type="xs:anyURI"           use="required"/>
+    <xs:attribute name="vendor"          type="RestrictedString"    use="required"/>
+    <xs:attribute name="date"            type="xs:date"             use="optional"/>
+  </xs:complexType>
+
+  <!-- Package Description Type -->
+  <xs:complexType name="PdscType">
+    <xs:attribute name="url"             type="xs:anyURI"           use="required"/>
+    <xs:attribute name="vendor"          type="RestrictedString"    use="required"/>
+    <xs:attribute name="name"            type="RestrictedString"    use="required"/>
+    <xs:attribute name="version"         type="SemanticVersionType" use="required"/>
+    <xs:attribute name="date"            type="xs:date"             use="optional"/>
+    <xs:attribute name="deprecated"      type="xs:date"             use="optional"/>
+    <xs:attribute name="replacement"     type="RestrictedString"    use="optional"/>
+    <xs:attribute name="size"            type="xs:unsignedInt"      use="optional"/>
+  </xs:complexType>
+
+  <!-- Package Description file Type -->
+  <xs:complexType name="PindexType">
+    <xs:sequence>
+      <xs:element name="pdsc"            type="PdscType"            maxOccurs="unbounded"/>
+    </xs:sequence>
+  </xs:complexType>
+
+  <!-- Vendor vendor's package index file tag -->
+  <xs:complexType name="VindexType">
+    <xs:sequence>
+      <xs:element name="pidx"            type="VidxType"            maxOccurs="unbounded"/>
+    </xs:sequence>
+  </xs:complexType>
+
+  <!-- Index description root point (Vendor Index file, Package Index file -->
+  <xs:element name="index" nillable="true">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element name="vendor"        type="RestrictedString"/>
+        <xs:element name="url"           type="xs:anyURI"/>
+        <xs:element name="timestamp"     type="xs:dateTime"         minOccurs="0"/>
+        <xs:choice minOccurs="1" maxOccurs="2">
+          <!-- index/list of packs -->
+          <xs:element name="pindex"      type="PindexType"/>
+          <!-- index/list of vendor index files -->
+          <xs:element name="vindex"      type="VindexType"/>
+        </xs:choice>
+      </xs:sequence>
+      <xs:attribute name="schemaVersion" type="SemanticVersionType" use="required"/>
+    </xs:complexType>
+  </xs:element>
+</xs:schema>
+
+
+ + + + diff --git a/docs/Pack/html/pack_Example.html b/docs/Pack/html/pack_Example.html new file mode 100644 index 0000000..41274c0 --- /dev/null +++ b/docs/Pack/html/pack_Example.html @@ -0,0 +1,237 @@ + + + + + +Pack Example +CMSIS-Pack: Pack Example + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-Pack +  Version 1.5.0 +
+
Delivery Mechanism for Software Packs
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Pack Example
+
+
+

The ARM::CMSIS Pack contains an example of a Software Pack that contains device support, board support and software components. This Pack can be used as a reference for user generated Software Packs. It is available in the directory \CMSIS\Pack\Example. It contains a PDSC example file and all sub-directories containing the files referenced in the PDSC.
+ The example is a DFP for NXP's LPC1800 series of microcontrollers. It also contains BSP information and software components, mainly peripheral drivers. Some of the drivers adhere to the CMSIS-Driver standard. This is the layout of the sub-directories:

+ + + + + + + + + + + + + + + + + +
Directory Content Section in PDSC
Boards CMSIS-RTOS Blinky uVision project running on the MCB1800 development board <examples>
CMSIS_DriverCMSIS-Driver compliant peripheral drivers<component>
Device CMSIS-Core (Cortex-M) files for LPC1800 series <device>
Documents Documentation for devices and boards <book>
Flash Flash Programming and a sub-directory called LPC18xx43xx_IAP containing a uVision project for IAP (In-Application Programming) support<algorithm>
Images Images of the MCB1800 development board <board>
SVD SVD file for LPC1800 series <debug>
+

+

PDSC Example File

+

The PDSC file that is included in the example Pack is called Keil.LPC1800_DFP.pdsc.txt. The extension txt has been added to hide the file from development tools as it is not intended for installation. The file contains the following top level elements:

+ + + + + + + + + + + + + + + +
XML Element Purpose
<package> Publish Pack information like vendor, name, version, etc.
<devices> Define four sub-families with 16 devices in total.
<boards> Show MCB1800 development board information.
<conditions> Declare required conditions for software components.
<components> Include startup/system files, HAL drivers, and CMSIS-Driver 2.0 compliant peripheral drivers.
<examples> Contain a CMSIS-RTOS Blinky example project for uVision running on the MCB1800 development board.
+

+

Directory CMSIS_Driver

+

The CMSIS_Driver directory contains the following CMSIS-Driver compliant peripheral drivers. These drivers are supporting the NXP LPC1800 series:

+ + + + + + + + + + + + + + + + + +
Driver File Software Component
Ethernet EMAC_LPC18xx.c ::CMSIS-Driver:Ethernet MAC
SPI SSP_LPC18xx.c ::CMSIS-Driver:SPI
I2C I2C_LPC18xx.c ::CMSIS-Driver:I2C
MCI MCI_LPC18xx.c ::CMSIS-Driver:MCI
USART USART_LPC18xx.c ::CMSIS-Driver:USART
USB Device USBD_LPC18xx.c ::CMSIS-Driver:USB Device:USB0/1
USB Host USBH_LPC18xx.c ::CMSIS-Driver:USB Host:USB0/1
+

The following HAL drivers are required for the implementation of the CMSIS-Driver compliant peripheral drivers:

+ + + + + + + + + +
Driver File Software Component
General purpose DMA driver GPDMA_LPC18xx.c ::Device:GPDMA
General purpose IO driver GPIO_LPC18xx.c ::Device:GPIO
System control unit driver SCU_LPC18xx.c ::Device:SCU
+

+

Directory Device

+

The Device directory has two sub-directories: Include and Source.

+ + + + + + + + + + + + + + + +
File Purpose Software Component
Include\LPC18xx.h LPC1800 series header file ::CMSIS:CORE
Include\system_LPC18xx.h LPC1800 series system header file ::CMSIS:Startup
Source\system_LPC18xx.c LPC1800 series system source file ::CMSIS:Startup
Source\ARM\startup_LPC18xx.s LPC1800 series startup assembler file for ARMCC::CMSIS:Startup
Source\GCC\startup_LPC18xx.S LPC1800 series startup assembler file for GCC ::CMSIS:Startup
Source\IAR\startup_LPC18xx.s LPC1800 series startup assembler file for IAR ::CMSIS:Startup
+

+

Directory Documents

+

This directory incorporates the following documents:

+ + + + + + + + + + + + + + + +
File Purpose Section in PDSC
dui0552a_cortex_m3_dgug.pdf Cortex-M3 Generic User Guide<book> element of the device <family> element
ES_LPC18X0.pdf LPC1800 Errata sheet <book> element of the <device> section
LPC1850_30_20_10.pdf LPC1800 Data sheet <book> element of the <device> section
mcb1800.chm MCB1800/4300 User's Guide <book> element of the <boards> section
MCB1800v1-3-schematics.chm MCB1800 schematics <book> element of the <boards> section
UM10430.pdf User manual for LPC1800 <book> element of the <device> section
+
Note
Some of these documents are only placeholders for copyright reasons.
+
+
+ + + + diff --git a/docs/Pack/html/pack_revisionHistory.html b/docs/Pack/html/pack_revisionHistory.html new file mode 100644 index 0000000..0169172 --- /dev/null +++ b/docs/Pack/html/pack_revisionHistory.html @@ -0,0 +1,277 @@ + + + + + +Revision History of CMSIS-Pack +CMSIS-Pack: Revision History of CMSIS-Pack + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-Pack +  Version 1.5.0 +
+
Delivery Mechanism for Software Packs
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Revision History of CMSIS-Pack
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Version Description
1.5.0 Modifications compared to Version 1.4.9 +
1.4.9 Modifications compared to Version 1.4.8
    +
  • added Toptions attribute for use in conditions
  • +
  • updated documentation for generator section to reflect new exe, web, and eclipse sections
  • +
+
1.4.8 Modifications compared to Version 1.4.7
    +
  • added support for semantic versioning quality information in ConditionVersionType
  • +
  • updated Pack schema file making some elements optional
  • +
  • added Pack Index File Specification and schema file
  • +
+
1.4.7 Modifications compared to Version 1.4.6
    +
  • added multiple version types to tighten the schema checking depending on context
  • +
  • added new generator sections for exe, web and eclipse based generators in <generator>
  • +
  • added new processor attributes Dtz = Trustzone and Ddsp = DSP instructions for Armv8-M
  • +
  • added new attributes Dtz, Ddsp, Dsecure to conditions <require>, <deny>, <accept>
  • +
  • added new processors Cortex-M23 and Cortex-M33 and other in DcoreEnum
  • +
  • added new attribute public to books and images to indicate public use of documents and board images
  • +
+
1.4.6 Modifications compared to Version 1.4.5
    +
  • refined Dname string pattern restriction (RestrictedStringDname)
  • +
+
1.4.5 Modifications compared to Version 1.4.4
    +
  • added: Punits to ProcessorType
  • +
  • added: Punit to DebugType
  • +
+
1.4.4 Modifications compared to Version 1.4.3
    +
  • added: attribute defaultResetSequence to DebugType.
  • +
  • added: <requirements> section:
      +
    • <packages> defining dependencies between packs
    • +
    • <languages> defining required language support e.g. C99
    • +
    • <compiler> defining required toolchains
    • +
    +
  • +
  • added: <create> section used for tool independent project description
      +
    • attributes: name, documentation, condition
    • +
    • <target> specifies the board and device targeted by the project
    • +
    • <options>
    • +
    • <files> specifies the grouped files
    • +
    +
  • +
  • updated: <algorith> element
      +
    • added attributes: style, parameter and endian
    • +
    +
  • +
  • updated: <memory> element
      +
    • added attributes: name, access and alias
    • +
    • deprecating attribute: id (replaced by name + access)
    • +
    +
  • +
+
1.4.3 Modifications compared to Version 1.4.1
    +
  • Adding attribute "sdf" to debugconfig element within section <devices>
  • +
+
1.4.1 Modifications compared to Version 1.4.0
    +
  • pName, Dname, Dvariant type changed from xs:string to RestrictedString
  • +
+
1.4.0 Modifications compared to Version 1.3.3:
    +
  • device section memory specification redefined, deprecating id attribute
  • +
  • device section algorithm support multiple flash programming algorithm styles
  • +
  • device section debug adding CJTAG debug port type
  • +
+
1.3.3 Modifications compared to Version 1.3.1:
    +
  • Schema Version remains unchanged, since no incompatible update
  • +
  • Added generator section can specify a target GPDSC file that it will generate
  • +
  • Added A component can be linked to a generator and the generator's GPDSC file will be automatically included in the project as part of the component.
  • +
  • Added A generator command is optionally extended by a separate description of arguments
  • +
  • Updated Vendor list
  • +
  • Updated Utility packChk.exe to Version 1.3.0.0:
      +
    • detect redefinitions of boards
    • +
    • check presence of board image files
    • +
    • check for duplicate device features
    • +
    • check for duplicate device definitions
    • +
    • check for
    • +
    • minor bug fixes
    • +
    +
  • +
+
1.3.1 Modifications compared to Version 1.3:
    +
  • Schema Version remains unchanged, since no incompatible update
  • +
  • Added Cortex-M7 to the predefined list of processors
  • +
  • Updated Vendor list
  • +
  • Added File version attribute to debugvars element of device description
  • +
  • Updated XML file header encoding tag set to capital "UTF8"
  • +
  • Deprecated init attribute of <memory> element in <devices> section deprecated
  • +
+
1.3 Modifications compared to Version 1.2:
    +
  • Added attributes to release tag for managing deprecation and changing Pack IDs
  • +
  • Removed external RAMn and ROMn memory IDs in memory tag
  • +
  • Added FileCategoryTypes in <file> element for C, C++, Assembler, Linker
  • +
  • Extended specification of <require>, <accept> and <deny> with Cversion and Capiversion ranges
  • +
  • Added Utilities for Creating Packs and packChk.exe for Pack validation
  • +
  • Added documentation for the Example Pack based on LPC1800 Device Family
  • +
  • Refined <debug> element description
  • +
  • Many clarifications in the documentation along with examples
  • +
+
1.2 Clarifications for release.
1.1 - Preliminary Update release for review:
    +
  • new Boards description
  • +
  • new Debug description
  • +
  • revised Device Feature capture
  • +
  • new Generator description
  • +
  • new Flash Algorithm Specification
  • +
  • new Configuration Wizard Annotation Specification
  • +
+
1.0 - Preliminary Preliminary release for review
0.10 Release for beta review
+
+
+ + + + diff --git a/docs/Pack/html/pages.html b/docs/Pack/html/pages.html new file mode 100644 index 0000000..638ecab --- /dev/null +++ b/docs/Pack/html/pages.html @@ -0,0 +1,164 @@ + + + + + +Usage and Description +CMSIS-Pack: Usage and Description + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-Pack +  Version 1.5.0 +
+
Delivery Mechanism for Software Packs
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ + + + + + diff --git a/docs/Pack/html/pdsc_SequenceNameEnum_pg.html b/docs/Pack/html/pdsc_SequenceNameEnum_pg.html new file mode 100644 index 0000000..743cb05 --- /dev/null +++ b/docs/Pack/html/pdsc_SequenceNameEnum_pg.html @@ -0,0 +1,1092 @@ + + + + + +Debug access sequences +CMSIS-Pack: Debug access sequences + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-Pack +  Version 1.4.9 +
+
Delivery Mechanism for Software Packs
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Debug access sequences
+
+
+

Debug access sequences define the activities of development tools to connect to a device using the debug channel for debugging, tracing, or flash programming. Several debug access sequences are pre-defined and executed in specific context. Refer to sequences for details.

+

Software development tools should implement Default debug access sequences. These default sequences can be overwritten by device specific sequences using the sequence element in the sequences section of the PDSC file. Additionally, a PDSC file can contain user-defined sequences, for example to reuse access sequence fragments:

+
    +
  • Usage of debug access sequences explains how the sequences are used from a development tool point of view.
  • +
  • Default debug access sequences lists all debug access sequences that are pre-defined by the CMSIS-Pack standard and shows the details of the default debug access sequences.
  • +
  • Writing debug access sequences explains how to write custom debug access sequences. These can be used to either override default sequences or to define device specific sequences.
  • +
+

+Usage of debug access sequences

+

Pre-defined Debug Access Sequences are used in the following context:

+
    +
  • Connect Debugger to Device is executed when debugging or flash programming with the target starts.
  • +
  • Reset Device is executed to reset the target.
  • +
  • Verify Code is executed to verify the content after flash programming.
  • +
  • Disconnect Debugger is executed when debugging or flash programming with the target stops.
  • +
+

The following diagrams show how the Debug Access Sequences are executed by a development tool.

+

Connect Debugger to Device is executed when debugging or flash programming with the target starts.

+
+DebugConnect.png +
+

Reset Device is executed to reset the target.

+
+Reset.png +
+

Verify Code is executed to verify the content after flash programming.

+
+CodeVerify.png +
+

Disconnect Debugger is executed when debugging or flash programming with the target stops.

+
+DebugDisconnect.png +
+

+Default debug access sequences

+

Debug access sequences get defined in the sequence element. The following table lists the available pre-defined debug access sequences. Default debug access sequences are executed if they are not overwritten using a sequence element. Refer to Usage of debug access sequences for more information about the execution of these sequences.

+

For debug access sequences marked in ItalicRed, no default sequence exists. The usage in a debug description requires a related sequence element to be present. The other sequences should be implemented in a development tool. They are executed when no sequence definition exists in the PDSC file.

+
Note
Default debug access sequences read the System Control Space (SCS) of the processor and assume that the SCS offset is implemented as defined in the ARMv6-M/ARMv7-M/ARMv8-M architecture reference manual.
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
name= Description
DebugPortSetup Prepare the target debug port for connection; is executed before acquiring access to the debug port.
+ May include for example an SWJ-DP switch sequence as defined in the ARM Debug Interface (ADI) Architecture Specification.
+ This sequence must not contain debug port/access port register and target memory accesses other than:
    +
  • Reading the DPIDR debug port register to release an SWD connection from its line reset.
  • +
  • Writing the TARGETSEL debug port register (SWD protocol v2).
  • +
+
DebugPortStart Connect to the target debug port and power it up; is executed after DebugPortSetup.
+ The parent debugport is default debug port for this sequence.
+ This sequence must not contain access port register and target memory accesses.
DebugPortStop Power down and disconnect from target debug port.
+ Executed as last step during target disconnect unless another debugger connection to this port is active. The parent debugport is default debug port for this sequence.
+ This sequence must not contain access port register and target memory accesses.
DebugDeviceUnlock Check if the device is in a locked state and unlock it. Use query command elements for user confirmation.
+ Executed after having powered up the debug port.
DebugCoreStart Initialize core debug system.
+ Executed after having connected and powered up the default debug port for the connection.
DebugCoreStop Uninitialize core debug system.
+ Executed as last step during disconnect before powering down any debug ports no longer required for concurrent connections.
DebugCodeMemRemap Remap memory to execution location.
+ Executed before verifying memory content after flash programming. This is required to replicate a memory remap of a device bootloader (that is not executed during debug connection).
ResetSystem Execute a system-wide reset via software mechanisms.
ResetProcessor Execute a processor reset via software mechanisms.
ResetHardware Execute a system-wide reset via the dedicated debugger reset line, e.g. nRST.
ResetHardwareAssert Assert a system-wide reset via the dedicated debugger reset line, e.g. nRST.
ResetHardwareDeassert Deassert a system-wide reset via the dedicated debugger reset line, e.g. nRST.
ResetCatchSet Executed before a target reset to configure the vector catch to stop code execution after the reset.
+ The implementation of ResetCatchSet requires an implementation of ResetCatchClear to free any hardware resources used for stopping the core.
ResetCatchClear Executed after a target reset to free hardware resources allocated by ResetCatchSet.
FlashEraseDone Executed after erasing flash memory.
FlashProgramDone Eexecuted after programming flash memory.
TraceStart Enable target trace capture.
+ Executed before the debugger powers up and configures standard CoreSight trace components, e.g. after the initial target connection as well as after a system-wide reset.
TraceStop Disable target trace capture.
+ Executed after the debugger disabled and powered down standard CoreSight trace components.
RecoverySupportStart Executed before step or run command to support recovery from a lost target connection, e.g. after a low power mode.
RecoverySupportStop Executed after step or run command in context of the RecoverySupportStart sequence.
RecoveryAcknowledge Debugger acknowledge after recovering from a lost target connection. Can be executed independently from a RecoverySupportStart sequence.
+

Pre-defined default debug access sequences

+

The following sections the show the details of the pre-defined default debug access sequences.

+

+DebugPortSetup

+

Prepare the target debug port for connection.

+
<sequence name="DebugPortSetup">
+
<block>
+
__var isSWJ = ((__protocol &amp; 0x00010000) != 0);
+
__var protType = __protocol &amp; 0x0000FFFF;
+
</block>
+
+
<!-- JTAG Protocol -->
+
<control if="protType == 1">
+
+
<control if="isSWJ">
+
+
<block atomic="1">
+
// Ensure current debug interface is in reset state
+
DAP_SWJ_Sequence(51, 0x0007FFFFFFFFFFFF);
+
+
// Execute SWJ-DP Switch Sequence SWD to JTAG (0xE73C)
+
// Change if SWJ-DP uses deprecated switch code (0xAEAE)
+
DAP_SWJ_Sequence(16, 0xE73C);
+
+
// Ensure JTAG interface is reset
+
DAP_SWJ_Sequence(6, 0x3F);
+
</block>
+
+
</control>
+
+
<block atomic="1">
+
// JTAG "Soft" Reset
+
DAP_JTAG_Sequence(6, 1, 0x3F);
+
DAP_JTAG_Sequence(1, 0, 0x01);
+
</block>
+
+
</control>
+
+
<!-- SWD Protocol -->
+
<control if="protType == 2">
+
+
<control if="isSWJ">
+
+
<block atomic="1">
+
// Ensure current debug interface is in reset state
+
DAP_SWJ_Sequence(51, 0x0007FFFFFFFFFFFF);
+
+
// Execute SWJ-DP Switch Sequence JTAG to SWD (0xE79E)
+
// Change if SWJ-DP uses deprecated switch code (0xEDB6)
+
DAP_SWJ_Sequence(16, 0xE79E);
+
+
// Enter SWD Line Reset State
+
DAP_SWJ_Sequence(51, 0x0007FFFFFFFFFFFF); // &gt; 50 cycles SWDIO/TMS High
+
DAP_SWJ_Sequence(3, 0x00); // At least 2 idle cycles (SWDIO/TMS Low)
+
</block>
+
+
</control>
+
+
<control if="!isSWJ">
+
+
<block atomic="1">
+
// Enter SWD Line Reset State
+
DAP_SWJ_Sequence(51, 0x0007FFFFFFFFFFFF); // &gt; 50 cycles SWDIO/TMS High
+
DAP_SWJ_Sequence(3, 0x00); // At least 2 idle cycles (SWDIO/TMS Low)
+
</block>
+
+
</control>
+
+
<block>
+
// Read DPIDR to enable SWD interface (SW-DPv1 and SW-DPv2)
+
ReadDP(0x0);
+
</block>
+
+
</control>
+
+
</sequence>
+

+DebugPortStart

+

Connect to the target debug port and power it up.

+
<sequence name="DebugPortStart">
+
+
<block>
+
__var SW_DP_ABORT = 0x0;
+
__var DP_CTRL_STAT = 0x4;
+
__var DP_SELECT = 0x8;
+
__var powered_down = 0;
+
+
// Switch to DP Register Bank 0
+
WriteDP(DP_SELECT, 0x00000000);
+
+
// Read DP CTRL/STAT Register and check if CSYSPWRUPACK and CDBGPWRUPACK bits are set
+
powered_down = ((ReadDP(DP_CTRL_STAT) &amp; 0xA0000000) != 0xA0000000);
+
</block>
+
+
<control if="powered_down">
+
+
<block>
+
// Request Debug/System Power-Up
+
WriteDP(DP_CTRL_STAT, 0x50000000);
+
</block>
+
+
<!-- Wait for Power-Up Request to be acknowledged -->
+
<control while="(ReadDP(DP_CTRL_STAT) &amp; 0xA0000000) != 0xA0000000" timeout="1000000"/>
+
+
<block>
+
// Request Debug Reset
+
WriteDP(DP_CTRL_STAT, 0x54000000);
+
</block>
+
+
<!-- Wait for Debug Reset to be acknowledged, don't issue error on timeout to deal with improperly connected Debug Reset -->
+
<control while="(ReadDP(DP_CTRL_STAT) &amp; 0xA8000000) != 0xA8000000" timeout="300000"/>
+
+
<!-- JTAG Specific Part of sequence -->
+
<control if="__protocol == 1">
+
+
<block>
+
// Init AP Transfer Mode, Transaction Counter, and Lane Mask (Normal Transfer Mode, Include all Byte Lanes)
+
// Additionally clear STICKYORUN, STICKYCMP, and STICKYERR bits by writing '1'
+
WriteDP(DP_CTRL_STAT, 0x50000F32);
+
</block>
+
+
</control>
+
+
<!-- SWD Specific Part of sequence -->
+
<control if="__protocol == 2">
+
+
<block>
+
// Init AP Transfer Mode, Transaction Counter, and Lane Mask (Normal Transfer Mode, Include all Byte Lanes)
+
WriteDP(DP_CTRL_STAT, 0x50000F00);
+
+
// Clear WDATAERR, STICKYORUN, STICKYCMP, and STICKYERR bits of CTRL/STAT Register by write to ABORT register
+
WriteDP(SW_DP_ABORT, 0x0000001E);
+
</block>
+
+
</control>
+
+
</control>
+
+
</sequence>
+

+DebugPortStop

+

Power down and disconnect from target debug port.

+
<sequence name="DebugPortStop">
+
+
<block>
+
__var DP_CTRL_STAT = 0x4;
+
__var DP_SELECT = 0x8;
+
+
// Switch to DP Register Bank 0
+
WriteDP(DP_SELECT, 0x00000000);
+
+
// Power Down Debug port
+
WriteDP(DP_CTRL_STAT, 0x00000000);
+
</block>
+
+
</sequence>
+

+DebugCoreStart

+

Initialize core debug system.

+
<sequence name="DebugCoreStart">
+
+
<block>
+
// System Control Space (SCS) offset as defined in ARMv6-M/ARMv7-M.
+
+
__var SCS_Addr = 0xE000E000;
+
__var DHCSR_Addr = SCS_Addr + 0xDF0;
+
+
// Enable Core Debug via DHCSR
+
Write32(DHCSR_Addr, 0xA05F0001);
+
</block>
+
+
</sequence>
+

+DebugCoreStop

+

Un-initialize core debug system.

+
<sequence name="DebugCoreStop">
+
+
<block>
+
// System Control Space (SCS) offset as defined in ARMv6-M/ARMv7-M.
+
+
__var SCS_Addr = 0xE000E000;
+
__var DHCSR_Addr = SCS_Addr + 0xDF0;
+
__var DEMCR_Addr = SCS_Addr + 0xDFC;
+
+
// Disable Core Debug via DHCSR
+
Write32(DHCSR_Addr, 0xA05F0000);
+
+
// Disable DWT and ITM blocks, DebugMonitor handler,
+
// halting debug traps, and Reset Vector Catch.
+
Write32(DEMCR_Addr, 0x00000000);
+
</block>
+
+
</sequence>
+

+ResetSystem

+

Execute a system-wide reset via software mechanisms.

+
<sequence name="ResetSystem">
+
+
<block>
+
// System Control Space (SCS) offset as defined in ARMv6-M/ARMv7-M.
+
+
__var SCS_Addr = 0xE000E000;
+
__var AIRCR_Addr = SCS_Addr + 0xD0C;
+
__var DHCSR_Addr = SCS_Addr + 0xDF0;
+
+
// Execute SYSRESETREQ via AIRCR
+
Write32(AIRCR_Addr, 0x05FA0004);
+
</block>
+
+
<!-- Reset Recovery: Wait for DHCSR.S_RESET_ST bit to clear on read -->
+
<control while="(Read32(DHCSR_Addr) &amp; 0x02000000) == 0" timeout="500000"/>
+
+
</sequence>
+

+ResetProcessor

+

Execute a processor reset via software mechanisms.

+
Note
This Default Debug Access Sequence is empty for ARMv6-M based processors.
+
<sequence name="ResetProcessor">
+
+
<block>
+
// System Control Space (SCS) offset as defined in ARMv7-M.
+
+
__var SCS_Addr = 0xE000E000;
+
__var AIRCR_Addr = SCS_Addr + 0xD0C;
+
__var DHCSR_Addr = SCS_Addr + 0xDF0;
+
+
// Execute VECTRESET via AIRCR
+
Write32(AIRCR_Addr, 0x05FA0001);
+
</block>
+
+
<!-- Reset Recovery: Wait for DHCSR.S_RESET_ST bit to clear on read -->
+
<control while="(Read32(DHCSR_Addr) &amp; 0x02000000) == 0" timeout="500000"/>
+
+
</sequence>
+

+ResetHardware

+

Execute a system-wide reset via the dedicated debugger reset line nRST.

+
<sequence name="ResetHardware">
+
+
<block>
+
__var nReset = 0x80;
+
__var canReadPins = 0;
+
+
// Deassert nRESET line
+
canReadPins = (DAP_SWJ_Pins(0x00, nReset, 0) != 0xFFFFFFFF);
+
</block>
+
+
<!-- Keep reset active for 50 ms -->
+
<control while="1" timeout="50000"/>
+
+
<control if="canReadPins">
+
+
<!-- Assert nRESET line and wait max. 1s for recovery -->
+
<control while="(DAP_SWJ_Pins(nReset, nReset, 0) &amp; nReset) == 0" timeout="1000000"/>
+
+
</control>
+
+
<control if="!canReadPins">
+
+
<block>
+
// Assert nRESET line
+
DAP_SWJ_Pins(nReset, nReset, 0);
+
</block>
+
+
<!-- Wait 100ms for recovery if nRESET not readable -->
+
<control while="1" timeout="100000"/>
+
+
</control>
+
+
</sequence>
+

+ResetHardwareAssert

+

Assert a system-wide reset line nRST.

+
<sequence name="ResetHardwareAssert">
+
+
<block>
+
__var nReset = 0x80;
+
+
// Deassert nRESET line to activate the hardware reset
+
DAP_SWJ_Pins(0, nReset, 0);
+
</block>
+
+
</sequence>
+

+ResetHardwareDeassert

+

De-Assert a system-wide reset line nRST.

+
<sequence name="ResetHardwareDeassert">
+
+
<block>
+
__var nReset = 0x80;
+
__var canReadPins = 0;
+
+
// Assert nRESET line and check if nRESET is readable
+
canReadPins = (DAP_SWJ_Pins(nReset, nReset, 0) != 0xFFFFFFFF);
+
</block>
+
+
<!-- Wait max. 1s for nRESET to recover from reset if readable-->
+
<control if="canReadPins" while="(DAP_SWJ_Pins(nReset, nReset, 0) &amp; nReset) == 0" timeout="1000000"/>
+
+
<!-- Wait 100ms for recovery if nRESET not readable -->
+
<control if="!canReadPins" while="1" timeout="100000"/>
+
+
</sequence>
+

+ResetCatchSet

+

Configure the target to stop code execution after a reset.

+
<sequence name="ResetCatchSet">
+
+
<block>
+
// System Control Space (SCS) offset as defined
+
// in ARMv6-M/ARMv7-M. Reimplement this sequence
+
// if the SCS is located at a different offset.
+
+
__var SCS_Addr = 0xE000E000;
+
__var DHCSR_Addr = SCS_Addr + 0xDF0;
+
__var DEMCR_Addr = SCS_Addr + 0xDFC;
+
__var value = 0;
+
+
// Enable Reset Vector Catch in DEMCR
+
value = Read32(DEMCR_Addr);
+
Write32(DEMCR_Addr, (value | 0x00000001));
+
+
// Read DHCSR to clear potentially set DHCSR.S_RESET_ST bit
+
Read32(DHCSR_Addr);
+
</block>
+
+
</sequence>
+

+ResetCatchClear

+

Free hardware resources allocated by ResetCatchSet.

+
<sequence name="ResetCatchClear">
+
+
<block>
+
// System Control Space (SCS) offset as defined
+
// in ARMv6-M/ARMv7-M. Reimplement this sequence
+
// if the SCS is located at a different offset.
+
+
__var SCS_Addr = 0xE000E000;
+
__var DEMCR_Addr = SCS_Addr + 0xDFC;
+
__var value = 0;
+
+
// Disable Reset Vector Catch in DEMCR
+
value = Read32(DEMCR_Addr);
+
Write32(DEMCR_Addr, (value &amp; (~0x00000001)));
+
</block>
+
+
</sequence>
+

+Writing debug access sequences

+

To override a default sequence or to create a custom (default) sequence, you need to write sequence elements. The following sections show how to use the built-in debug access syntax, expressions, and debug access functions to create custom sequences.

+

+Debug access syntax rules

+

Debug accesses are described in block elements of a debug access sequence (sequence element). The following syntax is used for this purpose:

+
    +
  • The contents of a block element is a series of statements.
  • +
  • Each statement must begin in a new line and is terminated by a ; character.
  • +
  • A typical statement consists of variable, followed by a = character and an expression, where the = character is an assignment of the expression result to the variable:
    variable = expression;
    +
  • +
  • Alternatively, a statement can be a sole expression without storing its result to a variable.
    expression;
    +
  • +
  • Comments begin with two slashes (//) and end with a linebreak:
    // Whole line is a comment
    +
    variable = expression; // Comment appended to statement
    +
  • +
  • Variables must be defined using the keyword __var. The definition must include an initalization of the variable:
    __var variable = 0;
    +
  • +
  • Variables can be defined only once within a scope. Scopes beging with entering a debug access sequence or a control element. They are extended to child control elements. Variables of a parent scope can be modified. Leaving a scope destroys all variables defined in it.
    + block elements do not begin a new scope.
    <sequence name="MySequence">
    +
    +
    <block info="Block 1">
    +
    __var condvar = 1;
    +
    __var myvar1 = 5;
    +
    __var myvar2 = 0;
    +
    </block>
    +
    +
    <control if="condvar">
    +
    <block>
    +
    // __var myvar1 = 2; // Redefinition, not allowed!
    +
    __var myvar3 = 2;
    +
    myvar2 = myvar1 + myvar3; // Assign value (5+2) = 7
    +
    </block>
    +
    </control>
    +
    +
    <block info="Block 2">
    +
    myvar1 = myvar2 + 1; // Variable myvar1 holds the value '8' after this statement
    +
    // myvar2 = myvar3; // myvar3 does not exist in this scope, not allowed!
    +
    </block>
    +
    +
    </sequence>
    +
  • +
  • The debug access variables __dp, __ap, and __errorcontrol can be modified within a debug access sequence. An assigned value is held until leaving the sequence. Calling another sequence by the Sequence debug access function will push their values on a sequence execution stack. The values are restored when returning from such a call.
  • +
+

+Expression rules

+

Expressions are used in various places to describe one of the following:

+
    +
  • A value as assigned in a debug access statement.
  • +
  • A condition to use in the if attribute of a control element.
  • +
  • A condition to use in the while attribute of a control element.
  • +
  • A parameter to a debug access function as described below.
  • +
+

An expression may consist of the following:

+
    +
  • Constant numbers in decimal and hexadecimal representation (prefix 0x).
  • +
  • Arithmetic operators such as +, -, *, /, and %.
  • +
  • Bit-arithmetic operators such as &, |, ~, ^, >>, and <<.
  • +
  • Comparison-operators such as ==, !=, <, >, <=, and >=.
  • +
  • Logic operators such as !, &&, ||, and ==.
  • +
  • Conditional expression operations like:
    (x < y) ? a : b
    +
  • +
  • Precedence of sub-expressions is indicated by brackets ((, )). C-like precedence applies if brackets are omitted.
  • +
  • References to debug access variables for evaluating debug settings.
  • +
  • Calls to debug access functions.
  • +
+
Note
    +
  • All values used in expressions resolve to 64-bit unsigned integer values.
  • +
  • All logic-operations and comparisons resolve to the value 1 if true, to 0 otherwise.
  • +
  • XML prohibits the use of the characters &, <, and >. Use the corresponding XML entity names instead: &amp;, &lt;, and &gt;.
  • +
+
+

 

+

+Debug access functions

+

Debug access functions can be called in expressions in order to interact with the target device and the user. Parameters to functions can again be expressions.
+ By default, a debugger must abort the execution of a debug access sequence if a function call fails. However, this behavior can be controlled from a sequence by the __errorcontrol debug access variable.
+
+ The following table describes the existing debug access functions, their parameters and the debug access variables which are evaluated for the function call.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Function Description
Sequence("name")

Execute a debug access sequence. Calling a sequence by this function causes the modifiable debug access variables __dp, __ap, and __errorcontrol to be pushed on a sequence execution stack. Returning from such a call will restore the state of these variables.
+
+ Parameters:
+

+
    +
  • name: Name of the sequence to execute. It must be enclosed by quotes.
  • +
+

Return Value:
+ Always returns 0.

+
Read8(addr)

Read an 8-bit value from target memory. A device must support native 8-bit memory accesses for this function to succeed.
+
+ Parameters:
+

+
    +
  • addr: Memory address to read from.
  • +
+

Debug Access Variables:
+

+
    +
  • __dp: The debug port to use for this memory access.
  • +
  • __ap: The access port to use for this memory access.
  • +
+

Return Value:
+ The 8-bit value as read from target memory.

+
Read16(addr)

Read an 16-bit value from target memory. A device must support native 16-bit memory accesses for this function to succeed.
+
+ Parameters:
+

+
    +
  • addr: Memory address to read from.
  • +
+

Debug Access Variables:
+

+
    +
  • __dp: The debug port to use for this memory access.
  • +
  • __ap: The access port to use for this memory access.
  • +
+

Return Value:
+ The 16-bit value as read from target memory.

+
Read32(addr)

Read an 32-bit value from target memory. A device must support native 32-bit memory accesses for this function to succeed.
+
+ Parameters:
+

+
    +
  • addr: Memory address to read from.
  • +
+

Debug Access Variables:
+

+
    +
  • __dp: The debug port to use for this memory access.
  • +
  • __ap: The access port to use for this memory access.
  • +
+

Return Value:
+ The 32-bit value as read from target memory.

+

Code Example:
+ Refer to ResetSystem

+
Read64(addr)

Read an 64-bit value from target memory. A device must support native 64-bit memory accesses for this function to succeed.
+
+ Parameters:
+

+
    +
  • addr: Memory address to read from.
  • +
+

Debug Access Variables:
+

+
    +
  • __dp: The debug port to use for this memory access.
  • +
  • __ap: The access port to use for this memory access.
  • +
+

Return Value:
+ The 64-bit value as read from target memory.

+
ReadAP(addr)

Read a 32-bit value from an access port register.
+
+ Parameters:
+

+
    +
  • addr: AP register address to read from. Addresses larger than 0xF automatically cause an AP register bank switch.
  • +
+

Debug Access Variables:
+

+
    +
  • __dp: The debug port to use for this memory access.
  • +
  • __ap: The access port to use for this memory access.
  • +
+

Return Value:
+ The 32-bit value as read from the AP register.

+
ReadDP(addr)

Read a 32-bit value from a debug port register.
+
+ Parameters:
+

+
    +
  • addr: DP register address to read from.
  • +
+

Debug Access Variables:
+

+
    +
  • __dp: The debug port to use for this memory access.
  • +
+

Return Value:
+ The 32-bit value as read from the DP register.

+

Code Example:
+ Refer to DebugPortSetup

+
Write8(addr, val)

Write an 8-bit value to target memory. A device must support native 8-bit memory accesses for this function to succeed.
+
+ Parameters:
+

+
    +
  • addr: Memory address to write to.
  • +
  • val: Value to write.
  • +
+

Debug Access Variables:
+

+
    +
  • __dp: The debug port to use for this memory access.
  • +
  • __ap: The access port to use for this memory access.
  • +
+

Return Value:
+ Always returns 0.

+
Write16(addr, val)

Write a 16-bit value to target memory. A device must support native 16-bit memory accesses for this function to succeed.
+
+ Parameters:
+

+
    +
  • addr: Memory address to write to.
  • +
  • val: Value to write.
  • +
+

Debug Access Variables:
+

+
    +
  • __dp: The debug port to use for this memory access.
  • +
  • __ap: The access port to use for this memory access.
  • +
+

Return Value:
+ Always returns 0.

+
Write32(addr, val)

Write a 32-bit value to target memory. A device must support native 32-bit memory accesses for this function to succeed.
+
+ Parameters:
+

+
    +
  • addr: Memory address to write to.
  • +
  • val: Value to write.
  • +
+

Debug Access Variables:
+

+
    +
  • __dp: The debug port to use for this memory access.
  • +
  • __ap: The access port to use for this memory access.
  • +
+

Return Value:
+ Always returns 0.

+

Code Example:
+ Refer to DebugCoreStart

+
Write64(addr, val)

Write a 64-bit value to target memory. A device must support native 64-bit memory accesses for this function to succeed.
+
+ Parameters:
+

+
    +
  • addr: Memory address to write to.
  • +
  • val: Value to write.
  • +
+

Debug Access Variables:
+

+
    +
  • __dp: The debug port to use for this memory access.
  • +
  • __ap: The access port to use for this memory access.
  • +
+

Return Value:
+ Always returns 0.

+
WriteAP(addr, val)

Write a 32-bit value to an access port register. Addresses larger than 0xF automatically cause an AP register bank switch.
+
+ Parameters:
+

+
    +
  • addr: Memory address to write to.
  • +
  • val: Value to write.
  • +
+

Debug Access Variables:
+

+
    +
  • __dp: The debug port to use for this memory access.
  • +
  • __ap: The access port to use for this memory access.
  • +
+

Return Value:
+ Always returns 0.

+
WriteDP(addr, val)

Write a 32-bit value to a debug port register.
+
+ Parameters:
+

+
    +
  • addr: Memory address to write to.
  • +
  • val: Value to write.
  • +
+

Debug Access Variables:
+

+
    +
  • __dp: The debug port to use for this memory access.
  • +
+

Return Value:
+ Always returns 0.

+

Code Example:
+ Refer to DebugPortStart

+
DAP_Delay(delay)

Debug probe command to wait for a specific delay.
+
+ Parameters:
+

+
    +
  • delay: Wait time in microseconds.
  • +
+

Return Value:
+ Always returns 0.

+
DAP_WriteABORT(value)

Debug probe command to write an abort request to the CoreSight ABORT register of the target debug port.
+
+ Parameters:
+

+
    +
  • value: 32-bit value to write into the CoreSight ABORT register.
  • +
+

Debug Access Variables:
+

+
    +
  • __dp: The debug port to use for this memory access.
  • +
+

Return Value:
+ Always returns 0.

+
DAP_SWJ_Pins(pinout, pinselect, pinwait)

Debug proble command to monitor and control the I/O Pins including the nRESET device reset line.
+ I/O Pin Mapping for pinout, pinselect, and pinwait:

+
    +
  • Bit 0: SWCLK/TCK
  • +
  • Bit 1: SWDIO/TMS
  • +
  • Bit 2: TDI
  • +
  • Bit 3: TDO
  • +
  • Bit 5: nTRST
  • +
  • Bit 7: nRESET
  • +
+


+ The pinwait time is useful in systems where the nRESET pin is implemented as open-drain output. After nRESET is de-asserted by the debugger, external circuit may still hold the target Device under reset for a time. Using the pinwait time, the debugger may monitor selected I/O Pins and wait until they the expected value appears or a timeout expires.
+
+ Parameters:
+

+
    +
  • pinout: Value for selected output pins.
  • +
  • pinselect: Selects which output pins will be modified.
  • +
  • pinwait: Wait timeout for the selected output to stabilize. A debugger must extend this timeout to the closest possible time granularity.
      +
    • 0 = no wait
    • +
    • 1 .. 3000000 = time in microseconds (max 3s)
    • +
    +
  • +
+

Return Value:
+ The state of the I/O Pins at the end of this operation. If a debugger is not capable of monitoring the I/O Pins, it must return a value of 0xFFFFFFFF.

+
DAP_SWJ_Clock(val)

Debug probe command to set the clock frequency for JTAG and SWD communication mode.
+
+ Parameters:
+

+
    +
  • val: Maximum SWD/JTAG Clock (SWCLK/TCK) value in Hz.
  • +
+

Return Value:
+ Always returns 0.

+

Code Example:
+ Refer to ResetHardware

+
DAP_SWJ_Sequence(cnt, val)

Debug probe command to generate required SWJ sequences, e.g. for SWD/JTAG Reset, SWD<->JTAG switch and Dormant operation.
+
+ Parameters:
+

+
    +
  • cnt: Number of bits in sequence: 1..64. Larger sequences need to be implemented by multiple subsequent DAP_SWJ_Sequence calls. Such a sequence of DAP_SWJ_Sequence commands must be encapsulated in an atomic block to ensure correct execution.
  • +
  • val: Sequence generated on SWDIO/TMS (with clock @SWCLK/TCK), LSB transmitted first.
  • +
+

Return Value:
+ Always returns 0.

+

Code Example:
+ Refer to DebugPortSetup

+
DAP_JTAG_Sequence(cnt, tms, tdi)

Debug probe command to generate a JTAG sequence with fixed TMS value and capture TDO.
+
+ Parameters:
+

+
    +
  • cnt: Length of the JTAG sequence (number of TCK cycles and TDI bits): 1..64
  • +
  • tms: Fixed TMS value: 0..1
  • +
  • tdi: Data generated on TDI with one bit per TCK cycle, LSB transmitted first.
  • +
+

Return Value:
+ Data captured from TDO with one bit per TCK cycle, LSB captured first and padded with 0s.

+
Query(type, "message", default)

Query user input. The sequence execution stalls depending on the used type. If the debugger runs in a batch mode, this function returns the value default.
+
+ Parameters:
+

+
    +
  • type: Query type. Can be one of:
      +
    • 0 : Query_Ok, displays an informative message which has to be confirmed by the user. This type allows the result OK.
    • +
    • 1 : Query_YesNo, displays a query with the allowed results Yes and No.
    • +
    • 2 : Query_YesNoCancel, displays a query with the allowed results Yes, No, and Cancel.
    • +
    • 3 : Query_OkCancel, displays a query with the allowed results OK and Cancel.
    • +
    +
  • +
  • message: A constant string with the query message to display. It must not be an expression and it must be enclosed by quotes.
  • +
  • default: The default value to return if the debugger runs in batch mode. See Return Values for a list of allowed values.
  • +
+

Return Value:
+ The result of the query. The user input maps to the following numbers:

+
    +
  • Error : 0
  • +
  • OK : 1
  • +
  • Cancel : 2
  • +
  • Yes : 3
  • +
  • No : 4
  • +
+

Code Example:
+ Refer to DebugPortSetup

+
QueryValue("message", default)

Query input value from user. The sequence execution stalls until the user has entered a value or canceled the query. This function returns the default value if the user canceled the query or if the debugger runs in a batch mode.
+
+ Parameters:
+

+
    +
  • message: A constant string with the query message to display. It must not be an expression and it must be enclosed by quotes.
  • +
  • default: The default value to return if the user cancels the query or if the debugger runs in batch mode.
  • +
+

Return Value:
+ The queried value.

+

+
Message(type, "format", ...)

Outputs a message to a log window.
+
+ Parameters:
+

+
    +
  • type: Message type. Can be one of:
      +
    • 0 : Info, outputs an informative message.
    • +
    • 1 : Warning, outputs a warning.
    • +
    • 2 : Error, outputs an error. Sequence execution aborts.
    • +
    +
  • +
  • format: A constant string with the message format. It must not be an expression and it must be enclosed by quotes. The string has the following format:
    +
    %[flags][width][.precision]specifier
    +
      +
    • Specifiers:
        +
      • %u: 32-bit unsigned decimal integer.
      • +
      • %llu: 64-bit unsigned decimal integer.
      • +
      • %x: 32-bit unsigned hexadecimal integer, lower case letters.
      • +
      • %llx: 64-bit unsigned hexadecimal integer, lower case letters.
      • +
      • %X: 32-bit unsigned hexadecimal integer, upper case letters.
      • +
      • %llX: 64-bit unsigned hexadecimal integer, upper case letters.
      • +
      • %o: 32-bit unsigned octal integer.
      • +
      • %llo: 64-bit unsigned octal integer.
      • +
      • %b: 32-bit unsigned binary integer.
      • +
      • %llb: 64-bit unsigned binary integer.
      • +
      • %f: Single-precision (32-bit) floating point value.
      • +
      • %Lf: Double-precision (64-bit) floating point value.
      • +
      • %s: Constant character string. Must not be an expression.
      • +
      • %%: Print % character.
      • +
      +
    • +
    • Flags:
        +
      • 0: Pad the displayed value with zeros instead of spaces if padding is required by the width option.
      • +
      +
    • +
    • Width: Minimum number of displayed characters. If width is less than the number of characters of the value, then the value is padded with spaces to the left.
    • +
    • .Precision:
        +
      • Integer: Minimum number of displayed digits. Padded with zeros to the left if the value has less digits than specified with .precision.
      • +
      • Floating Point: Number of displayed digits after decimal point. Defaults to 6 if not specified.
      • +
      • Constant String: Maximum number of displayed characters.
      • +
      +
    • +
    +
  • +
  • ... : Additional function parameters to replace format string specifiers. Each parameter can be a constant string, or an expression that resolves to an unsigned 64-bit integer. A parameter type must match the corresponding specifier type.
  • +
+

Return Value:
+ Always returns 0.

+
Note
For 32-bit specifiers the Message command must print the lower 32 Bit of a 64 Bit debug access variable.
+
LoadDebugInfo("file")

Loads DWARF debug information from an application executable.
+
+ Parameters:
+

+
    +
  • file: A constant string with the path to the executable. The path must be relative to the root folder of the pack and use the format path/name.extension. It must not be an expression and it must be enclosed by quotes.
  • +
+

Return Value:
+ Returns 0 after successful debug information load.
+ Returns 1 if debug information load failed.

+

+
+
Note
    +
  • Target memory access functions must perform a debug access of the size indicated by their name. The target system must support debug accesses of this size.
  • +
  • Results of all functions are casted to 64-bit unsigned integer values.
  • +
  • Some target access functions determine the used debug and access port by the current values of the __dp and __ap debug access variables. If a target access requires a different debug or access port than the default ones, it must change these values. This change is held until finishing the sequence the change has occurred in.
  • +
+
+
+
+ + + + diff --git a/docs/Pack/html/pdsc_apis_pg.html b/docs/Pack/html/pdsc_apis_pg.html new file mode 100644 index 0000000..900631f --- /dev/null +++ b/docs/Pack/html/pdsc_apis_pg.html @@ -0,0 +1,200 @@ + + + + + +/package/apis element +CMSIS-Pack: /package/apis element + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-Pack +  Version 1.5.0 +
+
Delivery Mechanism for Software Packs
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
/package/apis element
+
+
+

Application Programming Interfaces (apis) are C/C++ interface specifications that allow software to be divided into largely independent modules. Such modules can then be developed, tested, and maintained independently, and reused by different projects. One example is the use of device drivers. If device drivers are developed for different devices implementing the same API, the application software itself can be written independent from the device it is build for.

+

The apis allow to distribute the Application Programming Interface Specifications decoupled from actual implementation. One example is the CMSIS-RTOS API, which is specified as part of CMSIS, however, the actual RTOS implementation is provided by different vendors.

+

Unlike a software component, an API is not selectable. An API consists of a name, a brief description as well as one or more header files, and a document containing a detailed specification of the API.

+

 

+
+

+/package/apis

+

This element is a grouping element for all application programming interfaces included in the Software Pack. The element itself is optional. Only one such section can exist in a package.

+

Example:

+
<package>
+
<apis>
+
...
+
</apis>
+
</package>
+

 

+ + + + + + + + + +
Parents Element Chain    
package /package    
Child Elements Description Type Occurrence
api Named specification of an API containing a brief description, C/C++ header files and documentation ApiType 1..*
+

 

+
+

+/package/apis/api

+

Application Programming Interfaces (apis) are C/C++ interface specifications that allow components to interwork by either implementing or using a set of functions, data types, and definitions. This element is mandatory and can exist multiple times.

+

Example:

+
<apis>
+
<api Cclass="Device" Cgroup="Driver UART" exclusive="0">
+
<description>UART Driver API for the Cortex-M processor based devices</description>
+
<files>
+
<file category="doc" name="Driver/Doc/UART/html/index.html"/>
+
<file category="header" name="Driver/Include/Driver_UART.h"/>
+
</files>
+
</api>
+
<api Cclass="Device" Cgroup="Driver SPI" exclusive="0">
+
<description>SPI Driver API for the Cortex-M processor based devices</description>
+
<files>
+
<file category="doc" name="Driver/Doc/SPI/html/index.html"/>
+
<file category="header" name="Driver/Include/Driver_SPI.h"/>
+
</files>
+
</api>
+
...
+
</apis>
+

 

+ + + + + + + + + + + + + + + + + + + + + +
Parent Element Element Chain
apis /package/apis
Attributes Description Type Use
Cclass Defines the component class to which this component belongs. This is a mandatory part of the component ID. Predefined values can be used as listed in the table Component Classes. CclassType required
Cgroup Defines the component group to which this component belongs. This is a mandatory part of the component ID. Predefined values can be used as listed in the table Component Groups. CgroupType required
exclusive Makes the selection of a component implementing the API exclusive. If set to 0, then multiple components implementing the API can be selected. Default is 1. xs:boolean optional
Capiversion Version of this component. Is a mandatory part of the component ID. The version format is described in Version Type. VersionType optional
Child Elements Description Type Occurrence
description Brief summary about the purpose and scope of an API. xs:string 0..1
files Grouping element for all file descriptions that are part of this component.. group 0..1
+

 

+
+
+ + + + diff --git a/docs/Pack/html/pdsc_boards_pg.html b/docs/Pack/html/pdsc_boards_pg.html new file mode 100644 index 0000000..274f14e --- /dev/null +++ b/docs/Pack/html/pdsc_boards_pg.html @@ -0,0 +1,507 @@ + + + + + +/package/boards element +CMSIS-Pack: /package/boards element + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-Pack +  Version 1.5.0 +
+
Delivery Mechanism for Software Packs
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
/package/boards element
+
+
+

The level <boards> describes a development board that is the subject of a Board Support Pack (BSP). It contains information about the board vendor and name, a brief description, images to be displayed on web pages, and different types of documentation. The microcontroller devices that are mounted on the board or that are compatible with the ones mounted are also specified. A list of features concludes the <boards> section.

+

A development board is described by the following properties:

+
    +
  • description: a brief description of the development board
  • +
  • book: documentation about the board (user manuals, schematics, etc.)
  • +
  • mountedDevice: the microcontroller device mounted on the development board.
  • +
  • compatibleDevice: compatible microcontroller devices.
  • +
  • image: pictures of the board to be displayed on web pages.
  • +
  • feature: categorized list of the development board's features and peripherals.
  • +
  • debugInterface: describing the debug capabilities.
  • +
+

Example

+
<boards>
+
<board vendor="STMicroelectronics" name="32F429IDISCOVERY" revision="Rev.1" salesContact="http://www.st.com/stonline/contactus/contacts/index.php" orderForm="https://my.st.com/esample/app?page=basket&amp;pn=STM32F429I-DISCO">
+
+
<description>STMicroelectronics STM32F429I Discovery Board Support and Examples</description>
+
+
<image small="Images/stm32f429i-disco_small.png" large="Images/stm32f429i-disco.png"/>
+
+
<book category="overview" name="http://www.st.com/web/catalog/tools/FM116/SC959/SS1532/LN1199/PF259090" title="32F429IDISCOVERY Web Page"/>
+
<book category="setup" name="Documents/UM1662.pdf" title="Getting Started"/>
+
<book category="schematic" name="Documents/UM1670.pdf" title="Schematics"/>
+
<book category="manual" name="Documents/UM1670.pdf" title="User Manual"/>
+
+
<mountedDevice deviceIndex="0" Dvendor="STMicroelectronics:13" Dname="STM32F429ZI"/>
+
+
<compatibleDevice deviceIndex="0" Dvendor="STMicroelectronics:13" Dfamily="STM32F4 Series" DsubFamily="STM32F429 Line"/>
+
+
<feature type="ODbg" n="1" name="On-board ST-LINK/V2 with selection mode switch to use the kit as a standalone"/>
+
<feature type="XTAL" n="80000000"/>
+
<feature type="PWR" n="5" name="USB Powered"/>
+
<feature type="PWR" n="3" m="5" name="External Supply"/>
+
<feature type="RAM" n="1" name="64 MBit SDRAM"/>
+
<feature type="DIO" n="4" m="32" name="Extension header for LQFP144 with 2.54 mm Pitch"/>
+
<feature type="USB" n="1" name="High-Speed USB OTG with micro-AB Connector"/>
+
<feature type="ConnOther" n="1" name="JP3 (Idd) for current measurement"/>
+
<feature type="Button" n="2" name="Push-buttons: User and Reset"/>
+
<feature type="Gyro" n="1" name="L3GD20, ST MEMS motion sensor, 3-axis digital output gyroscope"/>
+
<feature type="LED" n="6" name="Com, 3.3 V Power, Two user, Two USB OTG LEDs"/>
+
<feature type="CustomFF" n="66" m="119.3" name="Discovery Board Formfactor"/>
+
<feature type="GLCD" n="1" m="240.320" name="2.4 inch QVGA TFT LCD"/>
+
+
<debugInterface adapter="ST-Link" connector="Mini-USB"/>
+
+
</board>
+
</boards>
+

 

+
+

+/package/boards

+

Grouping element for boards. No more than one such group can exist in a Pack. None is required.

+ + + + + + + + + +
Parent Chain
package /package
Child Elements Description Type Occurrence
board Description of the board BoardType 1..*
+

 

+
+

+/package/boards/board

+

This element provides information to specify the Board Support Package (BSP). At least one board must be defined.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Parent Chain
boards /package/boards
Attributes Description Type Use
vendor name of the board vendor xs:string required
name name of the development board xs:string required
revision Revision of the board that is suited to be used with the BSP. xs:string optional
salesContact Either an email address or web page to contact the sales department. xs:string optional
orderForm Link to a web page for ordering the development board. xs:anyURI optional
Child Elements Description Type Occurrence
description Brief summary of the board xs:string 1
feature Describes the features of the development board. BoardsFeatureType 1..*
mountedDevice Specifies the microcontroller device mounted on the development board. BoardsDeviceType 1..*
compatibleDevice Specifies compatible microcontroller devices. CompatibleDeviceType 1..*
image Carries pictures of the boards to be displayed on web pages. Directory and file names are case-sensitive. ComplexType 0..1
debugInterface Describes the debug interface of the development board. DebugInterfaceType 1..*
book Describes the documentation files (user manuals, schematics, etc.). Directory and file names are case-sensitive. BoardsBookType 1..*
+

 

+
+

+/package/boards/board/feature

+

This element contains information about the features and capabilities of a board. A list of pre-defined features exists.

+

Example

+
<feature type="PWR" n="3" m="5" name="Element: Board feature"/>
+

 

+ + + + + + + + + + + + + + + +
Parent Chain
board /package/boards/board
Attributes Description Type Use
type Defines board features. Select predefined values from the table Board Features. BoardFeatureTypeEnum required
n Depends on attribute type. Check table Board Features for details. xs:decimal optional
m Depends on attribute type. Check table Board Features for details. xs:decimal optional
name Descriptive name of the feature. If omitted, a Default Name is used (refer to table Board Feature Types). Do not repeat the n or m values in the name. This will lead to duplicate entries on web sites (they show n x name). xs:string optional
+

 

+

Table: Board Features

+

The table below lists predefined board features.

+
Note
    +
  • The attribute name of the element /package/boards/board/feature is a descriptive text for a feature. If name is omitted, the Default Name (listed below) is used.
  • +
  • Do not repeat the n or m values in the name. Display on websites follows the rule to show n x name.
  • +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
type=n=m=Default NameExampleExample shown as
ODbgNumber of Debug AdaptersN/AIntegrated Debug Adapter<feature type="ODbg" n="1" name="Integrated ST-Link on USB Connector J13"/>1 x Integrated ST-Link on USB Connector J13
XTALOscillator FrequencyN/ACrystal Oscillator<feature type="XTAL" n="8000000"/>8 MHz Crystal Oscillator
PWRMinimum Input VoltageMaximum Input VoltagePower Supply<feature type="PWR" n="8" m="12"/>8 V - 12 V Power Supply
PWRSockNumber of Power SocketsN/APower Socket<feature type="PWRSock" n="1" name="Coaxial Power Receptacle"/>1 x Coaxial Power Receptacle
BattNumber of BatteriesN/ABattery<feature type="Batt" n="1" name="CR2032 Battery for RTC"/>1 x CR2032 Battery for RTC
CurrTypical CurrentMaximum CurrentCurrent<feature type="Curr" n="0.320" m="0.375"/>320 mA (typ), 375 mA (max) Current
CoreOtherNumber of FeaturesN/AOther Core Feature<feature type="CoreOther" n=1 name="My Other Core Feature"/>1 x My Other Core Feature
RAMNumber of RAMsN/ARAM<feature type="RAM" n="1" name="512 kB Static RAM"/>1 x 512 kB Static RAM
ROMNumber of ROMsN/AFlash<feature type="ROM" n="1" name="4 MB NAND-Flash"/>1 x 4 MB NAND-Flash
MemoryNumber of Additional MemoryN/AMemory<feature type="Memory" n="128" name="EEPROM"/>128 byte EEPROM
MemCardNumber of Card HoldersN/ASD/microSD/MMC Card Holder<feature type="MemCard" n="2" name="SD Card Holder"/>2 x SD Card Holder
MemoryOtherNumber of Other MemoryN/AOther Memory Type<feature type="MemoryOther" n="1" name="1 kB MRAM"/>1 x 1 kB MRAM
DIONumber of Digital I/OsN/ADigital I/Os<feature type="DIO" n="26" name="Digital IOs on 2 x 13 pin header (1.27 mm pitch)"/>26 x Digital IOs on 2 x 13 pin header (1.27 mm pitch)
AIONumber of Analog I/OsN/AAnalog I/Os<feature type="AIO" n="4" name="Analog Inputs on 4 pin header (1.27 mm pitch)"/>4 x Analog Inputs on 4 pin header (1.27 mm pitch)
Proton Rowsm ColumnsPrototyping Area<feature type="Proto" n="4" m="7" name="Prototyping Area with 1.00 mm pitch"/>4 x 7 Prototyping Area with 1.00 mm pitch
USBNumber of USB ConnectorsN/AUSB<feature type="USB" n="2" name="Full-Speed USB Device, Micro-B receptacle"/>2 x Full-Speed USB Device, Micro-B receptacle
ETHNumber of Ethernet ConnectorsData Rate in Bit/sEthernet<feature type="ETH" n="1" m="10000000" name="RJ45 Receptacle"/>1 x 10 Mbit/s RJ45 Receptacle
SPINumber of SPI ConnectorsN/ASPI<feature type="SPI" n="1" name="4-Pin Header, 1.27 mm Pitch"/>1 x 4-Pin Header, 1.27 mm Pitch
I2CNumber of I2C ConnectorsN/AI2C<feature type="I2C" n="1" name="2-Pin Header, 1.27 mm Pitch"/>1 x 2-Pin Header, 1.27 mm Pitch
RS232Number of RS232 ConnectorsN/ARS232<feature type="RS232" n="1" name="DB9 Male Connector"/>1 x DB9 Male Connector
RS422Number of RS422 ConnectorsN/ARS422<feature type="RS422" n="1" name="4-Pin Header, 1.27 mm Pitch"/>1 x 4-Pin Header, 1.27 mm Pitch
RS485Number of RS485 ConnectorsN/ARS485<feature type="RS485" n="1" name="DB9 Male Connector"/>1 x DB9 Male Connector
CANNumber of CAN ConnectorsN/ACAN<feature type="CAN" n="1" name="DB9 Male Connector"/>1 x DB9 Male Connector
IrDANumber of IrDA DiodesN/ADiode<feature type="IrDA" n="1" name="Diode Transceiver"/>1 x Diode Transceiver
LineInNumber of Line In JacksN/ALine In<feature type="LineIn" n="1" name="TRS Audio Jack"/>1 x TRS Audio Jack
LineOutNumber of Line Out JacksN/ALine Out<feature type="LineOut" n="1" name="TRS Audio Jack"/>1 x TRS Audio Jack
MICNumber of Microphone JacksN/AMicrophone<feature type="MIC" n="1" name="TS Audio Jack (Mono)"/>1 x TS Audio Jack (Mono)
Edgen Rowsm ColumnsEdge<feature type="Edge" n="2" m="24"/>2 x 24 Pin Edge
ConnOtherNumber of Other ConnectorsN/AOther Connector Type<feature type="ConnOther" n="1" name="My Other Connector"/>1 x My Other Connector
ButtonNumber of Push-ButtonsN/APush-buttons<feature type="Button" n="3" name="Push-buttons: Reset, Wake Up, User"/>3 Push-buttons: Reset, Wake Up, User
PotiNumber of PotentiometerN/APotentiometer<feature type="Poti" n="1"/>1 x Potentiometer
JoystickNumber of JoysticksN/AJoystick<feature type="Joystick" n="1" name="5-position Joystick"/>1 x 5-position Joystick
TouchNumber of Touch KeysN/ATouch Keys/Area<feature type="Touch" n="1"/>1 x Touch Keys/Area
ContOtherNumber of Other ControlsN/AOther Control<feature type="ContOther" n=1 name="My Other Control Feature"/>1 x My Other Control Feature
AccelerometerNumber of AccelerometerN/AAccelerometer<feature type="Accelerometer" n="1" name="3-axis digital Accelerometer"/>1 x 3-axis digital Accelerometer
GyroNumber of GyroscopesN/AGyroscope<feature type="Gyro" n="1" name="3-axis digital Gyroscope"/>1 x 3-axis digital Gyroscope
CompassNumber of CompassN/ADigital Compass<feature type="Compass" n="1" name="High-Precision Digital Compass"/>1 x High-Precision Digital Compass
TempSensNumber of Temperature SensorsN/ATemperature Sensor<feature type="TempSens" n="1"/>1 x Temperature Sensor
PressSensNumber of Pressure SensorsN/APressure Sensor<feature type="PressSens" n="1"/>1 x Pressure Sensor
LightSensNumber of Light SensorsN/AAmbient Light Sensor<feature type="LightSens" n="1"/>1 x Ambient Light Sensor
SensOtherNumber of Other SensorsN/AOther Sensor<feature type="SensOther" n=1 name="My Other Sensor Feature"/>1 x My Other Sensor Feature
CustomFFx [mm]y [mm]Custom Formfactor<feature type="CustomFF" n="54" m="26" name="40-Pin DIP with 0.1-inch Pitch"/>54 mm x 26 mm, 40-Pin DIP with 0.1-inch Pitch
ArduinoFF1N/AArduino Formfactor<feature type="ArduinoFF" n="1"/>Arduino Formfactor
FreedomFF1N/AFreedom Formfactor<feature type="FreedomFF" n="1"/>Freedom Formfactor
TowerFF1N/ATower Formfactor<feature type="TowerFF" n="1"/>Tower Formfactor
LEDNumber of LEDsN/ALEDs<feature type="LED" n="3" name="Multicolor LEDs"/>3 x Multicolor LEDs
CameraNumber of Camera InterfacesN/ACamera<feature type="Camera" n="1" name="Digital VGA Camera"/>1 x Digital VGA Camera
LCDNumber of Segment LCD ControllerCom.Seg as a decimal number (see example)LCD<feature type="LCD" n="1" m="16.40" name="Segment LCD Controller"/>1 x 16 x 40 Segment LCD Controller
GLCDNumber of Graphic LCD ControllerMaximum Resolution as a decimal number (see example)GLCD<feature type="GLCD" n="1" m="320.240" name="2.4 inch Color TFT LCD with resistive touchscreen"/>320 x 240 Pixel 2.4 inch Color TFT LCD with resistive touchscreen
SpeakerNumber of SpeakersN/ASpeaker<feature type="Speaker" n="1"/>1 x Speaker
OtherNumber of Other FeaturesN/AOther Feature<feature type="Other" n=1 name="My Other Feature"/>1 x My Other Feature
+

 

+
+

+/package/boards/board/mountedDevice

+

The element specifies the devices mounted on the board. At least one device must be specified.

+

Example

+
<mountedDevice deviceIndex="0" Dvendor="STMicroelectronics:13" Dname="STM32F429ZI"/>
+

 

+ + + + + + + + + + + + + + + + + +
Parent Chain
board /package/boards/board
Attributes Description Type Use
deviceIndex Index number of the device (in case more than one device is present on the board). xs:string optional
Dvendor Is the name of vendor of the device specified by Dname. Use predefined values as listed in the table Device Vendor. DeviceVendorEnum required
Dfamily Is the name of the target device family used on the board. xs:string optional
DsubFamily Is the name of the target device sub family used on the board. xs:string optional
Dname Is the name of the target device used on the board. xs:string optional
+

 

+
+

+/package/boards/board/compatibleDevice

+

This element contains information about devices that are compatible to the device used on the board. Compatible means that the user is able to generate code for compatible devices and test it on the development board. At least one compatible device must be specified.

+

Example

+
<compatibleDevice deviceIndex="0" Dvendor="STMicroelectronics:13" Dfamily="STM32F4 Series" DsubFamily="STM32F429 Line"/>
+

 

+ + + + + + + + + + + + + + + + + +
Parent Chain
board /package/boards/board
Attributes Description Type Use
deviceIndex Index number of the device (in case more than one device is present on the board). xs:string optional
Dvendor Vendor name of the target device specified by Dname. Use predefined values as listed in the table Device Vendor. This element is required if at least one of the following attributs is defined: Dname, DsubFamily, Dfamily. DeviceVendorEnum optional
Dfamily Name of the target device family used on the board. Requires Dvendor to be specified. xs:string optional
DsubFamily Name of the target device sub-family used on the board. Requires Dvendor to be specified. xs:string optional
Dname Name of the target device used on the board. Requires Dvendor to be specified. xs:string optional
+

 

+
+

+/package/boards/board/image

+

This element specifies the picture of a development board. Maximum one image element can be specified. None must be specified. Two different picture types (small and large) can be specified for the same image element at the same time.

+

Example:

+
<image small="Images\board_image_small.png" large="Images\board_image.png"/>
+

 

+ + + + + + + + + + + + + +
Parent Chain
board /package/boards/board
Attributes Description Type Use
small Specifies the path to a small image. The path is relative to the Pack base directory. xs:string optional
large Specifies the path to a large image. The path is relative to the Pack base directory. xs:string optional
public Set publishing permissions for the documentation. If <public> is true, then the vendor gives permission to extract the documentation from the Pack and publish it on a web-page. Links to web pages are assumed to be public. The default value is false. xs:boolean optional
+

 

+
+

+/package/boards/board/debugInterface

+

This element describes the debug interface of a board. At least debug interface must be specified.

+

Example

+
<debugInterface adapter="JTAG/SW" connector="20-pin Arm Standard JTAG Connector (0.1 inch connector)"/>
+
<debugInterface adapter="JTAG/SW" connector="10-pin Cortex Debug Connector (0.05 inch connector)"/>
+
<debugInterface adapter="JTAG/SW" connector="20-pin Cortex Debug + ETM Connector (0.05 inch connector)"/>
+
<debugInterface adapter="ST-Link" connector="Mini-USB"/>
+

 

+ + + + + + + + + + + +
Parent Chain
board /package/boards/board
Attributes Description Type Use
adapter String describing the debug adapter. Common adapters are: JTAG/SW (for all adapters supporting JTAG and Serial-Wire Debug), CMSIS-DAP, OpenSDA, J-Link, ST-Link, Nu-Link. xs:string optional
connector String describing the debug connector. Usually one of these: 10-pin Cortex Debug Connector, 20-pin Arm Standard JTAG Connector, 20-pin Cortex Debug + ETM Connector, Mini-USB, Micro-USB. xs:string optional
+

 

+
+

+/package/boards/board/book

+

The element provides information about documentation parts related to a development board. At least one book must be defined.

+

Example

+
<book category="setup" name="Documents/UM1662.pdf" title="Getting Started"/>
+

 

+ + + + + + + + + + + + + + + +
Parent Chain
board /package/boards/board
Attributes Description Type Use
category Describes the type of documentation. Use predefined values as defined in the table Board Book Categories. BoardBookCategoryEnum optional
name Is the name of the document (including the path within the Pack). xs:string optional
title Is the title of the document to be displayed in the Books window of uVision. xs:string optional
public Set publishing permissions for the documentation. If <public> is true, then the vendor gives permission to extract the documentation from the pack and publish it on a web-page. Links to web pages are assumed to be public. The default value is false. xs:boolean optional
+

 

+

Table: Board Book Categories

+

The table lists values to identify a specific type of documentation for development boards.

+ + + + + + + + + + + + + + + +
category= Description
setup Documentation about how to setup the development board.
schematic Schematics of the development board.
overview Overview/data sheet of the development board.
manual User manual of the development board
layout PCB layout file of the board (e.g. in Gerber format)
other All other documentation.
+

 

+
+
+ + + + diff --git a/docs/Pack/html/pdsc_components_pg.html b/docs/Pack/html/pdsc_components_pg.html new file mode 100644 index 0000000..ac5c62e --- /dev/null +++ b/docs/Pack/html/pdsc_components_pg.html @@ -0,0 +1,540 @@ + + + + + +/package/components element +CMSIS-Pack: /package/components element + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-Pack +  Version 1.5.0 +
+
Delivery Mechanism for Software Packs
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
/package/components element
+
+
+

The element /package/components describes software components contained in the Pack. A component lists the files that belong to a component and that are relevant for a project. The component itself or each individual file may refer to a condition that must resolve to true; if it is false the component or file is not applicable in the given context.

+

Each component must have a Class (Cclass=), a Group (Cgroup=), and a Version (Cversion=) which is used to identify the component. Optionally a component may have a Sub-Group (Csub=) and Variant (Cvariant=) to add further categories. The Class, Group, Sub-Group, Variant and Version is used together with the vendor specified by the Pack, to identify a component. A component vendor must ensure that the combination Class, Group, Sub-Group and Version is unique and not used by multiple components.

+

Example

+
<package>
+
...
+
<components>
+
<!-- component has dependency described by "CMSIS Core" condition -->
+
<component Cclass="CMSIS" Cgroup="Core" Cversion="3.1.0" condition="CMSIS Core">
+
<description>CMSIS-Core (Cortex-M) for Cortex-M, SC000, and SC300 processor.</description>
+
<files>
+
<!-- CPU independent -->
+
<file category="doc" name="CMSIS/Documentation/Core/html/index.html"/>
+
<file category="header" name="CMSIS/Include/core_cmFunc.h"/>
+
<file category="header" name="CMSIS/Include/core_cmInstr.h"/>
+
<!-- CPU dependent -->
+
<file category="header" condition="CM0" name="CMSIS/Include/core_cm0.h"/>
+
<file category="header" condition="CM0+" name="CMSIS/Include/core_cm0plus.h"/>
+
<file category="header" condition="CM3" name="CMSIS/Include/core_cm3.h"/>
+
<file category="header" condition="CM4" name="CMSIS/Include/core_cm4.h"/>
+
<file category="header" condition="CM4" name="CMSIS/Include/core_cm4_simd.h"/>
+
<file category="header" condition="SC000" name="CMSIS/Include/core_sc000.h"/>
+
<file category="header" condition="SC300" name="CMSIS/Include/core_sc300.h"/>
+
</files>
+
</component>
+
+
<component Cclass="CMSIS" Cgroup="DSP" Cversion="1.1.0" condition="CMSIS DSP">
+
<description>CMSIS-DSP Library for Cortex-M0, Cortex-M3 and Cortex-M4 as well as SC000 and SC300 processor based devices</description>
+
+
<files>
+
<!-- CPU independent -->
+
<file category="doc" name="CMSIS/Documentation/DSP/html/index.html"/>
+
<file category="header" name="CMSIS/Include/arm_math.h"/>
+
<!-- CPU and Compiler dependent -->
+
<!-- ARMCC -->
+
<file category="library" condition="CM0_LE_ARMCC" name="CMSIS/Lib/ARM/arm_cortexM0l_math.lib"/>
+
<file category="library" condition="CM0_BE_ARMCC" name="CMSIS/Lib/ARM/arm_cortexM0b_math.lib"/>
+
<file category="library" condition="CM3_LE_ARMCC" name="CMSIS/Lib/ARM/arm_cortexM3l_math.lib"/>
+
<file category="library" condition="CM3_BE_ARMCC" name="CMSIS/Lib/ARM/arm_cortexM3b_math.lib"/>
+
<file category="library" condition="CM4_LE_ARMCC" name="CMSIS/Lib/ARM/arm_cortexM4l_math.lib"/>
+
<file category="library" condition="CM4_BE_ARMCC" name="CMSIS/Lib/ARM/arm_cortexM4b_math.lib"/>
+
<file category="library" condition="CM4F_LE_ARMCC" name="CMSIS/Lib/ARM/arm_cortexM4lf_math.lib"/>
+
<file category="library" condition="CM4F_BE_ARMCC" name="CMSIS/Lib/ARM/arm_cortexM4bf_math.lib"/>
+
<!-- GCC -->
+
<file category="library" condition="CM0_LE_GCC" name="CMSIS/Lib/GCC/libarm_cortexM0l_math.a"/>
+
<file category="library" condition="CM3_LE_GCC" name="CMSIS/Lib/GCC/libarm_cortexM3l_math.a"/>
+
<file category="library" condition="CM4_LE_GCC" name="CMSIS/Lib/GCC/libarm_cortexM4l_math.a"/>
+
<file category="library" condition="CM4F_LE_GCC" name="CMSIS/Lib/GCC/libarm_cortexM4lf_math.a"/>
+
<!-- G++ -->
+
<file category="library" condition="CM0_LE_G++" name="CMSIS/Lib/G++/libarm_cortexM0l_math.a"/>
+
<file category="library" condition="CM3_LE_G++" name="CMSIS/Lib/G++/libarm_cortexM3l_math.a"/>
+
<file category="library" condition="CM4_LE_G++" name="CMSIS/Lib/G++/libarm_cortexM4l_math.a"/>
+
<file category="library" condition="CM4F_LE_G++" name="CMSIS/Lib/G++/libarm_cortexM4lf_math.a"/>
+
</files>
+
</component>
+
+
<component condition="ARM_CM0" Cclass="Device" Cgroup="Startup" Cversion="3.1.1">
+
<description>System Startup for generic Arm Cortex-M0 device</description>
+
<files>
+
<file category="header" name="Device/ARM/ARMCM0/Include/ARMCM0.h"/>
+
<file category="header" name="Device/ARM/ARMCM0/Include/system_ARMCM0.h"/>
+
<file category="source" condition="Compiler_ARM" name="Device/ARM/ARMCM0/Source/ARM/startup_ARMCM0.s"/>
+
<file category="source" condition="Compiler_GCC" name="Device/ARM/ARMCM0/Source/GCC/startup_ARMCM0.S"/>
+
<file category="source" condition="Compiler_G++" name="Device/ARM/ARMCM0/Source/G++/startup_ARMCM0.S"/>
+
<file category="source" condition="Compiler_IAR" name="Device/ARM/ARMCM0/Source/IAR/startup_ARMCM0.s"/>
+
<file category="source" name="Device/ARM/ARMCM0/Source/system_ARMCM0.c" attr="template"/>
+
</files>
+
</component>
+
</components>
+
...
+
</package>
+

 

+

+Component Bundle

+

In case multiple inter-dependent components that belong to the same Cclass form part of a solution, these can be grouped into a bundle. A bundle specifies identical attributes Cclass, Cversion and optionally Cgroup and Cvendor for several components. Components within a bundle inherit these attributes set by the bundle and cannot alter these attributes. Bundles ensure consistency of attributes across multiple interworking components and restrict the mix and match of components within a Cclass from different Software Packs.

+

An example of a bundle is shown in the Create a BSP Bundle section where the bundle is used to deliver board support files for a certain development platform.

+

+Component Files

+

The files of a Software Component will be used in development tool-chains to build an application. Depending on the attributes, the files are handled differently:

+
    +
  • Libraries, source, and header files without an attribute cannot be modified. These files are stored in the folders of the Software Component and get directly included from this location into the project.
  • +
  • Source and header files that have the attribute "config" are copied to the project so that they can be edited by the user and tailored to the needs of the application. If a Software Component allows multiple instances of files, they can be copied multiple times to a project and will get a suffix _%Instance% (see Component Instances). Please note that header files that are used with the attribute "config" need to be stored separately from other header files (for example in an extra directory) to avoid that due to the include path search order of the compiler, the unmodified header file in the pack repository is found first and used by the compiler (creating unexpected results).
  • +
  • Source and header files that have the attribute "template" are part of User Code Templates and can be added to a project manually by the user.
  • +
+

The following image shows the dependency between the attribute and the display in a development environment:

+
+component_files.png +
+Display of files of a Software Component in development tools
+

+Component Instances

+

Modern microcontrollers often have multiple instances of the same peripheral interface (for example UART, SPI, USB, etc.). To be able to have separate configuration files for each of these instances, Software Components can have multiple instances as well. The attribute maxInstances declares the maximum number of instances that can be used in a project for a certain Software Component.

+

If the user selects for example two instances of the same component, all files with the attribute "config" will be copied twice to the project. The name of the component (for example config_mylib.h) will be expanded with an _%Instance% number:

+
    +
  1. Instance: config_mylib_0.h
  2. +
  3. Instance: config_mylib_1.h
  4. +
+

The availability of instances in a project can be made public in the RTE_Components.h file. This can be used to check for the availability of a certain instance in the user application code:

+
<RTE_Components_h>
+
<!-- the following content goes into file 'RTE_Components.h' -->
+
#define RTE_FileSystem_Drive_NOR_%Instance% /* File System NOR Flash Drive %Instance% */
+
</RTE_Components_h>
+


+

+
+Component_Instances.png +
+Component instances in PDSC file and in development tools
+

+RTE_Components.h

+

The build environment should generate a C/C++ include file with the name RTE_Components.h that contains:

+
    +
  • The statements of the related <RTE_Components_h> element for all selected software components.
  • +
  • The header file name specified in the <compile> element of the /package/devices element.
  • +
+

Example

+

The following example shows a sample content of a file RTE_Components.h. It contains the statements that are specified with the element RTE_Components_h of four software components.

+
/*
+
* Auto generated Run-Time-Environment Component Configuration File
+
*** Do not modify ! ***
+
*/
+
+
#ifndef RTE_COMPONENTS_H
+
#define RTE_COMPONENTS_H
+
+
/*
+
* Define the Device Header File:
+
*/
+
#define CMSIS_device_header "stm32f10x.h"
+
+
#define RTE_Network_Interface_ETH_0 /* Network Interface ETH 0 */
+
#define RTE_Network_Socket_BSD /* Network Socket BSD */
+
#define RTE_Network_Socket_TCP /* Network Socket TCP */
+
#define RTE_Network_Socket_UDP /* Network Socket UDP */
+
+
#endif /* RTE_COMPONENTS_H */
+

The typical usage of the RTE_Components.h file is in header files to control for example the inclusion of files that are related to other components for the same Software Pack.

+
#include "RTE_Components.h"
+
+
#ifdef RTE_Network_Interface_ETH_0 // generated when software component Network Interface ETH 0 is included
+
#include "Net_Config_ETH_0.h" // add the related configuration file for these component
+
#endif
+

 

+
+

+/package/components

+

Grouping element containing a choice of at least one bundle or component. No more than one element components can exist in a Pack.

+ + + + + + + + + + + + + + + +
Parent Element Chain
package /package
Attributes Description Type Use
generator Specifies the generator ID of the generator that has been used to generate all components within this section. xs:string optional
Child Elements Description Type Occurrence
bundle Grouping element for a collection of inter-operable components belonging to the same Cclass ComponentType 1..*
component Grouping element for components ComponentType 1..*
+

 

+
+

+/package/components/bundle

+

A bundle describes a named collection of inter-operable components of the identical Cvendor, Cclass and Cversion. Components enclosed in a bundle must not specify any of the following attributes Cvendor, Cclass and Cversion.

+ + + + + + + + + + + + + + + + + + + + + + + +
Parent Element Chain
components /package/components
Attributes Description Type Use
Cbundle Defines the name of the bundle. It becomes a mandatory part of the component ID. xs:string required
Cvendor Defines the component vendor all components of this bundle belong to. If not explicitly set the component vendor is derived from the package vendor. The component vendor is a mandatory part of the component ID. xs:string optional
Cclass Defines the component class to which all components in the bundle belong. Is a mandatory part of the component ID. Predefined values can be used as listed in the table Component Classes. CclassType required
Cversion Defines the version of all components contained in the bundle. The component version is a mandatory part of the component ID. The version format is described in Version Type. VersionType required
Child Elements Description Type Occurrence
description Brief description of the bundle xs:string 1..1
doc Documentation for the bundle: File path, file name, and file extension in the format path/name.extension. The file path is relative to the root directory of the Pack. xs:string

1..1

+

+
component Grouping element for components. ComponentType 1..*
+

 

+
+

+/package/components/.../component

+

A component describes a collection of files (source, header, configuration, library) that can be versioned and categorized.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Parent Element Chain
components /package/components
components /package/components/bundle
Attributes Description Type Use
Cvendor Defines the component vendor this component is shipped by. It is a mandatory part of the component ID and will be inherited from the package vendor if not specified.
+ Must not be specified for a component within a bundle.
xs:string optional
Cclass Defines the component class to which the component belongs. This is a mandatory part of the component ID. Predefined values can be used as listed in the table Component Classes.
+ Must not be specified for a component within a bundle.
CclassType required
Cgroup Defines the component group to whoch the component belongs. Is a mandatory part of the component ID. Predefined values can be used as listed in the table Component Groups. CgroupType required
Csub Defines the component subgroup. Is an optional part of the component ID. The type is described in Component Subgroups. CsubType optional
Cvariant Defines a variant of a component. Is an optional part of the component ID. The variant specifier is a brief string (for example: release, debug). xs:string [3..32] optional
Cversion Defines the version of this component. Is a mandatory part of the component ID. The version format is described in Version Type.
+ Must not be specified for a component within a bundle.
VersionType required
Capiversion For components that are based on an API, it defines the version of the API used by this component. It ensures that the API header file with this or any higher version is acceptable for using that component. The version format is described in Version Type. VersionType optional
condition Enter the id of a condition. The component is available and can be selected when the condition is true. xs:string optional
maxInstances Maximum allowed instances of a component in a project. Default is 1 for one instance. The range is [1..10]. xs:integer optional
isDefaultVariant Identifies this component variant to be the preferred variant for tool driven selection [Version 1.4.0] xs:boolean optional
generator This links the component with a generator description located in the same file. If this component is selected by the run time configuration, the tool will test whether the configured gpdsc file does already exist or not. If the file is not present, then the command specified by the referenced generator section, will be invoked. If the gpdsc file already exists it will be included into the project xs:string optional
Child Elements Description Type Occurrence
deprecated When set to true, then the component is deprecated and no longer maintained. Default is false to indicate an actively maintained component. xs:boolean 0..1
description Brief description of the component. xs:string 1..1
RTE_Components_h Source code that is copied into the file RTE_Components.h when the component is included into a software project. xs:string 0..1
files Grouping element for all files that are part of this component. group 1
+

 

+

Component Subgroups

+

Component Subgroups are specified by the element Csub, and create subcategories within Component Classes (Cclass) and Component Groups (Cgroup). A Csub name is of type xs:string with a length between 3 and 32 characters. No Csub names have been predefined.

+

Subgroups exists in the elements:

+ +

Example:

+
<... Csub="MyRTOS" Cgroup="RTOS" Cclass="CMSIS"...>
+

 

+
+

+/package/.../files

+

The group files can appear in various Pack elements. This group is the frame for defining individual file properties.

+

Example:

+
<package>
+
...
+
<apis>
+
<api Cclass="Device" Cgroup="Driver UART" exclusive="0">
+
<files>
+
...
+
</files>
+
</api>
+
</apis>
+
...
+
<components>
+
<component Cclass="Device" Cgroup="Startup" Cversion="3.1.1" >
+
<files>
+
...
+
</files>
+
</component>
+
</components>
+
...
+
</package>
+

 

+ + + + + + + + + + + + + +
Parents Element Chain
api /package/apis/api
component /package/components/component
component /package/components/bundle/component
Child Elements Description Type Occurrence
file Frame for the individual file of a component. group 1..*
+

 

+
+

+/package/.../files/file

+

The element file is the mechanism to attach files to the software. The file purpose is defined through the category attribute. The name attribute identifies the file.

+

Example:

+
<package>
+
...
+
<apis>
+
<api Cclass="Device" Cgroup="Driver UART" exclusive="0">
+
<files>
+
<file category="doc" name="Driver/Doc/UART/html/index.html"/>
+
<file category="header" name="Driver/Include/Driver_UART.h"/>
+
</files>
+
</api>
+
</apis>
+
...
+
<components>
+
<component Cclass="Device" Cgroup="Startup" Cversion="3.1.1" >
+
<files>
+
<file category="header" name="Device/Include/system_stm32f2xx.h"/>
+
<file category="source" name="Device/Source/ARM/startup_stm32f2xx.s" attr="template"/>
+
<file category="source" name="Device/Source/system_stm32f2xx.c" attr="template"/>
+
</files>
+
</component>
+
</components>
+
...
+
</package>
+

 

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Parents Element Chain
files /package/apis/api/files
files /package/components/component/files
files /package/components/bundle/component/files
files /package/generators/generator/project_files
Attributes Description Type Use
name File path, file name, and file extension in the format path/name.extension. The file path is relative to the root directory of the Pack. xs:string required
category Defines the purpose of the file. Select the predefined value as listed in the table File Categories. FileCategoryEnum required
attr Defines the special use and handling of a file. Select a predefined value as defined in the table File Attributes. FileAttributeEnum optional
condition Enter the identifier (attribute id) of a condition. The element is used if the condition resolves to true. If the condition resolves to false, then the element will be ignored. For example, a library might be specific for a certain toolchain or processor instruction set. xs:string optional
select Brief description and purpose of the file. The select attribute is required when attr is set to template or interface. When multiple template files of a component have the same select string, they are treated as a single selectable template. This way, multiple template or interface files can be bundled. xs:string optional
src Path information. The path is specified relative to the Pack Description File. If category is set to library, then the src string can contain a list of directory paths separated by semicolons. A debugger will search those paths for locating the source files of the modules archived in the library supporting the debugging of library code. xs:string optional
version File-specific version information. This is used particularly for files copied into the project workspace. Before a file gets copied, a version check avoids unnecessary copy actions. If a file does not have a version, then the component version is used. The version format is described in Version Type. VersionType optional
public Set publishing permissions for the documentation. If <public> is true, then the vendor gives permission to extract the documentation from the pack and publish it on a web-page. Links to web pages are assumed to be public. The default value is false. xs:boolean optional
+

 

+

Table: File Attributes

+

The file attribute defines the special handling in the project when being used as configuration, template, or interface file. The table lists the values available as a file attribute.

+ + + + + + + +
attr= Description
config The file is a configuration file of the component. It is expected that only configuration options are modified. The file is managed as part of the component, as a project-specific file typically copied into the component section of the project.
template

The file is used as a source code template file. It is expected to be edited and extended by the software developer. The file can be copied into a user section of the project.

+

+
+
Note
Header files with the attribute config must be located in a directory within the pack that is not otherwise specified as an "include folder" of this or any other component's files of the category "header" or "include". For example:
<file category="header"  name="src/config/user_config.h" attr="config" version="1.0.0" />
+
Config files are copied into the project folder and are adopted specifically for that project. Due to the include path search order of the compiler, chances exist that the unmodified header file in the pack repository is found first and used by the compiler (creating unexpected results).
+

 

+

Table: File Categories

+

File category types define the use of component files within the application. Typically, these files are added to the project and processed by the build tools.

+

File categories are used in the following elements:

+ +

The table lists the predefined values for a file category.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
category= Description
doc Documentation
header Header file used in the component. Sets an include file path.
include Sets an include file path.
library Library file
object Object file that can be added to the application
source Startup-, system-, and other C/C++, assembler, etc. source files
sourceC C source file
sourceCpp C++ source file
sourceAsm Assembly source file
linkerScript linker script file that can be selected by tool-chains
utility a command line tool that can be configured for pre- or post-processing during the build process
image Files of image type are marked for special processing into a File System Image embedded into the application. This category requires the attr being set to template.
other Other file types not covered in the list above
+

 

+
+
+
+ + + + diff --git a/docs/Pack/html/pdsc_conditions_pg.html b/docs/Pack/html/pdsc_conditions_pg.html new file mode 100644 index 0000000..c89587c --- /dev/null +++ b/docs/Pack/html/pdsc_conditions_pg.html @@ -0,0 +1,333 @@ + + + + + +/package/conditions element +CMSIS-Pack: /package/conditions element + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-Pack +  Version 1.5.0 +
+
Delivery Mechanism for Software Packs
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
/package/conditions element
+
+
+

The grouping element /package/conditions contains all conditions defined for the Software Pack.

+

A condition describes dependencies on device, processor, and tool attributes as well as the presence of other components. The conditions are used to define AND and OR rules used to make components conditional and therefore only available under certain circumstances, e.g. for specific devices or processors. The conditions are also used to express dependencies between components.

+

Each condition has an id that is unique within the scope of a the description. An id can be referenced in the condition attribute of components, apis, examples, files and other conditions to become conditional. If a condition resolves to false during the processing of the description, the respective element will be ignored.

+

Example:

+
<conditions>
+
<condition id="CM4"> <!-- defines the condition with the ID "CM4" -->
+
<description>True if the active device has a Cortex-M4 processor</description>
+
<require Dcore="Cortex-M4"/> <!-- device has a Cortex-M4 processor -->
+
</condition>
+
+
<condition id="Cortex-M"> <!-- defines the condition with the ID "Cortex-M" -->
+
<description>True if the active device has a Cortex-M0 or Cortex-M0+ or Cortex-M3 or Cortex-M4 or SC000 or SC3000 processor </description>
+
<accept Dcore="Cortex-M0"/> <!-- any of the following cores will make the condition resolve to true -->
+
<accept Dcore="Cortex-M0+"/>
+
<accept Dcore="Cortex-M23"/>
+
<accept Dcore="Cortex-M3"/>
+
<accept Dcore="Cortex-M33"/>
+
<accept Dcore="Cortex-M4"/>
+
<accept Dcore="SC000"/>
+
<accept Dcore="SC300"/>
+
</condition>
+
+
<condition id="CMSIS-Core"> <!-- defines the condition with the ID "CMSIS-Core" -->
+
<description>True if the component Device Startup is selected and the device has a Cortex-M processor</description>
+
<require Cclass="Device" Cgroup="Startup"/> <!-- needs a software component Device Startup AND ... -->
+
<require condition="Cortex-M"/> <!-- ... needs that condition with ID=Cortex-M to be true. -->
+
</condition>
+
+
<condition id="CMSIS-DSP"> <!-- defines the condition with the ID "CMSIS-DSP" -->
+
<description>True if CMSIS-Core == TRUE and either GCC or ARMCC and device running in little-endian byte ordering</description>
+
<require condition="CMSIS-Core"/> <!-- needs a software component Device Startup AND ... -->
+
<accept Tcompiler="GCC"/> <!-- ... works either with the GCC compiler OR ... -->
+
<accept Tcompiler="ARMCC"/> <!-- ... the ARMCC compiler AND ... -->
+
<require Dendian="Little-endian"/> <!-- ... requires a device running in little-endian byte ordering -->
+
</condition>
+
+
<condition id="No STM32"> <!-- defines the condition with ID "No STM32" -->
+
<description>False if the device is from ST and the device name starts with "STM32"</description>
+
<deny Dvendor="STMicroelectronics:13" Dname="STM32*"/> <!-- device name must not start with STM32 and be from vendor ST-->
+
</condition>
+
</conditions>
+

 

+
+

+/package/conditions

+

This element groups all conditions used in the Software Pack.

+ + + + + + + + + +
Parent Chain
package /package
Child Elements Description Type Occurrence
condition Define the individual dependency condition. xs:string 1..*
+

 

+
+

+/package/conditions/condition

+

Conditions are dependency rules that can apply to elements such as a component or file. Other elements can refer to a rule using their attribute condition, which links to the attribute id of a condition. If a condition resolves to false, then the component or file description is ignored.

+ + + + + + + + + + + + + + + + + + + +
Parent Chain
conditions /package/conditions
Attributes Description Type Use
id Condition identifier which is unique within a Software Pack. The condition identifier is referenced by other elements with the attribute condition. xs:string required
Child Elements Description Type Occurrence
description Descriptive (comment) text that explains the condition in an human readable way. xs:string 0..1
accept1 At least one accept must be true to signal a true for the complete condition (OR-Rule) FilterType 0..*
require1 All require must be true to signal a true for the complete condition (AND-Rule). FilterType 0..*
deny1 If one deny is true the complete condition becomes false. This element overrules require and accept (AND-NOT-Rule). FilterType 0..*
+
Note
1: At least one of these elements must be present in any condition.
+

 

+
+

+/package/conditions/condition/accept

+

+/package/conditions/condition/require

+

+/package/conditions/condition/deny

+

All attributes set in an accept, require, or deny must resolve to true for the element to become true. A condition becomes true when:

+
    +
  • At least one accept element is true, AND
  • +
  • all require elements are true, AND
  • +
  • no deny element is true.
  • +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Parent Chain
accept /package/conditions/condition/accept
require /package/conditions/condition/require
deny /package/conditions/condition/deny
Attributes Description Type Use
Dfamily* Specifies the device family name (for example: STM32F2 Series). xs:string optional
DsubFamily* Specifies the device sub-family name (for example: STM32F205 Series). xs:string optional
Dvariant* Specifies the variant name of a device (for example: Step A). xs:string optional
Dvendor Specifies the silicon vendor of the device. Use predefined values as listed in the table Device Vendor. DeviceVendorEnum optional
Dname* Specifies the name of the device. xs:string optional
Pname Specifies the processor instance in case of multi processor devices. This allows to describe distinct conditions for a specific processor. xs:string optional
Dcore Specifies a processor core. Use predefined values as listed in the table Device Cores. DcoreEnum optional
Dfpu Specifies whether a Floating Point Unit (FPU) must be present or not. Predefined values can be used as listed in the table Device FPU. DfpuEnum optional
Dmpu Specifies whether a Memory Protection Unit (MPU) must be present or not. Predefined values can be used as listed in the table Device MPU. DmpuEnum optional
Dtz Specifies whether TrustZone (TZ) must be supported by the device or not. Predefined values can be used as listed in the table Device TrustZone. DtzEnum optional
Dsecure Specifies whether the application is configured to run in secure or non-secure mode. Predefined values can be used as listed in the table Software Model Secure. DsecureEnum optional
Ddsp Specifies whether Digital Signal Processing (DSP) instruction set must be supported by the device or not. Predefined values can be uses as listed in the table Device DSP. DdspEnum optional
Dendian Specifies the endianess of a device. Use predefined values as listed in the table Endianess. DendianEnum optional
Cvendor* Specifies a component vendor name. xs:string optional
Cbundle* Specifies a component class bundle name. xs:string optional
Cclass* Specifies a component class name. Predefined values can be used as listed in the table Component Classes. CclassType optional
Cgroup* Specifies a software Component Group. Predefined values can be used as listed in the table Component Groups. CgroupType optional
Csub* Specifies a software component subgroup. The type is described in Component Subgroups. CsubType optional
Cvariant* Specifies a software component variant. xs:string optional
Cversion Specifies a software component version.
    +
  • require Cversion:condition is true if version of component is equal or higher than requested.
  • +
  • deny Cversion: condition is true if version of component is lower than requested.
  • +
  • Version ranges are specified with min_version:max_version. The condition is true if the version of the component is equal or higher than min_version and lower or equal than max_version. If min_version and max_version are equal the version must match. For more information refer to Version Type.
  • +
+
VersionType optional
Capiversion Specifies an API version.
    +
  • require Capiversion:condition is true if version of API is equal or higher than requested.
  • +
  • deny Capiversion: condition is true if version of API is lower than requested.
  • +
  • Version ranges are specified with min_version:max_version. The condition is true if the version of the API is equal or higher than min_version and lower or equal than max_version. If min_version and max_version are equal the version must match. For more information refer to Version Type.
  • +
+
VersionType optional
Tcompiler Specifies a compiler toolchain (ARMCC, GCC, IAR, Tasking, ...). Use predefined values as listed in table Compiler Types. CompilerEnumType optional
Toptions

Specifies compiler specific options being active. For Tcompiler="ARMCC" available Toptions are:

+
    +
  • AC5: Arm Compiler Version 5 is in used
  • +
  • AC6: Arm Compiler Version 6 (armclang) is in use
  • +
  • AC6LTO: Arm Compiler Version 6 with Link Time Optimization (LTO) is in use
  • +
+

This attribute can be used to select compatible libraries for the selected compiler version or optimization mode.

+
CompilerEnumType optional
condition Refers to another condition identified through the attribute id. xs:string optional
+

*) Wild-cards can be used to match names with the following definitions:

+
    +
  • '*' matches any substring
  • +
  • '?' matches any single character
  • +
  • [abc] matches any character in the set (a,b,c)
  • +
+

 

+

Table: Compiler Types

+

The tale list values representing a C/C++ compiler toolchains from a specific tool vendor. The tokens can be used in the elements:

+ + + + + + + + + + + + + + + + +
Tcompiler= Description
GCC GNU Tools for Arm Embedded Processors. Refer to Arm GCC.
G++ Code Sourcery GCC compiler for C and C++ (is now Mentor Graphics CodeBench).
ARMCC Arm Compiler for C and C++. Refer to Arm Compiler.
IAR IAR compiler for C and C++.
Tasking TASKING compiler for C and C++.
GHS Green Hills Software compiler for C, C++, and EC++.
+

 

+
+
+
+ + + + diff --git a/docs/Pack/html/pdsc_devices_pg.html b/docs/Pack/html/pdsc_devices_pg.html new file mode 100644 index 0000000..19ddc5e --- /dev/null +++ b/docs/Pack/html/pdsc_devices_pg.html @@ -0,0 +1,252 @@ + + + + + +/package/devices element +CMSIS-Pack: /package/devices element + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-Pack +  Version 1.5.0 +
+
Delivery Mechanism for Software Packs
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
/package/devices element
+
+
+

The level <devices> contains all devices for which support is provided by the Software Pack.

+

Devices can be organized in hierarchy groups to limit redundancy. The hierarchy levels are:

+
    +
  • family: the attributes of a device family which includes also the processor.
  • +
  • subFamily: attributes of an optional sub-family; this adds or modifies features of a family.
  • +
+

Device characteristics can be defined in:

+
    +
  • device: attributes of a specific silicon device
  • +
  • variant: attributes of a device variant (for example, with different package or temperature range) or an OEM device or board that integrates the device.
  • +
+

A device is described by the following properties:

+
    +
  • description: textual device description
  • +
  • feature: categorized list of device peripherals and features
  • +
  • book: documentation about the device and its processor(s)
  • +
  • processor: processor and processor features embedded in the device
  • +
  • compile: device specific general settings for the build tools
  • +
  • debugconfig: default settings for a debug connection
  • +
  • debugvars: global debug access variables for use in sequences.
  • +
  • sequences: debug access sequences.
  • +
  • debugport: debug port description of the device for the debugger to configure a debug connection.
  • +
  • debug: device specific information for the debugger to configure a debug connection including System View Description files.
  • +
  • trace: device specific information for the debugger to configure trace.
  • +
  • memory: memory layout of the device for internal and external RAM and ROM regions
  • +
  • algorithm: device specific Flash programming algorithms
  • +
+

A device will inherit the specifications from both the family and sub-family levels. Some properties are required to be unique. For example, the name of the svd file attribute of the <debug> property. Therefore, the svd file specified on the family level can be redefined by the attribute on the sub-family or device level. Information like the description and feature entries are concatenated, starting with the information from the family and sub-family level and finalizing with the information on the device level.

+

Example

+
<package>
+
...
+
<devices>
+
<!-- family level -->
+
<family Dfamily="STM32F2" Dvendor="STMicroelectronics:13">
+
<processor Dcore="Cortex-M3" DcoreVersion="r2p1"
+
Dfpu="NO_FPU" Dmpu="MPU" Dendian="Little-endian" Dclock="120000000"/>
+
+
<compile header="Device/Include/stm32f2xx.h" define="STM32F2XX"/>
+
<debug svd="SVD/STM32F20x.svd"/>
+
<algorithm name="Flash/STM32F2xx_OPT.flm" start="0x1FFFC000" size="0x00000010" style="Keil"/>
+
<book name="doc/STM32F2.PDF" title="STM32F2 Reference Manual"/>
+
+
<description>
+
Arm 32-bit Cortex-M3 CPU based Microcontroller
+
- 120 MHz maximum frequency producing 150 DMIPS/1.25 DMIPS/MHz
+
- Memory Protection Unit
+
- Flexible static memory controller (supports Compact Flash, SRAM, PSRAM, NOR, NAND memories)
+
- LCD parallel interface, 8080/6800 modes
+
- Clock, reset and supply management
+
</description>
+
+
<feature type="Timer" n="10" m="32" name="General Purpose Timer with 60 MHz"/>
+
<feature type="Timer" n="2" m="16" name="Advanced Control Timer with 120 MHz"/>
+
<feature type="Timer" n="2" m="16" name="Basic Timer with 60 MHz"/>
+
<feature type="TimerOther" n="1" name="Independent Watchdog Timer"/>
+
<feature type="TimerOther" n="1" name="Window Watchdog Timer"/>
+
<feature type="DAC" n="2" m="12"/>
+
<feature type="SPI" n="3" name="SPI Interface (two of them can be used as I2S)"/>
+
<feature type="I2C" n="3"/>
+
<feature type="USART" n="4" name="USART Interface up to 7.5 Mbit/s"/>
+
<feature type="UART" n="2" name="UART Interface up to 3.75 Mbit/s"/>
+
<feature type="USBOTG" n="1" name="USB OTG (Full-Speed) with PHY and ULPI"/>
+
<feature type="USBOTG" n="1" name="USB OTG (High-Speed) with PHY and ULPI"/>
+
<feature type="CAN" n="2" name="CAN Interface (2.0b Active)"/>
+
<feature type="SDIO" n="1" m="8" name="Supporting SD/MicroSD/MMC"/>
+
<feature type="VCC" n="1.8" m="3.6"/>
+
+
<!-- sub family level -->
+
<subFamily DsubFamily="128 Flash">
+
<memory name="SRAM" access="rwx" start="0x20000000" size="0x10000" default="1"/>
+
<memory name="Flash" access="rx" start="0x08000000" size="0x20000" startup="1" default="1"/>
+
+
<!-- device level -->
+
<device Dname="STM32F205RB">
+
<feature type="IOs" n="51" name="Input and Output Ports"/>
+
<variant Dvariant="STM32F205RBT6">
+
<feature type="QFP" count="64" name="LQFP 64 10x10x1.4" />
+
<feature type="Temp" n="-40" m="85" name="Industrial Temperature Range"/>
+
</variant>
+
<variant Dvariant="STM32F205RBT7">
+
<feature type="QFP" count="64" name="LQFP 64 10x10x1.4" />
+
<feature type="Temp" n="-40" m="105" name="Extended Temperature Range"/>
+
</variant>
+
</device>
+
+
<device Dname="STM32F205VB">
+
<feature type="IOs" n="82" name="Input and Output Ports"/>
+
<variant Dvariant="STM32F205VBT6">
+
<feature type="QFP" count="100" name="LQFP 100 14x14x1.4" />
+
<feature type="Temp" n="-40" m="85" name="Industrial Temperature Range"/>
+
</variant>
+
</device>
+
</subFamily>
+
+
</family>
+
</devices>
+
</package>
+

 

+
+

+/package/devices

+

Group level containing device family descriptions. A package can contain only one element <devices>. The group is not mandatory.

+

Example

+
<package>
+
...
+
<devices>
+
...
+
</devices>
+
...
+
</package>
+


+

+ + + + + + + + + +
Parents Element Chain
package /package
Child Elements Description Type Occurrence
family Device family group. Define all properties that are in common to devices of a family. complexType 1..*
+

 

+
+
+
+ + + + diff --git a/docs/Pack/html/pdsc_devices_pg.js b/docs/Pack/html/pdsc_devices_pg.js new file mode 100644 index 0000000..737520f --- /dev/null +++ b/docs/Pack/html/pdsc_devices_pg.js @@ -0,0 +1,40 @@ +var pdsc_devices_pg = +[ + [ "/package/devices", "pdsc_devices_pg.html#element_devices", null ], + [ "/package/devices/family element", "pdsc_family_pg.html", [ + [ "/package/devices/family", "pdsc_family_pg.html#element_family", null ], + [ "/package/devices/family/subFamily", "pdsc_family_pg.html#element_subFamily", null ], + [ "/package/devices/family/../device", "pdsc_family_pg.html#element_device", null ], + [ "/package/devices/family/.../algorithm", "pdsc_family_pg.html#element_algorithm", null ], + [ "/package/devices/family/.../flashinfo", "pdsc_family_pg.html#element_flashinfo", null ], + [ "/package/devices/family/.../flashinfo/block", "pdsc_family_pg.html#element_flashblock", null ], + [ "/package/devices/family/.../flashinfo/gap", "pdsc_family_pg.html#element_flashgap", null ], + [ "/package/devices/family/.../book", "pdsc_family_pg.html#element_book", null ], + [ "/package/devices/family/.../compile", "pdsc_family_pg.html#element_compile", null ], + [ "/package/devices/family/.../description", "pdsc_family_pg.html#element_description", null ], + [ "/package/devices/family/.../environment", "pdsc_family_pg.html#element_environment", null ], + [ "/package/devices/family/.../feature", "pdsc_family_pg.html#element_feature", null ], + [ "/package/devices/family/.../memory", "pdsc_family_pg.html#element_memory", null ], + [ "/package/devices/family/.../processor", "pdsc_family_pg.html#element_processor", null ], + [ "/package/devices/family/.../debugconfig", "pdsc_family_pg.html#element_debugconfig", null ], + [ "/package/devices/family/.../debugvars", "pdsc_family_pg.html#element_debugvars", null ], + [ "/package/devices/family/.../debugport", "pdsc_family_pg.html#element_debugport", null ], + [ "/package/devices/family/.../debugport/jtag", "pdsc_family_pg.html#element_dp_jtag", null ], + [ "/package/devices/family/.../debugport/swd", "pdsc_family_pg.html#element_dp_swd", null ], + [ "/package/devices/family/.../debugport/cjtag", "pdsc_family_pg.html#element_dp_cjtag", null ], + [ "/package/devices/family/.../sequences", "pdsc_family_pg.html#element_sequences", null ], + [ "/package/devices/family/.../sequences/sequence", "pdsc_family_pg.html#element_sequence", null ], + [ "/package/devices/family/.../sequences/sequence/control", "pdsc_family_pg.html#element_seq_control", null ], + [ "/package/devices/family/.../sequences/sequence/block", "pdsc_family_pg.html#element_seq_block", [ + [ "Debug access syntax rules", "pdsc_family_pg.html#DebugSyntaxRules", null ], + [ "Expression rules", "pdsc_family_pg.html#ExpressionType", null ] + ] ], + [ "/package/devices/family/.../debug", "pdsc_family_pg.html#element_debug", null ], + [ "/package/devices/family/.../debug/datapatch", "pdsc_family_pg.html#element_dbg_datapatch", null ], + [ "/package/devices/family/.../trace", "pdsc_family_pg.html#element_trace", null ], + [ "/package/devices/family/.../trace/serialwire", "pdsc_family_pg.html#element_trace_serialwire", null ], + [ "/package/devices/family/.../trace/traceport", "pdsc_family_pg.html#element_trace_traceport", null ], + [ "/package/devices/family/.../trace/tracebuffer", "pdsc_family_pg.html#element_trace_tracebuffer", null ], + [ "/package/devices/family/.../device/variant", "pdsc_family_pg.html#element_variant", null ] + ] ] +]; \ No newline at end of file diff --git a/docs/Pack/html/pdsc_examples_pg.html b/docs/Pack/html/pdsc_examples_pg.html new file mode 100644 index 0000000..2d4cc6a --- /dev/null +++ b/docs/Pack/html/pdsc_examples_pg.html @@ -0,0 +1,336 @@ + + + + + +/package/examples element +CMSIS-Pack: /package/examples element + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-Pack +  Version 1.5.0 +
+
Delivery Mechanism for Software Packs
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
/package/examples element
+
+
+

The element /package/examples/example describes fully defined examples contained in the Pack. An example lists the files that belong to an example. The example itself and each individual file may refer to a condition that must resolve to true; if it is false the example or file will be ignored. The board element is used to reference to one or more board descriptions using the board vendor and name an example is targeted for. Each example can specify attributes listing related components using Class (Cclass=), Group (Cgroup=), Subgroup (Csub) and a Version (Cversion=)

+

Example

+
<examples>
+
<example name="Blinky" folder="Boards/MCBSTM32F200/Blinky" doc="Abstract.txt" version="1.0">
+
<description>This is a basic example demonstrating the development flow and letting the LED on the board blink</description>
+
<board vendor="STMicroelectronics" name="32F429IDISCOVERY"/>
+
<project>
+
<environment name="uv" load="ARM/Blinky.uvproj"/>
+
<environment name="iar" load="IAR/Blinky.ewarm" />
+
</project>
+
<attributes>
+
<component Cclass="CMSIS" Cgroup="Core"/>
+
<component Cclass="Device" Cgroup="Startup"/>
+
<keyword>Blinky</keyword>
+
<keyword>Getting Started</keyword>
+
</attributes>
+
</example>
+
</examples>
+

 

+
+

+/package/examples

+

Grouping element for examples. No more than one such group can exist in a Pack.

+ + + + + + + + + +
Parent Chain
package /package
Child Elements Description Type Occurrence
example Description of fully specified project ExampleType 1..*
+

 

+
+

+/package/examples/example

+

An example section is used to provide the required information for accessing an example project contained in a Pack. All examples contained in the installed packs can be listed including a brief description. A selected example will get copied into a user selected destination folder. Based on the user selected environment the respective project file will be loaded. The ID of an example is the combination of the Pack vendor, the board information and the example name and version. Examples with the same ID are treated as a single example.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Parent Chain
examples /package/examples
Attributes Description Type Use
name Name of the example xs:string required
folder Relative path to the example base folder within the package. If selected, then the directory including all sub-folders and files will be copied, unless the archive attribute gets set. xs:string required
archive Filename and extension of the archive file containing all files and sub-folders of the example. The archive is located in the path specified by the attribute folder. If selected, then the whole archive will be extracted. xs:string optional
doc Document that describes the example. xs:string required
version Example version number. The version format is described in Version Type. VersionType optional
public Set publishing permissions for the documentation. If <public> is true, then the vendor gives permission to extract the documentation from the pack and publish it on a web-page. Links to web pages are assumed to be public. The default value is false. xs:boolean optional
Child Elements Description Type Occurrence
description Briefly documents the purpose and scope of the example. The test can be displayed in an example selector. xs:string 1
board Complex type providing a reference to a board description using board name and vendor.. BoardReferenceType 1
project Complex type describing the project files for different environments ExampleProjectType 1..*
attributes Group element for project attributes, which list required components, define example categories, and set keywords to filter and search for examples. ExampleAttributesType 1
+

 

+
+

+/package/examples/example/board

+

This element specifies the board that can be used with the example project.

+

Example:

+
<board name="MV1000A" vendor="MyVendor"/>
+

 

+ + + + + + + + + + + + + + + + + + + +
Parent Chain
example /package/examples/example
Attributes Description Type Use
vendor Vendor name of the board. xs:string required
name Commercial name of the board. xs:string required
Dvendor Vendor name of the device used on the board. Use predefined values as listed in the table Device Vendor. DeviceVendorEnum optional
Dfamily Name of the target device family used on the board. This attribute is optional if either DsubFamily or Dname is already specified.
+ Deprecated since version 1.1
xs:string optional
DsubFamily Name of the target device sub-family used on the board. This attribute is optional if either Dfamily or Dname is already specified.
+ Deprecated since version 1.1
xs:string optional
Dname Name of the target device used on the board. This attribute is optional if either Dfamily or DsubFamily is already specified.
+ Deprecated since version 1.1.
xs:string optional
+
Note
Values for deprecated attributes are read from the board description element /package/boards/board/mountedDevice.
+

 

+
+

+/package/examples/project

+

A project element is a sequence of environment elements that describe the name of the environment and the project file to be loaded.

+

Example:

+
<project>
+
<environment ... />
+
<environment ... />
+
</project>
+

 

+ + + + + + + + + +
Parent Chain
example /package/examples/example
Element Description Type Occurrence
environment Specifies the environment and project file with extension. xs:complexType 1..*
+

 

+
+

+/package/examples/project/environment

+

The environment element describes the name of the environment and the project file to be loaded.

+

Example:

+
<project>
+
<environment name="uv" load="ARM/Blinky.uvproj"/>
+
<environment name="iar" load="IAR/Blinky.ewarm" />
+
</project>
+

 

+ + + + + + + + + + + +
Parent Chain
project /package/examples/project
Attributes Description Type Use
name Name of the required tool-chain (for example: uv, iar, etc.) xs:string required
load Specifies the project file with extension. A path relative to folder attribute of the element /package/examples/example can be appended. xs:string required
+

 

+
+

+/package/examples/example/attributes

+

Example:

+
<example>
+
<attributes>
+
<category>Example Project</category>
+
<category>For a specific board</category>
+
...
+
<component Cclass="CMSIS" Cgroup="Core"/>
+
<component Cclass="Device" Cgroup="Startup"/>
+
...
+
<keyword>Blinky</keyword>
+
<keyword>Getting Started</keyword>
+
</attributes>
+
</example>
+

 

+ + + + + + + + + + + + + +
Parent Chain
example /package/examples/example
Child Elements Description Type Occurrence
category Free form string defining an example category. A category can be used to filter examples in an example browser. xs:string 0..*
component Group for defining the components used in the example. ComponentCategoryType 0..*
keyword Free form string defining a keyword that relates to the example. A keyword can be used to search for examples. xs:string 0..*
+

 

+
+

+/package/examples/example/attributes/component

+

The component element specifies the Cclass to which the example belongs. This can be used to list all related components within an example.

+

Example:

+
<attributes>
+
...
+
<component Cclass="CMSIS" Cgroup="Core"/>
+
<component Cclass="Device" Cgroup="Startup"/>
+
...
+
</attributes>
+

 

+ + + + + + + + + + + + + + + + + +
Parent Chain
attribute /package/examples/example/attributes
Attribute Description Type Use
Cclass Free form string defining an example class. Predefined values can be used as listed in the table Component Classes. CclassType required
Cgroup Free form string defining an example group. Predefined values can be used as listed in the table Component Groups. CgroupType optional
Csub Free form string defining an example subgroup. The type is described in Component Subgroups. CsubType optional
Cversion Free form string defining an example version. The version format is described in Version Type. VersionType optional
Cvendor Free form string defining the vendor of the example. xs:string optional
+

 

+
+
+ + + + diff --git a/docs/Pack/html/pdsc_family_pg.html b/docs/Pack/html/pdsc_family_pg.html new file mode 100644 index 0000000..c06e92f --- /dev/null +++ b/docs/Pack/html/pdsc_family_pg.html @@ -0,0 +1,2263 @@ + + + + + +/package/devices/family element +CMSIS-Pack: /package/devices/family element + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-Pack +  Version 1.5.0 +
+
Delivery Mechanism for Software Packs
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
/package/devices/family element
+
+
+

+/package/devices/family

+

Define properties that are in common to all devices of a family. These properties are inherited by subgroups or elements. This is a mechanism of granulation to reduce redundancy. Multiple <family> groups can be defined.

+

Example

+
<devices>
+
...
+
<family Dfamily="STM32F2" Dvendor="STMicroelectronics:13">
+
<processor .../>
+
<debugconfig .../>
+
<debugvars .../>
+
<sequences .../>
+
<compile .../>
+
<memory .../>
+
<algorithm .../>
+
<book .../>
+
<description> Write texte here </description>
+
<environment> ... </environment>
+
<feature .../>
+
<debugport .../>
+
<debug .../>
+
<trace .../>
+
+
<subFamily DsubFamily="...">
+
...
+
<device Dname="...">
+
...
+
</device>
+
...
+
</subFamily>
+
...
+
</family>
+
...
+
</devices>
+

 

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Parents Element Chain
devices /package/devices
Attributes Description Type Use
Dfamily Name of the device family. xs:string required
Dvendor Device vendor name. Use predefined values as listed in the table Device Vendor. DeviceVendorEnum required
Child Elements Description Type Occurrence
processor List all processors that are in common to devices of the family. ProcessorType 0..*
debugconfig Specify default settings for the debug connection relevant to all devices of the family. DebugConfigType 0..1
compile Specify compile or translate options that are relevant to all devices of the family. CompileType 0..*
debugvars Define global debug access variables for settings relevant to all devices of the family unless replaced by debugvars on subFamily, device or variant level DebugVarsType 0..1
sequences Describe debug access sequences relevant to all devices of the family. SequencesType 0..1
debugport Describe a debug port relevant to all devices of the family. DebugPortType 0..*
debug Specify debug options that are relevant to all devices of the family. DebugType 0..*
trace Specify trace options that are relevant to all devices of the family. TraceType 0..*
memory Specify memory areas that are available for all devices of the family. MemoryType 0..*
algorithm Specify Flash programming algorithms that are suitable for all devices. AlgorithmType 0..*
flashinfo Specify additional information required to download application code into Flash that is available for all devices of the family. FlashInfoType 0..*
book Specify documents that are relevant for all devices of a family. BookType 0..*
description Describe the device family. DescriptionType 0..*
environment Specify tool specific settings. EnvironmentType 0..*
feature Specify features that are available in all members of the device family. FeatureType 0..*
subFamily A optional sub-family that is used to group devices. group 0..*
device Individual devices that belong to the device family. DeviceType 0..*
+

 

+
+

+/package/devices/family/subFamily

+

Define properties that are in common to all devices of a subFamily. This is another mechanism of granulation to reduce redundancy. These properties are inherited by subgroups or elements. Multiple <subFamily> groups can be defined.

+

Example

+
<family Dfamily="STM32F2" Dvendor="STMicroelectronics:13">
+
...
+
<subFamily DsubFamily="...">
+
<processor .../>
+
<debugconfig .../>
+
<debugvars .../>
+
<sequences .../>
+
<compile .../>
+
<memory .../>
+
<algorithm .../>
+
<book .../>
+
<description> Write texte here </description>
+
<feature .../>
+
<debugport .../>
+
<debug .../>
+
<trace .../>
+
<device Dname="...">
+
...
+
</device>
+
</subFamily>
+
+
<subFamily DsubFamily="STM32F2xx">
+
...
+
</subFamily>
+
+
</family>
+

 

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Parents Element Chain
family /package/devices/family
Attributes Description Type Use
DsubFamily Name of the device sub family. xs:string required
Child Elements Description Type Occurrence
processor Specify processors that are available in all devices of the sub-family. ProcessorType 0..*
compile Specify compile or translate options that are relevant to all devices of the sub-family. CompileType 0..*
debugconfig Specify default settings for the debug connection relevant to all devices of the sub-family. DebugConfigType 0..1
debugvars Define global debug access variables for user-defined settings relevant to all devices of the sub-family. DebugVarsType 0..1
sequences Describe debug access sequences relevant to all devices of the sub-family. SequencesType 0..1
debugport Describe a debug port relevant to all devices of the sub-family. DebugPortType 0..*
debug Specify debug options that are relevant to all devices of the sub-family. DebugType 0..*
trace Specify trace options that are relevant to all devices of the sub-family. TraceType 0..*
memory Specify memory areas that are available in all device of the sub-family. MemoryType 0..*
algorithm Specify Flash programming algorithms that can be used by all device of the sub-family. AlgorithmType 0..*
flashinfo Specify additional information required to download application code into Flash that is available for all devices of the sub-family. FlashInfoType 0..*
book Specify documents relevant for all device of the sub-family. BookType 0..*
description Description of the device family. DescriptionType 0..*
feature Specify features available in devices of the sub-family. FeatureType 0..*
device List individual devices that belong to the device sub-family. DeviceType 0..*
+

 

+
+

+/package/devices/family/../device

+

Define properties that are specific to a device. Properties defined on upper levels get inherited, unless they can be overwritten. Multiple <device> elements can be defined.

+

Example

+
<subFamily DsubFamily="STM32F405">
+
...
+
<device Dname="STM32F405OE">
+
<memory name="Flash" access="rx" start="0x08000000" size="0x80000" startup="1" default="1"/>
+
<algorithm name="Flash/STM32F4xx_1024.flm" start="0x08000000" size="0x80000" default="1" style="Keil"/>
+
<feature type="IOs" n="72" name="Input and Output Ports"/>
+
</device>
+
+
<device Dname="STM32F405OG">
+
<memory name="Flash" access="rx" start="0x08000000" size="0x100000" startup="1" default="1"/>
+
<algorithm name="Flash/STM32F4xx_1024.flm" start="0x08000000" size="0x100000" default="1" style="Keil"/>
+
<feature type="IOs" n="72" name="Input and Output Ports"/>
+
</device>
+
...
+
</subFamily>
+

 

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Parents Element Chain
family /package/devices/family
subFamily /package/devices/family/subFamily
Attributes Description Type Use
Dname Specifies the name of the device. Only alphabetical characters, decimal digits, '-' and '_' are allowed. RestrictedString required
Child Elements Description Type Occurrence
processor Specify processors that are specific to this device. ProcessorType 0..*
debugconfig Specify default settings for the debug connection specific to this device. DebugConfigType 0..1
compile Specify compile or translate options specific to this device. CompileType 0..*
memory Specify memory areas that specific to this device. MemoryType 0..*
algorithm Specify Flash programming algorithms that can be used by this device. AlgorithmType 0..*
flashinfo Specify additional information required to download application code into Flash that is specific to this device. FlashInfoType 0..*
book Specify documents specific to this device. BookType 0..*
description Description specific to this device. DescriptionType 0..*
feature Specify the features of this device. FeatureType 0..*
environment Specify tool options. EnvironmentType 0..*
debugport Describe a debug port specific to this device. DebugPortType 0..*
debug Specify debug options specific to this device. DebugType 0..*
trace Specify trace options specific to this device. TraceType 0..*
debugvars Define debug access variables for user-defined settings specific to this device. DebugVarsType 0..1
sequences Describe debug access sequences specific to this device. SequencesType 0..1
variant Complex element specifying a variant of a device. xs:ComplexType 0..*
+

 

+
+

+/package/devices/family/.../algorithm

+

Specify Flash programming algorithms with the address range and its size. An algorithm with <default> set to true gets configured automatically to the download options of the project. Algorithms can be defined on various levels. Multiple <algorithm> elements are possible. If the memory range and style are identical, the one on the lower level takes precedence.

+

Example

+
<family Dfamily="STM32F4" Dvendor="STMicroelectronics:13">
+
...
+
<!-- use for all devices of the family -->
+
<algorithm name="Flash\STM32F2xx_512.flm" start=0x08000000 size=0x10000 default="1" style="Keil"/>
+
+
<subFamily DsubFamily="STM32F405">
+
<!-- use for all devices of a subFamily -->
+
<algorithm name="Flash/STM32F2xx_1024.flm" start=0x08000000 size=0x20000 default="1" style="Keil"/>
+
+
<device Dname="STM32F405OE">
+
<!-- finally, this is the default for the device -->
+
<algorithm name="Flash/STM32F2xx_2048.flm" start=0x08000000 size=0x40000 default="1" style="Keil"/>
+
</device>
+
...
+
</family>
+

 

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Parents Element Chain
family /package/devices/family
subFamily /package/devices/family/subFamily
device /package/devices/family/../device
Attributes Description Type Use
Pname Processor identifier. This attribute is mandatory for devices that embed multiple processors that require different algorithms. Only alphabetical characters, decimal digits, '-' and '_' are allowed. RestrictedString optional
name Flash Programming Algorithm file including the path, which is relative to the root folder of the Software Pack. xs:string required
start Base address for the Flash programming algorithm. NonNegativeInteger required
size Size covered by the Flash programming algorithm. End address = start + size - 1 NonNegativeInteger required
RAMstart Base address for the RAM where the Flash programming algorithm will be executed from. If specified, the memory element does not require a default attribute. NonNegativeInteger optional
RAMsize Maximum size of RAM available for the execution of the Flash programming algorithm. End address = start + size - 1 is used for the Stack. If specified, the memory element does not require a default attribute. NonNegativeInteger optional
default If true, then this is the default Flash programming algorithm that gets configured in a project. If not specified or set to false, then the Flash programming algorithm can be configured on a lower level. However, the Flash programming algorithm of a project can be changed manually at any time during development. xs:boolean optional
style [Version 1.4.0] Today, different toolchains support different styles of incompatible flash programming algorithms. The attribute specifies the style of the specified flash programming algorithm. For backward compatibility the default value is Keil. The aim is to converge to the CMSIS style. AlgorithmStyleEnum

optional

+

+
+

 

+
+

+/package/devices/family/.../flashinfo

+

Specify Flash information that the debugger can use to erase and program Flash memories without the use of target RAM based Flash download algorithms.
+ The child elements <block> and <gap> describe the memory and programming layout of a flash device:

+
    +
  • The first child element has the base address start.
  • +
  • The base address of the second child element is start incremented by the size of the first child element.
  • +
  • The base address of all following child elements calculates respectively.
  • +
+

Flash information can be defined on various levels. Multiple <flashinfo> elements are possible. If the memory range is identical, the one on the lower level takes precedence. Overlap of Flash information ranges is not allowed.

+

Example

+
<device ... >
+
...
+
<!-- Flash Device Info for this device -->
+
<flashinfo name="Internal Flash 1" start="0" pagesize="64" emptyval="0xFFFFFFFF" filler="0xFFFFFFFF" ptime="3000" etime="3000" Pname="Cortex-M23">
+
<block count="1" size="0x100" arg="0"/>
+
<block count="10" size="0x100" arg="0"/>
+
<gap size="0x10000" />
+
<block count="2" size="0x100" arg="1" />
+
</flashinfo>
+
...
+
</device>
+

 

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Parents Element Chain
family /package/devices/family
subFamily /package/devices/family/subFamily
device /package/devices/family/../device
Attributes Description Type Use
name Name of the specified flash device. xs:string required
start Base address of the specified flash device as mapped into target memory system. NonNegativeInteger required
pagesize Programming page size. NonNegativeInteger required
blankval Expected memory value for unprogrammed address ranges (64-bit value). The access size used to read back programmed memory defines the number of least significant bytes of this value that are compared. Defaults to 0xFFFFFFFFFFFFFFFF if not specified. NonNegativeInteger optional
filler Value that a debugger uses to fill the remainder of a programming page (64-bit value). The access size used in FlashBufferWrite defines the number of least significant bytes of this value to write. Defaults to 0xFFFFFFFFFFFFFFFF if not specified. NonNegativeInteger optional
ptime Timeout in milliseconds for programming a page. Defaults to 100 if not specified. xs:unsignedInt optional
etime Timeout in milliseconds for erasing a sector. Defaults to 300 if not specified. xs:unsignedInt optional
Pname Processor identifier. This attribute is mandatory for devices that embed multiple processors that require different algorithms. Only alphabetical characters, decimal digits, '-' and '_' are allowed. RestrictedString optional
Child Elements Description Type Occurrence
block /package/devices/family/.../flashinfo/block FlashInfoBlockType 0..*
gap /package/devices/family/.../flashinfo/gap FlashInfoGapType

0..*

+

+
+

 

+
+

+/package/devices/family/.../flashinfo/block

+

Specify properties of one or multiple subsequent blocks of flash device that have the attributes. Its base address calculates from the parent <flashinfo> start address incremented by the size of all previous <block> and <gap> elements of this flash device.

+ + + + + + + + + + + + + +
Parents Element Chain
flashinfo /package/devices/family/.../flashinfo
Attributes Description Type Use
count Number of subsequent blocks of this flash device with identical properties. NonNegativeInteger required
size Block size in bytes. The overall memory size that is covered by this <block> element is count times size. NonNegativeInteger required
arg An optional argument to pass to flash operation sequence.
+ A debugger writes this value to the pre-defined debug access variable __FlashArg at start of a flash operation. It is a non-negative number specific to this device. Defaults to 0 if not specified.
NonNegativeInteger

optional

+

+
+

 

+
+

+/package/devices/family/.../flashinfo/gap

+

Specify a gap between <block> elements of the parent. Its base address calculates from the parent <flashinfo> start address incremented by the size of all previous <block> and <gap> elements of this flash device.

+ + + + + + + + + +
Parents Element Chain
flashinfo /package/devices/family/.../flashinfo
Attributes Description Type Use
size Gap size in bytes. NonNegativeInteger

required

+

+
+

 

+
+

+/package/devices/family/.../book

+

Specifies documents related to a device. Books can be entered on various levels. The book element contains the location, filename, and extension of the file. The title is used for display purposes.

+

Example

+
<family Dfamily="STM32F4" Dvendor="STMicroelectronics:13">
+
...
+
<book name="Documents/STM32F40x_DS.PDF" title="STM32F40x Data Sheet"/> <!-- valid for all devices of the family -->
+
+
<subFamily DsubFamily="STM32F405">
+
<book name="Documents/STM32F4xx_RM.pdf" title="STM32F4 Series Reference Manual"/> <!-- valid for all devices of a subFamily -->
+
+
<device Dname="STM32F405OE">
+
<book name="Documents/STM32F405OE_DS.PDF" title="STM32F405OE - Data Sheet"/> <!-- valid for this device; Inherits all above -->
+
</device>
+
...
+
</family>
+

 

+ + + + + + + + + + + + + + + + + + + +
Parents Element Chain
family /package/devices/family
subFamily /package/devices/family/subFamily
device /package/devices/family/../device
Attributes Description Type Use
Pname Processor identifier. This attribute is mandatory for devices that embed multiple processors and where the book refers to a single processor only. Only alphabetical characters, decimal digits, '-' and '_' are allowed. RestrictedString optional
name File name of the document including the extension. The document path is relative to the package base folder. Directory/file names are case-sensitive. xs:string required
title Book title. Can be used for being displayed in various environments. xs:string required
public Set publishing permissions for the documentation. If <public> is true, then the vendor gives permission to extract the documentation from the pack and publish it on a web-page. Links to web pages are assumed to be public. The default value is false. xs:boolean optional
+

 

+
+

+/package/devices/family/.../compile

+

Specify header files and preprocessor defines for programming. This element can occur on various levels. Multiple elements are allowed. The last occurrence in the hierarchy determines the actual define.

+
Note
    +
  • In the example below, the device STM32F407IG will have a define STM32F407IG. Previous defines are overridden.
  • +
  • It is good practice to add both attributes (header and define) in the attributes list of the compile element together. This clarifies the relationship between header file and define.
  • +
  • The name of the header file should be exported by the IDE to the RTE_Components.h file using the #define CMSIS_device_header.
  • +
+
+

Example

+
<family Dfamily="STM32F4" Dvendor="STMicroelectronics:13">
+
...
+
<compile header="Device/Include/stm32f4xx.h"/>
+
+
<subFamily DsubFamily="STM32F407">
+
...
+
<compile header="Device/Include/stm32f4xx.h" define="STM32F40XX"/>
+
+
<device Dname="STM32F407IG">
+
<compile header="Device/Include/stm32f4xx.h" define="STM32F407IG"/>
+
</device>
+
</subFamily>
+
</family>
+
+ + + + + + + + + + + + + + + + +
Parents Element Chain
family /package/devices/family
subFamily /package/devices/family/subFamily
device /package/devices/family/../device
Attributes Description Type Use
Pname Processor identifier. This attribute is mandatory for devices that embed multiple processors if the header and define is different for each processor. Only alphabetical characters, decimal digits, '-' and '_' are allowed. RestrictedString optional
header C-header file with path relative to the installation. xs:string optional
define C-file name with device specific preprocessor defines. The path is relative to the installation. xs:string optional
+

 

+
+

+/package/devices/family/.../description

+

Brief description of the element. Can occur on various levels. Should only contain the unique features of the device. Number of bullet points should not exceed ten. To create a detailed feature list use the /package/devices/family/.../feature instead.

+

Example

+
<package>
+
<devices>
+
<family Dfamily="STM32F2" Dvendor="STMicroelectronics:13">
+
+
<description>
+
STM32F2 devices are designed for medical, industrial and consumer
+
applications and provide rich connectivity peripherals.
+
- At 120 MHz CPU clock: 150 DMIPS executing from Flash memory
+
- ART Accelerator for low-power Flash execution (175 µA/MHz @ 120 MHz)
+
- Flexible Memory Controller supports Compact Flash, SRAM, PSRAM, NOR and NAND
+
</description>
+
+
</family>
+
</devices>
+
</package>
+

 

+ + + + + + + + + + + + + +
Parents Element Chain
family /package/devices/family
subFamily /package/devices/family/subFamily
device /package/devices/family/../device
Attributes Description Type Use
Pname Processor Identifier. This attribute is mandatory for devices that embed multiple processors and where the description is specific to a single processor. Only alphabetical characters, decimal digits, '-' and '_' are allowed. RestrictedString optional
+

 

+
+

+/package/devices/family/.../environment

+

Tool-specific elements for a device.

+

Can occur on various levels.

+

Contains information that is specific for a development tool identified by the name attribute. The structure of the element is not specified in the schema file which gives the development tool full control of the element usage.

+

Example

+
<package>
+
<devices>
+
<family Dfamily="MySeries" Dvendor="Generic:5">
+
...
+
<environment name="MyConfigTool">
+
<file>MyConfigFile.cfg</file>
+
<control>MyControlString</control>
+
...
+
</environment>
+
...
+
</family>
+
</devices>
+
</package>
+
<package>
+
<devices>
+
<family Dfamily="XMC1000 Series" Dvendor="Infineon:7">
+
...
+
<environment name="uv" Pname="M0">
+
<CMisc>--C99</CMisc>
+
...
+
</environment>
+
...
+
</family>
+
</devices>
+
</package>
+


+

+ + + + + + + + + + + + + + + + + + + +
Parents Element Chain
family /package/devices/family
subFamily /package/devices/family/subFamily
device /package/devices/family/../device
Attributes Description Type Use
name Name of the development tool (for example, "uv" for uVision) xs:string required
Pname Identifies the processor the setting belongs to. Only alphabetical characters, decimal digits, '-' and '_' are allowed. RestrictedString optional
Child Elements Description Type Occurrence
any Any element that is available for the specified development tool.
+ For uVision, the following elements are available: <CMisc>, <AMisc>, <LMisc>, <preBuild1>, <preBuild2>, <preRun1>, <preRun2>, <postBuild1>, <postBuild2>, <postRun1>, <postRun>.
xs:anyAttribute 0..*
+

 

+
+

+/package/devices/family/.../feature

+

This element specifies peripherals that devices can have. This can be used on web sites for the display of device features.

+

Many device feature types are already predefined, such as timers, converters, Ethernet, USB, etc (for a complete list refer to table Device Feature Types). Features can be defined on various levels. Inner elements supersede outer elements.

+

Example

+
<package>
+
<devices>
+
<family Dfamily="STM32F4" Dvendor="STMicroelectronics:13">
+
...
+
<!-- Features that are in common to this device family. -->
+
<feature type="TimerOther" n="1" name="Independent Watchdog Timer"/>
+
<feature type="TimerOther" n="1" name="Window Watchdog Timer"/> <!-- The same feature type can be specified multiple times -->
+
<feature type="Other" n="1" name="Temperature Sensor"/>
+
<feature type="CoreOther" n="1" name="96-bit Unique Identifier"/>
+
<feature type="CoreOther" n="1" name="CRC Calculation Unit"/>
+
<feature type="DMA" n="16" name="General Purpose DMA with Centralized FIFO and Burst Support"/>
+
<feature type="PowerOther" n="1" name="POR, PDR, PVD, and BOR"/>
+
<feature type="XTAL" n="4000000" m="26000000" name="Crystal Oscillator"/>
+
<feature type="IntRC" n="16000000" name="Internal Factory-Trimmed RC"/>
+
<feature type="IntRC" n="32000" name="Internal RC with Calibration"/>
+
<feature type="RTC" n="32000" name="RTC with 32 kHz calibrated Oscillator and Battery Backup"/>
+
<feature type="PowerMode" n="3" name="Run, Stop, Standby"/>
+
<feature type="Temp" n="-40" m="85"/>
+
<feature type="Temp" n="-40" m="105"/>
+
<feature type="Timer" n="4" m="16" name="General Purpose Timer"/>
+
...
+
<subFamily DsubFamily="STM32F407">
+
<!-- Features that are in common to this subFamily. -->
+
<feature type="IOs" n="36"/> <!-- Adds new feature to subFamily -->
+
<feature type="Timer" n="7" m="32" name="General Purpose Timer"/> <!-- Adds to settings from <family> -->
+
+
+
<device Dname="STM32F407IE">
+
<!-- Feature specific to this device. All above features are inherited. -->
+
<feature type="QFP" n="176" name="LQFP 176 24x24x1.4"/>
+
</device>
+
</subFamily>
+
</family>
+
</devices>
+
</package>
+


+

+ + + + + + + + + + + + + + + + + + + + + +
Parents Element Chain
family /package/devices/family
subFamily /package/devices/family/subFamily
device /package/devices/family/../device
Attributes Description Type Use
Pname Processor Identifier. This attribute is mandatory for devices that embed multiple processors. Only alphabetical characters, decimal digits, '-' and '_' are allowed. RestrictedString optional
type A feature (peripheral), such as CAN, DMA, I/O, LCD, etc. Predefined values must be used as listed in the table Device Feature Types. DeviceFeatureTypeEnum required
n Depends on the element type. Check table Device Feature Types. xs:decimal optional
m Depends on the elemen type. Check table Device Feature Types. xs:decimal optional
name Descriptive name of the feature. For example, "16-bit down counting timer". If omitted, the Default Name is used as described in the table Device Feature Types. xs:string optional
+


+

+

Table: Device Feature Types

+

The table lists predefined device features (peripherals).

+
Note
The attribute name of the element /package/devices/family/.../feature is a descriptive text for a feature. If name is omitted, then the Default Name is used.
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
type=n=m=Default NameExampleExample shown as
NVICNumber of NVIC InterruptsN/ANVIC<feature type="NVIC" n="120" name="NVIC"/>NVIC with 120 interrupt sources
DMANumber of DMA ChannelsN/ADMA<feature type="DMA" n="16" name="High-Speed DMA"/>16-channel High-Speed DMA
CryptoBitwidth, given as decimal Number (see example)N/ACryptographic Engine<feature type="Crypto" n="128.256" name="HW accelerated AES Encryption Engine"/>128/256-bit HW accelerated AES Encryption Engine
RNGNumber of RNGsN/ARandom Number Generator<feature type="RNG" name="True Random Number Generator"/>True Random Number Generator
CoreOtherNumber of FeaturesN/AOther Core Feature<feature type="CoreOther" n=1 name="96-bit Unique Identifier"/>1 x 96-bit Unique Identifier
MemoryNumber of BytesN/AMemory<feature type="Memory" n="128" name="EEPROM"/>128 byte EEPROM
MemoryOtherNumber of MemoriesN/AOther Memory Type<feature type="MemoryOther" n="1" name="1 kB MRAM"/>1 x 1 kB MRAM
ExtBusBitwidth of Bus InterfaceN/AExternal Bus Interface<feature type="ExtBus" n="16" name="External Bus Interface for SRAM Communication"/>16-bit External Bus Interface for SRAM Communication
XTALMinimum Frequency in HzMaximum Frequency in HzExternal Crystal Oscillator<feature type="XTAL" n="4000000" m="25000000" name="External Crystal Oscillator"/>4 MHz .. 25 MHz External Crystal Oscillator
IntRCMinimum Frequency in HzMaximum Frequency in HzInternal RC Oscillator<feature type="IntRC" n="16000000" name="Internal RC Oscillator with +/- 1% accuracy"/>16 MHz Internal RC Oscillator with +/- 1% accuracy
PLLNumber of PLLsN/APLL<feature type="PLL" n="3" name="Internal PLL"/>3 Internal PLL
RTCRTC FrequencyN/ARTC<feature type="RTC" n="32000" name="Internal RTC"/>32 kHz Internal RTC
ClockOtherNumber of PeripheralsN/AOther Clock Peripheral<feature type="ClockOther" name="My special clock feature"/>My special clock feature
PowerModeNumber of Power ModesN/APower Modes<feature type="Mode" n="3" name="Run, Sleep, Deep-Sleep"/>3 Power Modes: Run, Sleep, Deep-Sleep
VCCMinimum Supply VoltageMaximum Supply VoltageOperating Voltage<feature type="VCC" n="1.8" m="3.6"/>1.8 V .. 3.6 V
ConsumptionMinimum Power ConsumptionTypical Power ConsumptionPower Consumption<feature type="Consumption" n="0.00004" m="0.002" name="Ultra-Low Power Consumption"/>40 uW/MHz .. 2 mW/MHz Ultra-Low Power Consumption
PowerOtherNumber of FeaturesN/AOther Power Feature<feature type="PowerOther" n="1" name="POR"/>1 x POR
BGANumber of BallsN/ABGA<feature type="BGA" n="256" name="Plastic Ball Grid Array"/>256-ball Plastic Ball Grid Array
CSPNumber of LeadsN/ACSP<feature type="CSP" n="28" name="Wafer-Level Chip-Scale Package"/>28-ball Wafer-Level Chip-Scale Package
PLCCNumber of LeadsN/APLCC<feature type="PLCC" n="20" name="PLCC Package"/>20-lead PLCC Package
QFNNumber of LeadsN/AQFN<feature type="QFN" n="33" name="QFN Package"/>33-pad QFN Package
QFPNumber of LeadsN/AQFP<feature type="QFP" n="128" name="Low-Profile QFP Package"/>128-lead Low-Profile QFP Package
SOPNumber of LeadsN/ASOP<feature type="SOP" n="16" name="SSOP Package"/>16-lead SSOP Package
DIPNumber of LeadsN/ASOP<feature type="DIP" n="16" name="Dual In-Line Package"/>16-lead Dual In-Line Package
PackageOtherNumber of PinsN/AOther Package Type<feature type="PackageOther" n="44" name="My other Package"/>44-contacts My other Package
IOsNumber of I/OsN/AInputs/Outputs<feature type="IOs" n="112" name="General Purpose I/Os, 5V tolerant"/>112 General Purpose I/Os, 5V tolerant
ExtIntNumber of External InterruptsN/AExternal Interrupts<feature type="ExtInt" n="12"/>12 External Interrupts
TempMinimum Operating TemperatureMaximum Operating TemperatureOperating Temperature Range<feature type="Temp" n="-40" m="105" name="Extended Operating Temperature Range"/>-40 °C .. +105 °C Extended Operating Temperature Range
ADCNumber of ChannelsResolution in BitADC<feature type="ADC" n="5" m="12" name="High-Performance ADC"/>5-channel x 12-bit High-Performance ADC
DACNumber of ChannelsResolution in BitDAC<feature type="DAC" n="2" m="10"/>2 x 12-bit DAC
TempSensNumber of SensorsN/ATemperature Sensor<feature type="TempSens" n="1"/>1 x Temperature Sensor
AnalogOtherNumber of FeaturesN/AOther Analog Peripheral<feature type="AnalogOther" n="1" name="My Analog"/>1 x My Analog
TimerNumber of ChannelsResolution in BitTimer/Counter Module<feature type="Timer" n="2" m="32" name="Timer Module with Quadrature Encoding"/>2 x 32-bit Timer Module with Quadrature Encoding
PWMNumber of ChannelsResolution in BitPWM<feature type="PWM" n="2" m="16" name="Pulse Width Modulation"/>2 x 16-bit Pulse Width Modulation
WDTNumber of WatchdogsN/AWatchdog<feature type="WDT" n="1"/>1 x Watchdog Timer
TimerOtherNumber of FeaturesN/AOther Timer Peripheral<feature type="TimerOther" n="1" name="Quadrature En-/Decoder"/>1 x Quadrature En-/Decoder
MPSerialNumber of Serial PeripheralsN/AMulti-Purpose Serial Peripheral<feature type="MPSerial" n="4" name="Multi-Purpose Serial Interface Module: I2C, I2S, SPI, UART"/>4 x Multi-Purpose Serial Interface Module: I2C, I2S, SPI, UART
CANNumber of CAN InterfacesN/ACAN<feature type="CAN" n="2" name="CAN 2.0b Controller"/>2 x CAN 2.0b Controller
ETHNumber of Ethernet InterfacesData Rate in Bit/sEthernet<feature type="ETH" n="1" m="10000000" name="Integrated Ethernet MAC with PHY"/>1 x 10 Mbit/s Integrated Ethernet MAC with PHY
I2CNumber of I2C InterfacesN/AI2C<feature type="I2C" n="2"name="Low-Power I2C"/>2 x Low-Power I2C
I2SNumber of I2S InterfacesN/AI2S<feature type="I2S" n="3"/>3 x I2S
LINNumber of LIN InterfacesN/ALIN<feature type="LIN" n="4"/>4 x LIN
SDIONumber of SDIO InterfacesBitwidth of SDIO InterfaceSDIO<feature type="SDIO" n="1" m="4" name="SDIO Interface"/>1 x 4-bit SDIO Interface
SPINumber of SPI InterfacesData Rate in Bit/sSPI<feature type="SPI" n="2" m="20000000" name="SPI Interface"/>2 x 20 Mbit/s SPI Interface
UARTNumber of UART InterfacesData Rate in Bit/sUART<feature type="UART" n="4" m="3000000" name="High-Speed UART Interface"/>4 x 3 Mbit/s High-Speed UART Interface
USARTNumber of USART InterfacesData Rate in Bit/sUSART<feature type="USART" n="2" m="1000000" name="High-Speed USART Interface"/>2 x 1 Mbit/s High-Speed USART Interface
USBDNumber of USB Dvice InterfacesN/AUSB Device<feature type="USBD" n="2" name="Full-Speed USB Device"/>2 x Full-Speed USB Device
USBHNumber of USB Host InterfacesN/AUSB Host<feature type="USBH" n="2" name="High-Speed USB Host"/>2 x High-Speed USB Host
USBOTGNumber of USB OTG InterfacesN/AUSB OTG<feature type="USBOTG" n="1" name="High-Speed USB OTG with PHY"/>1 x High-Speed USB OTG with PHY
ComOtherNumber of other Communication PeripheralsN/AOther Communication Peripheral<feature type="ComOther" n="1" name="ZigBee"/>1 x ZigBee
CameraNumber of Camera InterfaceResolution in BitCamera Interface<feature type="Camera" n="1" m="8" name="Digital Camera Interface"/>1 x 8-bit Digital Camera Interface
GLCDNumber of Graphic LCD ControllerMaximum Resolution as a decimal number (see example)Graphic LCD Controller<feature type="GLCD" n="1" m="320.240" name="TFT LCD Controller"/>1 x 320 x 480 pixel TFT LCD Controller
LCDNumber of Segment LCD ControllerCom.Seg as a decimal number (see example)Segment LCD Controller<feature type="LCD" n="1" m="16.40" name="Segment LCD Controller"/>1 x 16 x 40 Segment LCD Controller
TouchNumber of Touch ChannelsN/ACapacitive Touch Inputs<feature type="Touch" n="10" name="Capacitive Touch Inputs"/>10 x Capacitive Touch Inputs
OtherNumber of FeaturesN/AOther Feature<feature type="Other" n="2" name="My other Interface"/>2 x My other Interface
+

 

+
+

+/package/devices/family/.../memory

+

This element specifies memory regions that devices can have. Memory types are predefined and can be selected. This element can be defined on various levels. Inner memory elements supersede outer elements.

+

Example

+
</package>
+
...
+
<devices>
+
<family Dfamily="STM32F4" Dvendor="STMicroelectronics:13">
+
<memory name="SRAM" access="rwx" start="0x20000000" size="0x20000" default="1"/>
+
+
<subFamily DsubFamily="STM32F407">
+
<debug __dp="0" __ap="0" svd="SVD/STM32F40x.svd"/>
+
<memory name="SRAM1" access="rwx" start="0x20020000" size="0x20000" default="1"/>
+
<memory name="SRAM2" access="rwx" start="0x10000000" size="0x10000" default="1"/>
+
+
<device Dname="STM32F407IE">
+
<memory name="Flash" access="rx" start="0x08000000" size="0x80000" startup="1" default="1"/>
+
</device>
+
+
</subFamily>
+
</family>
+
</devices>
+
...
+
</package>
+


+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Parents Element Chain
family /package/devices/family
subFamily /package/devices/family/subFamily
device /package/devices/family/../device
Attributes Description Type Use
Pname Processor identifier. This attribute is mandatory for devices that embed multiple processors. Only alphabetical characters, decimal digits, '-' and '_' are allowed. RestrictedString optional
id (deprecated in Version 1.4.0) (deprecated Version 1.4.0) Identifier of the memory region consisting of a type indicator and an index (for example, IRAM1). Predefind values can be selected as defined in MemoryIDTypeEnum. MemoryIDTypeEnum optional
name (new in Version 1.4.0) unique name of the memory (new in Version 1.4.0) to be used in conjunction with access xs:string optional
access (new in Version 1.4.0) access permission of the memory. See MemoryAccessTypeString for details (new in Version 1.4.0). MemoryAccessTypeString optional
start Base address of the memory using a hexadecimal value. NonNegativeInteger required
size Size of the memory in bytes using a hexadecimal value. NonNegativeInteger required
default Indicates a general purpose memory region, that does not require any special considerations (access speed, remapping, protection, etc.). If true, then an IRAM memory region will be used by the linker for locating any data and an IROM memory region will for locating any code. Every device needs at least one default IRAM region. If an algorithm element is specified (without RAMstart and RAMsize attributes), the first listed IRAM region with default="1" will also be used for executing the flash programming algorithm. Default value is false. xs:boolean optional
startup If true, the startup code of the application will be placed into this memory region. Default value is false. xs:boolean optional
alias(new in Version 1.4.0) reference to another memory description which shares the same physical memory. Some physical memory is made accessible via different addresses, for example, chached vs. non-cached accesses. This avoids the impression that the device has twice as much memory available. xs:string optional
+


+ Table: Memory ID Types

+

The table lists identifiers for memory types.

+ + + + + + + + + + + +
id= Description
RAMx External RAM. x can have a value between 1..8
ROMx External ROM. x can have a value between 1..8
IRAMx Internal RAM. x can have a value between 1..8
IROMx Internal ROM. x can have a value between 1..8
+

 

+
+

Table: Memory Access Attribute String

+

The table lists the letters and their meaning for use in the access attribute string. The values can be used in:

+ + + + + + + + + + + + + + + + + + +
access= Description
r Readable
w Writable
x eXecutable
p Peripheral area. Details described in SVD.
s Secure attribute
n Non-secure attribute
c non-secure Callable attribute
+

 

+
+

+/package/devices/family/.../processor

+

Specifies attributes of the device processor. The element can occur on various levels. The attributes add-up over the different levels (family -> subFamily -> device). Elements of multi-processor devices can be associated with a specific processor using the attribute <Pname>. If the information is relevant to all processors, no processor must be specified in <Pname>.

+

Example 1

+
<package>
+
...
+
<devices>
+
<family Dfamily="K20 Series" Dvendor="NXP:11">
+
<processor Dcore="Cortex-M4" DcoreVersion="r0p1"/>
+
<!-- ****************************** MK20DN128xxx5 ****************************** -->
+
<device Dname="MK20DN128xxx5">
+
<processor Dfpu="0" Dmpu="0" Dendian="Little-endian" Dclock="50000000"/>
+
</device>
+
...
+
</family>
+
</devices>
+
...
+
</package>
+

Example 2

+
<device name="MCIMX7D">
+
...
+
<processor Dcore="Cortex-A7" DcoreVersion="r0p5" Pname="Cortex-A7" Punits="2" />
+
<processor Dcore="Cortex-M4" DcoreVersion="r0p1" Pname="Cortex-M4"/>
+
...
+
<debug Pname="Cortex-A7" Punit="0" svd="SVD/iMX7D_A7.svd" __dp="0" __ap="1" address="0x80070000"/>
+
<debug Pname="Cortex-A7" Punit="1" svd="SVD/iMX7D_A7.svd" __dp="0" __ap="1" address="0x80072000"/>
+
<debug Pname="Cortex-M4" svd="SVD/iMX7D_M4.svd" __dp="0" __ap="4"/>
+
...
+
</device>
+

 

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Parents Element Chain
family /package/devices/family
subFamily /package/devices/family/subFamily
device /package/devices/family/../device
Attributes Description Type Use
Pname Processor identifier. This attribute is mandatory for devices that embed multiple processors. Each processor needs a unique identifier and must be used consistently in the Pname attribute of the elements within the scope of the current device family section. Only alphabetical characters, decimal digits, '-' and '_' are allowed. RestrictedString required for all multi-core devices
Punits Specifies the number of processor units in a symmetric multi-processor core (MPCore). Defaults to single-core CPU (1) when left empty. InstancesType required for all multi-core devices
Dcore Specifies the processor core. Use predefined values as listed in the table Device Cores. DcoreEnum required
Dfpu Specifies whether a hardware Floating Point Unit is present in the processor. Use predefined values as listed in the table Device FPU. DfpuEnum required
Dmpu Specifies whether a Memory Protection Unit is present in the processor. Use predefined values as listed in the table Device MPU. DmpuEnum required
Dtz Specifies whether an Armv8-M based device implements TrustZone. Use predefined values as listed in the table Device TZ. DtzEnum required for ARMv8-M based devices
Ddsp Specifies whether a device supports the DSP instructions set. Use predefined values as listed in the table Device DSP. DdspEnum required
Dendian Specifies the endianess of the processor. Use predefined values as listed in the table Endinaness. DendianEnum required
Dclock Specifies the max clock frequency of the processor subsystem xs:unsignedInt required
DcoreVersion Hardware revision of the processor core xs:string required
+
Note
While the different attributes can be spreaded over the family levels, they add-up and at the leaf (device level), a complete set of attributes should be present (at least Dcore, Dfpu, Dmpu, Ddsp, Dendian, Dclock, and DcoreVersion). Adding-up means that you can overwrite previous attributes on the next level. For example, if you have a subFamily that has a general Dclock of 50000000 (50 Mhz), you can still specify for one of the subFamily members a different Dclock (such as 66000000).
+

 

+

Table: Device Vendors

+

The table lists predefined values representing device vendors. The list is extended from time to time (on request by new vendors). Contact cmsis.nosp@m.@arm.nosp@m..com to ask for an extension. These values can be used in the elements:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Dvendor Description Web Link
ABOV Semiconductor:126 ABOV Semiconductor http://www.abov.co.kr/en/
Active-Semi:140 Active-Semi http://www.active-semi.com
Ambiq Micro:120 Ambiq Micro http://www.ambiqmicro.com
Amiccom:147 Amiccom http://www.amiccom.com.tw
Analog Devices:1 Analog Devices http://www.analog.com
ARM:82 ARM Ltd. http://www.arm.com
ArteryTek:143 ArteryTek http://www.arterytek.com
Atmel:3 Atmel Corporation (now Microchip) http://www.microchip.com
Autochips:150 Autochips Inc. http://www.autochips.com/en/index.php
CSR:118 CSR http://www.csr.com
Cypress:19 Cypress Semiconductor http://www.cypress.com
Dialog Semiconductor:113 Dialog Semiconductor http://www.dialog-semiconductor.com
Elmos Semiconductor AG:138 Elmos Semiconductor AG http://www.elmos.com
Generic:5 Generic: Not a vendor specific device
Generalplus:151 Generalplus Technology Inc. http://www.generalplus.com
GigaDevice:123 GigaDevice http://www.gigadevice.com
HDSC:145 HUADA Semiconductor http://www.hdsc.com.cn
Hilscher:88 Hilscher Gesellschaft für Systemautomation mbH http://www.hilscher.com
Holtek:106 Holtek Microelectronics http://www.holtek.com.tw
Infineon:7 Infineon Technologies http://www.infineon.com
Lapis Semiconductor:10 Lapis Semiconductor http://www.lapis-semi.com
Linear Technolgy:136 Linear Technolgy http://www.linear.com/
Maxim:23 Maxim Integrated http://www.maximintegrated.com
MediaTek:129 MediaTek http://www.mediatek.com
MegaChips:128 MegaChips http://www.megachips.com
Megawin:70 Megawin http://www.megawin.com.tw
Microchip:3 Microchip (previously Atmel) http://www.microchip.com
MicroSemi:112 Microsemi http://www.microsemi.com
Milandr:99 Milandr http://www.milandr.ru
MindMotion:132 MindMotion http://www.mindmotion.com.cn
Nordic Semiconductor:54 Nordic Semiconductor http://www.nordicsemi.com
Nuvoton:18 Nuvoton Technolgy Corp. http://www.nuvoton.com
NXP:11 NXP http://www.nxp.com
ONSemiconductor:141 ON Semiconductor https://www.onsemi.com
Panasonic:131 Panasonic http://www.panasonic.com/industrial
Realtek Semiconductor:124 Realtek Semiconductor http://www.realtek.com.tw
Redpine Signals:125 Repine Signals http://www.redpinesignals.com
RelChip:146 RelChip http://www.relchip.com/
Renesas:117 Renesas http://www.renesas.com
ROHM:103 ROHM http://www.rohm.com
Samsung:47 Samsung Semiconductor http://www.samsung.com
Silergy Corp:139 Silergy Corporation http://silergy.com/
Silicon Labs:21 Silicon Labs http://www.silabs.com
Sinowealth:149 Sino Wealth Electronic Ltd. http://www.sinowealth.com
Spansion:100 Spansion (previously Fujitsu) http://www.spansion.com
STMicroelectronics:13 STMicroelectronics http://www.st.com
Synwit:144 Synwit Technology Co.,LTD. http://www.synwit.cn
Texas Instruments:16 Texas Instruments http://www.ti.com
Toshiba:92 Toshiba Semiconductor http://toshiba.semicon-storage.com
Triad Semiconductor:104 Triad Semiconductor http://www.triadsemi.com
Vorago:137 Vorago Technologies http://www.voragotech.com
WIZnet:122 WIZnet http://www.wiznet.co.kr
Xinnova:135 Xinnova Technology http://www.xinnovatech.com/en
Zilog:89 Zilog http://zilog.com/
+

 

+

Table: Algorithm Styles

+

The table lists the predefined Flash algorithm style. These values can be used in:

+ + + + + + + + + + +
style= Description
Keil Flash Programming as defined by Arm/Keil
IAR Flash Programming Algorithm as defined by IAR
CMSIS

To be agreed under CMSIS

+

+
+

 

+

Table: Device Cores

+

The table lists available device cores. The list is extended from time to time to reflect new processor cores. These values can be used in the elements:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Dcore= Description
Cortex-M0 Arm Cortex-M0 processor based device
Cortex-M0+ Arm Cortex-M0+ processor based device
Cortex-M1 Arm Cortex-M1 processor based device
Cortex-M3 Arm Cortex-M3 processor based device
Cortex-M4 Arm Cortex-M4 processor based device
Cortex-M7 Arm Cortex-M7 processor based device
Cortex-M23 Arm Cortex-M23 processor based device
Cortex-M33 Arm Cortex-M33 processor based device
SC000 SecurCore SC000 based on technology of Cortex-M0.
SC300 SecurCore SC300 based on technology of Cortex-M3.
ARMV8MBL Processor ArmV8MBL compliant with the Armv8-M Baseline Architecture.
ARMV8MML Processor ArmV8MML compliant with the Armv8-M Mainline Architecture.
Cortex-R4 Arm Cortex-R4 processor based device
Cortex-R5 Arm Cortex-R5 processor based device
Cortex-R7 Arm Cortex-R7 processor based device
Cortex-R8 Arm Cortex-R8 processor based device
Cortex-A5 Arm Cortex-A5 processor based device
Cortex-A7 Arm Cortex-A7 processor based device
Cortex-A8 Arm Cortex-A8 processor based device
Cortex-A9 Arm Cortex-A9 processor based device
Cortex-A15 Arm Cortex-A15 processor based device
Cortex-A17 Arm Cortex-A17 processor based device
Cortex-A32 Arm Cortex-A32 processor based device
Cortex-A35 Arm Cortex-A35 processor based device
Cortex-A53 Arm Cortex-A53 processor based device
Cortex-A57 Arm Cortex-A57 processor based device
Cortex-A72 Arm Cortex-A72 processor based device
Cortex-A73 Arm Cortex-A73 processor based device
* Device based on any processor
+

 

+

Table: Device FPU

+

The table lists values that identicate whether a CPU has an Floating Point Unit (FPU). The tokens can be used in the elements:

+ + + + + + + + + + + + +
Dfpu= Description
NO_FPU Hardware Floating Point Unit not present
FPU Hardware Floating Point Unit present
SP_FPU Single Precision Hardware Floating Point Unit present
DP_FPU Double Precision Hardware Floating Point Unit present
+

 

+

Table: Device MPU

+

The table shows predefined values that identify whether a CPU has an Memory Protection Unit (MPU). The values can be used in the elements:

+ + + + + + + + +
Dmpu= Description
MPU Memory Protection Unit is present
NO_MPU No Memory Protection Unit is present
+

 

+

Table: Device Trust Zone

+

The table shows predefined values that identify whether a CPU implements TrustZone(TZ). The values can be used in the elements:

+ + + + + + + + +
Dtz= Description
TZ TrustZone is present
NO_TZ No TrustZone is present
+

 

+

Table: Software Model Secure

+

The table shows predefined values that identify whether an application will run in secure mode. The values can be used in the elements:

+ + + + + + + + +
Dsecure= Description
Secure Application is built to run in secure mode
Non-secure Application is built to run in non-secure mode
+

 

+

Table: Device implements DSP Instructions

+

The table shows predefined values that identify whether a CPU implements DSP instructions (DSP). The values can be used in the elements:

+ + + + + + + + +
Ddsp= Description
DSP DSP instructions supported
NO_DSP No DSP instructions supported
+

 

+

Table: Endianness

+

The table lists values representing the endianness of a device. The values can be used in the elements:

+ + + + + + + + + + +
Dendian= Description
Little-endian The least significant byte of a multi-byte access is located at the specified address.
Big-endian The most significant byte of a multi-byte access is located at the specified address.
Configurable The byte ordering of multi-byte accesses is configurable.
+

 

+
+

+/package/devices/family/.../debugconfig

+

Default debugger configuration for a target connection.

+

Example

+
<family Dfamily="LPC4300 Series" Dvendor="NXP:11">
+
...
+
<debugconfig default="jtag" clock="10000000" swj="1" sdf="Debug/SDF/lpc4300.sdf"/>
+
...
+
</family>
+

 

+ + + + + + + + + + + + + + + + + + + +
Parents Element Chain
family /package/devices/family
subFamily /package/devices/family/subFamily
device /package/devices/family/../device
Attributes Description Type Use
default Specifies the default debug protocol to use for target connections. Predefined tokens must be used as defined in Table: Debug Protocol Type. Default value is swd. DebugProtocolEnum optional
clock Specifies the default debug clock setting in Hz for a target connection. Default value is 10000000. xs:unsignedInt optional
swj The device is accessed via a CoreSight SWJ-DP capable of switching between Serial Wire Debug (SWD) and JTAG protocols. Default value is true. xs:bool optional
sdf This attribute specifies the filename and path of the system description file (SFD). The system description file contains information about CoreSight components, there versions and how they are interconnected and hooked to debug and access ports. If not specified an autodetection needs to be initiated by the debugger at connection time. xs:string optional
+

 

+

Table: Debug Protocol Type

+

The table lists the values for debug protocol types. The values can be used in

+ + + + + + + + + + +
type= Description
jtag JTAG debug protocol.
swd Arm Serial Wire Debug (SWD) protocol.
cjtag CJTAG concurrent jtag debug protocol.
+

 

+
+

+/package/devices/family/.../debugvars

+

Specify global debug access variables. Use these in addition to the pre-defined variables in order to query settings from a debug access sequences.
+
+ Define debug access variables with statements of the following form.

+
__var uservar = value; // Comment: Define "uservar" and initialize to "value"
+
Note
    +
  • Initialization values must be constant unsigned numbers. No expressions are allowed.
  • +
  • User-defined debug access variables are read-only in a debug access sequence.
  • +
  • Pre-defined debug access variables cannot be set in this element.
  • +
+
+

Example

+
<family Dfamily="EFM32WG Series" Dvendor="Energy Micro:97">
+
...
+
<debugvars configfile="Debug/EFM32WGxxx.dbgconf" version="1.0">
+
+
__var __TPIU_pinlocation = 0; // Select one of four possible TPIU pin locations
+
+
__var __SWO_pinlocation = 0; // Select one of four possible SWO pin locations
+
+
</debugvars>
+
...
+
<sequences>
+
<sequence name="TraceStart">
+
...
+
<block if="__TPIU_pinlocation == 2">
+
...
+
<!-- Configure device to use pins as defined for TPIU pin location 2 -->
+
...
+
</block>
+
...
+
</sequence>
+
</sequences>
+
...
+
<debug __dp="0" __ap="0"/>
+
...
+
</family>
+

 

+ + + + + + + + + + + + + + + + + +
Parents Element Chain
family /package/devices/family
subFamily /package/devices/family/subFamily
device /package/devices/family/../device
Attributes Description Type Use
configfile Configuration file with path relative to the package base folder (extension *.DBGCONF). This file contains assignments of a default value to global debug access variables. This file gets copied to the project folder and is editable by the end-user. This file is read by the debugger after processing the global debug access variables. By editing the values of the debug access variables, the end-user effectively controls the behavior of sequences. The file can only assign new values but must not specify any new debug access variables. Configuration Wizard Annotations shall be used within the file to provide a graphical user interface for editing configuration options. xs:string optional
version Version refers to the file version of the configfile attribute. If a configfile is specified the version attribute becomes mandatory. The version shall be incremented if any changes have been made to the global debug access variable names or default values. Based on the version information the tool environment will load a configfile with the version required by the debug description. The end-user may be required to update the settings after updating to a new version. VersionType optional
Pname Reference to a processor identifier as specified for a processor element. If Pname is set for this debugvars element, the debug access variables and configfile of this element are only valid for a debug connection to the referenced processor. Otherwise, they are valid for all processors. This attribute must be set if defining multiple debugvars sections for a device. Only alphabetical characters, decimal digits, '-' and '_' are allowed. RestrictedString optional
+

 

+

Example: Configuration File

+
// File: EFM32WGxxx.dbgconf
+
// Version: 1.0
+
// <<< Use Configuration Wizard in Context Menu >>>
+
// <h>Trace Pin Setup
+
// <o> TPIU Pin Location
+
// <0=> Pin Location 0
+
// <1=> Pin Location 1
+
// <2=> Pin Location 2
+
// <3=> Pin Location 3
+
// <i> Select TPIU pin location for your board configuration:
+
// <i> - Pin Location 0 (TRACECLK: PD7, TRACEDATA0: PD6, TRACEDATA1: PD3, TRACEDATA2: PD4, TRACEDATA3: PD5)
+
// <i> - Pin Location 1 (TRACECLK: PF8, TRACEDATA0: PF9, TRACEDATA1: PD13, TRACEDATA2: PB15, TRACEDATA3: PF3)
+
// <i> - Pin Location 2 (TRACECLK: PC6, TRACEDATA0: PC7, TRACEDATA1: PD3, TRACEDATA2: PD4, TRACEDATA3: PD5)
+
// <i> - Pin Location 3 (TRACECLK: PA6, TRACEDATA0: PA2, TRACEDATA1: PA3, TRACEDATA2: PA4, TRACEDATA3: PA5)
+
// <i> Default: Pin Location 0
+
__TPIU_pinlocation = 0;
+
+
// <o> SWO Pin Location
+
// <0=> Pin Location 0
+
// <1=> Pin Location 1
+
// <2=> Pin Location 2
+
// <3=> Pin Location 3
+
// <i> Select SWO pin location for your board configuration:
+
// <i> - Pin Location 0 (SWO: PF2)
+
// <i> - Pin Location 1 (SWO: PC15)
+
// <i> - Pin Location 2 (SWO: PD1)
+
// <i> - Pin Location 3 (SWO: PD2)
+
// <i> Default: Pin Location 0
+
__SWO_pinlocation = 0;
+
+
// </h>
+
// <<< end of configuration section >>>
+

 

+
+

+/package/devices/family/.../debugport

+

Describes a CoreSight debug port of the device and its capabilities. The element can occur on various levels. Use unique ID values for the attribute __dp to distinguish multiple debugport elements in later references.

+

debugport elements are required for targets with multiple debug ports. These elements can be omitted for devices with a single debug port. If no debugport element exists, then the only allowed __dp ID in later references is 0.

+

Example

+
<family Dfamily="LPC4300 Series" Dvendor="NXP:11">
+
...
+
<debugconfig default="jtag" clock="10000000" swj="1"/>
+
+
<debugport __dp="0">
+
<jtag tapindex="0"/>
+
<swd/>
+
</debugport>
+
+
<debugport __dp="1">
+
<jtag tapindex="1"/>
+
</debugport>
+
...
+
</family>
+

 

+ + + + + + + + + + + + + + + + + + + + + +
Parents Element Chain
family /package/devices/family
subFamily /package/devices/family/subFamily
device /package/devices/family/../device
Attributes Description Type Use
__dp Unique ID of this debugport. It must be used consistently in references within the scope of the parent section. xs:unsignedInt required
Child Elements Description Type Occurrence
jtag Describe JTAG Test Access Port (TAP) properties of this debug port. JtagType 0..1
swd Describe CoreSight Serial Wire Debug Port (SW-DP) properties of this debug port. SwdType 0..1
cjtag Describe CJTAG Test Access Port (TAP) properties of this debug port. CjtagType 0..1
+

 

+
+

+/package/devices/family/.../debugport/jtag

+

Indicates availability of a JTAG interface for the debugport parent element. Its attributes allow the manual override of a debugger's automatic JTAG Test Access Port (TAP) detection.

+

Example

+
<family Dfamily="STM32F4" Dvendor="STMicroelectronics:13">
+
...
+
<debugconfig default="swd" clock="10000000" swj="1"/>
+
+
<debugport __dp="0">
+
<jtag tapindex="0" idcode="0x4BA00477" irlen="4"/>
+
<swd idcode="0x2BA01477"/>
+
</debugport>
+
...
+
</family>
+

 

+ + + + + + + + + + + + + +
Parents Element Chain
debugport /package/devices/family/.../debugport
Attributes Description Type Use
tapindex Specifies the TAP index relative to the JTAG scan chain of this device. A debugger needs to determine the absolute index if the device is part of an extended scan chain. Default value is 0. NonNegativeInteger optional
idcode Specifies the IDCODE of the JTAG TAP. This value overrides the IDCODE read from the target. NonNegativeInteger

optional

+

+
irlen Specifies the instruction register length of the JTAG TAP. This value overrides the instruction register length detected by a debugger. xs:unsignedInt optional
+

 

+
+

+/package/devices/family/.../debugport/swd

+

Indicates availability of an Arm Serial Wire Debug (SWD) interface for the debugport parent element. Its attributes allow the manual override of SWD port characteristics as read from the target and provide information for the port selection in a system with multi-drop SWD support.

+

Example

+
<family Dfamily="STM32F4" Dvendor="STMicroelectronics:13">
+
...
+
<debugconfig default="swd" clock="10000000" swj="1"/>
+
+
<debugport __dp="0">
+
<jtag tapindex="0" idcode="0x4BA00477" irlen="4"/>
+
<swd idcode="0x2BA01477"/>
+
</debugport>
+
...
+
</family>
+

 

+ + + + + + + + + +
Parents Element Chain
debugport /package/devices/family/.../debugport
Attributes Description Type Use
idcode Specifies the IDCODE of the SWD port. It overrides the value read from the port's IDCODE register. NonNegativeInteger

optional

+

+
+

 

+
+

+/package/devices/family/.../debugport/cjtag

+

Indicates availability of a CJTAG interface for the debugport parent element. Its attributes allow the manual override of a debugger's automatic CJTAG Test Access Port (TAP) detection.

+

Example

+
<family Dfamily="STM32F4" Dvendor="STMicroelectronics:13">
+
...
+
<debugconfig default="swd" clock="10000000" swj="1"/>
+
+
<debugport __dp="0">
+
<cjtag tapindex="0" idcode="0x4BA00477" irlen="4"/>
+
<swd idcode="0x2BA01477"/>
+
</debugport>
+
...
+
</family>
+

 

+ + + + + + + + + + + + + +
Parents Element Chain
debugport /package/devices/family/.../debugport
Attributes Description Type Use
tapindex Specifies the TAP index relative to the JTAG scan chain of this device. A debugger needs to determine the absolute index if the device is part of an extended scan chain. Default value is 0. NonNegativeInteger optional
idcode Specifies the IDCODE of the JTAG TAP. This value overrides the IDCODE read from the target. NonNegativeInteger optional
irlen Specifies the instruction register length of the JTAG TAP. This value overrides the instruction register length detected by a debugger. xs:unsignedInt optional
+

 

+
+

+/package/devices/family/.../sequences

+

Container for debug access sequences for this device.

+

Example

+
<family Dfamily="LPC4300 Series" Dvendor="NXP:11">
+
...
+
<sequences>
+
...
+
<sequence name="DebugCoreStart" Pname="Cortex-M0">
+
...
+
</sequence>
+
...
+
<sequence name="ResetSystem" Pname="Cortex-M4">
+
...
+
</sequence>
+
...
+
<sequence name="TraceStart" Pname="Cortex-M4">
+
...
+
</sequence>
+
...
+
</sequences>
+
...
+
</family>
+

 

+ + + + + + + + + + + + + +
Parents Element Chain
family /package/devices/family
subFamily /package/devices/family/subFamily
device /package/devices/family/../device
Child Elements Description Type Occurrence
sequence Describe a debug access sequence. SequenceType 1..*
+

 

+
+

+/package/devices/family/.../sequences/sequence

+

Describes a Debug Access Sequence which contains control and block elements. block elements contains statements including calls to Debug Access Functions. A Debug Access Sequence overrides or extends the default functionality of a development tool. Refer to Usage of debug access sequences for details.
+

+
Note
    +
  • control elements can contain other control and block elements. The maximum nesting of control elements is 10.
  • +
+
+

Example

+
<family Dfamily="Generic Family" Dvendor="Generic:5">
+
...
+
<sequences>
+
...
+
<sequence name="UserSequence">
+
+
<block info="Define variables and do debug accesses">
+
__var tpWidth = (__traceout &amp; 0x003F0000) >> 16;
+
...
+
</block>
+
+
<control if="__traceout &amp; 0x2" info="Parallel Trace Port enabled">
+
+
<block>
+
// Do something generic for parallel trace port trace
+
...
+
</block>
+
+
<control if="tpWidth == 1" info="Configure device for 1-bit TPIU trace.">
+
+
<block>
+
// Do debug accesses
+
...
+
</block>
+
+
</control>
+
+
<control if="tpWidth == 2" info="Configure device for 2-bit TPIU trace.">
+
+
<block>
+
// Do debug accesses
+
...
+
</block>
+
+
</control>
+
+
<control if="tpWidth == 4" info="Configure device for 4-bit TPIU trace.">
+
+
<block>
+
// Do debug accesses
+
...
+
</block>
+
+
</control>
+
+
</control>
+
...
+
</sequence>
+
...
+
</sequences>
+
...
+
</family>
+

 

+ + + + + + + + + + + + + + + + + + + + + +
Parents Element Chain
sequences /package/devices/family/.../sequences
Attributes Description Type Use
name Name of the Debug Access Sequence:
+ +
xs:string required
Pname Reference to a processor identifier as specified for a processor element. If Pname is set for this sequence element, a debugger executes the debug access sequence only for a debug connection to the referenced processor. Otherwise, it is executed for all processors. This attribute must be set if defining multiple implementations of the same debug access sequence. Only alphabetical characters, decimal digits, '-' and '_' are allowed. RestrictedString optional
disable Disables execution of the Default Debug Access Sequence. xs:boolean optional
info Descriptive text to display for example for error diagnostics. xs:string optional
Child Elements Description Type Occurrence
control Describe a debug access sequence flow control element. SequenceControlType 0..*
block Describe a block of debug accesses. SequenceBlockType 0..*
+

+/package/devices/family/.../sequences/sequence/control

+

Describes flow control like if and while blocks for debug access sequences.

+

Example

+
<family Dfamily="Generic Family" Dvendor="Generic:5">
+
...
+
<sequences>
+
...
+
<sequence name="UserSequence">
+
...
+
<block info="Define variables and do debug accesses">
+
__var doIfBlock = 1;
+
__var whileCondition = 1;
+
...
+
</block>
+
...
+
<control if="doIfBlock">
+
+
<block>
+
// Do debug accesses
+
...
+
</block>
+
+
</control>
+
...
+
<control while="whileCondition" timeout="5000">
+
+
<block>
+
// Execute while "whileCondition" different from '0' with a timeout of 5ms
+
whileCondition = 0;
+
</block>
+
+
</control>
+
...
+
</sequence>
+
...
+
</sequences>
+
...
+
</family>
+

 

+ + + + + + + + + + + + + + + + + + + + + + + +
Parents Element Chain
sequence /package/devices/family/.../sequences/sequence
control /package/devices/family/.../sequences/sequence/control
Attribute Description Type Use
if Expression describing the condition under which to execute this sequence block. The block is skipped if the condition resolved to false. Defaults to true if not set. Refer to Expression Rules for the syntax. ExpressionType optional
while Expression describing a while-condition. The execution of the block contents is repeated while the condition resolves to true, or until an optional timeout is reached. Refer to Expression Rules for the syntax. ExpressionType optional
timeout Timeout in microseconds for a block with a while condition. A debugger must extend the timeout to the closest possible time granularity. If the timeout is reached, the current iteration including a last evaluation of the while condition must finish. A value of 0 disables the timeout.
+ This attribute defaults to 0.
xs:unsignedInt optional
info Descriptive text to display for example for error diagnostics. xs:string optional
Child Elements Description Type Occurrence
control Describe a debug access sequence flow control element. SequenceControlType 0..*
block Describe a block of debug accesses. SequenceBlockType 0..*
+

 

+
+

+/package/devices/family/.../sequences/sequence/block

+

Describes a block of debug accesses. See Debug Access Syntax Rules for details on the allowed syntax of the block contents.

+

Example

+
<family Dfamily="Generic Family" Dvendor="Generic:5">
+
...
+
<sequences>
+
...
+
<sequence name="UserSequence">
+
...
+
<block info="Define condition variales for later use in block elements.">
+
// Variable definition by __var keyword
+
__var doIfBlock = 1;
+
__var whileCondition = 1;
+
</block>
+
...
+
</sequence>
+
...
+
</sequences>
+
...
+
</family>
+

 

+ + + + + + + + + + + + + +
Parents Element Chain
sequence /package/devices/family/.../sequences/sequence
control /package/devices/family/.../sequences/sequence/control
Attribute Description Type Use
atomic Instruct the debugger to execute the block contents atomically; a debugger needs to download and buffer all debug accesses to the debug probe and finish the execution without further communication to the host PC. If a debugger cannot support an atomic block it must abort the execution of the debug access sequence.
+
xs:boolean optional
info Descriptive text to display for example for error diagnostics. xs:string optional
+

Atomic Blocks:

+
    +
  • Within an atomic block a variable must no longer be used as an r-value after a result from a target access has been assigned to it.
  • +
  • Support for atomic blocks is highly debugger dependent. Keep them as short and simple as possible to address a wide range of debuggers.
  • +
  • Query and Sequence debug access functions must not be used in an atomic block.
  • +
+

 

+

Debug Access Syntax Rules

+

Debug accesses are described in block elements of a debug access sequence (sequence element). The following syntax is used for this purpose:

+
    +
  • The contents of a block element is a series of statements.
  • +
  • Each statement must begin in a new line and is terminated by a ; character.
  • +
  • A typical statement consists of variable, followed by a = character and an expression, where the = character is an assignment of the expression result to the variable:
    variable = expression;
    +
  • +
  • Alternatively, a statement can be a sole expression without storing its result to a variable.
    expression;
    +
  • +
  • Comments begin with two slashes (//) and end with a linebreak:
    // Whole line is a comment
    +
    variable = expression; // Comment appended to statement
    +
  • +
  • Variables must be defined using the keyword __var. The definition must include an initalization of the variable:
    __var variable = 0;
    +
  • +
  • Variables can be defined only once within a scope. Scopes begin with entering a debug access sequence or a control element. They are extended to child control elements. Variables of a parent scope can be modified. Leaving a scope destroys all variables defined in it.
    + block elements do not begin a new scope.
    <sequence name="MySequence">
    +
    +
    <block info="Block 1">
    +
    __var condvar = 1;
    +
    __var myvar1 = 5;
    +
    __var myvar2 = 0;
    +
    </block>
    +
    +
    <control if="condvar">
    +
    <block>
    +
    // __var myvar1 = 2; // Redefinition, not allowed!
    +
    __var myvar3 = 2;
    +
    myvar2 = myvar1 + myvar3; // Assign value (5+2) = 7
    +
    </block>
    +
    </control>
    +
    +
    <block info="Block 2">
    +
    myvar1 = myvar2 + 1; // Variable myvar1 holds the value '8' after this statement
    +
    // myvar2 = myvar3; // myvar3 does not exist in this scope, not allowed!
    +
    </block>
    +
    +
    </sequence>
    +
  • +
  • The debug access variables __dp, __ap, and __errorcontrol can be modified within a debug access sequence. An assigned value is held until leaving the sequence. Calling another sequence by the Sequence debug access function will push their values on a sequence execution stack. The values are restored when returning from such a call.
  • +
  • The debug access variable __Result can be modified within a debug access sequence. Its value is held until the debug access sequence returns to the debugger. Hence its value is not pushed on a sequence execution stack when calling into another sequence by the Sequence debug access function.
  • +
+

Expression Rules

+

Expressions are used in various places to describe one of the following:

+
    +
  • A value as assigned in a debug access statement.
  • +
  • A condition to use in the if attribute of a control element.
  • +
  • A condition to use in the while attribute of a control element.
  • +
  • A parameter to a debug access function as described below.
  • +
+

An expression may consist of the following:

+
    +
  • Constant numbers in decimal and hexadecimal representation (prefix 0x).
  • +
  • Arithmetic operators such as +, -, *, /, and %.
  • +
  • Bit-arithmetic operators such as &, |, ~, ^, >>, and <<.
  • +
  • Comparison-operators such as ==, !=, <, >, <=, and >=.
  • +
  • Logic operators such as !, &&, ||, and ==.
  • +
  • Conditional expression operations like:
    (x < y) ? a : b
    +
  • +
  • Precedence of sub-expressions is indicated by brackets ((, )). C-like precedence applies if brackets are omitted.
  • +
  • References to debug access variables for evaluating debug settings.
  • +
  • Calls to debug access functions.
  • +
+
Note
    +
  • All values used in expressions resolve to 64-bit unsigned integer values.
  • +
  • All logic-operations and comparisons resolve to the value 1 if true, to 0 otherwise.
  • +
  • XML prohibits the use of the characters &, <, and >. Use the corresponding XML entity names instead: &amp;, &lt;, and &gt;.
  • +
+
+

+/package/devices/family/.../debug

+

Describes configuration settings, default values, and patches for data accesses for a debug connection. Multiple debug elements can be defined which are either specific to a processor identified by attribute Pname, or which apply to all connections.

+

Example 1

+
<family Dfamily="LPC4300 Series" Dvendor="NXP:11">
+
...
+
<debug Pname="Cortex-M4" __dp="0" __ap="0" svd="SVD/LPC43xx.svd">
+
...
+
</debug>
+
...
+
<debug Pname="Cortex-M0" __dp="1" __ap="0" svd="SVD/LPC43xx.svd">
+
...
+
</debug>
+
...
+
</family>
+

Example 2

+
<device name="MCIMX7D">
+
...
+
<processor Dcore="Cortex-A7" DcoreVersion="r0p5" Pname="Cortex-A7" Punits="2" />
+
<processor Dcore="Cortex-M4" DcoreVersion="r0p1" Pname="Cortex-M4"/>
+
...
+
<debug Pname="Cortex-A7" Punit="0" svd="SVD/iMX7D_A7.svd" __dp="0" __ap="1" address="0x80070000"/>
+
<debug Pname="Cortex-A7" Punit="1" svd="SVD/iMX7D_A7.svd" __dp="0" __ap="1" address="0x80072000"/>
+
<debug Pname="Cortex-M4" svd="SVD/iMX7D_M4.svd" __dp="0" __ap="4"/>
+
...
+
</device>
+

 

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Parents Element Chain
family /package/devices/family
subFamily /package/devices/family/subFamily
device /package/devices/family/../device
Attributes Description Type Use
__dp Default debug port ID to use for target accesses in this debug connection. The allowed values are defined in debugport elements for this device. If no debugport element exists, the only allowed value is 0.
+ The debug access variable __dp is initialized to this value when entering a pre-defined debug access sequence because of a debug event.
+ This attribute defaults to 0 if not set.
xs:unsignedInt optional
__ap Default access port index to use for target accesses in this debug connection.
+ The debug access variable __ap is initialized to this value when entering a pre-defined debug access sequence because of a debug event.
+ This attribute defaults to 0 if not set.
xs:unsignedInt optional
address Base "address" of the CPU debug block referenced by "Pname" (and "Punit" in an MPCore system). Use in combination with attributes "_dp" and "_ap". Mandatory if multiple CPU debug blocks are accessible via a single AP. Optional if an AP hosts a single CPU debug block. Then a debugger can determine its base address in by analyzing the ROM table behind __dp and __ap. NonNegativeInteger optional
svd The system viewer description (*.SVD) file to load for this debug connection. The file path is relative to the package base folder. xs:string optional
Pname Reference to a processor identifier as specified for a processor element. If Pname is set this debug element's settings and data patches only apply for target connections to the referenced processor. Otherwise, they apply for all processors. This attribute must be set if defining multiple debug elements within the same section. Only alphabetical characters, decimal digits, '-' and '_' are allowed. RestrictedString optional
Punit Use "Punit" in addition to "Pname" to select a specific processor unit of a symmetric MPCore that the <debug> configuration applies to. "Punit" is a '0'-based index and must be less than "Punits" of <processor>. If "Punit" is not specified, the <debug> configuration applies to all processor units of the MPCore. xs:unsignedInt optional
defaultResetSequence Specifies the debug sequence that is to be used for the device. Refer to Writing debug access sequences for more information. xs:string optional
Child Elements Description Type Occurrence
datapatch Define a patch to apply for data reads in this debug connection. DataPatchType 0..*
+

 

+
+

+/package/devices/family/.../debug/datapatch

+

Describes a patch a debugger shall apply when reading data from the device.

+

Example

+
<family Dfamily="M0 Series" Dvendor="Generic:5">
+
...
+
<debug>
+
<!-- Patched ROM Table for a Cortex-M0+ -->
+
<datapatch type=”AP”__dp="0" __ap="0" address="0xF8" value="0xE00FF003" info="AP BASE Register, ROM Table at 0xE00FF000"/>
+
<datapatch __dp="0" __ap="0" address="0xE00FF000" value="0xFFF0F003" info="ROM Table pointer to SCS at 0xE000E000"/>
+
<datapatch __dp="0" __ap="0" address="0xE00FF004" value="0xFFF02003" info="ROM Table pointer to DWT at 0xE0001000"/>
+
<datapatch __dp="0" __ap="0" address="0xE00FF008" value="0xFFF03003" info="ROM Table pointer to BPU at 0xE0002000"/>
+
<datapatch __dp="0" __ap="0" address="0xE00FF00C" value="0x00000000" info="ROM Table End Marker"/>
+
<datapatch __dp="0" __ap="0" address="0xE00FFFCC" value="0x00000001" info="ROM Table MEMTYPE"/>
+
<datapatch __dp="0" __ap="0" address="0xE00FFFD0" value="0x00000004" info="ROM Table Peripheral ID4"/>
+
<datapatch __dp="0" __ap="0" address="0xE00FFFD4" value="0x00000000" info="ROM Table Peripheral ID5"/>
+
<datapatch __dp="0" __ap="0" address="0xE00FFFD8" value="0x00000000" info="ROM Table Peripheral ID6"/>
+
<datapatch __dp="0" __ap="0" address="0xE00FFFDC" value="0x00000000" info="ROM Table Peripheral ID7"/>
+
<datapatch __dp="0" __ap="0" address="0xE00FFFE0" value="0x000000C0" info="ROM Table Peripheral ID0"/>
+
<datapatch __dp="0" __ap="0" address="0xE00FFFE4" value="0x000000B4" info="ROM Table Peripheral ID1"/>
+
<datapatch __dp="0" __ap="0" address="0xE00FFFE8" value="0x0000000B" info="ROM Table Peripheral ID2"/>
+
<datapatch __dp="0" __ap="0" address="0xE00FFFEC" value="0x00000000" info="ROM Table Peripheral ID3"/>
+
<datapatch __dp="0" __ap="0" address="0xE00FFFF0" value="0x0000000D" info="ROM Table Component ID0"/>
+
<datapatch __dp="0" __ap="0" address="0xE00FFFF4" value="0x00000010" info="ROM Table Component ID1"/>
+
<datapatch __dp="0" __ap="0" address="0xE00FFFF8" value="0x00000005" info="ROM Table Component ID2"/>
+
<datapatch __dp="0" __ap="0" address="0xE00FFFFC" value="0x000000B1" info="ROM Table Component ID3"/>
+
</debug>
+
...
+
</family>
+

 

+ + + + + + + + + + + + + + + + + + + + + +
Parents Element Chain
debug /package/devices/family/.../debug
Attributes Description Type Use
type The type of data access to patch. Predefined tokens must be used as defined in Table: Data Patch Access Type. This attribute defaults to Mem if not set. DataPatchAccessTypeEnum optional
address The address for which to apply the patch. NonNegativeInteger required
__dp The debug port ID to apply the patch for. The allowed values are defined by the __dp attribute of debugport elements for this device. If no debugport element exists, the only allowed value is 0. If this attribute is not set, the debug port ID for the data patch is set to the default __dp of this debug section. xs:unsignedInt optional
__ap The CoreSight access port index to apply the patch for. If this attribute is not set, the access port index for the data patch is set to the default __ap of this debug section. xs:unsignedInt optional
value The value with which the debugger patches the data access. value is specified in little-endian format. NonNegativeInteger required
mask The bits of the data access to patch. The mask value is specified in little-endian format. NonNegativeInteger optional
info Descriptive text to display for example for error diagnostics. xs:string optional
+

 

+

Table: Data Patch Access Type

+

The table lists the allowed values for data patch access types.

+ + + + + + + + + +
type= Description
DP CoreSight Debug Port register access.
+ Note: This type refers to accesses via the DPACC instruction for CoreSight JTAG-DPs. Please refer to the corresponding documentation for differences in the register interface between JTAG and Serial Wire debug ports.
AP CoreSight Access Port register access.
Mem Memory access.
+

 

+
+

+/package/devices/family/.../trace

+

Describes device capabilities and possible configuration settings for capturing trace. Multiple trace elements can be defined which are either specific to a processor identified by attribute Pname, or which apply to all connections.

+

Example

+
<family Dfamily="LPC4300 Series" Dvendor="NXP:11">
+
...
+
<trace Pname="Cortex-M4">
+
<serialwire/>
+
<traceport width="0x0000000B"/> <!-- support for port widths 1, 2, and 4 -->
+
<tracebuffer start="0x2000C000" size="0x4000"/>
+
</trace>
+
...
+
<trace Pname="Cortex-M0">
+
<!-- Empty trace section for Cortex-M0, no trace capabilities -->
+
</trace>
+
...
+
</family>
+

 

+ + + + + + + + + + + + + + + + + + + + + +
Parents Element Chain
family /package/devices/family
subFamily /package/devices/family/subFamily
device /package/devices/family/../device
Attributes Description Type Use
Pname Reference to a processor identifier as specified for a processor element. If Pname is set this trace section only applies for target connections to the referenced processor. Otherwise, it applies for all processors. This attribute must be set if defining multiple trace elements within the same section. Only alphabetical characters, decimal digits, '-' and '_' are allowed. RestrictedString optional
Child Elements Description Type Occurrence
serialwire Describe the serial wire trace output capabilities of the processor. SerialWireType 0..*
traceport Describe the parallel trace port output capabilities of the processor. TracePortType 0..*
tracebuffer Describe the on-device trace buffer capabilities of the processor. TraceBufferType 0..*
+

 

+
+

+/package/devices/family/.../trace/serialwire

+

Indicates serial wire trace output capabilities of the specified processor.

+

Example

+
<family Dfamily="LPC4300 Series" Dvendor="NXP:11">
+
...
+
<trace Pname="Cortex-M4">
+
...
+
<serialwire/>
+
...
+
</trace>
+
...
+
</family>
+

 

+ + + + + +
Parents Element Chain
trace /package/devices/family/.../trace
+

 

+
+

+/package/devices/family/.../trace/traceport

+

Indicates parallel trace port output capabilities of the specified processor. This element describes possible configuration settings for capturing trace.

+

Example

+
<family Dfamily="LPC4300 Series" Dvendor="NXP:11">
+
...
+
<trace Pname="Cortex-M4">
+
...
+
<traceport width="0x0000000B"/> <!-- support for port widths 1, 2, and 4 -->
+
...
+
</trace>
+
...
+
</family>
+

 

+ + + + + + + + + +
Parents Element Chain
trace /package/devices/family/.../trace
Attributes Description Type Use
width Parallel trace port widths supported for the processor connection (see table below). NonNegativeInteger optional
+

The attribute width specifies the available trace port width that is supported by the device. Each bit of this value represents an available trace port size. If bit n is set a trace port width of n+1 is supported. The value width=0x00008088 (as shown in the table) indicates that three port sizes (16-bit, 8-bit, and 4-bit) are supported by the device.

+ + + + + + + +
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
width 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
Value 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0
+

 

+
+

+/package/devices/family/.../trace/tracebuffer

+

Indicates on-device trace buffer capabilities of the specified processor. This element describes possible configuration settings for capturing trace and reading it from the buffer.

+

Example

+
<family Dfamily="LPC4300 Series" Dvendor="NXP:11">
+
...
+
<trace Pname="CoreCM4">
+
...
+
<tracebuffer start="0x2000C000" size="0x4000"/>
+
...
+
</trace>
+
...
+
</family>
+

 

+ + + + + + + + + + + +
Parents Element Chain
trace /package/devices/family/.../trace
Attributes Description Type Use
start Start address of the on-chip memory used as trace buffer for a supported configuration. NonNegativeInteger optional
size Size of the on-chip memory used as trace buffer in bytes for a supported configuration. NonNegativeInteger optional
+

 

+
+

+/package/devices/family/.../device/variant

+

Defines a device variant. The element is optional. Can exist multiple times.

+

Example

+
<device Dname="STM32F205RB">
+
...
+
<variant Dvariant="STM32F205RBT6">
+
<book name="doc\STM32F2_RM.PDF" title="STM32F2 Reference Manual"/>
+
<description>Use this device as an alternative.</description>
+
<feature type="QFP" count="64" name="LQFP 64 10x10x1.4" />
+
<feature type="Temp" n="-40" m="85" name="Industrial Temperature Range"/>
+
</variant>
+
<variant Dvariant="STM32F205RBT7">
+
<feature type="QFP" count="64" name="LQFP 64 10x10x1.4" />
+
<feature type="Temp" n="-40" m="105" name="Extended Temperature Range"/>
+
</variant>
+
...
+
</device>
+


+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Parents Element Chain
device /package/devices/family/../device
Attributes Description Type Use
Dvariant Name of the device variant. Only alphabetical characters, decimal digits, '-' and '_' are allowed RestrictedStringDname required
Child Elements Description Type Occurrence
processor Specify processors that are specific to this device. ProcessorType 0..*
debugconfig Specify default settings for the debug connection specific to this device. DebugConfigType 0..1
compile Specify compile or translate options specific to this device. CompileType 0..*
memory Specify memory areas that specific to this device. MemoryType 0..*
algorithm Specify Flash programming algorithms that can be used by this device. AlgorithmType 0..*
book Specify documents specific to this device. BookType 0..*
description Description specific to this device. DescriptionType 0..*
feature Specify the features of this device. FeatureType 0..*
environment Specify tool options. EnvironmentType 0..*
debugport Describe a debug port specific to this device. DebugPortType 0..*
debug Specify debug options specific to this device. DebugType 0..*
trace Specify trace options specific to this device. TraceType 0..*
debugvars Define debug access variables for user-defined settings specific to this device. DebugVarsType 0..1
sequences Describe debug access sequences specific to this device. SequencesType 0..1
+

 

+
+
+
+ + + + diff --git a/docs/Pack/html/pdsc_generators_pg.html b/docs/Pack/html/pdsc_generators_pg.html new file mode 100644 index 0000000..1832180 --- /dev/null +++ b/docs/Pack/html/pdsc_generators_pg.html @@ -0,0 +1,554 @@ + + + + + +/package/generators element +CMSIS-Pack: /package/generators element + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-Pack +  Version 1.5.0 +
+
Delivery Mechanism for Software Packs
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
/package/generators element
+
+
+

The element /package/generators/generator specifies a tool or utility that is used to generate and/or configure software (source code, header files, configuration files, etc.) in the context of a project. For this purpose, a generator package description file (GPDSC) needs to be created (see <gpdsc>). The GPDSC file details the selected device, components, project files and conditions, as well as information about the generator and how it can be launched again for iterative development cycles. A GPDSC file follows the same schema as a static Pack. However, the files generated by the utility are not installed and managed centrally in the Pack folder, but locally within the project folder.

+

A generator can be associated with a component by it's name. Selecting the component will automatically include the files provided by the generator in the project. If the specified GPDSC file is not present, the generator command is executed by the environment to generate the files and GPDSC. In this way project specific configurations can be made, files being generated and included and maintained as part of the project.

+

Example Generator Section

+
<generators>
+
<generator id = "MyGen">
+
<gpdsc name ="$P/RTE/MyGen/myGen.gpdsc"/>
+
<exe>
+
<command host = "win">MyGen.bat</command>
+
<command host = "linux">MyGen.script</command>
+
<argument>$P/RTE/MyGen/myGen.gpdsc</argument>
+
<argument host="linux" switch="--device=">#D</argument>
+
<argument host="win" switch="/device=">#D</argument>
+
</exe>
+
+
<eclipse plugin="com.mygen.plugin" class="com.mygen.plugin.generator.launcher" method="launch" >
+
<argument>#D</argument>
+
<argument>$P/RTE/MyGen/myGen.gpdsc</argument>
+
</eclipse>
+
+
<web url="http://mygen.com/mygen">
+
<argument switch="device">#D</argument>
+
<argument switch="gpdsc">$P/RTE/MyGen/myGen.gpdsc</argument>
+
</web>
+
</generator>
+
</generators>
+

Example Generator Package Description File (gpdsc)

+
<?xml version="1.0" encoding="UTF-8"?>
+
+
<package xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="1.0" xs:noNamespaceSchemaLocation="PACK.xsd">
+
<vendor>Keil</vendor>
+
<name>FrameworkCubeMX</name>
+
<description>STM32CubeMX generated pack description</description>
+
<url>project-path</url>
+
<releases>
+
<release version="1.0.0">
+
- Generated: 08/11/2016 09:20:21
+
</release>
+
</releases>
+
<generators>
+
<generator id="STM32CubeMX" Gvendor="STMicroelectronics" Gtool="STM32CubeMX" Gversion="4.10.0">
+
<description>STM32CubeMX Environment</description>
+
<select Dname="STM32F746NGHx" Dvendor="STMicroelectronics:13"/>
+
<exe>
+
<command host = "win">$SMDK/CubeMX/STM32CubeMXLauncher.exe</command>
+
<command host = "linux">$SMDK/CubeMX/STM32CubeMXLauncher</command>
+
<argument>$P/RTE/MyGen/myGen.gpdsc</argument>
+
<argument>#D.ioc</argument>
+
</exe>
+
<workingDir>$PRTE/Device/STM32F746NGHx</workingDir>
+
<project_files>
+
<file category="source" name="STCubeGenerated/Src/main.c" />
+
<file category="header" name="STCubeGenerated/Inc/stm32f7xx_it.h"/>
+
<file category="source" name="STCubeGenerated/Src/stm32f7xx_it.c"/>
+
</project_files>
+
</generator>
+
</generators>
+
<taxonomy>
+
<description Cclass="Device" Cgroup="STM32Cube Framework" generator="STM32CubeMX">STM32Cube Framework</description>
+
</taxonomy>
+
<conditions>
+
<condition id="STCubeMX">
+
<description>Condition to include CMSIS-Core (Cortex-M) and Device Startup components</description>
+
<require Dvendor="STMicroelectronics:13" Dname="STM32F7*"/>
+
<require Cclass="CMSIS" Cgroup="Core" Csub=""/>
+
<require Cclass="Device" Cgroup="Startup"/>
+
<require Cclass="Device" Cgroup="STM32Cube HAL" Csub="Common"/>
+
<require Cclass="Device" Cgroup="STM32Cube HAL" Csub="GPIO"/>
+
</condition>
+
</conditions>
+
<components>
+
<component generator="STM32CubeMX" Cvendor="Keil" Cclass="Device" Cgroup="STM32Cube Framework" Csub="STM32CubeMX" Cversion="1.0.0" condition="STCubeMX">
+
<description>Configuration via STM32CubeMX</description>
+
<RTE_Components_h>
+
#define RTE_DEVICE_FRAMEWORK_CUBE_MX
+
</RTE_Components_h>
+
<files>
+
<file category="header" name="MX_Device.h"/>
+
<file category="header" name="STCubeGenerated/Inc/stm32f7xx_hal_conf.h"/>
+
<file category="source" name="STCubeGenerated/Src/stm32f7xx_hal_msp.c"/>
+
</files>
+
</component>
+
</components>
+
</package>
+

 

+
+

+/package/generators

+

Grouping element for generators. Only one such group can exist in a Pack.

+ + + + + + + + + +
Parent Chain
package /package
Child Elements Description Type Occurrence
generator Description of the generator and the related files GeneratorType 1..*
+

The following variables can be used in the elements <command>, <workingDir>, <argument>, <gpdsc>:

+ + + + + + + + + + + +
Variable Description
$P PATH to current project
#P PATH and name of the current project
$S PATH to Pack folder containing the Device description used by the current project
$D Name of the device configured in the current project
+

 

+
+

+/package/generators/generator

+

The generator section is used to provide the details about the tool that has been used to create the GPDSC file. At least one generator element must exist.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Parent Chain
generators /package/generators
Attributes Description Type Use
id Identifier of the generator tool. Can be used by other elements to determine the generator. xs:string required
Gvendor Vendor name of the generator tool. xs:string optional
Gtool Plain text name of the generator. xs:string optional
Gversion Version of the generator tool. xs:string optional
Child Elements Description Type Occurrence
description Briefly describes the generator tool. xs:string 0..1
select Complex type specifying the configured device. A device is uniquely identified by vendor, name or variant and processor name in case of devices with multiple processors. GeneratorSelectType 0..1
workingDir Directory to be set as current directory before launching the <command>. This is either an absolute or relative path to PDSC or GPDSC file. If not specified, the current directory is the directory of the project configured by the environment. xs:string 0..1
command Deprecated; use exe, web and/or eclipse. Invocation command for the generator tool. xs:string 0..1
arguments Deprecated; use argument tags under exe, web and/or eclipse. GeneratorCommandArgumentsType 0..1
gpdsc Path and name of the GPDSC that the generator creates and updates. The path is either absolute or relative to the working directory. If no explicit gpdsc file is provided, then a gpdsc file named after the project with extension gpdsc in the working directory is assumed (<project>.gpdsc). xs:string 0..1
exe Section to specify a binary/executable to generate the GPDSC file. xs:string 0..1
eclipse Section to specify an Eclipse plug-in to generate the GPDSC file. xs:string 0..1
web Section to specify a web page to generate the GPDSC file. xs:string 0..1
project_files Grouping element for all project files generated by the tool. group 0..1
files Grouping element for generator tool files. group 0..1
extensions Generator vendor specific section ignored by other tools N/A 0..1
+

 

+
+

+/package/generators/generator/select

+

This element contains information about the vendor and device the GPDSC file has been generated for. Only one such element can exist in <generators>.

+

Example:

+
<generators>
+
<generator id="STM32CubeMX" Gvendor="STMicroelectronics" Gtool="STM32CubeMX" Gversion="4.10.0">
+
<select Dname="STM32F746NGHx" Dvendor="STMicroelectronics:13"/>
+
</generator>
+
</generators>
+

 

+ + + + + + + + + + + + + + + +
Parent Chain
generator /package/generators/generator
Attributes Description Type Use
Dvendor Vendor name of the targeted device. Use predefined values as listed in the table Device Vendor. DeviceVendorEnum required
Dname Name of the targeted device. If no Dvariant is specified this tag is required xs:string optional
Dvariant Name of the targeted device variant. If a variant is specified, the device name will be ignored and the variant rules. If no Dname is specified, this tag is required. xs:string optional
Pname Name of the targeted processor of a device with multiple processors. For devices with multiple processors this tag is required. xs:string optional
+

 

+
+

+/package/generators/generator/exe

+

This element contains information about the generation binary/executable.

+

Example:

+
<exe>
+
<command host = "win">MyGen.bat</command>
+
<command host = "linux">MyGen.script</command>
+
<argument>$P/RTE/MyGen/myGen.gpdsc</argument>
+
<argument host="linux" switch="--device=">#D</argument>
+
<argument host="win" switch="/device=">#D</argument>
+
</exe>
+

 

+ + + + + + + + + + + +
Parent Chain
generator /package/generators/generator
Child Elements Description Type Occurrence
command Invocation command for the generator tool. Command line options should be passed via <arguments>. GeneratorCommandType 1..4
argument Arguments passed along with the <command> of the format <argument switch="-data">myFileName</argument>. Path information for files can be specified absolute or relative to the location (path) of the GPDSC file. GeneratorCommandArgumentType 1..*
+

 

+
+

+/package/generators/generator/eclipse

+

This element contains information about the Eclipse based generation tool.

+

Example:

+
<eclipse plugin="com.mygen.plugin" class="com.mygen.plugin.generator.launcher" method="launch" >
+
<argument>#D</argument>
+
<argument>$P/RTE/MyGen/myGen.gpdsc</argument>
+
</eclipse>
+

 

+ + + + + + + + + + + + + + + + + +
Parent Chain
generator /package/generators/generator
Attributes Description Type Use
plugin Name of the plugin. xs:string required
class Plugin's class name. xs:string required
method Method used to launch the plugin. xs:string required
Child Elements Description Type Occurrence
argument Arguments passed to the plugin. GeneratorCommandArgumentType 1..*
+

 

+
+

+/package/generators/generator/web

+

This element contains information about the web generation application.

+

Example:

+
<web url="http://mygen.com/mygen">
+
<argument switch="device">#D</argument>
+
<argument switch="gpdsc">$P/RTE/MyGen/myGen.gpdsc</argument>
+
</web>
+

 

+ + + + + + + + + + + + + +
Parent Chain
generator /package/generators/generator
Attributes Description Type Use
url Specifies the URL of the web service. URL required
Child Elements Description Type Occurrence
argument Arguments passed along to the web service. GeneratorCommandArgumentType 0..*
+

 

+
+

+/package/generators/generator/.../command

+

This element describes a single command line for launching the generator. Arguments should be passed along with an argument.

+

Example

+
<exe>
+
<command host = "win">MyGen.bat</command>
+
<command host = "linux">MyGen.script</command>
+
<argument>$P/RTE/MyGen/myGen.gpdsc</argument>
+
<argument host="linux" switch="--device=">#D</argument>
+
<argument host="win" switch="/device=">#D</argument>
+
</exe>
+

 

+ + + + + + + + + + + + + +
Parent Element Chain
exe /package/generators/generator/exe
Current Description Type
command generator command line xs:string
Attributes Description Type Use
host Specifies the host operating system. Possible values are all, win, linux, mac, other. Only available with element exe. xs:string optional
+

 

+
+

+/package/generators/generator/.../argument

+

This element describes one or multiple arguments passed along with the parent element.

+

Example

+
<generators>
+
<generator id = "MyGen">
+
<gpdsc name ="$P/RTE/MyGen/myGen.gpdsc"/>
+
<exe>
+
<command host = "win">MyGen.bat</command>
+
<command host = "linux">MyGen.script</command>
+
<argument>$P/RTE/MyGen/myGen.gpdsc</argument>
+
<argument host="linux" switch="--device=">#D</argument>
+
<argument host="win" switch="/device=">#D</argument>
+
</exe>
+
+
<eclipse plugin="com.mygen.plugin" class="com.mygen.plugin.generator.launcher" method="launch" >
+
<argument>#D</argument>
+
<argument>$P/RTE/MyGen/myGen.gpdsc</argument>
+
</eclipse >
+
+
<web url="http://mygen.com/mygen">
+
<argument switch="device">#D</argument>
+
<argument switch="gpdsc">$P/RTE/MyGen/myGen.gpdsc</argument>
+
</web>
+
</generator>
+
</generators>
+

 

+ + + + + + + + + + + + + + + +
Parent Element Chain
exe, eclipse, web /package/generators/generator/exe, /package/generators/generator/eclipse, /package/generators/generator/web
Current Description Type
argument value of argument without command line switch xs:string
Attributes Description Type Use
host Specifies the host operating system. Possible values are all, win, linux, mac, other. Only available with element command. xs:string optional
switch Specifies the command line switch separated from the argument value. Not available with element eclipse. xs:string optional
+

 

+
+

+/package/generators/generator/project_files

+

The group project_files specifies all files that are required for the project setup. Only one such group can exist.

+

Example

+
<generators>
+
<generator id="STM32CubeMX" Gvendor="STMicroelectronics" Gtool="STM32CubeMX" Gversion="4.10.0">
+
<description>STM32CubeMX Environment</description>
+
<select Dname="STM32F746NGHx" Dvendor="STMicroelectronics:13"/>
+
<command>$SMDK/CubeMX/STM32CubeMXLauncher</command>
+
<workingDir>$PRTE/Device/STM32F746NGHx</workingDir>
+
<project_files>
+
<file category="source" name="STCubeGenerated/Src/main.c" />
+
<file category="header" name="STCubeGenerated/Inc/stm32f7xx_it.h"/>
+
<file category="source" name="STCubeGenerated/Src/stm32f7xx_it.c"/>
+
</project_files>
+
</generator>
+
</generators>
+

 

+ + + + + + + + + +
Parent Element Chain
generator /package/generators/generator
Child Elements Description Type Occurrence
file Frame for files created by the generator and used in a project. group 0..1
+

 

+
+

+/package/generators/generator/files

+

The group files specifies files that are required by the generator tool. Only one such group can exist.

+

Example

+
<generators>
+
<generator id="MyGenerator">
+
<files>
+
...
+
<files>
+
</generator>
+
</generators>
+

 

+ + + + + + + + + +
Parent Element Chain
generator /package/generators/generator
Child Elements Description Type Occurrence
file Frame for files used by the generator. group 0..1
+

 

+
+

+/package/generators/generator/files/file

+

This element contains information about files used by a generator.

+

Example

+
<generators>
+
<generator id="MyGenerator">
+
<files>
+
<file category="generator" name="Main.c"/>
+
<file category="you_name_it" name="database/connection.odbc" version="1.2.3"/>
+
...
+
<files>
+
</generator>
+
</generators>
+

 

+ + + + + + + + + + + + + + + +
Parent Element Chain
files /package/generators/generator/files
Attributes Description Type Use
condition Reference using the name of the respective condition specified in the conditions section of this package (/package/conditions). If the condition resolves to false, then the element will be ignored and treated as if not present. xs:string optional
category Describes the file type (for example: doc, header, library). You can use predefined values as listed in the table File Categories, however, this is not mandatory. xs:string required
name Can consist of the path (relative to the Pack base directory) and the file name with extension. xs:string required
version File-specific version information. The version format is described in Version Type. VersionType optional
+

 

+
+
+ + + + diff --git a/docs/Pack/html/pdsc_package_pg.html b/docs/Pack/html/pdsc_package_pg.html new file mode 100644 index 0000000..6e0df64 --- /dev/null +++ b/docs/Pack/html/pdsc_package_pg.html @@ -0,0 +1,271 @@ + + + + + +/package element +CMSIS-Pack: /package element + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-Pack +  Version 1.5.0 +
+
Delivery Mechanism for Software Packs
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
/package element
+
+
+

The basic package information captures the package vendor, the package name, a brief description of the package, and the schema version. Additional elements support the logistics of handling packages. The url specifies the origin of the description. It may be left empty if the pack will not be uploaded onto a web server. A license file might point to license agreements. A list of keywords assists searching for packages.

+

Example:

+
<package schemaVersion="1.4" xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:noNamespaceSchemaLocation="PACK.xsd">
+
<vendor>ExampleVendor</vendor>
+
<name>STM32F2xx_DFP</name> <!-- name of package -->
+
<description>Device Family Package for STMicroelectronics STM32F2 Family of Arm Cortex-M3 based Microcontroller</description>
+
<url></url>
+
<supportContact>http://www.arm.com/support</supportContact>
+
<license>./END_USER_LICENCE_AGREEMENT.rtf</license>
+
<releases>
+
<release version="1.0.0" date="2014-12-14">
+
First Release version of STM32F2 Device Family Pack.
+
</release>
+
<release version="0.9.0">
+
Beta version of STM32F2 Device Family Pack.
+
</release>
+
</releases>
+
+
<keywords> <!-- keywords for indexing -->
+
<keyword>ST</keyword>
+
<keyword>Device Support</keyword>
+
<keyword>Device Family Package ST</keyword>
+
<keyword>STM32F2</keyword>
+
<keyword>STM32F2xx</keyword>
+
</keywords>
+
+
<taxonomy> <!-- class and group descriptions -->
+
<description Cclass="Board Support">
+
Generic Interfaces and Templates for Evaluation and Development Boards
+
</description>
+
</taxonomy>
+
...
+
</package>
+

 

+

+/package

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Parent Element Element Chain
root Document root
Attributes Description Type Use
schemaVersion CMSIS-PDSC schema version used for describing the Software Pack (for example, "1.2"). The version format is described in Version Type. VersionType required
xmlns:xs Is set to: "http://www.w3.org/2001/XMLSchema-instance" to indicate compliance to the XML format. xs:decimal required
xs:noNamespaceSchemaLocation Path and file name of the PACK.xsd Schema. For example, "PACK.xsd". xs:string required
Child Elements Description Type Occurrence
name Name of the Software Pack. Could be displayed by an installer. xs:string 1..1
vendor Name of the supplier or vendor of the Software Pack. xs:string 1..1
description Brief description of the Software Pack. xs:string 1..1
url HTTP URL or file URI location of the Software Pack. The URL can be used by installers for downloading, updating, or checking versions. If left empty, the Pack cannot be updated automatically from a server location. xs:anyURI 1..1
supportContact HTTP URL or e-mail address for users to get support for the content of the Pack xs:string 0..1
license Path to a license document. xs:string 0..1
requirements Specifies other CMSIS-Packs, programming languages and compiler as well as their respective version or version range required by the components in this pack. RequirementsType 0..1
create Use only when creating CMSIS software projects. Refer to Project Description (*.cpdsc) Format for details. CreateType 0..1
repository URL of a public repository the pack originates from. xs:anyURI

0..1

+

+
releases Version release history with brief information about a Software Pack. ReleasesGroup 1..1
keywords Defines keywords that might be used to find a Software Pack. Keywords may be also exported to web page to provide information for search engines, such as Google. group 0..1
generators Specifies generator tools that have been used to create the Software Pack. GeneratorsType 0..1
devices Defines the device family, the devices, and optionally variants (such as boards). group 0..1
boards Defines the development board support package. BoardsType 0..1
taxonomy Contains the description for a component class or for the combination between a component class and component group. TaxonomyType 0..1
apis Defines the API (Application Programming Interfaces) specifications contained in the Software Pack. ApisType 0..1
conditions Is a group that contains dependency definitions used within the Pack. These rules can describe dependencies on various levels: device attributes, components, or tools. Conditions are referenced by components and files. ConditionsType 0..1
examples Lists the examples that are included in the Pack. group 0..1
components Lists the software components that are included in the Pack. group 0..1
+

 

+

Version Type

+

CMSIS-Pack version specification is inspired by the Semantic Versioning 2.0.0. Under this scheme, version numbers and the way they are incremented convey a meaning about the underlying content quality and the significance of changes from one version to the next. A version consists of 3 mandatory and 2 optional sections:

+
MAJOR.MINOR.PATCH[-Pre Release][+Build Metadata]
+
    +
  1. MAJOR: increment MAJOR for backwards incompatible changes
      +
    • non-negative integer
    • +
    • 0 indicates initial development, unstable and anything may change at any time
      ARM.CMSIS.0.9.0.pack < ARM.CMSIS.1.0.0.pack
      +
    • +
    +
  2. +
  3. MINOR: increment MINOR for backwards compatible additions and changes
      +
    • non-negative integer
    • +
    • accepted: – trailing zeros are accepted but effectively ignored for version comparison
      ARM.CMSIS.1.02.0.pack equal to ARM.CMSIS.1.2.0.pack
      +
    • +
    +
  4. +
  5. PATCH: increment PATCH for bug fixes not affecting compatibility
      +
    • non-negative integer
    • +
    • accepted:
        +
      • trailing zeros are accepted but effectively ignored for version comparison
      • +
      • a version ending after MINOR without specifying PATCH. In this case PATCH == 0 is assumed.
        ARM.CMSIS.1.1.pack equal to ARM.CMSIS.1.1.0.pack
        +
      • +
      +
    • +
    +
  6. +
  7. pre release: the optional pre-release string must start with a hyphen ('-') immediately after the PATCH and consists of a series of dot separated ASCII alphanumerics and hyphen ([0-9A-Za-z-]).
      +
    • accepted: the pre-release string immediately following the PATCH without a hyphen if the first item is a character.
      ARM.CMSIS.4.3.0-alpha.1
      +
    • +
    +
  8. +
  9. build metadata: the optional build metadata must be denoted by appending a plus sign ('+') and a series of dot separated identifiers. Identifiers comprise only ASCII alphanumerics and hyphen [0-9A-Za-z-]+. Two versions that differ only in the build metadata, have the same precedence.
    ARM.CMSIS.4.3.0-alpha.1+build.102
    +
  10. +
+

The above is extending the recommendation that was given in previous version of this specification.:

+

Version types are used in:

+ +

Example: this example applies to /package/releases/release.

+
<release version="1.4.2-RC2" ...>
+

 

+
+
+
+ + + + diff --git a/docs/Pack/html/printComponentTabs.js b/docs/Pack/html/printComponentTabs.js new file mode 100644 index 0000000..8afdb6b --- /dev/null +++ b/docs/Pack/html/printComponentTabs.js @@ -0,0 +1,39 @@ +var strgURL = location.pathname; // path of current component + +// constuctor for the array of objects +function tabElement(id, folderName, tabTxt ) { + this.id = id; // elementID as needed in html; + this.folderName = folderName; // folder name of the component + this.tabTxt = tabTxt; // Text displayed as menu on the web + this.currentListItem = '
  • ' + this.tabTxt + '
  • '; + this.listItem = '
  • ' + this.tabTxt + '
  • '; +}; + +// array of objects +var arr = []; + +// fill array + arr.push( new tabElement( "GEN", "/General/html/", "General") ); + arr.push( new tabElement( "CORE_A", "/Core_A/html/", "CMSIS-Core(A)") ); + arr.push( new tabElement( "CORE_M", "/Core/html/", "CMSIS-Core(M)") ); + arr.push( new tabElement( "DRV", "/Driver/html/", "Driver") ); + arr.push( new tabElement( "DSP", "/DSP/html/", "DSP") ); + arr.push( new tabElement( "NN", "/NN/html/", "NN") ); + arr.push( new tabElement( "RTOSv1", "/RTOS/html/", "RTOS v1") ); + arr.push( new tabElement( "RTOSv2", "/RTOS2/html/", "RTOS v2") ); + arr.push( new tabElement( "PACK", "/Pack/html/", "Pack") ); + arr.push( new tabElement( "SVD", "/SVD/html/", "SVD") ); + arr.push( new tabElement( "DAP", "/DAP/html/", "DAP") ); + arr.push( new tabElement( "ZONE", "/Zone/html/", "Zone") ); + +// write tabs +// called from the header file. +function writeComponentTabs() { + for ( var i=0; i < arr.length; i++ ) { + if (strgURL.search(arr[i].folderName) > 0) { // if this is the current folder + document.write(arr[i].currentListItem); // then print and hightlight the tab + } else { + document.write(arr[i].listItem); // else, print the tab + } + } +}; diff --git a/docs/Pack/html/resize.js b/docs/Pack/html/resize.js new file mode 100644 index 0000000..304fcb6 --- /dev/null +++ b/docs/Pack/html/resize.js @@ -0,0 +1,97 @@ +var cookie_namespace = 'doxygen'; +var sidenav,navtree,content,header; + +function readCookie(cookie) +{ + var myCookie = cookie_namespace+"_"+cookie+"="; + if (document.cookie) + { + var index = document.cookie.indexOf(myCookie); + if (index != -1) + { + var valStart = index + myCookie.length; + var valEnd = document.cookie.indexOf(";", valStart); + if (valEnd == -1) + { + valEnd = document.cookie.length; + } + var val = document.cookie.substring(valStart, valEnd); + return val; + } + } + return 0; +} + +function writeCookie(cookie, val, expiration) +{ + if (val==undefined) return; + if (expiration == null) + { + var date = new Date(); + date.setTime(date.getTime()+(10*365*24*60*60*1000)); // default expiration is one week + expiration = date.toGMTString(); + } + document.cookie = cookie_namespace + "_" + cookie + "=" + val + "; expires=" + expiration+"; path=/"; +} + +function resizeWidth() +{ + var windowWidth = $(window).width() + "px"; + var sidenavWidth = $(sidenav).outerWidth(); + content.css({marginLeft:parseInt(sidenavWidth)+"px"}); + writeCookie('width',sidenavWidth, null); +} + +function restoreWidth(navWidth) +{ + var windowWidth = $(window).width() + "px"; + content.css({marginLeft:parseInt(navWidth)+6+"px"}); + sidenav.css({width:navWidth + "px"}); +} + +function resizeHeight() +{ + var headerHeight = header.outerHeight(); + var footerHeight = footer.outerHeight(); + var windowHeight = $(window).height() - headerHeight - footerHeight; + content.css({height:windowHeight + "px"}); + navtree.css({height:windowHeight + "px"}); + sidenav.css({height:windowHeight + "px",top: headerHeight+"px"}); +} + +function initResizable() +{ + header = $("#top"); + sidenav = $("#side-nav"); + content = $("#doc-content"); + navtree = $("#nav-tree"); + footer = $("#nav-path"); + $(".side-nav-resizable").resizable({resize: function(e, ui) { resizeWidth(); } }); + $(window).resize(function() { resizeHeight(); }); + var width = readCookie('width'); + if (width) { restoreWidth(width); } else { resizeWidth(); } + resizeHeight(); + var url = location.href; + var i=url.indexOf("#"); + if (i>=0) window.location.hash=url.substr(i); + var _preventDefault = function(evt) { evt.preventDefault(); }; + $("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault); + $(document).bind('touchmove',function(e){ + var device = navigator.userAgent.toLowerCase(); + var ios = device.match(/(iphone|ipod|ipad)/); + if (ios) { + try { + var target = e.target; + while (target) { + if ($(target).css('-webkit-overflow-scrolling')=='touch') return; + target = target.parentNode; + } + e.preventDefault(); + } catch(err) { + e.preventDefault(); + } + } + }); +} + + diff --git a/docs/Pack/html/sdf_pg.html b/docs/Pack/html/sdf_pg.html new file mode 100644 index 0000000..d4d118a --- /dev/null +++ b/docs/Pack/html/sdf_pg.html @@ -0,0 +1,987 @@ + + + + + +System Description File (*.SDF) Format +CMSIS-Pack: System Description File (*.SDF) Format + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    CMSIS-Pack +  Version 1.5.0 +
    +
    Delivery Mechanism for Software Packs
    +
    +
    + +
    +
      + +
    +
    + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    +
    System Description File (*.SDF) Format
    +
    +
    +

    An SDF file enables the silicon provider to describe more complex debug topologies than with a Debug Description in a tool agnostic way. Multiple debug and access ports and the setup of the different debug/trace components can be described consistently. Also, mandatory settings for a debugger can be described, such as trace signal delay settings, availability/usability of certain reset methods or timings, etc. This information is used by the debugger to access the right components that are requested by the user or application. The SDF format provides the XML elements for defining the debug system view of a device. These are "expert" settings that cannot be specified in a PDSC file.

    +
    Note
    SDF files are referenced in a PDSC file via the <debugconfig> element.
    +

    Example CMSIS System Description File (*.SDF)

    +
    <?xml version="1.0" encoding="utf-8" standalone="no"?>
    +
    <system_description version="2.0">
    +
    <debug_and_trace_config>
    +
    <!-- Not filled at the moment -->
    +
    <!-- Means using defaults in this area -->
    +
    </debug_and_trace_config>
    +
    <platform>
    +
    <!-- Description of the scanchain -->
    +
    <scanchain>
    +
    +
    <!-- ARM Cortex-M0APP -->
    +
    <dap name="ARMCS-DP_CM0APP" type="ARMCS-DP" irLength="4" protocol="JTAG">
    +
    <!-- CoreSight DAP Info -->
    +
    <device_info_items>
    +
    <device_info_item name="JTAG_IDCODE">0x0BA01477</device_info_item>
    +
    </device_info_items>
    +
    +
    <!-- Access Ports -->
    +
    <device name="CM0APP_AHB-AP" type="CSMEMAP"> <!-- Cortex-M0APP AHB-AP -->
    +
    <config_items>
    +
    <config_item name="CORESIGHT_AP_INDEX">0</config_item>
    +
    </config_items>
    +
    <device_info_items>
    +
    <device_info_item name="AP_TYPE">AHB-AP</device_info_item>
    +
    <device_info_item name="ROM_TABLE_BASE_ADDRESS">0xE00FF000</device_info_item>
    +
    </device_info_items>
    +
    </device>
    +
    +
    <!-- Cortex-M0APP AHB-AP Components -->
    +
    <device name="CM0APP_CPU" type="Cortex-M0">
    +
    <config_items>
    +
    <config_item name="CORESIGHT_BASE_ADDRESS">0xE000E000</config_item>
    +
    <config_item name="CORESIGHT_AP_INDEX">0</config_item>
    +
    </config_items>
    +
    </device>
    +
    <device name="CM0APP_DWT" type="CSDWT">
    +
    <config_items>
    +
    <config_item name="CORESIGHT_BASE_ADDRESS">0xE0001000</config_item>
    +
    <config_item name="CORESIGHT_AP_INDEX">0</config_item>
    +
    </config_items>
    +
    </device>
    +
    <device name="CM0APP_FPB" type="CSFPB">
    +
    <config_items>
    +
    <config_item name="CORESIGHT_BASE_ADDRESS">0xE0002000</config_item>
    +
    <config_item name="CORESIGHT_AP_INDEX">0</config_item>
    +
    </config_items>
    +
    </device>
    +
    </dap>
    +
    +
    <!-- ARM Cortex-M4 -->
    +
    <dap name="ARMCS-DP_CM4" type="ARMCS-DP" irLength="4" protocol="SWD:JTAG">
    +
    <!-- CoreSight DAP Info -->
    +
    <device_info_items>
    +
    <device_info_item name="JTAG_IDCODE">0x4BA00477</device_info_item>
    +
    </device_info_items>
    +
    +
    <!-- Access Ports -->
    +
    <device name="CM4_AHB-AP" type="CSMEMAP"> <!-- Cortex-M4 AHB-AP -->
    +
    <config_items>
    +
    <config_item name="CORESIGHT_AP_INDEX">0</config_item>
    +
    </config_items>
    +
    <device_info_items>
    +
    <device_info_item name="AP_TYPE">AHB-AP</device_info_item>
    +
    <device_info_item name="ROM_TABLE_BASE_ADDRESS">0xE00FF000</device_info_item>
    +
    </device_info_items>
    +
    </device>
    +
    +
    <!-- Cortex-M4 AHB-AP Components -->
    +
    <device name="CM4_CPU" type="Cortex-M4">
    +
    <config_items>
    +
    <config_item name="CORESIGHT_BASE_ADDRESS">0xE000E000</config_item>
    +
    <config_item name="CORESIGHT_AP_INDEX">0</config_item>
    +
    </config_items>
    +
    </device>
    +
    <device name="CM4_DWT" type="CSDWT">
    +
    <config_items>
    +
    <config_item name="CORESIGHT_BASE_ADDRESS">0xE0001000</config_item>
    +
    <config_item name="CORESIGHT_AP_INDEX">0</config_item>
    +
    </config_items>
    +
    </device>
    +
    <device name="CM4_FPB" type="CSFPB">
    +
    <config_items>
    +
    <config_item name="CORESIGHT_BASE_ADDRESS">0xE0002000</config_item>
    +
    <config_item name="CORESIGHT_AP_INDEX">0</config_item>
    +
    </config_items>
    +
    </device>
    +
    <device name="CM4_ITM" type="CSITM">
    +
    <config_items>
    +
    <config_item name="CORESIGHT_BASE_ADDRESS">0xE0000000</config_item>
    +
    <config_item name="CORESIGHT_AP_INDEX">0</config_item>
    +
    </config_items>
    +
    </device>
    +
    <device name="CM4_TPIU" type="CSTPIU">
    +
    <device_info_items>
    +
    <device_info_item name="ARCHITECTURE" >V7-M</device_info_item>
    +
    <device_info_item name="SUPPORTED_FORMATTER_MODES">CONTINUOUS</device_info_item>
    +
    <device_info_item name="SUPPORTED_PORT_SIZES" >1;2;4</device_info_item>
    +
    </device_info_items>
    +
    <config_items>
    +
    <config_item name="CORESIGHT_BASE_ADDRESS">0xE0040000</config_item>
    +
    <config_item name="CORESIGHT_AP_INDEX">0</config_item>
    +
    </config_items>
    +
    </device>
    +
    <device name="CM4_ETM" type="CSETM">
    +
    <device_info_items>
    +
    <device_info_item name="VERSION">3.5</device_info_item>
    +
    <device_info_item name="SUPPORTS_CYCLE_ACCURATE">true</device_info_item>
    +
    </device_info_items>
    +
    <config_items>
    +
    <config_item name="CORESIGHT_BASE_ADDRESS">0xE0041000</config_item>
    +
    <config_item name="CORESIGHT_AP_INDEX">0</config_item>
    +
    </config_items>
    +
    </device>
    +
    <device name="CM4_ETB" type="CSETB">
    +
    <device_info_items>
    +
    <device_info_item name="MEM_WIDTH" >32</device_info_item>
    +
    <device_info_item name="RAM_SIZE_BYTES">0x4000</device_info_item>
    +
    </device_info_items>
    +
    <config_items>
    +
    <config_item name="CORESIGHT_BASE_ADDRESS">0xE0042000</config_item>
    +
    <config_item name="CORESIGHT_AP_INDEX">0</config_item>
    +
    </config_items>
    +
    </device>
    +
    </dap>
    +
    +
    </scanchain>
    +
    +
    <topology>
    +
    <!-- Trace Links -->
    +
    <!-- Core Trace - Cortex-M4 -->
    +
    <topology_link type="CoreTrace" master="CM4_CPU" slave="CM4_DWT"/>
    +
    <topology_link type="CoreTrace" master="CM4_CPU" slave="CM4_ITM"/>
    +
    <topology_link type="CoreTrace" master="CM4_CPU" slave="CM4_ETM"/>
    +
    <topology_link type="ATB" master="CM4_ETM" slave="CM4_TPIU" slave_interface="0"/>
    +
    <topology_link type="ATB" master="CM4_ITM" slave="CM4_TPIU" slave_interface="1"/>
    +
    <!-- Trace - Cortex-M4 ETB (Direct Connection ETM -> ETB) -->
    +
    <topology_link type="ATB" master="CM4_ETM" slave="CM4_ETB"/>
    +
    </topology>
    +
    </platform>
    +
    </system_description>
    +

    +SDF top level structure

    +

    The XML schema file sdf_schema.xsd defines the sections used in a *.SDF file. The current sdf_schema.xsd can be found under the ARM.CMSIS.*.Pack in the .\CMSIS\Utilities-directory.

    +

    +/system_description

    + + + + + + + + + + + + + + + +
    Parents Element Chain
    root description root point for SDF
    Attributes Description Type Use
    schemaVersion Version of sdf_schema.xsd the description is compatible with xs:decimal required
    Child Elements Description Type Occurrence
    /system_description/debug_and_trace_config Description how to configure debug and trace. complexType 1..1
    /system_description/platform Overall platform description. complexType 1..1
    +

     

    +
    +

    +/system_description/debug_and_trace_config

    +

    Describes the recommended debug and trace configuration for the device.

    + + + + + + + + + + + +
    Parents Element Chain
    system_description /system_description
    Child Elements Description Type Occurrence
    /system_description/debug_and_trace_config/debug Describes the debug connection configuration complexType 0..1
    /system_description/debug_and_trace_config/trace Describes the trace configuration complexType 0..1
    +

     

    +
    +

    +/system_description/debug_and_trace_config/debug

    +

    Describes the recommended debug configuration for the device.

    + + + + + + + + + +
    Parents Element Chain
    debug_and_trace_config /system_description/debug_and_trace_config
    Child Elements Description Type Occurrence
    /system_description/.../config_item Describes a configuration item attribute/value pair xs:string 0..*
    +

    For a list of applicable configuration items, refer to config_item.

    +

     

    +
    +

    +/system_description/.../config_item

    +

    A config_item can appear in various SDF elements. This group contains individual configuration items.

    + + + + + + + + + + + + + +
    Parents Element Chain
    debug /system_description/debug_and_trace_config/debug
    trace_capture /system_description/debug_and_trace_config/trace/trace_capture
    config_items /system_description/platform/scanchain/../config_items
    Attributes Description Type Use
    name Name of the configuration item. xs:string required
    +

    Debug element

    +

    The config_items applicable to the debug element are the following:

    + + + + + + + + + + + + + + + + + + + + + +
    Item Description
    TRSTOnConnect Debugger should perform TAP reset on connect (True/False) - Default Value:True
    SRSTOnConnect Debugger should perform a System reset on connect (True/False) - Default Value:False
    AllowTRST Allow the Debugger to perform TAP reset (True/False) - Default Value:True
    DoSoftTRST Debugger should perform a Soft Reset (True/False) - Default Value:True
    TRSTHoldTime TAP reset hold time in milliseconds - Default Value:10
    TRSTPostResetTime Delay after TAP reset before next operation - Default Value:10
    ResetHoldTime Time in milliseconds that the target is held in a hardware reset state - Default Value:100
    PostResetDelay Time in milliseconds that the target will wait after reset is released before attempting any other debugging operations - Default Value:10
    Linked_SRST_TRST Target hardware has System Reset and TAP reset physically linked (True/False) - Default Value:False
    +

    Device element

    +

    The config_items applicable to the device element are the following (only applicable for devices that are child elements of another device or DAP):

    + + + + + + + +
    Item Description Use
    CORESIGHT_BASE_ADDRESS the 4K aligned base address of a CoreSight device Required
    CORESIGHT_AP_INDEX the access port index of the device Required
    +

    Trace element

    +

    The config_items applicable to the trace element are the following:

    +
      +
    1. Parallel trace capture device configuration items ("type" = "parallel"). These "config_items" enable you to configure delays on the trace lines by a specified amount of time relative to the trace capture device defaults. These delays are used to allow for variations in target hardware. These configuration items have default values if not present. + + + + + + + + +
      Item Description Default
      CLOCK_EDGE Set to 0 or 1 to specify the clock edge on which to capture data 1
      DELAY_TRACE_CLOCK Adjust the sampling point for the trace clock by the specified number of picoseconds 0
      DELAY_TRACE_SIGNAL_1 to DELAY_TRACE_SIGNAL_n Adjust the sampling point for parallel trace signal 'n' by the specified number of picoseconds 0
      +
    2. +
    3. High-speed serial trace configuration items ("type"="HSSTP"). These configuration items do not have any default values. If they are not present in the SDF file then HSSTP trace is not supported by the target. + + + + + + + + + + + + + + + + +
      Item Description
      HSSTP_LANES The number of lanes (1-6)
      HSSTP_SPEED The HSSTP link speed (HSSTP_2_5Gbps, , HSSTP_3_0Gbps, HSSTP_3_125Gbps, HSSTP_4_25Gbps, HSSTP_5_0Gbps, HSSTP_6_0Gbps, HSSTP_6_25Gbps, HSSTP_8_0Gbps, HSSTP_10_0Gbps, HSSTP_10_3125Gbps, HSSTP_12_0Gbps, HSSTP_12_5Gbps, HSSTP_SETM_1_5Gbps, HSSTP_SETM_3_0Gbps, HSSTP_SETM_6_0Gbps)
      HSSTP_PROTOCOL The HSSTP protocol (HSSTP_PROTOCOL_ARM_HSSTP, HSSTP_PROTOCOL_8_BIT_SETM, HSSTP_PROTOCOL_16_BIT_SETM, HSSTP_PROTOCOL_32_BIT_SETM)
      HSSTP_NDALT Reverse byte bit-ordering (HSSTP_NDALT_Disabled/HSSTP_NDALT_Enabled)
      HSSTP_CONNECTOR The physical connector type (HSSTP_CONNECTOR_HSSTP/HSSTP_CONNECTOR_SMA)
      HSSTP_RX_EQUALIZATION The RX equalization type (RX_EQUALIZATION_DFE/RX_EQUALIZATION_LPM)
      HSSTP_CRC The type of CRC to use (HSSTP_CRC_Enabled, HSSTP_CRC_Disabled, HSSTP_CRC_Reversed, HSSTP_CRC_Ignored)
      +Example
    4. +
    +
    ...
    +
    <device name="CM4_ETM" type="CSETM">
    +
    <device_info_items>
    +
    <device_info_item name="VERSION">3.5</device_info_item>
    +
    <device_info_item name="SUPPORTS_CYCLE_ACCURATE">true</device_info_item>
    +
    </device_info_items>
    +
    <config_items>
    +
    <config_item name="CORESIGHT_BASE_ADDRESS">0xE0041000</config_item>
    +
    <config_item name="CORESIGHT_AP_INDEX">0</config_item>
    +
    </config_items>
    +
    </device>
    +
    ...
    +

     

    +
    +

    +/system_description/debug_and_trace_config/trace

    +

    Describes the recommended trace configuration for the device.

    + + + + + + + + + +
    Parents Element Chain
    debug_and_trace_config /system_description/debug_and_trace_config
    Child Elements Description Type Occurrence
    /system_description/debug_and_trace_config/trace/trace_capture Describes the trace capture device complexType 0..*
    +

     

    +
    +

    +/system_description/debug_and_trace_config/trace/trace_capture

    +

    Describes settings for the trace capture device.

    + + + + + + + + + + + + + +
    Parents Element Chain
    trace /system_description/debug_and_trace_config/trace
    Child Elements Description Type Occurrence
    /system_description/.../config_item Describes a configuration item attribute/value pair complexType 0..*
    Attributes Description Type Use
    type Trace capture type: for example parallel or HSSTP. xs:string required
    +

     

    +
    +

    +/system_description/platform

    +

    Describes the platform configuration (scanchain, topology and cluster arrangement).

    + + + + + + + + + + + + + +
    Parents Element Chain
    system_description /system_description
    Child Elements Description Type Occurrence
    /system_description/platform/scanchain Lists all DAPs/Devices in the order that they appear on the scanchain (Note - order is reverse to DAP references in PDSC files). The first device in the scanchain is one closest to target's TDI pin. complexType 0..*
    /system_description/platform/topology Describes the system topology complexType 0..1
    /system_description/platform/clusters Describes the cluster arrangement complexType 0..1
    +

     

    +
    +

    +/system_description/platform/scanchain

    +

    Lists all DAPs/devices in the order that they appear on the scanchain.

    +
    Note
    The order is reverse to the DAP references in PDSC files. The first device in the scanchain is the one closest to the target's TDI pin.
    + + + + + + + + + + + +
    Parents Element Chain
    platform /system_description/platform
    Child Elements Description Type Occurrence
    /system_description/platform/scanchain/dap Describes a DAP and a list of devices associated with that DAP. complexType 0..*
    /system_description/platform/scanchain/device Describes a single device on the scan chain. complexType 0..*
    +

    Example:

    +
    ...
    +
    <!-- Description of the scanchain -->
    +
    <scanchain>
    +
    +
    <!-- ARM Cortex-M0APP -->
    +
    <dap name="ARMCS-DP_CM0APP" type="ARMCS-DP" irLength="4" protocol="JTAG">
    +
    <!-- CoreSight DAP Info -->
    +
    <device_info_items>
    +
    <device_info_item name="JTAG_IDCODE">0x0BA01477</device_info_item>
    +
    </device_info_items>
    +
    +
    <!-- Access Ports -->
    +
    <device name="CM0APP_AHB-AP" type="CSMEMAP"> <!-- Cortex-M0APP AHB-AP -->
    +
    <config_items>
    +
    <config_item name="CORESIGHT_AP_INDEX">0</config_item>
    +
    </config_items>
    +
    <device_info_items>
    +
    <device_info_item name="AP_TYPE">AHB-AP</device_info_item>
    +
    <device_info_item name="ROM_TABLE_BASE_ADDRESS">0xE00FF000</device_info_item>
    +
    </device_info_items>
    +
    </device>
    +
    +
    <!-- Cortex-M0APP AHB-AP Components -->
    +
    <device name="CM0APP_CPU" type="Cortex-M0">
    +
    <config_items>
    +
    <config_item name="CORESIGHT_BASE_ADDRESS">0xE000E000</config_item>
    +
    <config_item name="CORESIGHT_AP_INDEX">0</config_item>
    +
    </config_items>
    +
    </device>
    +
    <device name="CM0APP_DWT" type="CSDWT">
    +
    <config_items>
    +
    <config_item name="CORESIGHT_BASE_ADDRESS">0xE0001000</config_item>
    +
    <config_item name="CORESIGHT_AP_INDEX">0</config_item>
    +
    </config_items>
    +
    </device>
    +
    <device name="CM0APP_FPB" type="CSFPB">
    +
    <config_items>
    +
    <config_item name="CORESIGHT_BASE_ADDRESS">0xE0002000</config_item>
    +
    <config_item name="CORESIGHT_AP_INDEX">0</config_item>
    +
    </config_items>
    +
    </device>
    +
    </dap>
    +
    +
    <!-- ARM Cortex-M4 -->
    +
    <dap name="ARMCS-DP_CM4" type="ARMCS-DP" irLength="4" protocol="SWD:JTAG">
    +
    <!-- CoreSight DAP Info -->
    +
    <device_info_items>
    +
    <device_info_item name="JTAG_IDCODE">0x4BA00477</device_info_item>
    +
    </device_info_items>
    +
    +
    <!-- Access Ports -->
    +
    <device name="CM4_AHB-AP" type="CSMEMAP"> <!-- Cortex-M4 AHB-AP -->
    +
    <config_items>
    +
    <config_item name="CORESIGHT_AP_INDEX">0</config_item>
    +
    </config_items>
    +
    <device_info_items>
    +
    <device_info_item name="AP_TYPE">AHB-AP</device_info_item>
    +
    <device_info_item name="ROM_TABLE_BASE_ADDRESS">0xE00FF000</device_info_item>
    +
    </device_info_items>
    +
    </device>
    +
    +
    <!-- Cortex-M4 AHB-AP Components -->
    +
    <device name="CM4_CPU" type="Cortex-M4">
    +
    <config_items>
    +
    <config_item name="CORESIGHT_BASE_ADDRESS">0xE000E000</config_item>
    +
    <config_item name="CORESIGHT_AP_INDEX">0</config_item>
    +
    </config_items>
    +
    </device>
    +
    <device name="CM4_DWT" type="CSDWT">
    +
    <config_items>
    +
    <config_item name="CORESIGHT_BASE_ADDRESS">0xE0001000</config_item>
    +
    <config_item name="CORESIGHT_AP_INDEX">0</config_item>
    +
    </config_items>
    +
    </device>
    +
    <device name="CM4_FPB" type="CSFPB">
    +
    <config_items>
    +
    <config_item name="CORESIGHT_BASE_ADDRESS">0xE0002000</config_item>
    +
    <config_item name="CORESIGHT_AP_INDEX">0</config_item>
    +
    </config_items>
    +
    </device>
    +
    <device name="CM4_ITM" type="CSITM">
    +
    <config_items>
    +
    <config_item name="CORESIGHT_BASE_ADDRESS">0xE0000000</config_item>
    +
    <config_item name="CORESIGHT_AP_INDEX">0</config_item>
    +
    </config_items>
    +
    </device>
    +
    <device name="CM4_TPIU" type="CSTPIU">
    +
    <device_info_items>
    +
    <device_info_item name="ARCHITECTURE" >V7-M</device_info_item>
    +
    <device_info_item name="SUPPORTED_FORMATTER_MODES">CONTINUOUS</device_info_item>
    +
    <device_info_item name="SUPPORTED_PORT_SIZES" >1;2;4</device_info_item>
    +
    </device_info_items>
    +
    <config_items>
    +
    <config_item name="CORESIGHT_BASE_ADDRESS">0xE0040000</config_item>
    +
    <config_item name="CORESIGHT_AP_INDEX">0</config_item>
    +
    </config_items>
    +
    </device>
    +
    <device name="CM4_ETM" type="CSETM">
    +
    <device_info_items>
    +
    <device_info_item name="VERSION">3.5</device_info_item>
    +
    <device_info_item name="SUPPORTS_CYCLE_ACCURATE">true</device_info_item>
    +
    </device_info_items>
    +
    <config_items>
    +
    <config_item name="CORESIGHT_BASE_ADDRESS">0xE0041000</config_item>
    +
    <config_item name="CORESIGHT_AP_INDEX">0</config_item>
    +
    </config_items>
    +
    </device>
    +
    <device name="CM4_ETB" type="CSETB">
    +
    <device_info_items>
    +
    <device_info_item name="MEM_WIDTH" >32</device_info_item>
    +
    <device_info_item name="RAM_SIZE_BYTES">0x4000</device_info_item>
    +
    </device_info_items>
    +
    <config_items>
    +
    <config_item name="CORESIGHT_BASE_ADDRESS">0xE0042000</config_item>
    +
    <config_item name="CORESIGHT_AP_INDEX">0</config_item>
    +
    </config_items>
    +
    </device>
    +
    </dap>
    +
    +
    </scanchain>
    +
    ...
    +

     

    +
    +

    +/system_description/platform/scanchain/dap

    +

    Describes a DAP and a list of devices associated with that DAP.

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    Parents Element Chain
    scanchain /system_description/platform/scanchain
    Child Elements Description Type Occurrence
    /system_description/platform/scanchain/device List of devices associated with this DAP. complexType 0..*
    /system_description/platform/scanchain/../../device_info_items Contains implementation details for the DAP. Applicable items for a DAP are "JTAG_IDCODE" (the JTAG ID code for the DAP) or "DPIDR" (the Debug Port Identification Register contents). complexType 0..*
    /system_description/platform/scanchain/../../config_items Configuration items specific to a DAP type. complexType 0..*
    Attributes Description Type Use
    name Unique name of the DAP. xs:string required
    type Specifies the type of the DAP (e.g. ARMCS-DP). xs:string required
    irLength Specifies the IR length of the DAP (default value: 4). xs:string optional
    protocol Colon delimited list of protocols via which the DAP can be use. Possible values are SWD, JTAG, and cJTAG. xs:string optional
    targetsel Specifies the SW-DPv2 TARGETSEL register value that selects this DAP in a serial-wire debug multi-drop system. xs:string optional
    +

    Example:

    +
    <system_description version="2.0">
    +
    <debug_and_trace_config>
    +
    <!-- Not filled at the moment -->
    +
    <!-- Means using defaults in this area -->
    +
    </debug_and_trace_config>
    +
    <platform>
    +
    <!-- Description of the scanchain -->
    +
    <scanchain>
    +
    +
    <!-- ARM Cortex-M0APP -->
    +
    <dap name="ARMCS-DP_CM0APP" type="ARMCS-DP" irLength="4" protocol="JTAG">
    +
    <!-- CoreSight DAP Info -->
    +
    <device_info_items>
    +
    <device_info_item name="JTAG_IDCODE">0x0BA01477</device_info_item>
    +
    </device_info_items>
    +
    +
    <!-- Access Ports -->
    +
    <device name="CM0APP_AHB-AP" type="CSMEMAP"> <!-- Cortex-M0APP AHB-AP -->
    +
    <config_items>
    +
    <config_item name="CORESIGHT_AP_INDEX">0</config_item>
    +
    </config_items>
    +
    <device_info_items>
    +
    <device_info_item name="AP_TYPE">AHB-AP</device_info_item>
    +
    <device_info_item name="ROM_TABLE_BASE_ADDRESS">0xE00FF000</device_info_item>
    +
    </device_info_items>
    +
    </device>
    +
    +
    <!-- Cortex-M0APP AHB-AP Components -->
    +
    <device name="CM0APP_CPU" type="Cortex-M0">
    +
    <config_items>
    +
    <config_item name="CORESIGHT_BASE_ADDRESS">0xE000E000</config_item>
    +
    <config_item name="CORESIGHT_AP_INDEX">0</config_item>
    +
    </config_items>
    +
    </device>
    +
    <device name="CM0APP_DWT" type="CSDWT">
    +
    <config_items>
    +
    <config_item name="CORESIGHT_BASE_ADDRESS">0xE0001000</config_item>
    +
    <config_item name="CORESIGHT_AP_INDEX">0</config_item>
    +
    </config_items>
    +
    </device>
    +
    <device name="CM0APP_FPB" type="CSFPB">
    +
    <config_items>
    +
    <config_item name="CORESIGHT_BASE_ADDRESS">0xE0002000</config_item>
    +
    <config_item name="CORESIGHT_AP_INDEX">0</config_item>
    +
    </config_items>
    +
    </device>
    +
    </dap>
    +
    ...
    +
    </system_description>
    +

     

    +
    +

    +/system_description/platform/scanchain/device

    + + + + + + + + + + + + + + + + + + + + + + + +
    Parents Element Chain
    scanchain /system_description/platform/scanchain
    dap /system_description/platform/scanchain/dap
    Child Elements Description Type Occurrence
    /system_description/platform/scanchain/device Describes a single nested device associated with this device. complexType 0..*
    /system_description/platform/scanchain/../../device_info_items Describes a sequence of device information items. complexType 0..*
    /system_description/platform/scanchain/../../config_items Configuration items specific to this device. complexType 0..*
    Attributes Description Type Use
    name Unique name of the device. xs:string required
    type Specifies the device type (see below). xs:string required
    irLength Specifies the IR length of the device (default value: 4). xs:string optional
    +

    Depending on the context, a device type can be one of the following types:

    +
      +
    1. A core device, where the type is usually specified as "Cortex-xx" (such as Cortex-A72,Cortex-M0+, Cortex-R5). It can also be a vendor-specific core type, or an older JTAG ARM core. Current cores are:
      + "Cortex-A5", "Cortex-A7", "Cortex-A8", "Cortex-A9", "Cortex-A12", "Cortex-A15", "Cortex-A17", "Cortex-A32", "Cortex-A35", "Cortex-A53", "Cortex-A57", "Cortex-A72", "Cortex-A73", "Cortex-M0", "Cortex-M0+", "Cortex-M0+_JTAG-AP", "Cortex-M1", "Cortex-M23", "Cortex-M3", "Cortex-M33", "Cortex-M3_JTAG-AP", "Cortex-M4", "Cortex-M7", "Cortex-R4", "Cortex-R5", "Cortex-R7", "Cortex-R8", "Cortex-R52", "SC000", "SC100D", "SC200D", "SC300", "ThunderX", "ThunderX-r2", "ARMV8MBL", "ARMV8MML", "88FR101", "88FR111", "88FR331", "88SV581x-v7_PJ4", "88SV581x-v7_PJ4_TZ", "ARM1136JF-S", "ARM1136JF-S_JTAG-AP", "ARM1156T2F-S", "ARM1156T2F-S_JTAG-AP", "ARM1176JZF-S", "ARM1176JZF-S_JTAG-AP", "ARM11MPCore", "ARM11MPCore_JTAG-AP", "ARM710T", "ARM720T", "ARM720T_r4", "ARM740T", "ARM7EJ-S", "ARM7EJ-S_JTAG-AP", "ARM7TDMI", "ARM7TDMI_JTAG-AP", "ARM7TDMI_r4", "ARM7TDMI_r4_JTAG-AP", "ARM920T", "ARM922T", "ARM925T", "ARM926EJ-S", "ARM926EJ-S_JTAG-AP", "ARM940T", "ARM946E-S", "ARM946E-S_JTAG-AP", "ARM966E-S", "ARM966E-S_JTAG-AP", "ARM968E-S", "ARM968E-S_JTAG-AP", "ARM968E-Srd", "ARM996HS", "ARM9E-S", "ARM9EJ-S", "ARM9EJ-S_JTAG-AP", "ARM9TDMI", "V7A-Generic", "V8-Generic", "V8M-Generic", "V8R-Generic", "V8_1-Generic", "V8_2-Generic".
    2. +
    3. An Access Port (AP) type such as "CSAUTHAP", "CSJTAGAP" or "CSMEMAP".
    4. +
    5. A CoreSight device type that can be one of "CSCTI", "CSETM", "CSITM", "CSMTB", "CSPMU", "CSPTM", "CSTFunnel", "CSTMC", "CSTPIU","CSSTM", "CSSWO", "CSELA", "CSATBReplicator", "CSGPR", "CSETB", "CSDWT", "CSETB", "CSTSGEN", "CSHTM", "CSFPB"
    6. +
    7. A JTAG device, which is directly on the scanchain (e.g. ARM11).
    8. +
    +

    Example:

    +
    <system_description version="2.0">
    +
    <debug_and_trace_config>
    +
    <!-- Not filled at the moment -->
    +
    <!-- Means using defaults in this area -->
    +
    </debug_and_trace_config>
    +
    <platform>
    +
    <!-- Description of the scanchain -->
    +
    <scanchain>
    +
    <device name="My Custom TAP" type="Other" irLength="5">
    +
    <!-- JTAG-TAP Info -->
    +
    <device_info_items>
    +
    <device_info_item name="JTAG_IDCODE">0x04560014</device_info_item>
    +
    </device_info_items>
    +
    </device>
    +
    ...
    +
    </system_description>
    +

     

    +
    +

    +/system_description/platform/scanchain/../../config_items

    +

    The configuration items are specific to the device type or DAP. Refer to /system_description/.../config_item for a list of applicable device information items and a code example.

    + + + + + + + + + + + +
    Parents Element Chain
    device /system_description/platform/../device
    dap /system_description/platform/scanchain/dap
    Child Elements Description Type Occurrence
    /system_description/.../config_item Describes a configuration item. complexType 0..*
    +

     

    +
    +

    +/system_description/platform/scanchain/../../device_info_items

    +

    The device information items are specific to the type of device or DAP and describe implementation specific details. Refer to /system_description/platform/scanchain/../../device_info_items/device_info_item for a list of applicable device information items and a code example.

    + + + + + + + + + + + +
    Parents Element Chain
    device /system_description/platform/../device
    dap /system_description/platform/scanchain/dap
    Child Elements Description Type Occurrence
    /system_description/platform/scanchain/../../device_info_items/device_info_item Describes a sequence of device information items. xs:string 0..*
    +

     

    +
    +

    +/system_description/platform/scanchain/../../device_info_items/device_info_item

    +

    Describes implementation specific details of the specified device or DAP.

    + + + + + + + + + +
    Parents Element Chain
    device_info_items /system_description/platform/../../device_info_items
    Attributes Description Type Use
    name Unique name for the device information item. xs:string required
    +

    The following device information items are applicable for each type of "device":

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Device Device Information Item Description
    CSMEMAP AP_TYPE Access port type is one of AHB-AP, APB-AP-M, APB-AP and AXI-AP
    ROM_TABLE_BASE_ADDRESS The ROM table base address (in hex)
    CSETM VERSION The ETM Version (e.g. 4.0 - required)
    SUPPORTS_CONTEXT_IDS Supports Context ID Tracing (True/False - Default Value:False)
    SUPPORTS_VIRTUAL_CONTEXT_IDS Supports Virtual Context ID Tracing (True/False - Default Value:False)
    SUPPORTS_CYCLE_ACCURATE Supports Cycle Accurate Trace (True/False - Default Value:False)
    SUPPORTS_DATA_VALUE_TRACE Supports Data Value Trace (True/False - Default Value:False)
    SUPPORTS_DATA_ADDRESS_TRACE Supports Data Address Trace (True/False - Default Value:False)
    SUPPORTS_DATA_ONLY_MODE Supports Data Only Trace Mode (True/False - Default Value:False)
    SUPPORTS_TIMESTAMPS Supports Timestamps(True/False - Default Value:False)
    SUPPORTS_TRACE_RANGES Supports Trace Ranges (True/False - Default Value:False)
    SUPPORTS_BRANCH_BROADCAST Supports Branch Broadcasting (True/False - Default Value:False)
    SUPPORTS_CONDITIONAL_INSTRUCTIONS Supports tracing conditional non-branch instruction (True/False - Default Value:False)
    SUPPORTS_Q_ELEMENTS Supports Q Elements (True/False - Default Value:False)
    CSMTB RAM_SIZE_BYTES MTB SRAM buffer size in bytes
    SUPPORTS_USER_PRIV User/Privileged support present
    CSTPM VERSION The PTM Version (eg 1.1) - Required
    SUPPORTS_VMID VMID Tracing support (True/False - Default Value:False)
    SUPPORTS_CONTEXT_IDS Context ID Tracing support (True/False - Default Value:False)
    SUPPORTS_RETURN_STACK Return stack support (True/False - Default Value:False)
    SUPPORTS_CYCLE_ACCURATE Cycle Accurate trace support (True/False - Default Value:False)
    SUPPORTS_BRANCH_BROADCAST Supports Branch Broadcasting (True/False - Default Value:False)
    SUPPORTS_TIMESTAMPS Supports Timestamping (True/False - Default Value:False)
    SUPPORTS_FIFOFULL Supports FIFOFULL (True/False - Default Value:False)
    CSTMC CONFIG_TYPE The TMC device configuration can be one of (ETR, ETF or ETB) - required
    RAM_SIZE_BYTES The SRAM memory size used in ETF and ETR configurations (512 Bytes to 4 GiB) - Default: 512 Bytes
    CSTPIU SUPPORTED_PORT_SIZES Semicolon separated list of supported port sizes (in bits) - required
    ARCHITECTURE The TPIU variant is one of (Coresight, TPIU-Lite, V7-M or V8-M) - Required
    +

    Example:

    +
    <system_description version="2.0">
    +
    ...
    +
    <platform>
    +
    <!-- Description of the scanchain -->
    +
    <scanchain>
    +
    <!-- ARM Cortex-M0APP -->
    +
    <dap name="ARMCS-DP_CM0APP" type="ARMCS-DP" irLength="4" protocol="JTAG">
    +
    <!-- CoreSight DAP Info -->
    +
    <device_info_items>
    +
    <device_info_item name="JTAG_IDCODE">0x00000000</device_info_item>
    +
    </device_info_items>
    +
    <!-- Access Ports -->
    +
    <device name="CM0APP_AHB-AP" type="CSMEMAP"> <!-- Cortex-M0APP AHB-AP -->
    +
    <config_items>
    +
    <config_item name="CORESIGHT_AP_INDEX">0</config_item>
    +
    </config_items>
    +
    <device_info_items>
    +
    <device_info_item name="AP_TYPE">AHB-AP</device_info_item>
    +
    <device_info_item name="ROM_TABLE_BASE_ADDRESS">0xE00FF000</device_info_item>
    +
    </device_info_items>
    +
    </device>
    +
    ...
    +

     

    +
    +

    +/system_description/platform/topology

    +

    Describes the system topology.

    + + + + + + + + + +
    Parents Element Chain
    platform /system_description/platform
    Child Elements Description Type Occurrence
    /system_description/platform/topology/topology_link Describes how CoreSight devices and cores are connected. complexType 0..*
    +

    Example:

    +
    <system_description version="2.0">
    +
    <debug_and_trace_config>
    +
    </debug_and_trace_config>
    +
    <platform>
    +
    ...
    +
    <topology>
    +
    <!-- Trace Links -->
    +
    <!-- Core Trace - Cortex-M4 -->
    +
    <topology_link type="CoreTrace" master="CM4_CPU" slave="CM4_DWT"/>
    +
    <topology_link type="CoreTrace" master="CM4_CPU" slave="CM4_ITM"/>
    +
    <topology_link type="CoreTrace" master="CM4_CPU" slave="CM4_ETM"/>
    +
    <topology_link type="ATB" master="CM4_ETM" slave="CM4_TPIU" slave_interface="0"/>
    +
    <topology_link type="ATB" master="CM4_ITM" slave="CM4_TPIU" slave_interface="1"/>
    +
    <!-- Trace - Cortex-M4 ETB (Direct Connection ETM -> ETB) -->
    +
    <topology_link type="ATB" master="CM4_ETM" slave="CM4_ETB"/>
    +
    </topology>
    +
    </platform>
    +
    </system_description>
    +

     

    +
    +

    +/system_description/platform/topology/topology_link

    +

    Describes how CoreSight devices and cores are connected.

    + + + + + + + + + + + + + + + + + + + + + +
    Parents Element Chain
    topology /system_description/platform/topology
    Attributes Description Type Use
    name Unique name for the link. xs:string optional
    type Specifies the link type. Can be on of the following: ATB, CoreTrace, or CTITrigger. xs:string required
    master Unique name of the master device in the link. xs:string required
    slave Unique name of the slave device in the link. xs:string required
    mater_interface Specifies the mater interface number. xs:string optional
    slave_interface Specifies the slave interface number. xs:string optional
    trigger Specifies the trigger number. xs:string optional
    +

    Example:

    +

    A complete set of links for a Cortex-A7 implementation with ETM and TPIU might look like this:

    +
    master="Cortex-A7_0" slave="CSCTI_6" trigger="7" type="CTITrigger"
    +
    master="CSETM_0" slave="CSCTI_6" trigger="6" type="CTITrigger"
    +
    master="Cortex-A7_0" slave="CSETM_0" type="CoreTrace"
    +
    master="CSETM_0" slave="CSTFunnel_2" slave_interface="0" type="ATB"
    +
    master="CSTFunnel_2" slave="CSTFunnel_0" slave_interface="1" type="ATB"
    +
    master="CSTFunnel_0" slave="CSTMC_0" type="ATB"
    +
    master="CSTMC_0" slave="CSTPIU" type="ATB"
    +

     

    +
    +

    +/system_description/platform/clusters

    +

    Describes the cluster arrangement.

    + + + + + + + + + +
    Parents Element Chain
    platform /system_description/platform
    Child Elements Description Type Occurrence
    /system_description/platform/clusters/cluster Lists the devices that make up the cluster and a unique name for the cluster. complexType 0..*
    +

     

    +
    +

    +/system_description/platform/clusters/cluster

    +

    Lists the devices that make up the cluster.

    + + + + + + + + + + + +
    Parents Element Chain
    clusters /system_description/platform/clusters
    Attributes Description Type Use
    name Unique name for the cluster (for example Cortex-A15_SMP_0). xs:string required
    devices Colon separated list of named devices in the cluster, for example "Cortex-A15_0:Cortex-A15_1:Cortex-A15_2:Cortex-A15_3". xs:string required
    +

     

    +
    +
    +
    + + + + diff --git a/docs/Pack/html/search/all_0.html b/docs/Pack/html/search/all_0.html new file mode 100644 index 0000000..17b6da8 --- /dev/null +++ b/docs/Pack/html/search/all_0.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/Pack/html/search/all_0.js b/docs/Pack/html/search/all_0.js new file mode 100644 index 0000000..db171fe --- /dev/null +++ b/docs/Pack/html/search/all_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['algorithm_20functions',['Algorithm Functions',['../algorithmFunc.html',1,'flashAlgorithm']]] +]; diff --git a/docs/Pack/html/search/all_1.html b/docs/Pack/html/search/all_1.html new file mode 100644 index 0000000..e290644 --- /dev/null +++ b/docs/Pack/html/search/all_1.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/Pack/html/search/all_1.js b/docs/Pack/html/search/all_1.js new file mode 100644 index 0000000..05a8b6b --- /dev/null +++ b/docs/Pack/html/search/all_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['configuration_20wizard_20annotations',['Configuration Wizard Annotations',['../configWizard.html',1,'']]], + ['cmsis_2dpack_20index_20files',['CMSIS-Pack Index Files',['../packIndexFile.html',1,'']]] +]; diff --git a/docs/Pack/html/search/all_2.html b/docs/Pack/html/search/all_2.html new file mode 100644 index 0000000..95ded12 --- /dev/null +++ b/docs/Pack/html/search/all_2.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/Pack/html/search/all_2.js b/docs/Pack/html/search/all_2.js new file mode 100644 index 0000000..d58a54a --- /dev/null +++ b/docs/Pack/html/search/all_2.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['debug_20setup_20with_20cmsis_2dpack',['Debug Setup with CMSIS-Pack',['../coresight_setup.html',1,'']]], + ['debug_20description',['Debug Description',['../debug_description.html',1,'coresight_setup']]] +]; diff --git a/docs/Pack/html/search/all_3.html b/docs/Pack/html/search/all_3.html new file mode 100644 index 0000000..4d312d0 --- /dev/null +++ b/docs/Pack/html/search/all_3.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/Pack/html/search/all_3.js b/docs/Pack/html/search/all_3.js new file mode 100644 index 0000000..e62ee24 --- /dev/null +++ b/docs/Pack/html/search/all_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['flash_20programming',['Flash Programming',['../flashAlgorithm.html',1,'']]] +]; diff --git a/docs/Pack/html/search/all_4.html b/docs/Pack/html/search/all_4.html new file mode 100644 index 0000000..d72a910 --- /dev/null +++ b/docs/Pack/html/search/all_4.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/Pack/html/search/all_4.js b/docs/Pack/html/search/all_4.js new file mode 100644 index 0000000..a7d98d6 --- /dev/null +++ b/docs/Pack/html/search/all_4.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['pack_20with_20software_20components',['Pack with Software Components',['../cp_SWComponents.html',1,'']]], + ['project_20description_20_28_2a_2ecpdsc_29_20format',['Project Description (*.cpdsc) Format',['../cpdsc_pg.html',1,'']]], + ['pack_20with_20device_20support',['Pack with Device Support',['../createPack_DFP.html',1,'']]], + ['pack_20with_20board_20support',['Pack with Board Support',['../createPackBoard.html',1,'']]], + ['publish_20a_20pack',['Publish a Pack',['../createPackPublish.html',1,'']]], + ['pack_20example',['Pack Example',['../pack_Example.html',1,'']]], + ['packchk_2eexe',['packChk.exe',['../packChk.html',1,'createPackUtil']]], + ['pack_20description_20_28_2a_2epdsc_29_20format',['Pack Description (*.pdsc) Format',['../packFormat.html',1,'']]] +]; diff --git a/docs/Pack/html/search/all_5.html b/docs/Pack/html/search/all_5.html new file mode 100644 index 0000000..99ef726 --- /dev/null +++ b/docs/Pack/html/search/all_5.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/Pack/html/search/all_5.js b/docs/Pack/html/search/all_5.js new file mode 100644 index 0000000..3e18830 --- /dev/null +++ b/docs/Pack/html/search/all_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['revision_20history_20of_20cmsis_2dpack',['Revision History of CMSIS-Pack',['../pack_revisionHistory.html',1,'index']]] +]; diff --git a/docs/Pack/html/search/all_6.html b/docs/Pack/html/search/all_6.html new file mode 100644 index 0000000..6133ab3 --- /dev/null +++ b/docs/Pack/html/search/all_6.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/Pack/html/search/all_6.js b/docs/Pack/html/search/all_6.js new file mode 100644 index 0000000..14fed29 --- /dev/null +++ b/docs/Pack/html/search/all_6.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['software_20packs_20overview',['Software Packs Overview',['../cp_Packs.html',1,'']]], + ['system_20description_20file_20_28_2a_2esdf_29_20format',['System Description File (*.SDF) Format',['../sdf_pg.html',1,'']]] +]; diff --git a/docs/Pack/html/search/all_7.html b/docs/Pack/html/search/all_7.html new file mode 100644 index 0000000..5748125 --- /dev/null +++ b/docs/Pack/html/search/all_7.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/Pack/html/search/all_7.js b/docs/Pack/html/search/all_7.js new file mode 100644 index 0000000..dd07669 --- /dev/null +++ b/docs/Pack/html/search/all_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['utilities_20for_20creating_20packs',['Utilities for Creating Packs',['../createPackUtil.html',1,'']]] +]; diff --git a/docs/Pack/html/search/all_8.html b/docs/Pack/html/search/all_8.html new file mode 100644 index 0000000..0179bdd --- /dev/null +++ b/docs/Pack/html/search/all_8.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/Pack/html/search/all_8.js b/docs/Pack/html/search/all_8.js new file mode 100644 index 0000000..4bda4c3 --- /dev/null +++ b/docs/Pack/html/search/all_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['xml_20editors',['XML Editors',['../cp_Editors.html',1,'createPackUtil']]] +]; diff --git a/docs/Pack/html/search/all_9.html b/docs/Pack/html/search/all_9.html new file mode 100644 index 0000000..cd46d44 --- /dev/null +++ b/docs/Pack/html/search/all_9.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/Pack/html/search/all_9.js b/docs/Pack/html/search/all_9.js new file mode 100644 index 0000000..01cd4b4 --- /dev/null +++ b/docs/Pack/html/search/all_9.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['zip_20compression_20tools',['ZIP Compression Tools',['../cp_ZIPTool.html',1,'createPackUtil']]] +]; diff --git a/docs/Pack/html/search/close.png b/docs/Pack/html/search/close.png new file mode 100644 index 0000000..9342d3d Binary files /dev/null and b/docs/Pack/html/search/close.png differ diff --git a/docs/Pack/html/search/mag_sel.png b/docs/Pack/html/search/mag_sel.png new file mode 100644 index 0000000..81f6040 Binary files /dev/null and b/docs/Pack/html/search/mag_sel.png differ diff --git a/docs/Pack/html/search/nomatches.html b/docs/Pack/html/search/nomatches.html new file mode 100644 index 0000000..b1ded27 --- /dev/null +++ b/docs/Pack/html/search/nomatches.html @@ -0,0 +1,12 @@ + + + + + + + +
    +
    No Matches
    +
    + + diff --git a/docs/Pack/html/search/pages_0.html b/docs/Pack/html/search/pages_0.html new file mode 100644 index 0000000..c51c834 --- /dev/null +++ b/docs/Pack/html/search/pages_0.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/Pack/html/search/pages_0.js b/docs/Pack/html/search/pages_0.js new file mode 100644 index 0000000..db171fe --- /dev/null +++ b/docs/Pack/html/search/pages_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['algorithm_20functions',['Algorithm Functions',['../algorithmFunc.html',1,'flashAlgorithm']]] +]; diff --git a/docs/Pack/html/search/pages_1.html b/docs/Pack/html/search/pages_1.html new file mode 100644 index 0000000..2a98fce --- /dev/null +++ b/docs/Pack/html/search/pages_1.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/Pack/html/search/pages_1.js b/docs/Pack/html/search/pages_1.js new file mode 100644 index 0000000..05a8b6b --- /dev/null +++ b/docs/Pack/html/search/pages_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['configuration_20wizard_20annotations',['Configuration Wizard Annotations',['../configWizard.html',1,'']]], + ['cmsis_2dpack_20index_20files',['CMSIS-Pack Index Files',['../packIndexFile.html',1,'']]] +]; diff --git a/docs/Pack/html/search/pages_2.html b/docs/Pack/html/search/pages_2.html new file mode 100644 index 0000000..0711a0b --- /dev/null +++ b/docs/Pack/html/search/pages_2.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/Pack/html/search/pages_2.js b/docs/Pack/html/search/pages_2.js new file mode 100644 index 0000000..d58a54a --- /dev/null +++ b/docs/Pack/html/search/pages_2.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['debug_20setup_20with_20cmsis_2dpack',['Debug Setup with CMSIS-Pack',['../coresight_setup.html',1,'']]], + ['debug_20description',['Debug Description',['../debug_description.html',1,'coresight_setup']]] +]; diff --git a/docs/Pack/html/search/pages_3.html b/docs/Pack/html/search/pages_3.html new file mode 100644 index 0000000..4310311 --- /dev/null +++ b/docs/Pack/html/search/pages_3.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/Pack/html/search/pages_3.js b/docs/Pack/html/search/pages_3.js new file mode 100644 index 0000000..e62ee24 --- /dev/null +++ b/docs/Pack/html/search/pages_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['flash_20programming',['Flash Programming',['../flashAlgorithm.html',1,'']]] +]; diff --git a/docs/Pack/html/search/pages_4.html b/docs/Pack/html/search/pages_4.html new file mode 100644 index 0000000..ae5ce18 --- /dev/null +++ b/docs/Pack/html/search/pages_4.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/Pack/html/search/pages_4.js b/docs/Pack/html/search/pages_4.js new file mode 100644 index 0000000..a7d98d6 --- /dev/null +++ b/docs/Pack/html/search/pages_4.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['pack_20with_20software_20components',['Pack with Software Components',['../cp_SWComponents.html',1,'']]], + ['project_20description_20_28_2a_2ecpdsc_29_20format',['Project Description (*.cpdsc) Format',['../cpdsc_pg.html',1,'']]], + ['pack_20with_20device_20support',['Pack with Device Support',['../createPack_DFP.html',1,'']]], + ['pack_20with_20board_20support',['Pack with Board Support',['../createPackBoard.html',1,'']]], + ['publish_20a_20pack',['Publish a Pack',['../createPackPublish.html',1,'']]], + ['pack_20example',['Pack Example',['../pack_Example.html',1,'']]], + ['packchk_2eexe',['packChk.exe',['../packChk.html',1,'createPackUtil']]], + ['pack_20description_20_28_2a_2epdsc_29_20format',['Pack Description (*.pdsc) Format',['../packFormat.html',1,'']]] +]; diff --git a/docs/Pack/html/search/pages_5.html b/docs/Pack/html/search/pages_5.html new file mode 100644 index 0000000..02c1114 --- /dev/null +++ b/docs/Pack/html/search/pages_5.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/Pack/html/search/pages_5.js b/docs/Pack/html/search/pages_5.js new file mode 100644 index 0000000..3e18830 --- /dev/null +++ b/docs/Pack/html/search/pages_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['revision_20history_20of_20cmsis_2dpack',['Revision History of CMSIS-Pack',['../pack_revisionHistory.html',1,'index']]] +]; diff --git a/docs/Pack/html/search/pages_6.html b/docs/Pack/html/search/pages_6.html new file mode 100644 index 0000000..afb70af --- /dev/null +++ b/docs/Pack/html/search/pages_6.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/Pack/html/search/pages_6.js b/docs/Pack/html/search/pages_6.js new file mode 100644 index 0000000..14fed29 --- /dev/null +++ b/docs/Pack/html/search/pages_6.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['software_20packs_20overview',['Software Packs Overview',['../cp_Packs.html',1,'']]], + ['system_20description_20file_20_28_2a_2esdf_29_20format',['System Description File (*.SDF) Format',['../sdf_pg.html',1,'']]] +]; diff --git a/docs/Pack/html/search/pages_7.html b/docs/Pack/html/search/pages_7.html new file mode 100644 index 0000000..9d7ba25 --- /dev/null +++ b/docs/Pack/html/search/pages_7.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/Pack/html/search/pages_7.js b/docs/Pack/html/search/pages_7.js new file mode 100644 index 0000000..dd07669 --- /dev/null +++ b/docs/Pack/html/search/pages_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['utilities_20for_20creating_20packs',['Utilities for Creating Packs',['../createPackUtil.html',1,'']]] +]; diff --git a/docs/Pack/html/search/pages_8.html b/docs/Pack/html/search/pages_8.html new file mode 100644 index 0000000..3377887 --- /dev/null +++ b/docs/Pack/html/search/pages_8.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/Pack/html/search/pages_8.js b/docs/Pack/html/search/pages_8.js new file mode 100644 index 0000000..4bda4c3 --- /dev/null +++ b/docs/Pack/html/search/pages_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['xml_20editors',['XML Editors',['../cp_Editors.html',1,'createPackUtil']]] +]; diff --git a/docs/Pack/html/search/pages_9.html b/docs/Pack/html/search/pages_9.html new file mode 100644 index 0000000..203934e --- /dev/null +++ b/docs/Pack/html/search/pages_9.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/Pack/html/search/pages_9.js b/docs/Pack/html/search/pages_9.js new file mode 100644 index 0000000..01cd4b4 --- /dev/null +++ b/docs/Pack/html/search/pages_9.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['zip_20compression_20tools',['ZIP Compression Tools',['../cp_ZIPTool.html',1,'createPackUtil']]] +]; diff --git a/docs/Pack/html/search/search.css b/docs/Pack/html/search/search.css new file mode 100644 index 0000000..1746d13 --- /dev/null +++ b/docs/Pack/html/search/search.css @@ -0,0 +1,240 @@ +/*---------------- Search Box */ + +#FSearchBox { + float: left; +} + +#searchli { + float: right; + display: block; + width: 170px; + height: 24px; +} + +#MSearchBox { + white-space : nowrap; + position: absolute; + float: none; + display: inline; + margin-top: 3px; + right: 0px; + width: 170px; + z-index: 102; +} + +#MSearchBox .left +{ + display:block; + position:absolute; + left:10px; + width:20px; + height:19px; + background:url('search_l.png') no-repeat; + background-position:right; +} + +#MSearchSelect { + display:block; + position:absolute; + width:20px; + height:19px; +} + +.left #MSearchSelect { + left:4px; +} + +.right #MSearchSelect { + right:5px; +} + +#MSearchField { + display:block; + position:absolute; + height:19px; + background:url('search_m.png') repeat-x; + border:none; + width:116px; + margin-left:20px; + padding-left:4px; + color: #909090; + outline: none; + font: 9pt Arial, Verdana, sans-serif; +} + +#FSearchBox #MSearchField { + margin-left:15px; +} + +#MSearchBox .right { + display:block; + position:absolute; + right:10px; + top:0px; + width:20px; + height:19px; + background:url('search_r.png') no-repeat; + background-position:left; +} + +#MSearchClose { + display: none; + position: absolute; + top: 4px; + background : none; + border: none; + margin: 0px 4px 0px 0px; + padding: 0px 0px; + outline: none; +} + +.left #MSearchClose { + left: 6px; +} + +.right #MSearchClose { + right: 2px; +} + +.MSearchBoxActive #MSearchField { + color: #000000; +} + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #90A5CE; + background-color: #F9FAFC; + z-index: 1; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt Arial, Verdana, sans-serif; + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: monospace; + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: #000000; + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: #000000; + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: #FFFFFF; + background-color: #3D578C; + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + width: 60ex; + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #000; + background-color: #EEF1F7; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; + padding-bottom: 15px; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +body.SRPage { + margin: 5px 2px; +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; +} + +.SRResult { + display: none; +} + +DIV.searchresults { + margin-left: 10px; + margin-right: 10px; +} diff --git a/docs/Pack/html/search/search.js b/docs/Pack/html/search/search.js new file mode 100644 index 0000000..2fe3a78 --- /dev/null +++ b/docs/Pack/html/search/search.js @@ -0,0 +1,795 @@ +// Search script generated by doxygen +// Copyright (C) 2009 by Dimitri van Heesch. + +// The code in this file is loosly based on main.js, part of Natural Docs, +// which is Copyright (C) 2003-2008 Greg Valure +// Natural Docs is licensed under the GPL. + +var indexSectionsWithContent = +{ + 0: "acdfprsuxz", + 1: "acdfprsuxz" +}; + +var indexSectionNames = +{ + 0: "all", + 1: "pages" +}; + +function convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var resultsPage; + var resultsPageWithSearch; + var hasResultsPage; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + '.html'; + resultsPageWithSearch = resultsPage+'?'+escape(searchValue); + hasResultsPage = true; + } + else // nothing available for this search term + { + resultsPage = this.resultsPath + '/nomatches.html'; + resultsPageWithSearch = resultsPage; + hasResultsPage = false; + } + + window.frames.MSearchResults.location = resultsPageWithSearch; + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + + if (domPopupSearchResultsWindow.style.display!='block') + { + var domSearchBox = this.DOMSearchBox(); + this.DOMSearchClose().style.display = 'inline'; + if (this.insideFrame) + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + domPopupSearchResultsWindow.style.position = 'relative'; + domPopupSearchResultsWindow.style.display = 'block'; + var width = document.body.clientWidth - 8; // the -8 is for IE :-( + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResults.style.width = width + 'px'; + } + else + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; + var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + } + } + + this.lastSearchValue = searchValue; + this.lastResultsPage = resultsPage; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + + var searchField = this.DOMSearchField(); + + if (searchField.value == this.searchLabel) // clear "Search" term upon entry + { + searchField.value = ''; + this.searchActive = true; + } + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.DOMSearchField().value = this.searchLabel; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName == 'DIV' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName == 'DIV' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + parent.document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults() +{ + var results = document.getElementById("SRResults"); + for (var e=0; e