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/SVD/html/CMSIS-SVD.xsd | 649 ++++++++++++++ docs/SVD/html/CMSIS_Logo_Final.png | Bin 0 -> 12402 bytes docs/SVD/html/CMSIS_SVD_Schema_Gen.png | Bin 0 -> 16096 bytes docs/SVD/html/SystemViewer_Generated.png | Bin 0 -> 39693 bytes docs/SVD/html/bc_s.png | Bin 0 -> 676 bytes docs/SVD/html/bdwn.png | Bin 0 -> 147 bytes docs/SVD/html/closed.png | Bin 0 -> 132 bytes docs/SVD/html/cmsis.css | 1282 +++++++++++++++++++++++++++ docs/SVD/html/doxygen.css | 1366 +++++++++++++++++++++++++++++ docs/SVD/html/doxygen.png | Bin 0 -> 3779 bytes docs/SVD/html/dynsections.js | 97 ++ docs/SVD/html/elem_cpu.html | 301 +++++++ docs/SVD/html/elem_device.html | 225 +++++ docs/SVD/html/elem_peripherals.html | 301 +++++++ docs/SVD/html/elem_registers.html | 672 ++++++++++++++ docs/SVD/html/elem_special.html | 302 +++++++ docs/SVD/html/ftv2blank.png | Bin 0 -> 86 bytes docs/SVD/html/ftv2cl.png | Bin 0 -> 453 bytes docs/SVD/html/ftv2doc.png | Bin 0 -> 746 bytes docs/SVD/html/ftv2folderclosed.png | Bin 0 -> 616 bytes docs/SVD/html/ftv2folderopen.png | Bin 0 -> 597 bytes docs/SVD/html/ftv2lastnode.png | Bin 0 -> 86 bytes docs/SVD/html/ftv2link.png | Bin 0 -> 746 bytes docs/SVD/html/ftv2mlastnode.png | Bin 0 -> 246 bytes docs/SVD/html/ftv2mnode.png | Bin 0 -> 246 bytes docs/SVD/html/ftv2mo.png | Bin 0 -> 403 bytes docs/SVD/html/ftv2node.png | Bin 0 -> 86 bytes docs/SVD/html/ftv2ns.png | Bin 0 -> 388 bytes docs/SVD/html/ftv2plastnode.png | Bin 0 -> 229 bytes docs/SVD/html/ftv2pnode.png | Bin 0 -> 229 bytes docs/SVD/html/ftv2splitbar.png | Bin 0 -> 314 bytes docs/SVD/html/ftv2vertline.png | Bin 0 -> 86 bytes docs/SVD/html/index.html | 169 ++++ docs/SVD/html/jquery.js | 72 ++ docs/SVD/html/nav_f.png | Bin 0 -> 153 bytes docs/SVD/html/nav_g.png | Bin 0 -> 95 bytes docs/SVD/html/nav_h.png | Bin 0 -> 98 bytes docs/SVD/html/navtree.css | 143 +++ docs/SVD/html/navtree.js | 534 +++++++++++ docs/SVD/html/navtreeindex0.js | 37 + docs/SVD/html/open.png | Bin 0 -> 123 bytes docs/SVD/html/pages.html | 143 +++ docs/SVD/html/printComponentTabs.js | 39 + docs/SVD/html/resize.js | 97 ++ docs/SVD/html/schema_1_2_gr.html | 775 ++++++++++++++++ docs/SVD/html/search/all_0.html | 26 + docs/SVD/html/search/all_0.js | 4 + docs/SVD/html/search/all_1.html | 26 + docs/SVD/html/search/all_1.js | 4 + docs/SVD/html/search/all_2.html | 26 + docs/SVD/html/search/all_2.js | 4 + docs/SVD/html/search/all_3.html | 26 + docs/SVD/html/search/all_3.js | 9 + docs/SVD/html/search/close.png | Bin 0 -> 273 bytes docs/SVD/html/search/mag_sel.png | Bin 0 -> 563 bytes docs/SVD/html/search/nomatches.html | 12 + docs/SVD/html/search/pages_0.html | 26 + docs/SVD/html/search/pages_0.js | 4 + docs/SVD/html/search/pages_1.html | 26 + docs/SVD/html/search/pages_1.js | 4 + docs/SVD/html/search/pages_2.html | 26 + docs/SVD/html/search/pages_2.js | 4 + docs/SVD/html/search/pages_3.html | 26 + docs/SVD/html/search/pages_3.js | 9 + docs/SVD/html/search/search.css | 271 ++++++ docs/SVD/html/search/search.js | 795 +++++++++++++++++ docs/SVD/html/search/search_l.png | Bin 0 -> 604 bytes docs/SVD/html/search/search_m.png | Bin 0 -> 158 bytes docs/SVD/html/search/search_r.png | Bin 0 -> 612 bytes docs/SVD/html/svd_Example_pg.html | 916 +++++++++++++++++++ docs/SVD/html/svd_Format_pg.html | 175 ++++ docs/SVD/html/svd_Format_pg.js | 35 + docs/SVD/html/svd_SVDConv_pg.html | 280 ++++++ docs/SVD/html/svd_revisionHistory.html | 180 ++++ docs/SVD/html/svd_validate_file_pg.html | 157 ++++ docs/SVD/html/svd_xml_conventions_gr.html | 155 ++++ docs/SVD/html/sync_off.png | Bin 0 -> 853 bytes docs/SVD/html/sync_on.png | Bin 0 -> 845 bytes docs/SVD/html/tab_a.png | Bin 0 -> 142 bytes docs/SVD/html/tab_b.png | Bin 0 -> 169 bytes docs/SVD/html/tab_h.png | Bin 0 -> 177 bytes docs/SVD/html/tab_s.png | Bin 0 -> 184 bytes docs/SVD/html/tab_topnav.png | Bin 0 -> 232 bytes docs/SVD/html/tabs.css | 71 ++ 84 files changed, 10501 insertions(+) create mode 100644 docs/SVD/html/CMSIS-SVD.xsd create mode 100644 docs/SVD/html/CMSIS_Logo_Final.png create mode 100644 docs/SVD/html/CMSIS_SVD_Schema_Gen.png create mode 100644 docs/SVD/html/SystemViewer_Generated.png create mode 100644 docs/SVD/html/bc_s.png create mode 100644 docs/SVD/html/bdwn.png create mode 100644 docs/SVD/html/closed.png create mode 100644 docs/SVD/html/cmsis.css create mode 100644 docs/SVD/html/doxygen.css create mode 100644 docs/SVD/html/doxygen.png create mode 100644 docs/SVD/html/dynsections.js create mode 100644 docs/SVD/html/elem_cpu.html create mode 100644 docs/SVD/html/elem_device.html create mode 100644 docs/SVD/html/elem_peripherals.html create mode 100644 docs/SVD/html/elem_registers.html create mode 100644 docs/SVD/html/elem_special.html create mode 100644 docs/SVD/html/ftv2blank.png create mode 100644 docs/SVD/html/ftv2cl.png create mode 100644 docs/SVD/html/ftv2doc.png create mode 100644 docs/SVD/html/ftv2folderclosed.png create mode 100644 docs/SVD/html/ftv2folderopen.png create mode 100644 docs/SVD/html/ftv2lastnode.png create mode 100644 docs/SVD/html/ftv2link.png create mode 100644 docs/SVD/html/ftv2mlastnode.png create mode 100644 docs/SVD/html/ftv2mnode.png create mode 100644 docs/SVD/html/ftv2mo.png create mode 100644 docs/SVD/html/ftv2node.png create mode 100644 docs/SVD/html/ftv2ns.png create mode 100644 docs/SVD/html/ftv2plastnode.png create mode 100644 docs/SVD/html/ftv2pnode.png create mode 100644 docs/SVD/html/ftv2splitbar.png create mode 100644 docs/SVD/html/ftv2vertline.png create mode 100644 docs/SVD/html/index.html create mode 100644 docs/SVD/html/jquery.js create mode 100644 docs/SVD/html/nav_f.png create mode 100644 docs/SVD/html/nav_g.png create mode 100644 docs/SVD/html/nav_h.png create mode 100644 docs/SVD/html/navtree.css create mode 100644 docs/SVD/html/navtree.js create mode 100644 docs/SVD/html/navtreeindex0.js create mode 100644 docs/SVD/html/open.png create mode 100644 docs/SVD/html/pages.html create mode 100644 docs/SVD/html/printComponentTabs.js create mode 100644 docs/SVD/html/resize.js create mode 100644 docs/SVD/html/schema_1_2_gr.html create mode 100644 docs/SVD/html/search/all_0.html create mode 100644 docs/SVD/html/search/all_0.js create mode 100644 docs/SVD/html/search/all_1.html create mode 100644 docs/SVD/html/search/all_1.js create mode 100644 docs/SVD/html/search/all_2.html create mode 100644 docs/SVD/html/search/all_2.js create mode 100644 docs/SVD/html/search/all_3.html create mode 100644 docs/SVD/html/search/all_3.js create mode 100644 docs/SVD/html/search/close.png create mode 100644 docs/SVD/html/search/mag_sel.png create mode 100644 docs/SVD/html/search/nomatches.html create mode 100644 docs/SVD/html/search/pages_0.html create mode 100644 docs/SVD/html/search/pages_0.js create mode 100644 docs/SVD/html/search/pages_1.html create mode 100644 docs/SVD/html/search/pages_1.js create mode 100644 docs/SVD/html/search/pages_2.html create mode 100644 docs/SVD/html/search/pages_2.js create mode 100644 docs/SVD/html/search/pages_3.html create mode 100644 docs/SVD/html/search/pages_3.js create mode 100644 docs/SVD/html/search/search.css create mode 100644 docs/SVD/html/search/search.js create mode 100644 docs/SVD/html/search/search_l.png create mode 100644 docs/SVD/html/search/search_m.png create mode 100644 docs/SVD/html/search/search_r.png create mode 100644 docs/SVD/html/svd_Example_pg.html create mode 100644 docs/SVD/html/svd_Format_pg.html create mode 100644 docs/SVD/html/svd_Format_pg.js create mode 100644 docs/SVD/html/svd_SVDConv_pg.html create mode 100644 docs/SVD/html/svd_revisionHistory.html create mode 100644 docs/SVD/html/svd_validate_file_pg.html create mode 100644 docs/SVD/html/svd_xml_conventions_gr.html create mode 100644 docs/SVD/html/sync_off.png create mode 100644 docs/SVD/html/sync_on.png create mode 100644 docs/SVD/html/tab_a.png create mode 100644 docs/SVD/html/tab_b.png create mode 100644 docs/SVD/html/tab_h.png create mode 100644 docs/SVD/html/tab_s.png create mode 100644 docs/SVD/html/tab_topnav.png create mode 100644 docs/SVD/html/tabs.css (limited to 'docs/SVD') diff --git a/docs/SVD/html/CMSIS-SVD.xsd b/docs/SVD/html/CMSIS-SVD.xsd new file mode 100644 index 0000000..413ce0d --- /dev/null +++ b/docs/SVD/html/CMSIS-SVD.xsd @@ -0,0 +1,649 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/SVD/html/CMSIS_Logo_Final.png b/docs/SVD/html/CMSIS_Logo_Final.png new file mode 100644 index 0000000..2056b7e Binary files /dev/null and b/docs/SVD/html/CMSIS_Logo_Final.png differ diff --git a/docs/SVD/html/CMSIS_SVD_Schema_Gen.png b/docs/SVD/html/CMSIS_SVD_Schema_Gen.png new file mode 100644 index 0000000..bf54eef Binary files /dev/null and b/docs/SVD/html/CMSIS_SVD_Schema_Gen.png differ diff --git a/docs/SVD/html/SystemViewer_Generated.png b/docs/SVD/html/SystemViewer_Generated.png new file mode 100644 index 0000000..e189de7 Binary files /dev/null and b/docs/SVD/html/SystemViewer_Generated.png differ diff --git a/docs/SVD/html/bc_s.png b/docs/SVD/html/bc_s.png new file mode 100644 index 0000000..224b29a Binary files /dev/null and b/docs/SVD/html/bc_s.png differ diff --git a/docs/SVD/html/bdwn.png b/docs/SVD/html/bdwn.png new file mode 100644 index 0000000..940a0b9 Binary files /dev/null and b/docs/SVD/html/bdwn.png differ diff --git a/docs/SVD/html/closed.png b/docs/SVD/html/closed.png new file mode 100644 index 0000000..98cc2c9 Binary files /dev/null and b/docs/SVD/html/closed.png differ diff --git a/docs/SVD/html/cmsis.css b/docs/SVD/html/cmsis.css new file mode 100644 index 0000000..bba1010 --- /dev/null +++ b/docs/SVD/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/SVD/html/doxygen.css b/docs/SVD/html/doxygen.css new file mode 100644 index 0000000..f0f36f8 --- /dev/null +++ b/docs/SVD/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/SVD/html/doxygen.png b/docs/SVD/html/doxygen.png new file mode 100644 index 0000000..3ff17d8 Binary files /dev/null and b/docs/SVD/html/doxygen.png differ diff --git a/docs/SVD/html/dynsections.js b/docs/SVD/html/dynsections.js new file mode 100644 index 0000000..ed092c7 --- /dev/null +++ b/docs/SVD/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 + + + + +/device/cpu element +CMSIS-SVD: /device/cpu element + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-SVD +  Version 1.3.3 +
+
CMSIS System View Description
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
/device/cpu element
+
+
+

The CPU section describes the processor included in the microcontroller device. This section is mandatory if the SVD file is used to generate the device header file.

+

Example

+
<device>
+
...
+
<cpu>
+
<name>CM7</name>
+
<revision>r0p0</revision>
+
<endian>little</endian>
+
<mpuPresent>true</mpuPresent>
+
<!-- has double precision FPU -->
+
<fpuPresent>true</fpuPresent>
+
<fpuDP>true</fpuDP>
+
<!-- has instruction and data cache -->
+
<icachePresent>true</icachePresent>
+
<dcachePresent>true</dcachePresent>
+
<!-- has no instruction nor data tighly coupled memory -->
+
<itcmPresent>false</itcmPresent>
+
<dtcmPresent>false</dtcmPresent>
+
<nvicPrioBits>4</nvicPrioBits>
+
<vendorSystickConfig>false</vendorSystickConfig>
+
</cpu>
+
...
+
<device>
+

This example describes a device based on a Cortex-M7 core of HW revision r0p0, with fixed little endian memory scheme, including Memory Protection Unit and double precision hardware Floating Point Unit. It has a data cache and no instruction nor a tightly coupled memory. The Nested Vectored Interrupt Controller uses 4 bits to configure the priority of an interrupt. It is equipped with the standard System Tick Timer as defined by Arm.

+

/device/cpu

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Parent Element Element Chain
device /device
Child Elements Description Type Occurrence
name The predefined tokens are:
    +
  • CM0: Arm Cortex-M0
  • +
  • CM0PLUS: Arm Cortex-M0+
  • +
  • CM0+: Arm Cortex-M0+
  • +
  • CM1: Arm Cortex-M1
  • +
  • SC000: Arm Secure Core SC000
  • +
  • CM23: Arm Cortex-M23
  • +
  • CM3: Arm Cortex-M3
  • +
  • CM33: Arm Cortex-M33
  • +
  • SC300: Arm Secure Core SC300
  • +
  • CM4: Arm Cortex-M4
  • +
  • CM7: Arm Cortex-M7
  • +
  • CA5: Arm Cortex-A5
  • +
  • CA7: Arm Cortex-A7
  • +
  • CA8: Arm Cortex-A8
  • +
  • CA9: Arm Cortex-A9
  • +
  • CA15: Arm Cortex-A15
  • +
  • CA17: Arm Cortex-A17
  • +
  • CA53: Arm Cortex-A53
  • +
  • CA57: Arm Cortex-A57
  • +
  • CA72: Arm Cortex-A72
  • +
  • other: other processor architectures
  • +
+
cpuNameType 1..1
revision Define the HW revision of the processor. The version format is rNpM (N,M = [0 - 99]). revisionType 1..1
endian Define the endianness of the processor being one of:
    +
  • little: little endian memory (least significant byte gets allocated at the lowest address).
  • +
  • big: byte invariant big endian data organization (most significant byte gets allocated at the lowest address).
  • +
  • selectable: little and big endian are configurable for the device and become active after the next reset.
  • +
  • other: the endianness is neither little nor big endian.
  • +
+
endianType 1..1
mpuPresent Indicate whether the processor is equipped with a memory protection unit (MPU). This tag is either set to true or false, 1 or 0. boolean 1..1
fpuPresent Indicate whether the processor is equipped with a hardware floating point unit (FPU). Cortex-M4, Cortex-M7 and Cortex-M33 are the only available Cortex-M processor with an optional FPU. This tag is either set to true or false, 1 or 0. boolean 1..1
fpuDP Indicate whether the processor is equipped with a double precision floating point unit. This element is valid only when <fpuPresent> is set to true. Currently, only Cortex-M7 processors can have a double precision floating point unit. boolean 0..1
icachePresent Indicate whether the processor has an instruction cache. Note: only for Cortex-M7-based devices. boolean 0..1
dcachePresent Indicate whether the processor has a data cache. Note: only for Cortex-M7-based devices. boolean 0..1
itcmPresent Indicate whether the processor has an instruction tightly coupled memory. Note: only an option for Cortex-M7-based devices. boolean 0..1
dtcmPresent Indicate whether the processor has a data tightly coupled memory. Note: only for Cortex-M7-based devices. boolean 0..1
vtorPresent Indicate whether the Vector Table Offset Register (VTOR) is implemented in Cortex-M0+ based devices. This tag is either set to true or false, 1 or 0. If not specified, then VTOR is assumed to be present. boolean 0..1
nvicPrioBits Define the number of bits available in the Nested Vectored Interrupt Controller (NVIC) for configuring priority. scaledNonNegativeInteger 1..1
vendorSystickConfig Indicate whether the processor implements a vendor-specific System Tick Timer. If false, then the Arm-defined System Tick Timer is available. If true, then a vendor-specific System Tick Timer must be implemented. This tag is either set to true or false, 1 or 0. boolean 1..1
deviceNumInterrupts Add 1 to the highest interrupt number and specify this number in here. You can start to enumerate interrupts from 0. Gaps might exist between interrupts. For example, you have defined interrupts with the numbers 1, 2, and 8. Add 9 :(8+1) into this field. scaledNonNegativeInteger 0..1
sauNumRegions Indicate the amount of regions in the Security Attribution Unit (SAU). If the value is greater than zero, then the device has a SAU and the number indicates the maximum amount of available address regions. scaledNonNegativeInteger 0..1
sauRegionsConfig If the Secure Attribution Unit is preconfigured by HW or Firmware, then the settings are described here. SauRegionsConfigType 0..1
+

 

+
+

+/device/cpu/sauRegionsConfig element

+

Set the configuration for the Secure Attribution Unit (SAU) when they are preconfigured by HW or Firmware.

+

Example

+
<device>
+
...
+
<sauRegionsConfig protectionWhenDisabled="n">
+
<region>
+
...
+
</region>
+
...
+
<region>
+
...
+
</region>
+
</sauRegionsConfig>
+
...
+
</device>
+

The example defines two Secure Attribution Units, which are enabled by default. When the SAU regions are disabled, the protection level is non-secure (n).

+

/device/cpu/sauRegionsConfig

+ + + + + + + + + + + + + + + +
Parent Element Element Chain
cpu /device/cpu element
Attributes Description Type Use
enabled Specify whether the Secure Attribution Units are enabled. The following values can be used: true,false,1, and 0. xs:boolean optional
protectionWhenDisabled Set the protection mode for disabled regions. When the complete SAU is disabled, the whole memory is treated either "s"=secure or "n"=non-secure. This value is inherited by the <region> element. Refer to element protection for details and predefined values. xs:string optional
Child Elements Description Type Occurrence
region Group to configure SAU regions. xs:string 0..*
+

 

+
+

+/device/cpu/sauRegionsConfig/region element

+

Define the regions of the Secure Attribution Unit (SAU). The protection level is inherited from the attribute <protectionWhenDisabled> of the enclosing element sauRegionsConfig.

+

Example:

+
<sauRegionsConfig>
+
<region name="SAU1">
+
<base>0x10001000</base>
+
<limit>0x10005000</limit>
+
<access>n</access>
+
</region>
+
<region enabled="false" name="SAU2">
+
<base>0x10006000</base>
+
<limit>0x10008000</limit>
+
<access>c</access>
+
</region>
+
</sauRegionsConfig>
+

The example defines two secure regions with the names SAU1 and SAU2. SAU1 has the address boundries 0x10001000 and 0x10005000. The region has non-secure access rights. SAU2 has the address boundries 0x10006000 and 0x10008000. The region has secure callable access rights.

+

/device/cpu/sauRegionsConfig/region

+ + + + + + + + + + + + + + + + + + + +
Parent Element Element Chain
sauRegionsConfig /device/cpu/sauRegionsConfig element
Attributes Description Type Use
enabled Specify whether the Secure Attribution Units are enabled. The following values can be used: true and false, or 1 and 0. Default value is true. xs:boolean optional
name Identifiy the region with a name. xs:string optional
Child Elements Description Type Occurrence
base Base address of the region. scaledNonNegativeInteger 1..1
limit Limit address of the region. scaledNonNegativeInteger 1..1
access Use one of the following predefined values to define the acces type of a region:
+ - n : non-secure
+ - c : secure callable
xs:string 1..1
+
+
+ + + + diff --git a/docs/SVD/html/elem_device.html b/docs/SVD/html/elem_device.html new file mode 100644 index 0000000..cf66a15 --- /dev/null +++ b/docs/SVD/html/elem_device.html @@ -0,0 +1,225 @@ + + + + + +/device element +CMSIS-SVD: /device element + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-SVD +  Version 1.3.3 +
+
CMSIS System View Description
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
/device element
+
+
+

The element <device> provides the outermost frame of the description.

+
    +
  • Only one <device> section is allowed per file. All other elements are described within this scope.
  • +
  • A <device> contains one or more peripherals, but one <cpu> description.
  • +
  • Optional elements such as <size>, <access>, or <resetValue> defined on this level represent default values for registers and can be refined at lower levels.
  • +
+

Example

+
<device schemaVersion="1.3" xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:noNamespaceSchemaLocation="CMSIS-SVD.xsd">
+
<vendor>ARM Ltd.</vendor>
+
<vendorID>ARM</vendorID>
+
<name>ARM_Cortex_M4</name>
+
<series>ARMCM4</series>
+
<version>0.1</version>
+
<description>Arm Cortex-M4 based Microcontroller demonstration device</description>
+
<licenseText>
+
Arm Limited (Arm) is supplying this software for use with Cortex-M \n
+
processor based microcontrollers. This file can be freely distributed \n
+
within development tools that are supporting such Arm based processors. \n
+
\n
+
THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED \n
+
OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF \n
+
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. \n
+
ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR \n
+
CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
+
</licenseText>
+
...
+
<headerSystemFilename>system_ARMCM4</headeSystemFilename>
+
<headerDefinitionsPrefix>ARM_</headerDefinitionsPrefix>
+
<addressUnitBits>8</addressUnitBits>
+
<width>32</width>
+
<size>32</size>
+
<access>read-write</access>
+
<resetValue>0</resetValue>
+
<resetMask>0xffffffff</resetMask>
+
<peripherals>
+
...
+
</peripherals>
+
</device>
+

This example describes a device from the vendor ARM Ltd. using ARM as short name. The device belongs to the device family ARMCM4. The device description is at version 0.1 and uniquely identifies the device by the name ARM_Cortex_M4. The legal disclaimer in the header files generated from this description is captured and formatted in accordance to the standard Arm CMSIS disclaimer. The CMSIS system file included by the generated device header file is named system_ARMCM4.h and all type definitions will be prepended with ARM_.

+

The peripherals are memory mapped in a byte-addressable address space with a bus width of 32 bits. The default size of the registers contained in the peripherals is set to 32 bits. Unless redefined for specific peripherals, all registers or fields are read-write accessible. A reset value of 0, valid for all 32 bits as specified by the reset mask, is set for all registers unless redefined at a lower level.

+

/device

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Parent Level Element Chain
root None; Document root
Attributes Description Type Use
xmlns:xs Specify the underlying XML schema to which the CMSIS-SVD schema is compliant. Has to be set to: "http://www.w3.org/2001/XMLSchema-instance". xs:decimal required
xmlns:xs Specify the file path and file name of the CMSIS-SVD Schema. For example, CMSIS-SVD.xsd. xs:string required
schemaVersion Specify the compliant CMSIS-SVD schema version (for example, 1.1). xs:decimal required
Child Elements Description Type Occurrence
vendor Specify the vendor of the device using the full name. xs:string 0..1
vendorID Specify the vendor abbreviation without spaces or special characters. This information is used to define the directory. xs:string 0..1
name The string identifies the device or device series. Device names are required to be unique. xs:string 1..1
series Specify the name of the device series. xs:string 0..1
version Define the version of the SVD file. Silicon vendors maintain the description throughout the life-cycle of the device and ensure that all updated and released copies have a unique version string. Higher numbers indicate a more recent version. xs:string 1..1
description Describe the main features of the device (for example CPU, clock frequency, peripheral overview). xs:string 1..1
licenseText The text will be copied into the header section of the generated device header file and shall contain the legal disclaimer. New lines can be inserted by using \n. This section is mandatory if the SVD file is used for generating the device header file. xs:string 0..1
cpu Describe the processor included in the device. xs:string 0..1
headerSystemFilename Specify the file name (without extension) of the device-specific system include file (system_<device>.h; See CMSIS-Core description). The header file generator customizes the include statement referencing the CMSIS system file within the CMSIS device header file. By default, the filename is system_device-name.h. In cases where a device series shares a single system header file, the name of the series shall be used instead of the individual device name. xs:string 0..1
headerDefinitionsPrefix This string is prepended to all type definition names generated in the CMSIS-Core device header file. This is used if the vendor's software requires vendor-specific types in order to avoid name clashes with other definied types. xs:string 0..1
addressUnitBits Define the number of data bits uniquely selected by each address. The value for Cortex-M-based devices is 8 (byte-addressable). scaledNonNegativeInteger 1..1
width Define the number of data bit-width of the maximum single data transfer supported by the bus infrastructure. This information is relevant for debuggers when accessing registers, because it might be required to issue multiple accesses for resources of a bigger size. The expected value for Cortex-M-based devices is 32. scaledNonNegativeInteger 1..1
  Refer to registerPropertiesGroup for details about the colored elements listed below.
size Default bit-width of any register contained in the device. scaledNonNegativeInteger 0..1
access Default access rights for all registers. accessType 0..1
protection Default access protection for all registers. protectionStringType 0..1
resetValue Default value for all registers at RESET. scaledNonNegativeInteger 0..1
resetMask Define which register bits have a defined reset value. scaledNonNegativeInteger 0..1
peripherals Group to define peripherals.   1..1
vendorExtensions The content and format of this section is unspecified. Silicon vendors may choose to provide additional information. By default, this section is ignored when constructing CMSIS files. It is up to the silicon vendor to specify a schema for this section. xs:anyType (restriction) 0..1
+
+
+ + + + diff --git a/docs/SVD/html/elem_peripherals.html b/docs/SVD/html/elem_peripherals.html new file mode 100644 index 0000000..93f6093 --- /dev/null +++ b/docs/SVD/html/elem_peripherals.html @@ -0,0 +1,301 @@ + + + + + +/device/peripherals element +CMSIS-SVD: /device/peripherals element + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-SVD +  Version 1.3.3 +
+
CMSIS System View Description
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
/device/peripherals element
+
+
+

All peripherals of a device are enclosed within the tag <peripherals>.

+

Example:

+
<device>
+
...
+
<peripherals>
+
...
+
</peripherals>
+
<device>
+

/device/peripherals

+ + + + + + + + + +
Parent Element Element Chain
device /device element
Child Elements Description Type Occurrence
peripheral Define the sequence of peripherals. peripheralType 1..*
+

 

+
+

+/device/peripherals/peripheral element

+

At least one peripheral has to be defined.

+
    +
  • Each peripheral describes all registers belonging to that peripheral.
  • +
  • The address range allocated by a peripheral is defined through one or more address blocks.
  • +
  • An address block and register addresses are specified relative to the base address of a peripheral. The address block information can be used for constructing a memory map for the device peripherals.
  • +
+

Starting version 1.3 of the SVD specification, arrays of peripherals can be specified. The single peripheral description gets duplicated automatically into an array. The number of array elements is specified by the <dim> element. To define arrays, the <name> needs the format myPeripheral[%s]. The tag <dimIncrement> specifies the address offset between two peripherals. To create copies of a peripheral using different names, you must use the derivedFrom attribute.

+
Remarks
The memory map does not contain any information about physical memory. The memory of a device is described as part of the CMSIS-Pack device description.
+

Example:

+
<peripherals>
+
<peripheral>
+
<name>Timer1</name>
+
<version>1.0</version>
+
<description>Timer 1 is a standard timer ... </description>
+
<baseAddress>0x40002000</baseAddress>
+
<addressBlock>
+
<offset>0x0</offset>
+
<size>0x400</size>
+
<usage>registers</usage>
+
<protection>s</protection>
+
</addressBlock>
+
<interrupt><name>TIM0_INT</name><value>34</value></interrupt>
+
<registers>
+
...
+
</registers>
+
</peripheral>
+
+
<peripheral>
+
<name>Timer1_Alt</name>
+
<version>1.0</version>
+
<description>Alternate Timer 1 is a special timer execution mode ... </description>
+
<baseAddress>0x40002000</baseAddress>
+
<alternatePeripheral>Timer1</alternatePeripheral>
+
...
+
</peripheral>
+
</peripherals>
+

Two timer peripheral descriptions are specified for the same memory block. No redefined addresses will be reported for both peripherals.

+

/device/peripherals/peripheral

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Parent Element Element Chain
peripherals /device/peripherals element
Attributes Description Type Occurrence
derivedFrom Specify the peripheral name from which to inherit data. Elements specified subsequently override inherited values. dimableIdentifierType 0..1
Child Elements Description Type Occurrence
  Refer to dimElementGroup for details about the colored elements.
dim Define the number of elements in an array. scaledNonNegativeInteger 0..1
dimIncrement Specify the address increment, in Bytes, between two neighboring array members in the address map. scaledNonNegativeInteger 0..1
dimIndex Do not define on peripheral level. By default, <dimIndex> is an integer value starting at 0. dimIndexType 0..1
dimName Specify the name of the C-type structure. If not defined, then the entry of the <name> element is used. idnetifierType 0..1
dimArrayIndex Grouping element to create enumerations in the header file. dimArrayIndexType 0..1
name The string identifies the peripheral. Peripheral names are required to be unique for a device. The name needs to be an ANSI C identifier to generate the header file. You can use the placeholder [%s] to create arrays. dimableIdentifierType 1..1
version The string specifies the version of this peripheral description. xs:string 0..1
description The string provides an overview of the purpose and functionality of the peripheral. xs:string 0..1
alternatePeripheral All address blocks in the memory space of a device are assigned to a unique peripheral by default. If multiple peripherals describe the same address blocks, then this needs to be specified explicitly. A peripheral redefining an address block needs to specify the name of the peripheral that is listed first in the description. dimaleIdentifierType 0..1
groupName Define a name under which the System Viewer is showing this peripheral. xs:Name 0..1
prependToName Define a string as prefix. All register names of this peripheral get this prefix. identifierType 0..1
appendToName Define a string as suffix. All register names of this peripheral get this suffix. identifierType 0..1
headerStructName Specify the base name of C structures. The headerfile generator uses the name of a peripheral as the base name for the C structure type. If <headerStructName> element is specfied, then this string is used instead of the peripheral name; useful when multiple peripherals get derived and a generic type name should be used. dimableIdentifierType 0..1
disableCondition Define a C-language compliant logical expression returning a TRUE or FALSE result. If TRUE, refreshing the display for this peripheral is disabled and related accesses by the debugger are suppressed.
+
+ Only constants and references to other registers contained in the description are allowed: <peripheral>-><register>-><field>, for example, (System->ClockControl->apbEnable == 0). The following operators are allowed in the expression [&&,||, ==, !=, >>, <<, &, |].
Attention
Use this feature only in cases where accesses from the debugger to registers of un-clocked peripherals result in severe debugging failures. SVD is intended to provide static information and does not include any run-time computation or functions. Such capabilities can be added by the tools, and is beyond the scope of this description language.
+
stringType 0..1
baseAddress Lowest address reserved or used by the peripheral. scaledNonNegativeInteger 1..1
  Refer to registerPropertiesGroup for details about the colored elements.
size Define the default bit-width of any register contained in the device (implicit inheritance). scaledNonNegativeInteger 0..1
access Define default access rights for all registers. accessType 0..1
protection Define default protection rights for all registers. protectionStringType 0..1
resetValue Define the default value for all registers at RESET. scaledNonNegativeInteger 0..1
resetMask Identify which register bits have a defined reset value. scaledNonNegativeInteger 0..1
addressBlock Specify an address range uniquely mapped to this peripheral. A peripheral must have at least one address block, but can allocate multiple distinct address ranges. If a peripheral is derived from another peripheral, the addressBlock is not mandatory. addressBlockType 0/1..*
interrupt A peripheral can have multiple associated interrupts. This entry allows the debugger to show interrupt names instead of interrupt numbers. interruptType 0..*
registers Group to enclose register definitions. registersType 0..1
+

 

+
+

+/device/peripherals/peripheral/addressBlock element

+

Specify an address range uniquely mapped to this peripheral. A peripheral must have at least one address block. If a peripheral is derived form another peripheral, the <addressBlock> is not mandatory.

+

/device/peripherals/peripheral/addressBlock

+ + + + + + + + + + + + + + + +
Parent Element Element Chain
peripheral /device/peripherals/peripheral element
Child Elements Description Type Occurrence
offset Specifies the start address of an address block relative to the peripheral baseAddress. scaledNonNegativeInteger 1..1
size Specifies the number of addressUnitBits being covered by this address block. The end address of an address block results from the sum of baseAddress, offset, and (size - 1). scaledNonNegativeInteger 1..1
usage The following predefined values can be used:
    +
  • registers
  • +
  • buffer
  • +
  • reserved.
  • +
+
scaledNonNegativeInteger 1..1
protection Set the protection level for an address block. protectionStringType 0..1
+

 

+
+

+/device/peripherals/peripheral/interrupt element

+

A peripheral can have multiple interrupts. This entry allows the debugger to show interrupt names instead of interrupt numbers.

+

/device/peripherals/peripheral/interrupt

+ + + + + + + + + + + + + +
Parent Element Element Chain
peripheral /device/peripherals/peripheral element
Child Elements Description Type Occurrence
name The string represents the interrupt name. stringType 1..1
description The string describes the interrupt. xs:string 0..1
value Represents the enumeration index value associated to the interrupt. xs:integer 1..1
+
+
+ + + + diff --git a/docs/SVD/html/elem_registers.html b/docs/SVD/html/elem_registers.html new file mode 100644 index 0000000..6139185 --- /dev/null +++ b/docs/SVD/html/elem_registers.html @@ -0,0 +1,672 @@ + + + + + +/device/peripherals/peripheral/registers element +CMSIS-SVD: /device/peripherals/peripheral/registers element + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-SVD +  Version 1.3.3 +
+
CMSIS System View Description
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
/device/peripherals/peripheral/registers element
+
+
+

All registers of a peripheral are enclosed between the <registers> opening and closing tags. Clusters define a set of registers. You can either use the <cluster> or the <register> element.

+

Example:

+
...
+
<peripheral>
+
<registers>
+
...
+
</registers>
+
</peripheral>
+
...
+

/device/peripherals/peripheral/registers

+ + + + + + + + + + + +
Parent Element Element Chain
peripheral /device/peripherals/peripheral element
Child Elements Description Type Occurrence
cluster Define the sequence of register clusters. clusterType 0..*
register Define the sequence of registers. registerType 1..*
+

 

+
+

+/device/pripherals/peripheral/registers/.../cluster element

+

Cluster describes a sequence of neighboring registers within a peripheral. A <cluster> specifies the addressOffset relative to the baseAddress of the grouping element. All <register> elements within a <cluster> specify their addressOffset relative to the cluster base address (<peripheral.baseAddress> + <cluster.addressOffset>).

+

Multiple <register> and <cluster> sections may occur in any order. Since version 1.3 of the specification, the nesting of <cluster> elements is supported. Nested clusters express hierarchical structures of registers. It is predominantely targeted at the generation of device header files to create a C-data structure within the peripheral structure instead of a flat list of registers. Note, you can also specify an array of a cluster using the <dim> element.

+

/device/pripherals/peripheral/registers/.../cluster

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Parent Element Element Chain
registers /device/peripherals/peripheral/registers element
cluster /device/pripherals/peripheral/registers/.../cluster element
Attributes Description Type Occurrence

derivedFrom

+

+
Specify the cluster name from which to inherit data. Elements specified subsequently override inherited values.
+Usage:
    +
  • Always use the full qualifying path, which must start with the peripheral <name>, when deriving from another scope. (for example, in periperhal B, derive from peripheralA.clusterX).
  • +
  • You can use the cluster <name> when both clusters are in the same scope.
  • +
  • No relative paths will work.
    +Remarks: When deriving a cluster, it is mandatory to specify at least the <name>, the <description>, and the <addressOffset>.
  • +
+
registerType 0..1
Child Elements Description Type Occurrence
  Refer to dimElementGroup for details.
dim Define the number of elements in an array of clusters. scaledNonNegativeInteger 1..1
dimIncrement Specify the address increment, in Bytes, between two neighboring clusters of the cluster array. scaledNonNegativeInteger 1..1
dimIndex Specify the strings that substitute the placeholder [%s] within the cluster <name>. Use the placeholder %s in <name> when <dimIndex> is specified. dimIndexType 0..1
dimName Specify the name of the C-type structure. If not defined, then the entry of the <name> element is used. identifierType 0..1
dimArrayIndex Grouping element to create enumerations in the header file. dimArrayIndexType 0..1
name String to identify the cluster. Cluster names are required to be unique within the scope of a peripheral. A list of cluster names can be build using the placeholder %s. Use the placeholder [%s] at the end of the identifier to generate arrays in the header file. The placeholder [%s] cannot be used together with <dimIndex>. dimableIdentifierType 1..1
description String describing the details of the register cluster. xs:string 0..1
alternateCluster Specify the name of the original cluster if this cluster provides an alternative description. dimableIdentifierType 0..1
headerStructName Specify the struct type name created in the device header file. If not specified, then the name of the cluster is used. identifierType 0..1
addressOffset Cluster address relative to the <baseAddress> of the peripheral. scaledNonNegativeInteger 1..1
  Refer to registerPropertiesGroup for details.
size Define the default bit-width of any device register (implicit inheritance). scaledNonNegativeInteger 0..1
access Define access rights. accessType 0..1
protection Specify the security privilege to access an address region. protectionStringType 0..1
resetValue Define the default value for all registers at RESET. scaledNonNegativeInteger 0..1
resetMask Identify register bits that have a defined reset value. scaledNonNegativeInteger 0..1
register Define a sequence of register within a cluster. registerType 0..*
cluster Element to nest cluster definitions. clusterType 0..*
+

 

+
+

+/device/peripherals/peripheral/registers/.../register element

+

The description of registers is the most essential part of SVD. If the elements <size>, <access>, <resetValue>, and <resetMask> have not been specified on a higher level, then these elements are mandatory on register level.

+

A register can represent a single value or can be subdivided into individual bit-fields of specific functionality and semantics. From a schema perspective, the element <fields> is optional, however, from a specification perspective, <fields> are mandatory when they are described in the device documentation.

+

You can define register arrays where the single description gets duplicated automatically. The size of the array is specified by the <dim> element. Register names get composed by the element <name> and the index-specific string defined in <dimIndex>. The element <dimIncrement> specifies the address offset between two registers.

+

Example:

+
...
+
<register>
+
<name>TimerCtrl0</name>
+
<description>Timer Control Register</description>
+
<addressOffset>0x0</addressOffset>
+
<access>read-write</access>
+
<resetValue>0x00008001</resetValue>
+
<resetMask>0x0000ffff</resetMask>
+
<size>32</size>
+
</register>
+
+
<register derivedFrom="TimerCtrl0">
+
<name>TimerCtrl1</name>
+
<description>Derived Timer</description>
+
<addressOffset>0x4</addressOffset>
+
</register>
+
...
+

This example describes two registers, TimerCtrl0 and TimerCtrl1. The values defined for TimerCtrl0 are inherited by the derived register TimerCtrl1, except for the value in <addressOffset>.

+

Example:

+
...
+
<register>
+
<name>TIM_MODEA</name>
+
<description>In mode A this register acts as a reload value</description>
+
<addressOffset>0xC</addressOffset>
+
</register>
+
<register>
+
<name>TIM_MODEB</name>
+
<description>In mode B this register acts as the compare value</description>
+
<alternateRegister>TIM_MODEA</alternateRegister>
+
<addressOffset>0xC</addressOffset>
+
</register>
+
<register>
+
<name>DMA_DATA</name>
+
<description>This register contains the address of the data being transferred</description>
+
<dataType>uint32_t *</dataType>
+
<addressOffset>0xf0</addressOffset>
+
</register>
+
...
+

This example describes two registers, TIM_MODEA and TIM_MODEB. Both have the same address offset. Based on the configured operation model being A or B, the register acts as reload or compare value. The register DMA_DATA is specified as a pointer to unsigned word data. The code generated for the device header file is:

+
typedef struct {
+
union {
+
__IO uint32_t TIM_MODEA;
+
__IO uint32_t TIM_MODEB;
+
};
+
__IO uint32_t * DMA_DATA;
+
...
+
} <peripheral:name>_Type;
+

/device/peripherals/peripheral/registers/.../register

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Parent Element Element Chain
cluster /device/pripherals/peripheral/registers/.../cluster element
registers /device/peripherals/peripheral/registers element
Attributes Description Type Occurrence

derivedFrom

+

+
Specify the register name from which to inherit data. Elements specified subsequently override inherited values.
+Usage:
    +
  • Always use the full qualifying path, which must start with the peripheral <name>, when deriving from another scope. (for example, in periperhal B, derive from peripheralA.registerX.
  • +
  • You can use the register <name> only when both registers are in the same scope.
  • +
  • No relative paths will work.
    +Remarks: When deriving, it is mandatory to specify at least the <name>, the <description>, and the <addressOffset>.
  • +
+
xs:Name 0..1
Child Elements Description Type Occurrence
  Refer to dimElementGroup for details.
dim Define the number of elements in an array of registers. If <dimIncrement> is specified, this element becomes mandatory. scaledNonNegativeInteger 1..1
dimIncrement Specify the address increment, in Bytes, between two neighboring registers. scaledNonNegativeInteger 1..1
dimIndex Specify the substrings that replaces the %s placeholder within name and displayName. By default, the index is a decimal value starting with 0 for the first register. dimIndex should not be used together with the placeholder [%s], but rather with %s. dimIndexType 0..1
dimName Specify the name of the C-type structure. If not defined, then the entry of the <name> element is used. identifyerType 0..1
dimArrayIndex Grouping element to create enumerations in the header file. dimArrayIndexType 0..1
name String to identify the register. Register names are required to be unique within the scope of a peripheral. You can use the placeholder %s, which is replaced by the dimIndex substring. Use the placeholder [%s] only at the end of the identifier to generate arrays in the header file. The placeholder [%s] cannot be used together with dimIndex. registerNameType 1..1
displayName When specified, then this string can be used by a graphical frontend to visualize the register. Otherwise the name element is displayed. displayName may contain special characters and white spaces. You can use the placeholder %s, which is replaced by the dimIndex substring. Use the placeholder [%s] only at the end of the identifier. The placeholder [%s] cannot be used together with dimIndex. xs:string 0..1
description String describing the details of the register. xs:string 0..1
alternateGroup Specifies a group name associated with all alternate register that have the same name. At the same time, it indicates that there is a register definition allocating the same absolute address in the address space. xs:Name 0..1
alternateRegister This tag can reference a register that has been defined above to current location in the description and that describes the memory location already. This tells the SVDConv's address checker that the redefinition of this particular register is intentional. The register name needs to be unique within the scope of the current peripheral. A register description is defined either for a unique address location or could be a redefinition of an already described address. In the latter case, the register can be either marked alternateRegister and needs to have a unique name, or it can have the same register name but is assigned to a register subgroup through the tag alternateGroup (specified in version 1.0). identifierType 0..1
addressOffset Define the address offset relative to the enclosing element. scaledNonNegativeInteger 1..1
  Refer to registerPropertiesGroup for details about the colored elements.
size Defines the default bit-width of any register contained in the device (implicit inheritance). scaledNonNegativeInteger 0..1
access Defines the default access rights for all registers. accessType 0..1
protection Defines the protection rights for all registers. protectionStringType 0..1
resetValue Defines the default value for all registers at RESET. scaledNonNegativeInteger 0..1
resetMask Identifies which register bits have a defined reset value. scaledNonNegativeInteger 0..1
dataType It can be useful to assign a specific native C datatype to a register. This helps avoiding type casts. For example, if a 32 bit register shall act as a pointer to a 32 bit unsigned data item, then dataType can be set to "uint32_t *". The following simple data types are predefined:
    +
  • uint8_t: unsigned byte
  • +
  • uint16_t: unsigned half word
  • +
  • uint32_t: unsigned word
  • +
  • uint64_t: unsigned double word
  • +
  • int8_t: signed byte
  • +
  • int16_t: signed half word
  • +
  • int32_t: signed world
  • +
  • int64_t: signed double word
  • +
  • uint8_t *: pointer to unsigned byte
  • +
  • uint16_t *: pointer to unsigned half word
  • +
  • uint32_t *: pointer to unsigned word
  • +
  • uint64_t *: pointer to unsigned double word
  • +
  • int8_t *: pointer to signed byte
  • +
  • int16_t *: pointer to signed half word
  • +
  • int32_t *: pointer to signed world
  • +
  • int64_t *: pointer to signed double word
  • +
+
dataTypeType 0..1
modifiedWriteValues Element to describe the manipulation of data written to a register. If not specified, the value written to the field is the value stored in the field. The other options define bitwise operations:
    +
  • oneToClear: write data bits of one shall clear (set to zero) the corresponding bit in the register.
  • +
  • oneToSet: write data bits of one shall set (set to one) the corresponding bit in the register.
  • +
  • oneToToggle: write data bits of one shall toggle (invert) the corresponding bit in the register.
  • +
  • zeroToClear: write data bits of zero shall clear (set to zero) the corresponding bit in the register.
  • +
  • zeroToSet: write data bits of zero shall set (set to one) the corresponding bit in the register.
  • +
  • zeroToToggle: write data bits of zero shall toggle (invert) the corresponding bit in the register.
  • +
  • clear: after a write operation all bits in the field are cleared (set to zero).
  • +
  • set: after a write operation all bits in the field are set (set to one).
  • +
  • modify: after a write operation all bit in the field may be modified (default).
  • +
+
modifiedWriteValuesType 0..1
writeConstraint Three mutually exclusive options exist to set write-constraints. writeConstraintType 0..1
readAction If set, it specifies the side effect following a read operation. If not set, the register is not modified. The defined side effects are:
    +
  • clear: The register is cleared (set to zero) following a read operation.
  • +
  • set: The register is set (set to ones) following a read operation.
  • +
  • modify: The register is modified in some way after a read operation.
  • +
  • modifyExternal: One or more dependent resources other than the current register are immediately affected by a read operation (it is recommended that the register description specifies these dependencies).
  • +
+Debuggers are not expected to read this register location unless explicitly instructed by the user.
readActionType 0..1
fields In case a register is subdivided into bit fields, it should be reflected in the SVD description file to create bit-access macros and bit-field structures in the header file. fieldsType 0..1
+

 

+
+

+/device/peripherals/peripheral/registers/.../register/.../writeConstraint element

+

Define constraints for writing values to a field. You can choose between three options, which are mutualy exclusive.

+

Example:

+
<register>
+
...
+
<writeConstraint>
+
<useEnumeratedValues>true</useEnumeratedValues>
+
</writeConstraint>
+
...
+
<field>
+
<name>F_ONE</name>
+
...
+
<writeConstraint>
+
<range>
+
<minimum>2</minimum>
+
<maximum>4</maximum>
+
</range>
+
</writeConstraint>
+
...
+
<field>
+
<field>
+
<name>F_TWO</name>
+
...
+
<writeConstraint>
+
<writeAsRead>true</writeAsRead>
+
</writeConstraint>
+
...
+
<field>
+
<field>
+
<name>F_N</name>
+
...
+
<field>
+
...
+
<register>
+

The example shows write constraints defined on different levels. The write constrains on <register> level are propagated as default to all subsequent fields, especially to field F_N. Field F_ONE overwrites the default and sets the write range between 2..4. Other values cannot be written to this field. Field F_TWO overwrites the default and allows to write only the last read value.

+

/device/peripherals/peripheral/registers/.../register/.../writeConstraint

+ + + + + + + + + + + + + + + + + + + +
Parent Element Element Chain
register /device/peripherals/peripheral/registers/.../register element
field /device/peripherals/peripheral/registers/.../fields/field element
Child Elements Description Type Occurrence
writeAsRead If true, only the last read value can be written. xs:boolean 0..1
useEnumeratedValues If true, only the values listed in the enumeratedValues list can be written. xs:boolean 0..1
range Contains the following two elements:   0..1
minimum Specify the smallest number to be written to the field. scaledNonNegativeInteger 1..1
maximum Specify the largest number to be written to the field. scaledNonNegativeInteger 1..1
+

 

+
+

+/device/peripherals/peripheral/registers/.../register/fields element

+

Grouping element to define bit-field properties of a register.

+

Example:

+
...
+
<fields>
+
...
+
<field>
+
<name>TimerCtrl0_IntSel</name>
+
<description>Select interrupt line that is triggered by timer overflow.</description>
+
<bitOffset>1</bitOffset>
+
<bitWidth>3</bitWidth>
+
<access>read-write</access>
+
<resetValue>0x0</resetValue>
+
<modifiedWriteValues>oneToSet</modifiedWriteValues>
+
<writeConstraint>
+
<range>
+
<minimum>0</minimum>
+
<maximum>5</maximum>
+
</range>
+
</writeConstraint>
+
<readAction>clear</readAction>
+
<field>
+
...
+
<field>
+
<name>BIT1</name>
+
<description>test</description>
+
<bitRange>[7:0]</bitRange>
+
<access>read-write</access>
+
</field>
+
...
+
</fields>
+
...
+

The example creates two bit-files TimerCtrl0_IntSel and BIT1. The bit-field TimerCtrl0_IntSel has an bit offset of 1 and a depth of 3 bits, with unrestricted read and write access, a reset value of 0 and a write constraint of oneToSet, which means that only the written bit is changed. The value allowed to be written to the field range between 0-5. After a read operation, all bits are set to zero.

+

The bit-field BIT1, described as a test field, has the size of 8 bits and can be unlimited read and written.

+

/device/peripherals/peripheral/registers/.../register/fields

+ + + + + + + + + +
Parent Element Element Chain
register /device/peripherals/peripheral/registers/.../register element
Child Elements Description Type Occurrence
field Define the bit-field properties of a register. fieldType 1..*
+

 

+
+

+/device/peripherals/peripheral/registers/.../fields/field element

+

All fields of a register are enclosed between the <fields> opening and closing tags.

+

A bit-field has a name that is unique within the register. The position and size within the register can be decsribed in two ways:

+
    +
  • by the combination of the least significant bit's position (lsb) and the most significant bit's position (msb), or
  • +
  • the lsb and the bit-width of the field.
  • +
+

A field may define an enumeratedValue in order to make the display more intuitive to read.

+

/device/peripherals/peripheral/registers/.../fields/field

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Parent Element Element Chain
fields /device/peripherals/peripheral/registers/.../register/fields element
Attributes Description Type Occurrence
derivedFrom Specify the field name from which to inherit data. Elements specified subsequently override inherited values.
+Usage:
    +
  • Always use the full qualifying path, which must start with the peripheral <name>, when deriving from another scope. (for example, in periperhal A and registerX, derive from peripheralA.registerYY.fieldYY.
  • +
  • You can use the field <name> only when both fields are in the same scope.
  • +
  • No relative paths will work.
    +Remarks: When deriving, it is mandatory to specify at least the <name> and <description>.
  • +
+
xs:Name 0..1
Child Elements Description Type Occurrence
  Refer to dimElementGroup for details.
dim Defines the number of elements in a list. scaledNonNegativeInteger 1..1
dimIncrement Specify the address increment, in bits, between two neighboring list members in the address map. scaledNonNegativeInteger 1..1
dimIndex Specify the strings that substitue the placeholder %s within <name> and <displayName>. dimIndexType 0..1
dimName Specify the name of the C-type structure. If not defined, then the entry in the <name> element is used. identifierType 0..1
dimArrayIndex Grouping element to create enumerations in the header file. dimArrayIndexType 0..1
name Name string used to identify the field. Field names must be unique within a register. dimableIdentifierType 1..1
description String describing the details of the register. stringType 0..1
Choice of Three mutually exclusive options exist to describe the bit-range: 1..1
1. bitRangeLsbMsbStyle
bitOffset Value defining the position of the least significant bit of the field within the register. scaledNonNegativeInteger 1..1
bitWidth Value defining the bit-width of the bitfield within the register. scaledNonNegativeInteger 0..1
2. bitRangeOffsetWidthStyle
lsb Value defining the bit position of the least significant bit within the register. scaledNonNegativeInteger 1..1
msb Value defining the bit position of the most significant bit within the register. scaledNonNegativeInteger 1..1
3. bitRangePattern
bitRange A string in the format: "[<msb>:<lsb>]" bitRangeType 0..1
access Predefined strings set the access type. The element can be omitted if access rights get inherited from parent elements. accessType 0..1
modifiedWriteValues Describe the manipulation of data written to a field. If not specified, the value written to the field is the value stored in the field. The other options are bitwise operations:
    +
  • oneToClear: write data bit of one shall clear (set to zero) the corresponding bit in the field.
  • +
  • oneToSet: write data bit of one shall set (set to one) the corresponding bit in the field.
  • +
  • oneToToggle: write data bit of one shall toggle (invert) the corresponding bit in the field.
  • +
  • zeroToClear: write data bit of zero shall clear (set to zero) the corresponding bit in the field.
  • +
  • zeroToSet: write data bit of zero shall set (set to one) the corresponding bit in the field.
  • +
  • zeroToToggle: write data bit of zero shall toggle (invert) the corresponding bit in the field.
  • +
  • clear: after a write operation all bits in the field are cleared (set to zero).
  • +
  • set: after a write operation all bits in the field are set (set to one).
  • +
  • modify: after a write operation all bit in the field may be modified (default).
  • +
+
modifiedWriteValuesType 0..1
writeConstraint Three mutually exclusive options exist to set write-constraints. writeConstraintType 0..1
readAction If set, it specifies the side effect following a read operation. If not set, the field is not modified after a read. The defined side effects are:
    +
  • clear: The field is cleared (set to zero) following a read operation.
  • +
  • set: The field is set (set to ones) following a read operation.
  • +
  • modify: The field is modified in some way after a read operation.
  • +
  • modifyExternal: One or more dependent resources other than the current field are immediately affected by a read operation (it is recommended that the field description specifies these dependencies).
  • +
+Debuggers are not expected to read this field location unless explicitly instructed by the user.
readActionType 0..1 register
enumeratedValues Next lower level of description. enumerationType 0..2
+

 

+
+

+/device/peripherals/peripheral/registers/.../field/enumeratedValues element

+

The concept of enumerated values creates a map between unsigned integers and an identifier string. In addition, a description string can be associated with each entry in the map.

+
+  0 <-> disabled -> "The clock source clk0 is turned off."
+  1 <-> enabled  -> "The clock source clk1 is running."
+  2 <-> reserved -> "Reserved values. Do not use."
+  3 <-> reserved -> "Reserved values. Do not use."
+

This information generates an enum in the device header file. The debugger may use this information to display the identifier string as well as the description. Just like symbolic constants making source code more readable, the system view in the debugger becomes more instructive. The detailed description can provide reference manual level details within the debugger.

+

Example:

+
<enumeratedValues>
+
+
<name>TimerIntSelect</name>
+
<usage>read-write</usage>
+
+
<enumeratedValue>
+
<name>disabled</name>
+
<description>The clock source clk0 is turned off.</description>
+
<value>0</value>
+
</enumeratedValue>
+
+
<enumeratedValue>
+
<name>enabled</name>
+
<description>The clock source clk1 is running.</description>
+
<value>1</value>
+
</enumeratedValue>
+
+
<enumeratedValue>
+
<name>reserved</name>
+
<description>Reserved values. Do not use.</description>
+
<isDefault>true</isDefault>
+
</enumeratedValue>
+
+
</enumeratedValues>
+

/device/peripherals/peripheral/registers/.../field/enumeratedValues

+ + + + + + + + + + + + + + + + + + + +
Parent Element Element Chain
field /device/peripherals/peripheral/registers/.../fields/field element
Attributes Description Type Occurrence
derivedFrom Makes a copy from a previously defined enumeratedValues section. No modifications are allowed. An enumeratedValues entry is referenced by its name. If the name is not unique throughout the description, it needs to be further qualified by specifying the associated field, register, and peripheral as required. For example:
+    field:                           clk.dis_en_enum
+    register + field:                ctrl.clk.dis_en_enum
+    peripheral + register + field:   timer0.ctrl.clk.dis_en_enum
+
xs:Name 0..1
Child Elements Description Type Occurrence
name Identifier for the whole enumeration section. xs:Name 0..1
headerEnumName Identifier for the enumeration section. Overwrites the hierarchical enumeration type in the device header file. User is responsible for uniqueness across description. identifierType 0..1
usage Possible values are read, write, or read-write. This allows specifying two different enumerated values depending whether it is to be used for a read or a write access. If not specified, the default value read-write is used. enumUsageType 0..1
enumeratedValue Describes a single entry in the enumeration. The number of required items depends on the bit-width of the associated field. enumeratedValueType 1..*
+

 

+
+

+/device/peripherals/peripheral/registers/.../enumeratedValue element

+

An enumeratedValue defines a map between an unsigned integer and a string.

+

/device/peripherals/peripheral/registers/.../enumeratedValue

+ + + + + + + + + + + + + + + + + + + +
Parent Element Element Chain
enumeratedValues /device/peripherals/peripheral/registers/.../field/enumeratedValues element
dimArrayIndex /device/peripherals/peripheral/.../dimArrayIndex element
Child Elements Description Type Occurrence
name String describing the semantics of the value. Can be displayed instead of the value. identifierType 0..1
description Extended string describing the value. xs:string 0..1
choice of 1..1
value Defines the constant for the bit-field as decimal, hexadecimal (0x...) or binary (0b... or #...) number. E.g.:
+      <value>15</value>
+      <value>0xf</value>
+      <value>0b1111</value>
+      <value>#1111</value>
+
In addition the binary format supports 'do not care' bits represented by x. E.g. specifying value 14 and 15 as:
+      <value>0b111x</value>
+      <value>#111x</value>
+    
scaledNonNegativeInteger 0..1
isDefault Defines the name and description for all other values that are not listed explicitly. xs:boolean 0..1
+
+
+ + + + diff --git a/docs/SVD/html/elem_special.html b/docs/SVD/html/elem_special.html new file mode 100644 index 0000000..b05624a --- /dev/null +++ b/docs/SVD/html/elem_special.html @@ -0,0 +1,302 @@ + + + + + +Special Elements +CMSIS-SVD: Special Elements + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-SVD +  Version 1.3.3 +
+
CMSIS System View Description
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Special Elements
+
+
+

This section describes elements that occur on various levels and specifies the general rules. Specific requirements are mentioned in the place where these elements occur.

+
    +
  • dimElementGroup - Elements that can be used to define arrays and lists in the code.
  • +
  • registerPropertiesGroup - Register properties. Higher level definitions use as default values for lower level descriptions.
  • +
+

 

+
+

+dimElementGroup

+

The elements below appear on various levels and can be used to define arrays and lists in the code. Single descriptions get duplicated automatically into an array or a list. The subsequent is true for all elements of type dimableIdentifierType.

+
    +
  • To create arrays, use the placeholder [%s] at the end of a <name> and <displayName>. Do not define <dimIndex> in this case!
  • +
  • To create lists, use the placeholder %s anywhere within or at the end of a <name> and <displayName>.
  • +
+
Note
Some of the <name> and <displayName> elements can use both placeholders ([%s], %s), others just one. Refer to peripheral, register, cluster, and field for details.
+ + + + + + + + + + + + + + + + + + + + + + + +
Parent Element Element Chain
peripheral /device/peripherals/peripheral element
register /device/peripherals/peripheral/registers/.../register element
cluster /device/pripherals/peripheral/registers/.../cluster element
field /device/peripherals/peripheral/registers/.../fields/field element
Grouped Elements Description Type Occurrence
dim Defines the number of elements in an array or list. scaledNonNegativeInteger 1..1
dimIncrement Specify the address increment between two neighboring array or list members in the address map. scaledNonNegativeInteger 1..1
dimIndex Specify the strings that substitue the placeholder %s within <name> and <displayName>. By default, <dimIndex> is a value starting with 0.
+Remark: Do not define <dimIndex> when using the placeholder [%s] in <name> or <displayName>.
dimIndexType 0..1
dimName Specify the name of the C-type structure. If not defined, then the entry in the <name> element is used. identifierType 0..1
dimArrayIndex Grouping element to create enumerations in the header file. dimArrayIndexType 0..1
+

Example: The examples creates definitions for registers.

+
...
+
<register>
+
<dim>6</dim>
+
<dimIncrement>4</dimIncrement>
+
<dimIndex>A,B,C,D,E,Z</dimIndex>
+
<name>GPIO_%s_CTRL</name>
+
...
+
</register>
+

The code above generates the list: => GPIO_A_CTRL, GPIO_B_CTRL, GPIO_C_CTRL, GPIO_D_CTRL, GPIO_E_CTRL, GPIO_Z_CTRL

+
...
+
<register>
+
<dim>4</dim>
+
<dimIncrement>4</dimIncrement>
+
<dimIndex>3-6</dimIndex>
+
<name>IRQ%s</name>
+
...
+
</register>
+

The example above generates the list: => IRQ3, IRQ4, IRQ5, IRQ6

+
...
+
<register>
+
<dim>4</dim>
+
<dimIncrement>4</dimIncrement>
+
<name>MyArr[%s]</name>
+
...
+
</register>
+

The example above generates the array: => MyArr[4]

+

 

+
+

+/device/peripherals/peripheral/.../dimArrayIndex element

+

This information is used for generating an enum in the device header file. The debugger may use this information to display the identifier string as well as the description. Just like symbolic constants making source code more readable, the system view in the debugger becomes more instructive.

+

Example:

+
...
+
<dimArrayIndex>
+
<headerEnumName>FSMC_EnumArray</headerEnumName>
+
<enumeratedValue>
+
<name>UART0</name>
+
<description>UART0 Peripheral</description>
+
<value>0</value>
+
</enumeratedValue>
+
<enumeratedValue>
+
<name>TIMER0</name>
+
<description>TIMER0 Peripheral</description>
+
<value>1</value>
+
</enumeratedValue>
+
</dimArrayIndex>
+
...
+

/device/peripherals/peripheral/.../dimArrayIndex

+ + + + + + + + + + + + + + + +
Parent Element Element Chain
peripheral /device/peripherals/peripheral element
register /device/peripherals/peripheral/registers/.../register element
cluster /device/pripherals/peripheral/registers/.../cluster element
Child Elements Description Type Occurrence
headerEnumName

Specify the base name of enumerations. Overwrites the hierarchical enumeration type in the device header file. User is responsible for uniqueness across description. The headerfile generator uses the name of a peripheral or cluster as the base name for enumeration types. If <headerEnumName> element is specfied, then this string is used.

+

+
identifierType 0..1
enumeratedValue Specify the values contained in the enumeration. enumeratedValueType 1..*
+

 

+
+

+registerPropertiesGroup

+

The following elements are available on various levels. Element values defined on a lower level overwrite element values defined on a more general level. For example, <register>.<size> overwrites <peripheral>.<size>. Elements not defined on a more general level, must be defined at <register> level at the latest.

+

Special requirements are described on the level where the element occurs. Click on the parent element in the table below for details.

+

Example:

+
<device schemaVersion="1.3" xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:noNamespaceSchemaLocation="CMSIS-SVD.xsd">
+
<name>ARM_Cortex_M3</name>
+
<version>0.1</version>
+
<description>Arm Cortex-M3 based Microcontroller demonstration device</description>
+
<addressUnitBits>8</addressUnitBits>
+
<width>32</width>
+
<size>32</size>
+
<access>read-write</access>
+
<protection>s</protection>
+
...
+
<peripherals>
+
...
+
</peripherals>
+
</device>
+

Default settings have been defined for <width>, <size>, <access>, and <protection> on device level. These settings can be refined on subsequent levels.

+

Register Properties

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Parent Element Element Chain
device /device element
peripheral /device/peripherals/peripheral element
register /device/peripherals/peripheral/registers/.../register element
cluster /device/pripherals/peripheral/registers/.../cluster element
  Below: Parent elements that have a reference to a single element of this block
field /device/peripherals/peripheral/registers/.../fields/field element (only for element <access>)
sauRegionsConfig /device/cpu/sauRegionsConfig element (element <protection> for attribute <protectionWhenDisabled>)
addressBlock /device/peripherals/peripheral/addressBlock element (only for element <protection>)
Elements Description Type Occurrence
size Define the default bit-width of any device register (implicit inheritance). The value can be redefined on any lower level using the <size> element there. scaledNonNegativeInteger 0..1
access Define access rights. Access rights can be redefined at any lower level. Use one of the following predefined values:
    +
  • read-only: Read access is permitted. Write operations have an undefined result.
  • +
  • write-only: Read operations have an undefined result. Write access is permitted.
  • +
  • read-write: Read and write accesses are permitted. Writes affect the state of the register and reads return the register value.
  • +
  • writeOnce: Read operations have an undefined results. Only the first write after reset has an effect.
  • +
  • read-writeOnce: Read access is always permitted. Only the first write access after a reset will have an effect on the content. Other write operations have an undefined result.
  • +
+
accessType 0..1
protection Specify the security privilege to access an address region. This information is relevant for the programmer as well as the debugger when no universal access permissions have been granted. If no specific information is provided, an address region is accessible in any mode. The following values can be used to protect accesses by the programmer or debugger:
    +
  • "s" - secure permission required for access
  • +
  • "n" - non-secure or secure permission required for access
  • +
  • "p" - privileged permission required for access
  • +
+
protectionStringType 0..1
resetValue Define the default value for all registers at RESET. The value can be redefined on any lower level using the <resetValue> element there. The actual reset value is calculated from the <resetValue> and the <resetMask>. The mask is used to specify bits with an undefined reset value. scaledNonNegativeInteger 0..1
resetMask Identify register bits that have a defined reset value. These bit positions are set to 1. Bit positions with an undefined reset value are set to 0. scaledNonNegativeInteger 0..1
+
+
+ + + + diff --git a/docs/SVD/html/ftv2blank.png b/docs/SVD/html/ftv2blank.png new file mode 100644 index 0000000..63c605b Binary files /dev/null and b/docs/SVD/html/ftv2blank.png differ diff --git a/docs/SVD/html/ftv2cl.png b/docs/SVD/html/ftv2cl.png new file mode 100644 index 0000000..132f657 Binary files /dev/null and b/docs/SVD/html/ftv2cl.png differ diff --git a/docs/SVD/html/ftv2doc.png b/docs/SVD/html/ftv2doc.png new file mode 100644 index 0000000..17edabf Binary files /dev/null and b/docs/SVD/html/ftv2doc.png differ diff --git a/docs/SVD/html/ftv2folderclosed.png b/docs/SVD/html/ftv2folderclosed.png new file mode 100644 index 0000000..bb8ab35 Binary files /dev/null and b/docs/SVD/html/ftv2folderclosed.png differ diff --git a/docs/SVD/html/ftv2folderopen.png b/docs/SVD/html/ftv2folderopen.png new file mode 100644 index 0000000..d6c7f67 Binary files /dev/null and b/docs/SVD/html/ftv2folderopen.png differ diff --git a/docs/SVD/html/ftv2lastnode.png b/docs/SVD/html/ftv2lastnode.png new file mode 100644 index 0000000..63c605b Binary files /dev/null and b/docs/SVD/html/ftv2lastnode.png differ diff --git a/docs/SVD/html/ftv2link.png b/docs/SVD/html/ftv2link.png new file mode 100644 index 0000000..17edabf Binary files /dev/null and b/docs/SVD/html/ftv2link.png differ diff --git a/docs/SVD/html/ftv2mlastnode.png b/docs/SVD/html/ftv2mlastnode.png new file mode 100644 index 0000000..0b63f6d Binary files /dev/null and b/docs/SVD/html/ftv2mlastnode.png differ diff --git a/docs/SVD/html/ftv2mnode.png b/docs/SVD/html/ftv2mnode.png new file mode 100644 index 0000000..0b63f6d Binary files /dev/null and b/docs/SVD/html/ftv2mnode.png differ diff --git a/docs/SVD/html/ftv2mo.png b/docs/SVD/html/ftv2mo.png new file mode 100644 index 0000000..4bfb80f Binary files /dev/null and b/docs/SVD/html/ftv2mo.png differ diff --git a/docs/SVD/html/ftv2node.png b/docs/SVD/html/ftv2node.png new file mode 100644 index 0000000..63c605b Binary files /dev/null and b/docs/SVD/html/ftv2node.png differ diff --git a/docs/SVD/html/ftv2ns.png b/docs/SVD/html/ftv2ns.png new file mode 100644 index 0000000..72e3d71 Binary files /dev/null and b/docs/SVD/html/ftv2ns.png differ diff --git a/docs/SVD/html/ftv2plastnode.png b/docs/SVD/html/ftv2plastnode.png new file mode 100644 index 0000000..c6ee22f Binary files /dev/null and b/docs/SVD/html/ftv2plastnode.png differ diff --git a/docs/SVD/html/ftv2pnode.png b/docs/SVD/html/ftv2pnode.png new file mode 100644 index 0000000..c6ee22f Binary files /dev/null and b/docs/SVD/html/ftv2pnode.png differ diff --git a/docs/SVD/html/ftv2splitbar.png b/docs/SVD/html/ftv2splitbar.png new file mode 100644 index 0000000..fe895f2 Binary files /dev/null and b/docs/SVD/html/ftv2splitbar.png differ diff --git a/docs/SVD/html/ftv2vertline.png b/docs/SVD/html/ftv2vertline.png new file mode 100644 index 0000000..63c605b Binary files /dev/null and b/docs/SVD/html/ftv2vertline.png differ diff --git a/docs/SVD/html/index.html b/docs/SVD/html/index.html new file mode 100644 index 0000000..8792ca9 --- /dev/null +++ b/docs/SVD/html/index.html @@ -0,0 +1,169 @@ + + + + + +System View Description +CMSIS-SVD: System View Description + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-SVD +  Version 1.3.3 +
+
CMSIS System View Description
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
System View Description
+
+
+

Introduction

+

The CMSIS System View Description format(CMSIS-SVD) formalizes the description of the system contained in Arm Cortex-M processor-based microcontrollers, in particular, the memory mapped registers of peripherals. The detail contained in system view descriptions is comparable to the data in device reference manuals. The information ranges from high level functional descriptions of a peripheral all the way down to the definition and purpose of an individual bit field in a memory mapped register.

+

CMSIS-SVD files are developed and maintained by silicon vendors. Silicon vendors distribute their descriptions as part of CMSIS Device Family Packs. Tool vendors use CMSIS-SVD files for providing device-specific debug views of peripherals in their debugger. Last but not least, CMSIS-compliant device header files are generated from CMSIS-SVD files.

+

CMSIS-SVD Benefits

+
    +
  • For Software Developers:
      +
    • Consistency between device header file and what is being displayed by the debugger.
    • +
    • Detailed information about peripherals, registers, fields, and bit values as well as named interrupts from within the debugger, without the need to reference device documentation.
    • +
    • Convenient access to new and updated descriptions as part of the silicon vendor's CMSIS Device Family Packs as the packs are made availabl by silicon vendors.
    • +
    • Improved software development efficiency.
    • +
    +
  • +
  • For Silicon Vendors:
      +
    • A tool vendor independent file format enables early device support by a wide range of toolchains with limited effort.
    • +
    • The XML-based format helps ease the integration into in-house design flows.
    • +
    • Automated generation of CMSIS compliant device header files.
    • +
    • Full control throughout the life cycle of the CMSIS-SVD files from creation to maintenance.
    • +
    +
  • +
  • For Tool Vendors:
      +
    • Unified file format across silicon vendors helps the efficiency of supporting a wide range of devices in a timely manner.
    • +
    • Silicon vendors can provide early review access to the device support via restricted access to CMSIS Device Family Packs.
    • +
    • Updated descriptions are available over the web simplifying the maintenance of device support.
    • +
    +
  • +
+

Language Specification and Conventions

+ +

CMSIS-SVD in ARM::CMSIS Pack

+

The following files relevant to CMSIS-SVD are present in the ARM::CMSIS Pack directories:

+ + + + + + + +
File/Folder Content
CMSIS\Documentation\SVD This documentation
CMSIS\Utilities Exemplary SVD file (ARM_Example.svd) and generated header file (ARM_Example.h).
+

 

+
+
+
+ + + + diff --git a/docs/SVD/html/jquery.js b/docs/SVD/html/jquery.js new file mode 100644 index 0000000..3db33e6 --- /dev/null +++ b/docs/SVD/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=$(' + + +
+
+
Usage and Description
+
+
+
Here is a list of all related documentation pages:
+
[detail level 12]
+ + + + + + + + + + + + +
oRevision History
oSVD File Validation and Usage
oSVDConv.exe
oSVD Description (*.svd) Format
|oFile Conventions
|oSVD File Example
|o/device element
|o/device/cpu element
|o/device/peripherals element
|o/device/peripherals/peripheral/registers element
|\Special Elements
\CMSIS-SVD Schema File
+ + + + + + + diff --git a/docs/SVD/html/printComponentTabs.js b/docs/SVD/html/printComponentTabs.js new file mode 100644 index 0000000..8afdb6b --- /dev/null +++ b/docs/SVD/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/SVD/html/resize.js b/docs/SVD/html/resize.js new file mode 100644 index 0000000..304fcb6 --- /dev/null +++ b/docs/SVD/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/SVD/html/schema_1_2_gr.html b/docs/SVD/html/schema_1_2_gr.html new file mode 100644 index 0000000..faff623 --- /dev/null +++ b/docs/SVD/html/schema_1_2_gr.html @@ -0,0 +1,775 @@ + + + + + +CMSIS-SVD Schema File +CMSIS-SVD: CMSIS-SVD Schema File + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    CMSIS-SVD +  Version 1.3.3 +
    +
    CMSIS System View Description
    +
    +
    + +
    +
      + +
    +
    + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    +
    CMSIS-SVD Schema File
    +
    +
    +
    <?xml version="1.0" encoding="UTF-8"?>
    +<!-- 
    + 
    +  Copyright (c) 2013-2016 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
    + 
    +  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. September 2016
    +  $Revision:     1.3.3
    +
    +  Version 1.3.3:
    +  - update file header to Apache 2.0 License
    +  - add dimableIdentifierType, as a copy of previous identifierType adding "%s",
    +  - update identifierType to only allow names without %s included.
    +  - remove enumerationNameType.
    +  - add headerEnumName to enumerationType and to dimArrayIndexType for peripheral arrays 
    +    overwriting hierarchically generated names
    +  - add dimName to dimElementGroup. Only valid in <cluster> context, ignored otherwise.
    +  
    +  Version 1.3.2:
    +  adding dimIndexArray to peripheral-, cluster- and register-array to describe
    +  enumeration of array indices.
    +
    +  Version 1.3.1:
    +  fixed peripheral name element type to identifierType to support %s for peripheral arrays
    +  added optional protection element to addressBlockType and added p=privileged 
    +
    +  Version 1.3:
    +  added dim to peripherals to describe an array of peripherals.
    +  added nesting of clusters to support hierarchical register structures.
    +  added protection element as part of the registerPropertiesGroup indicating
    +  special permissions are required for accessing a register.
    +  CPU Section extended with description of the Secure Attribution Unit.
    +  
    +  Version 1.2:
    +  Cortex-M7 support items have been added as optional tags for the device header file generation:
    +  fpuDP, icachePresent, dcachePresent, itcmPresent, dtcmPresent
    +  
    +  Version 1.1:
    +  For backward compatibility all additional tags have been made optional.
    +  Extensions may be mandatory for successful device header file generation
    +  Other changes are related to some restructuring of the schema.
    +  
    +  Note that the memory section has been removed since this would limit the
    +  reuse of descriptions for a series of devices.
    + -->
    +
    +<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="qualified" version="1.3">
    +  <!-- stringType requires a none empty string of a least one character length -->
    +  <xs:simpleType name="stringType">
    +    <xs:restriction base="xs:string">
    +      <xs:minLength value="1"/>
    +    </xs:restriction>
    +  </xs:simpleType>
    +
    +  <xs:simpleType name="descriptionStringType">
    +    <xs:restriction base="xs:string">
    +      <xs:pattern value="[\p{IsBasicLatin}\p{IsLatin-1Supplement}]*" />
    +    </xs:restriction>
    +  </xs:simpleType>
    +  
    +  <!-- cpuType specifies a selection of Cortex-M and Secure-Cores. This list will get extended as new processors are released -->
    +  <xs:simpleType name="cpuNameType">
    +    <xs:restriction base="xs:token">
    +      <xs:enumeration value="CM0"/>
    +      <xs:enumeration value="CM0PLUS"/>
    +      <xs:enumeration value="CM0+"/>
    +      <xs:enumeration value="CM1"/>
    +      <xs:enumeration value="SC000"/>
    +      <xs:enumeration value="CM23"/>
    +      <xs:enumeration value="CM3"/>
    +      <xs:enumeration value="CM33"/>
    +      <xs:enumeration value="SC300"/>
    +      <xs:enumeration value="CM4"/>
    +      <xs:enumeration value="CM7"/>
    +      <xs:enumeration value="ARMV8MML"/>
    +      <xs:enumeration value="ARMV8MBL"/>
    +      <xs:enumeration value="CA5"/>
    +      <xs:enumeration value="CA7"/>
    +      <xs:enumeration value="CA8"/>
    +      <xs:enumeration value="CA9"/>
    +      <xs:enumeration value="CA15"/>
    +      <xs:enumeration value="CA17"/>
    +      <xs:enumeration value="CA53"/>
    +      <xs:enumeration value="CA57"/>
    +      <xs:enumeration value="CA72"/>
    +      <xs:enumeration value="other"/>
    +    </xs:restriction>
    +  </xs:simpleType>
    +  <!-- revisionType specifies the CPU revision format as defined by ARM (rNpM) -->
    +  <xs:simpleType name="revisionType">
    +    <xs:restriction base="xs:string">
    +      <xs:pattern value="r[0-9]*p[0-9]*"/>
    +    </xs:restriction>
    +  </xs:simpleType>
    +  <!-- EndianType pre-defines the tokens for specifying the endianess of the device -->
    +  <xs:simpleType name="endianType">
    +    <xs:restriction base="xs:token">
    +      <xs:enumeration value="little"/>
    +      <xs:enumeration value="big"/>
    +      <xs:enumeration value="selectable"/>
    +      <xs:enumeration value="other"/>
    +    </xs:restriction>
    +  </xs:simpleType>
    +  <!-- dataType pre-defines the tokens in line with CMSIS data type definitions -->
    +  <xs:simpleType name="dataTypeType">
    +    <xs:restriction base="xs:token">
    +      <xs:enumeration value="uint8_t"/>
    +      <xs:enumeration value="uint16_t"/>
    +      <xs:enumeration value="uint32_t"/>
    +      <xs:enumeration value="uint64_t"/>
    +      <xs:enumeration value="int8_t"/>
    +      <xs:enumeration value="int16_t"/>
    +      <xs:enumeration value="int32_t"/>
    +      <xs:enumeration value="int64_t"/>
    +      <xs:enumeration value="uint8_t *"/>
    +      <xs:enumeration value="uint16_t *"/>
    +      <xs:enumeration value="uint32_t *"/>
    +      <xs:enumeration value="uint64_t *"/>
    +      <xs:enumeration value="int8_t *"/>
    +      <xs:enumeration value="int16_t *"/>
    +      <xs:enumeration value="int32_t *"/>
    +      <xs:enumeration value="int64_t *"/>
    +    </xs:restriction>
    +  </xs:simpleType>
    +  <!-- nvicPrioBitsType specifies the integer value range for the number of bits used in NVIC to encode priority levels -->
    +  <xs:simpleType name="nvicPrioBitsType">
    +    <xs:restriction base="xs:integer">
    +      <xs:minInclusive value="2"/>
    +      <xs:maxInclusive value="8"/>
    +    </xs:restriction>
    +  </xs:simpleType>
    +  <!-- dimableIdentifierType specifies the subset and sequence of characters used for specifying identifiers that may contain %s from dim. -->
    +  <!-- this is particularly important as these are used in ANSI C Structures during the device header file generation -->
    +  <xs:simpleType name="dimableIdentifierType">
    +    <xs:restriction base="xs:string">
    +      <xs:pattern value="((%s)|(%s)[_A-Za-z]{1}[_A-Za-z0-9]*)|([_A-Za-z]{1}[_A-Za-z0-9]*(\[%s\])?)|([_A-Za-z]{1}[_A-Za-z0-9]*(%s)?[_A-Za-z0-9]*)"/>
    +    </xs:restriction>
    +  </xs:simpleType>
    +  <!-- identifierType specifies the subset and sequence of characters used for specifying identifiers that must not contain %s from dim. -->
    +  <!-- this is particularly important as these are used in ANSI C Structures during the device header file generation -->
    +  <xs:simpleType name="identifierType">
    +    <xs:restriction base="xs:string">
    +      <xs:pattern value="[_A-Za-z0-9]*"/>
    +    </xs:restriction>
    +  </xs:simpleType>
    +  <!-- V1.3: Protection Access Attribute Strings -->
    +  <xs:simpleType name="protectionStringType">
    +    <xs:restriction base="xs:string">
    +      <!-- s = Secure                      -->
    +      <!-- n = Non-secure                  -->
    +      <!-- p = Privileged                  -->
    +      <xs:pattern value="[snp]"/>
    +    </xs:restriction>
    +  </xs:simpleType>
    +  <!-- V1.3: SAU Access Type -->
    +  <xs:simpleType name="sauAccessType">
    +    <xs:restriction base="xs:string">
    +      <!-- c = non-secure Callable / Secure -->
    +      <!-- n = Non-secure                   -->
    +      <xs:pattern value="[cn]"/>
    +    </xs:restriction>
    +  </xs:simpleType>
    +
    +  <!-- dimIndexType specifies the subset and sequence of characters used for specifying the sequence of indices in register arrays -->
    +  <xs:simpleType name="dimIndexType">
    +    <xs:restriction base="xs:string">
    +      <xs:pattern value="[0-9]+\-[0-9]+|[A-Z]-[A-Z]|[_0-9a-zA-Z]+(,\s*[_0-9a-zA-Z]+)+"/>
    +    </xs:restriction>
    +  </xs:simpleType>
    +  <!-- scaledNonNegativeInteger specifies the format in which numbers are represented in hexadecimal or decimal format -->
    +  <xs:simpleType name="scaledNonNegativeInteger">
    +    <xs:restriction base="xs:string">
    +      <xs:pattern value="[+]?(0x|0X|#)?[0-9a-fA-F]+[kmgtKMGT]?"/>
    +    </xs:restriction>
    +  </xs:simpleType>
    +  <!-- enumeratedValueDataType specifies the number formats for the values in enumeratedValues -->
    +  <xs:simpleType name="enumeratedValueDataType">
    +    <xs:restriction base="xs:string">
    +      <xs:pattern value="[+]?(((0x|0X)[0-9a-fA-F]+)|([0-9]+)|((#|0b)[01xX]+))"/>
    +    </xs:restriction>
    +  </xs:simpleType>
    +  <!-- accessType specfies the pre-defined tokens for the available accesses -->
    +  <xs:simpleType name="accessType">
    +    <xs:restriction base="xs:token">
    +      <xs:enumeration value="read-only"/>
    +      <xs:enumeration value="write-only"/>
    +      <xs:enumeration value="read-write"/>
    +      <xs:enumeration value="writeOnce"/>
    +      <xs:enumeration value="read-writeOnce"/>
    +    </xs:restriction>
    +  </xs:simpleType>
    +  <!-- modifiedWriteValuesType specifies the pre-defined tokens for the write side effects -->
    +  <xs:simpleType name="modifiedWriteValuesType">
    +    <xs:restriction base="xs:token">
    +      <xs:enumeration value="oneToClear"/>
    +      <xs:enumeration value="oneToSet"/>
    +      <xs:enumeration value="oneToToggle"/>
    +      <xs:enumeration value="zeroToClear"/>
    +      <xs:enumeration value="zeroToSet"/>
    +      <xs:enumeration value="zeroToToggle"/>
    +      <xs:enumeration value="clear"/>
    +      <xs:enumeration value="set"/>
    +      <xs:enumeration value="modify"/>
    +    </xs:restriction>
    +  </xs:simpleType>
    +  <!-- readAction type specifies the pre-defined tokens for read side effects -->
    +  <xs:simpleType name="readActionType">
    +    <xs:restriction base="xs:token">
    +      <xs:enumeration value="clear"/>
    +      <xs:enumeration value="set"/>
    +      <xs:enumeration value="modify"/>
    +      <xs:enumeration value="modifyExternal"/>
    +    </xs:restriction>
    +  </xs:simpleType>
    +  <!-- enumUsageType specifies the pre-defined tokens for selecting what access types an enumeratedValues set is associated with -->
    +  <xs:simpleType name="enumUsageType">
    +    <xs:restriction base="xs:token">
    +      <xs:enumeration value="read"/>
    +      <xs:enumeration value="write"/>
    +      <xs:enumeration value="read-write"/>
    +    </xs:restriction>
    +  </xs:simpleType>
    +  <!-- bitRangeType specifies the bit numbers to be restricted values from 0 - 69 -->
    +  <xs:simpleType name="bitRangeType">
    +    <xs:restriction base="xs:token">
    +      <xs:pattern value="\[([0-4])?[0-9]:([0-4])?[0-9]\]"/>
    +    </xs:restriction>
    +  </xs:simpleType>
    +  <!-- writeContraintType specifies how to describe the restriction of the allowed values that can be written to a resource -->
    +  <xs:complexType name="writeConstraintType">
    +    <xs:choice>
    +      <xs:element name="writeAsRead" type="xs:boolean"/>
    +      <xs:element name="useEnumeratedValues" type="xs:boolean"/>
    +      <xs:element name="range">
    +        <xs:complexType>
    +          <xs:sequence>
    +            <xs:element name="minimum" type="scaledNonNegativeInteger"/>
    +            <xs:element name="maximum" type="scaledNonNegativeInteger"/>
    +          </xs:sequence>
    +        </xs:complexType>
    +      </xs:element>
    +    </xs:choice>
    +  </xs:complexType>
    +  <!-- addressBlockType specifies the elements to describe an address block -->
    +  <xs:complexType name="addressBlockType">
    +    <xs:sequence>
    +      <xs:element name="offset" type="scaledNonNegativeInteger"/>
    +      <xs:element name="size" type="scaledNonNegativeInteger"/>
    +      <xs:element name="usage">
    +        <xs:simpleType>
    +          <xs:restriction base="xs:token">
    +            <xs:enumeration value="registers"/>
    +            <xs:enumeration value="buffer"/>
    +            <xs:enumeration value="reserved"/>
    +          </xs:restriction>
    +        </xs:simpleType>
    +      </xs:element>
    +      <!-- Version 1.3.2: optional access protection for an address block s=secure n=non-secure p=privileged -->
    +      <xs:element name="protection" type="protectionStringType" minOccurs="0"/>
    +    </xs:sequence>
    +  </xs:complexType>
    +  <!-- interruptType specifies how to describe an interrupt associated with a peripheral -->
    +  <xs:complexType name="interruptType">
    +    <xs:sequence>
    +      <xs:element name="name" type="stringType"/>
    +      <xs:element name="description" type="xs:string" minOccurs="0"/>
    +      <xs:element name="value" type="xs:integer"/>
    +    </xs:sequence>
    +  </xs:complexType>
    +  <!-- register properties group specifies register size, access permission and reset value 
    +       this is used in multiple locations. Settings are inherited downstream. -->  
    +  <xs:group name="registerPropertiesGroup">
    +    <xs:sequence>
    +      <xs:element name="size" type="scaledNonNegativeInteger" minOccurs="0"/>
    +      <xs:element name="access" type="accessType" minOccurs="0"/>
    +      <!-- V 1.3: extended register access protection -->
    +      <xs:element name="protection" type="protectionStringType" minOccurs="0"/>
    +      <xs:element name="resetValue" type="scaledNonNegativeInteger" minOccurs="0"/>
    +      <xs:element name="resetMask" type="scaledNonNegativeInteger" minOccurs="0"/>
    +    </xs:sequence>
    +  </xs:group>
    +  <!-- bitRangeLsbMsbStyle specifies the bit position of a field within a register 
    +       by specifying the least significant and the most significant bit position -->
    +  <xs:group name="bitRangeLsbMsbStyle">
    +    <xs:sequence>
    +      <xs:element name="lsb"  type="scaledNonNegativeInteger"/>
    +      <xs:element name="msb"  type="scaledNonNegativeInteger"/>
    +    </xs:sequence>
    +  </xs:group>
    +  <!-- bitRangeOffsetWidthStyle specifies the bit position of a field within a register
    +       by specifying the least significant bit position and the bitWidth of the field -->
    +  <xs:group name="bitRangeOffsetWidthStyle">
    +    <xs:sequence>
    +      <xs:element name="bitOffset" type="scaledNonNegativeInteger"/>
    +      <xs:element name="bitWidth" type="scaledNonNegativeInteger" minOccurs="0"/>   
    +    </xs:sequence> 
    +  </xs:group>
    +  
    +  <!-- dimElementGroup specifies the number of array elements (dim), the address offset
    +       between to consecutive array elements and an a comma seperated list of strings 
    +       being used for identifying each element in the array -->
    +  <xs:group name="dimElementGroup">
    +    <xs:sequence>
    +      <xs:element name="dim" type="scaledNonNegativeInteger"/>
    +      <xs:element name="dimIncrement" type="scaledNonNegativeInteger"/>
    +      <xs:element name="dimIndex" type="dimIndexType" minOccurs="0"/>
    +      <xs:element name="dimName" type="identifierType" minOccurs="0"/>
    +      <xs:element name="dimArrayIndex" type="dimArrayIndexType" minOccurs="0"/>
    +    </xs:sequence>
    +  </xs:group>
    +
    +  <xs:complexType name="cpuType">
    +    <xs:sequence>
    +      <!-- V1.1: ARM processor name: Cortex-Mx / SCxxx -->
    +      <xs:element name="name" type="cpuNameType"/>
    +      <!-- V1.1: ARM defined revision of the cpu -->
    +      <xs:element name="revision" type="revisionType"/>
    +      <!-- V1.1: Endian specifies the endianess of the processor/device -->
    +      <xs:element name="endian" type="endianType"/>
    +      <!-- V1.1: mpuPresent specifies whether or not a memory protection unit is physically present -->
    +      <xs:element name="mpuPresent" type="xs:boolean" minOccurs="0"/>
    +      <!-- V1.1: fpuPresent specifies whether or not a floating point hardware unit is physically present -->
    +      <xs:element name="fpuPresent" type="xs:boolean" minOccurs="0"/>
    +      <!-- V1.2: fpuDP specifies a double precision floating point hardware unit is physically present-->
    +      <xs:element name="fpuDP" type="xs:boolean" minOccurs="0"/>
    +      <!-- V1.2: icachePresent specifies that an instruction cache is physically present-->
    +      <xs:element name="icachePresent" type="xs:boolean" minOccurs="0"/>
    +      <!-- V1.2: dcachePresent specifies that a data cache is physically present-->
    +      <xs:element name="dcachePresent" type="xs:boolean" minOccurs="0"/>
    +      <!-- V1.2: itcmPresent specifies that an instruction tightly coupled memory is physically present-->
    +      <xs:element name="itcmPresent" type="xs:boolean" minOccurs="0"/>
    +      <!-- V1.2: dtcmPresent specifies that an data tightly coupled memory is physically present-->
    +      <xs:element name="dtcmPresent" type="xs:boolean" minOccurs="0"/>
    +      <!-- V1.1: vtorPresent is used for Cortex-M0+ based devices only. It indicates whether the Vector -->
    +      <!--       Table Offset Register is implemented in the device or not                              -->
    +      <xs:element name="vtorPresent" type="xs:boolean" minOccurs="0"/>
    +      <!-- V1.1: nvicPrioBits specifies the number of bits used by the Nested Vectored Interrupt Controller -->
    +      <!--       for defining the priority level = # priority levels                                        -->
    +      <xs:element name="nvicPrioBits" type="scaledNonNegativeInteger"/>
    +      <!-- V1.1: vendorSystickConfig is set true if a custom system timer is implemented in the device -->
    +      <!--       instead of the ARM specified SysTickTimer                                             -->
    +      <xs:element name="vendorSystickConfig" type="xs:boolean"/>
    +      <!-- V1.3: reports the total number of interrupts implemented by the device (optional) -->
    +      <xs:element name="deviceNumInterrupts" type="scaledNonNegativeInteger" minOccurs="0"/>
    +      <!-- V1.3: sauRegions specifies the available number of address regions -->
    +      <!--       if not specified a value of zero is assumed                  -->
    +      <xs:element name="sauNumRegions" type="scaledNonNegativeInteger" minOccurs="0"/>
    +      <!-- V1.3: SAU Regions Configuration (if fully or partially predefined) -->
    +      <xs:element name="sauRegionsConfig" minOccurs="0">
    +        <xs:complexType>
    +          <xs:sequence>
    +            <xs:element name="region" minOccurs="0" maxOccurs="unbounded">
    +              <!-- addressBlockType specifies the elements to describe an address block -->
    +              <xs:complexType>
    +                <xs:sequence minOccurs="1"   maxOccurs="unbounded">
    +                  <xs:element name="base"    type="scaledNonNegativeInteger"/>
    +                  <xs:element name="limit"   type="scaledNonNegativeInteger"/>
    +                  <xs:element name="access"  type="sauAccessType"/>
    +                </xs:sequence>
    +                <xs:attribute name="enabled" type="xs:boolean" use="optional" default="true"/>
    +                <xs:attribute name="name"    type="xs:string"  use="optional"/>
    +              </xs:complexType>
    +            </xs:element>
    +          </xs:sequence>
    +          <xs:attribute name="enabled" type="xs:boolean" use="optional" default="true"/>
    +          <xs:attribute name="protectionWhenDisabled" type="protectionStringType" use="optional" default="s"/>
    +        </xs:complexType>
    +      </xs:element>
    +     </xs:sequence>
    +  </xs:complexType>
    +
    +  <xs:complexType name="enumeratedValueType">
    +    <xs:sequence>
    +      <!-- name is a ANSI C indentifier representing the value (C Enumeration) -->
    +      <xs:element name="name" type="identifierType"/>
    +      <!-- description contains the details about the semantics/behavior specified by this value -->
    +      <xs:element name="description" type="stringType" minOccurs="0"/>
    +      <xs:choice>
    +        <xs:element name="value" type="enumeratedValueDataType"/>
    +        <!-- isDefault specifies the name and description for all values that are not
    +             specifically described individually -->
    +        <xs:element name="isDefault" type="xs:boolean"/>
    +      </xs:choice>
    +    </xs:sequence>
    +  </xs:complexType>
    +  
    +  <xs:complexType name="enumerationType">
    +    <xs:sequence>
    +      <!-- name specfies a reference to this enumeratedValues section for reuse purposes
    +           this name does not appear in the System Viewer nor the Header File. -->
    +      <xs:element name="name" type="identifierType" minOccurs="0"/>
    +      <!-- overrides the hierarchical enumeration type in the device header file. User is responsible for uniqueness across description -->
    +      <xs:element name="headerEnumName" type="identifierType" minOccurs="0"/>
    +      <!-- usage specifies whether this enumeration is to be used for read or write or 
    +                                                       (read and write) accesses -->
    +      <xs:element name="usage" type="enumUsageType" minOccurs="0"/>
    +      <!-- enumeratedValue derivedFrom=<identifierType> -->
    +      <xs:element name="enumeratedValue" type="enumeratedValueType" minOccurs="1" maxOccurs="unbounded"/>
    +    </xs:sequence>
    +    <xs:attribute name="derivedFrom" type="identifierType" use="optional"/>
    +  </xs:complexType>
    +
    +  <xs:complexType name="dimArrayIndexType">
    +    <xs:sequence>
    +      <xs:element name="headerEnumName" type="identifierType" minOccurs="0"/>
    +      <xs:element name="enumeratedValue" type="enumeratedValueType" minOccurs="1" maxOccurs="unbounded"/>
    +    </xs:sequence>
    +  </xs:complexType>
    +
    +  <xs:complexType name="fieldType">
    +    <xs:sequence>
    +      <xs:group    ref="dimElementGroup" minOccurs="0"/>
    +      <!-- name specifies a field's name. The System Viewer and the device header file will
    +           use the name of the field as identifier -->
    +      <xs:element name="name" type="dimableIdentifierType"/>
    +      <!-- description contains reference manual level information about the function and 
    +           options of a field -->
    +      <xs:element name="description" type="stringType" minOccurs="0"/>
    +      <!-- alternative specifications of the bit position of the field within the register -->
    +      <xs:choice minOccurs="1" maxOccurs="1">
    +        <!-- bit field described by lsb followed by msb tag -->
    +        <xs:group ref="bitRangeLsbMsbStyle"/>
    +        <!-- bit field described by bit offset relative to Bit0 + bit width of field -->
    +        <xs:group ref="bitRangeOffsetWidthStyle"/>
    +        <!-- bit field described by [<msb>:<lsb>] -->
    +        <xs:element name="bitRange" type="bitRangeType"/>
    +      </xs:choice>
    +      <!-- access describes the predefined permissions for the field. -->
    +      <xs:element name="access" type="accessType" minOccurs="0"/>
    +      <!-- predefined description of write side effects -->
    +      <xs:element name="modifiedWriteValues" type="modifiedWriteValuesType" minOccurs="0"/>
    +      <!-- writeContstraint specifies the subrange of allowed values -->
    +      <xs:element name="writeConstraint" type="writeConstraintType" minOccurs="0"/>
    +      <!-- readAction specifies the read side effects. -->
    +      <xs:element name="readAction" type="readActionType" minOccurs="0"/>
    +      <!-- enumeratedValues derivedFrom=<identifierType> -->
    +      <xs:element name="enumeratedValues" type="enumerationType" minOccurs="0" maxOccurs="2">
    +      </xs:element>
    +    </xs:sequence>
    +    <xs:attribute name="derivedFrom" type="dimableIdentifierType" use="optional"/>
    +  </xs:complexType>
    +
    +  <xs:complexType name="fieldsType">
    +    <xs:sequence>
    +      <!-- field derivedFrom=<identifierType> -->
    +      <xs:element name="field" type="fieldType" minOccurs="1" maxOccurs="unbounded"/>
    +    </xs:sequence>
    +  </xs:complexType>
    +
    +  <xs:complexType name="registerType">
    +    <xs:sequence>
    +      <xs:group    ref="dimElementGroup" minOccurs="0"/>
    +      <!-- name specifies the name of the register. The register name is used by System Viewer and
    +                                     device header file generator to represent a register -->
    +      <xs:element name="name" type="dimableIdentifierType"/>
    +      <!-- display name specifies a register name without the restritions of an ANSIS C identifier.
    +                                     The use of this tag is discouraged because it does not allow consistency between
    +                                     the System View and the device header file. -->
    +      <xs:element name="displayName" type="stringType" minOccurs="0"/>
    +      <!-- description contains a reference manual level description about the register and it's purpose -->
    +      <xs:element name="description" type="stringType" minOccurs="0"/>
    +      <xs:choice>
    +        <!-- alternateGroup specifies the identifier of the subgroup a register belongs to.
    +                                       This is useful if a register has a different description per mode but a single name -->
    +        <xs:element name="alternateGroup" type="identifierType" minOccurs="0"/>
    +        <!-- V1.1: alternateRegister specifies an alternate register description for an address that is
    +                                       already fully described. In this case the register name must be unique within the peripheral -->
    +        <xs:element name="alternateRegister" type="dimableIdentifierType" minOccurs="0"/>
    +      </xs:choice>
    +      <!-- addressOffset describes the address of the register relative to the baseOffset of the peripheral -->
    +      <xs:element name="addressOffset" type="scaledNonNegativeInteger"/>
    +      <!-- registerPropertiesGroup elements specify the default values for register size, access permission and
    +                                     reset value. These default values are inherited to all fields contained in this register -->
    +      <xs:group    ref="registerPropertiesGroup" minOccurs="0"/>
    +      <!-- V1.1: dataType specifies a CMSIS compliant native dataType for a register (i.e. signed, unsigned, pointer) -->
    +      <xs:element name="dataType" type="dataTypeType" minOccurs="0"/>
    +      <!-- modifiedWriteValues specifies the write side effects -->
    +      <xs:element name="modifiedWriteValues" type="modifiedWriteValuesType" minOccurs="0"/>
    +      <!-- writeConstraint specifies the subset of allowed write values -->
    +      <xs:element name="writeConstraint" type="writeConstraintType" minOccurs="0"/>
    +      <!-- readAcction specifies the read side effects -->
    +      <xs:element name="readAction" type="readActionType" minOccurs="0"/>
    +      <!-- fields section contains all fields that belong to this register -->
    +      <xs:element name="fields" type="fieldsType" minOccurs="0" maxOccurs="1"/>
    +    </xs:sequence>
    +    <xs:attribute name="derivedFrom" type="dimableIdentifierType" use="optional"/>
    +  </xs:complexType>
    +
    +  <!-- V1.1: A cluster is a set of registers that are composed into a C data structure in the device header file -->
    +  <xs:complexType name="clusterType">
    +    <xs:sequence>
    +      <xs:group   ref="dimElementGroup" minOccurs="0"/>
    +      <xs:element name="name" type="dimableIdentifierType"/>
    +      <xs:element name="description" type="xs:string"/>
    +      <!-- V1.1: alternateCluster specifies an alternative description for a cluster address range that is
    +                 already fully described. In this case the cluster name must be unique within the peripheral -->
    +      <xs:element name="alternateCluster" type="dimableIdentifierType" minOccurs="0"/>
    +      <!-- V1.1: headerStructName specifies the name for the cluster structure typedef
    +                 used in the device header generation instead of the cluster name -->
    +      <xs:element name="headerStructName" type="identifierType" minOccurs="0"/>
    +      <xs:element name="addressOffset" type="scaledNonNegativeInteger"/>
    +      <!-- registerPropertiesGroup elements specify the default values for register size, access permission and
    +                 reset value. These default values are inherited to all registers contained in this peripheral -->
    +      <xs:group ref="registerPropertiesGroup" minOccurs="0"/>
    +      <xs:sequence>
    +        <xs:choice minOccurs="1" maxOccurs="unbounded">
    +          <xs:element name="register" type="registerType" minOccurs="0" maxOccurs="unbounded"/>
    +          <!-- 1.3: nesting of cluster is supported -->
    +          <xs:element name="cluster" type="clusterType" minOccurs="0" maxOccurs="unbounded"/>
    +        </xs:choice>
    +      </xs:sequence>
    +    </xs:sequence>
    +    <xs:attribute name="derivedFrom" type="dimableIdentifierType" use="optional"/>
    +  </xs:complexType>
    +
    +  <!-- the registers section can have an arbitrary list of cluster and register sections -->
    +  <xs:complexType name="registersType">
    +    <xs:choice minOccurs="1" maxOccurs="unbounded">
    +      <xs:element name="cluster" type="clusterType"/>
    +      <xs:element name="register" type="registerType"/>
    +    </xs:choice>
    +  </xs:complexType>
    +
    +  <xs:complexType name="peripheralType">
    +    <xs:sequence>
    +      <!-- 1.3: specify uni-dimensional array of peripheral - requires name="<name>[%s]" -->
    +      <xs:group    ref="dimElementGroup" minOccurs="0"/>
    +      <!-- name specifies the name of a peripheral. This name is used for the System View and device header file -->
    +      <xs:element name="name" type="dimableIdentifierType"/>
    +      <!-- version specifies the version of the peripheral descriptions -->
    +      <xs:element name="version" type="stringType" minOccurs="0"/>
    +      <!-- description provides a high level functional description of the peripheral -->
    +      <xs:element name="description" type="stringType" minOccurs="0"/>
    +      <!-- V1.1: alternatePeripheral specifies an alternative description for an address range that is
    +           already fully by a peripheral described. In this case the peripheral name must be unique within the device description -->
    +      <xs:element name="alternatePeripheral" type="dimableIdentifierType" minOccurs="0"/>
    +      <!-- groupName assigns this peripheral to a group of peripherals. This is only used bye the System View -->
    +      <xs:element name="groupName" type="xs:Name" minOccurs="0"/>
    +      <!-- prependToName specifies a prefix that is placed in front of each register name of this peripheral. 
    +                         The device header file will show the registers in a C-Struct of the peripheral without the prefix. -->
    +      <xs:element name="prependToName" type="identifierType" minOccurs="0"/>
    +      <!-- appendToName is a postfix that is appended to each register name of this peripheral. The device header 
    +                         file will sho the registers in a C-Struct of the peripheral without the postfix -->
    +      <xs:element name="appendToName" type="identifierType" minOccurs="0"/>
    +      <!-- V1.1: headerStructName specifies the name for the peripheral structure typedef
    +                         used in the device header generation instead of the peripheral name -->
    +      <xs:element name="headerStructName" type="dimableIdentifierType" minOccurs="0"/>
    +      <!-- disableCondition contains a logical expression based on constants and register or bit-field values 
    +                         if the condition is evaluated to true, the peripheral display will be disabled -->
    +      <xs:element name="disableCondition" type="stringType" minOccurs="0"/>
    +      <!-- baseAddress specifies the absolute base address of a peripheral. For derived peripherals it is mandatory
    +                         to specify a baseAddress. -->
    +      <xs:element name="baseAddress" type="scaledNonNegativeInteger"/>
    +      <!-- registerPropertiesGroup elements specify the default values for register size, access permission and
    +                         reset value. These default values are inherited to all registers contained in this peripheral -->
    +      <xs:group ref="registerPropertiesGroup" minOccurs="0"/>
    +      <!-- addressBlock specifies one or more address ranges that are assigned exclusively to this peripheral. 
    +                         derived peripherals may have no addressBlock, however none-derived peripherals are required to specify
    +                         at least one address block -->
    +      <xs:element name="addressBlock" type="addressBlockType" minOccurs="0" maxOccurs="unbounded"/>
    +      <!-- interrupt specifies can specify one or more interrtupts by name, description and value -->
    +      <xs:element name="interrupt" type="interruptType" minOccurs="0" maxOccurs="unbounded"/>
    +      <!-- registers section contains all registers owned by the peripheral. In case a peripheral gets derived it does
    +                        not have its own registers section, hence this section is optional. A unique peripheral without a 
    +                        registers section is not allowed -->
    +      <xs:element name="registers" type="registersType" minOccurs="0" maxOccurs="1">
    +      </xs:element>
    +    </xs:sequence>
    +    <xs:attribute name="derivedFrom" type="dimableIdentifierType" use="optional"/>
    +  </xs:complexType>
    +  
    +  <!-- ==================================================== -->
    +  <!-- The top level element of a description is the device -->
    +  <!-- ==================================================== -->
    +  <xs:element name="device" nillable="true">
    +    <xs:complexType>
    +      <xs:sequence>
    +        <!-- V1.1: Vendor Name -->
    +        <xs:element name="vendor" type="stringType" minOccurs="0"/>
    +        <!-- V1.1: Vendor ID - a short name for referring to the vendor (e.g. Texas Instruments = TI) -->
    +        <xs:element name="vendorID" type="identifierType" minOccurs="0"/>
    +        <!-- name specifies the device name being described -->
    +        <xs:element name="name" type="identifierType"/>
    +        <!-- V1.1: series specifies the device series or family name -->
    +        <xs:element name="series" type="stringType" minOccurs="0"/>
    +        <!-- version specifies the version of the device description -->
    +        <xs:element name="version" type="stringType"/>
    +        <!-- description is a string describing the device features (e.g. memory size, peripherals, etc.) -->
    +        <xs:element name="description" type="stringType"/>
    +        <!-- V1.1: licenseText specifies the file header section to be included in any derived file -->
    +        <xs:element name="licenseText" type="stringType" minOccurs="0"/>
    +        <!-- V1.1: cpu specifies the details of the processor included in the device -->
    +        <xs:element name="cpu" type="cpuType" minOccurs="0"/>
    +        <!-- V1.1: the tag specifies the filename without extension of the CMSIS System Device include file.
    +             This tag is used by the header file generator for customizing the include statement referencing the
    +             CMSIS system file within the CMSIS device header file. By default the filename is "system_<device.name>"
    +             In cases a device series shares a single system header file, the name of the series shall be used 
    +             instead of the individual device name. -->
    +        <xs:element name="headerSystemFilename" type="identifierType" minOccurs="0"/>
    +        <!-- V1.1: headerDefinitionPrefix specifies the string being prepended to all names of types defined in
    +             generated device header file -->
    +        <xs:element name="headerDefinitionsPrefix" type="identifierType" minOccurs="0"/>
    +        <!-- addressUnitBits specifies the size of the minimal addressable unit in bits -->
    +        <xs:element name="addressUnitBits" type="scaledNonNegativeInteger"/>
    +        <!-- width specifies the number of bits for the maximum single transfer size allowed by the bus interface.
    +             This sets the maximum size of a single register that can be defined for an address space -->
    +        <xs:element name="width" type="scaledNonNegativeInteger"/>
    +        <!-- registerPropertiesGroup elements specify the default values for register size, access permission and
    +             reset value -->
    +        <xs:group ref="registerPropertiesGroup" minOccurs="0"/>
    +
    +        <!-- peripherals is containing all peripherals -->
    +        <xs:element name="peripherals">
    +          <xs:complexType>
    +            <xs:sequence>
    +              <xs:element name="peripheral" type="peripheralType" minOccurs="1" maxOccurs="unbounded"/>
    +            </xs:sequence>
    +          </xs:complexType>
    +        </xs:element>
    +
    +        <!-- Vendor Extensions: this section captures custom extensions. This section will be ignored by default -->
    +        <xs:element name="vendorExtensions" minOccurs="0" maxOccurs="1">
    +          <xs:complexType>
    +            <xs:sequence>
    +              <xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded">
    +              </xs:any>
    +            </xs:sequence>
    +          </xs:complexType>
    +        </xs:element>
    +      </xs:sequence>
    +      <xs:attribute name="schemaVersion" type="xs:decimal" use="required"/>
    +    </xs:complexType>
    +  </xs:element>
    +</xs:schema>
    +
    +<!-- END OF FILE -->
    +
    + + + + diff --git a/docs/SVD/html/search/all_0.html b/docs/SVD/html/search/all_0.html new file mode 100644 index 0000000..17b6da8 --- /dev/null +++ b/docs/SVD/html/search/all_0.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/SVD/html/search/all_0.js b/docs/SVD/html/search/all_0.js new file mode 100644 index 0000000..967e520 --- /dev/null +++ b/docs/SVD/html/search/all_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['cmsis_2dsvd_20schema_20file',['CMSIS-SVD Schema File',['../schema_1_2_gr.html',1,'']]] +]; diff --git a/docs/SVD/html/search/all_1.html b/docs/SVD/html/search/all_1.html new file mode 100644 index 0000000..e290644 --- /dev/null +++ b/docs/SVD/html/search/all_1.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/SVD/html/search/all_1.js b/docs/SVD/html/search/all_1.js new file mode 100644 index 0000000..713183b --- /dev/null +++ b/docs/SVD/html/search/all_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['file_20conventions',['File Conventions',['../svd_xml_conventions_gr.html',1,'svd_Format_pg']]] +]; diff --git a/docs/SVD/html/search/all_2.html b/docs/SVD/html/search/all_2.html new file mode 100644 index 0000000..95ded12 --- /dev/null +++ b/docs/SVD/html/search/all_2.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/SVD/html/search/all_2.js b/docs/SVD/html/search/all_2.js new file mode 100644 index 0000000..28a385d --- /dev/null +++ b/docs/SVD/html/search/all_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['revision_20history',['Revision History',['../svd_revisionHistory.html',1,'']]] +]; diff --git a/docs/SVD/html/search/all_3.html b/docs/SVD/html/search/all_3.html new file mode 100644 index 0000000..4d312d0 --- /dev/null +++ b/docs/SVD/html/search/all_3.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/SVD/html/search/all_3.js b/docs/SVD/html/search/all_3.js new file mode 100644 index 0000000..5af6f10 --- /dev/null +++ b/docs/SVD/html/search/all_3.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['special_20elements',['Special Elements',['../elem_special.html',1,'svd_Format_pg']]], + ['system_20view_20description',['System View Description',['../index.html',1,'']]], + ['svd_20file_20example',['SVD File Example',['../svd_Example_pg.html',1,'svd_Format_pg']]], + ['svd_20description_20_28_2a_2esvd_29_20format',['SVD Description (*.svd) Format',['../svd_Format_pg.html',1,'']]], + ['svdconv_2eexe',['SVDConv.exe',['../svd_SVDConv_pg.html',1,'']]], + ['svd_20file_20validation_20and_20usage',['SVD File Validation and Usage',['../svd_validate_file_pg.html',1,'']]] +]; diff --git a/docs/SVD/html/search/close.png b/docs/SVD/html/search/close.png new file mode 100644 index 0000000..9342d3d Binary files /dev/null and b/docs/SVD/html/search/close.png differ diff --git a/docs/SVD/html/search/mag_sel.png b/docs/SVD/html/search/mag_sel.png new file mode 100644 index 0000000..81f6040 Binary files /dev/null and b/docs/SVD/html/search/mag_sel.png differ diff --git a/docs/SVD/html/search/nomatches.html b/docs/SVD/html/search/nomatches.html new file mode 100644 index 0000000..b1ded27 --- /dev/null +++ b/docs/SVD/html/search/nomatches.html @@ -0,0 +1,12 @@ + + + + + + + +
    +
    No Matches
    +
    + + diff --git a/docs/SVD/html/search/pages_0.html b/docs/SVD/html/search/pages_0.html new file mode 100644 index 0000000..c51c834 --- /dev/null +++ b/docs/SVD/html/search/pages_0.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/SVD/html/search/pages_0.js b/docs/SVD/html/search/pages_0.js new file mode 100644 index 0000000..967e520 --- /dev/null +++ b/docs/SVD/html/search/pages_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['cmsis_2dsvd_20schema_20file',['CMSIS-SVD Schema File',['../schema_1_2_gr.html',1,'']]] +]; diff --git a/docs/SVD/html/search/pages_1.html b/docs/SVD/html/search/pages_1.html new file mode 100644 index 0000000..2a98fce --- /dev/null +++ b/docs/SVD/html/search/pages_1.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/SVD/html/search/pages_1.js b/docs/SVD/html/search/pages_1.js new file mode 100644 index 0000000..713183b --- /dev/null +++ b/docs/SVD/html/search/pages_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['file_20conventions',['File Conventions',['../svd_xml_conventions_gr.html',1,'svd_Format_pg']]] +]; diff --git a/docs/SVD/html/search/pages_2.html b/docs/SVD/html/search/pages_2.html new file mode 100644 index 0000000..0711a0b --- /dev/null +++ b/docs/SVD/html/search/pages_2.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/SVD/html/search/pages_2.js b/docs/SVD/html/search/pages_2.js new file mode 100644 index 0000000..28a385d --- /dev/null +++ b/docs/SVD/html/search/pages_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['revision_20history',['Revision History',['../svd_revisionHistory.html',1,'']]] +]; diff --git a/docs/SVD/html/search/pages_3.html b/docs/SVD/html/search/pages_3.html new file mode 100644 index 0000000..4310311 --- /dev/null +++ b/docs/SVD/html/search/pages_3.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/SVD/html/search/pages_3.js b/docs/SVD/html/search/pages_3.js new file mode 100644 index 0000000..5af6f10 --- /dev/null +++ b/docs/SVD/html/search/pages_3.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['special_20elements',['Special Elements',['../elem_special.html',1,'svd_Format_pg']]], + ['system_20view_20description',['System View Description',['../index.html',1,'']]], + ['svd_20file_20example',['SVD File Example',['../svd_Example_pg.html',1,'svd_Format_pg']]], + ['svd_20description_20_28_2a_2esvd_29_20format',['SVD Description (*.svd) Format',['../svd_Format_pg.html',1,'']]], + ['svdconv_2eexe',['SVDConv.exe',['../svd_SVDConv_pg.html',1,'']]], + ['svd_20file_20validation_20and_20usage',['SVD File Validation and Usage',['../svd_validate_file_pg.html',1,'']]] +]; diff --git a/docs/SVD/html/search/search.css b/docs/SVD/html/search/search.css new file mode 100644 index 0000000..4d7612f --- /dev/null +++ b/docs/SVD/html/search/search.css @@ -0,0 +1,271 @@ +/*---------------- Search Box */ + +#FSearchBox { + float: left; +} + +#MSearchBox { + white-space : nowrap; + position: absolute; + float: none; + display: inline; + margin-top: 8px; + right: 0px; + width: 170px; + z-index: 102; + background-color: white; +} + +#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:111px; + 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; +} + +span.SRScope { + padding-left: 4px; +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; +} + +.SRResult { + display: none; +} + +DIV.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.searchresult { + background-color: #F0F3F8; +} + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: url("../tab_a.png"); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/docs/SVD/html/search/search.js b/docs/SVD/html/search/search.js new file mode 100644 index 0000000..292849e --- /dev/null +++ b/docs/SVD/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: "cfrs", + 1: "cfrs" +}; + +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 + + + + +SVD File Example +CMSIS-SVD: SVD File Example + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    CMSIS-SVD +  Version 1.3.3 +
    +
    CMSIS System View Description
    +
    +
    + +
    +
      + +
    +
    + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    +
    SVD File Example
    +
    +
    +
    <?xml version="1.0" encoding="utf-8"?>
    +
    +<!-- File naming: <part/series name>.svd -->
    +
    +<!--
    +  Copyright (C) 2012-2014 ARM Limited. All rights reserved.
    +
    +  Purpose: System Viewer Description (SVD) Example (Schema Version 1.1)
    +           This is a description of a none-existent and incomplete device
    +		   for demonstration purposes only.
    +		   
    +  Redistribution and use in source and binary forms, with or without
    +  modification, are permitted provided that the following conditions are met:
    +   - Redistributions of source code must retain the above copyright
    +     notice, this list of conditions and the following disclaimer.
    +   - Redistributions in binary form must reproduce the above copyright
    +     notice, this list of conditions and the following disclaimer in the
    +     documentation and/or other materials provided with the distribution.
    +   - Neither the name of ARM nor the names of its contributors may be used 
    +     to endorse or promote products derived from this software without 
    +     specific prior written permission.
    +
    +  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
    +  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
    +  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    +  ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE
    +  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    +  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 
    +  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
    +  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
    +  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
    +  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    +  POSSIBILITY OF SUCH DAMAGE.
    + -->
    + 
    +<device schemaVersion="1.1" xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:noNamespaceSchemaLocation="CMSIS-SVD.xsd" >
    +  <vendor>ARM Ltd.</vendor>                                       <!-- device vendor name -->
    +  <vendorID>ARM</vendorID>                                        <!-- device vendor short name -->
    +  <name>ARM_Example</name>                                        <!-- name of part-->
    +  <series>ARMCM3</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 80MHz, etc. </description>
    +  <licenseText>                                                   <!-- this license text will appear in header file. \n force line breaks -->
    +    ARM Limited (ARM) is supplying this software for use with Cortex-M\n
    +    processor based microcontroller, but can be equally used for other\n
    +    suitable  processor architectures. This file can be freely distributed.\n
    +    Modifications to this file shall be clearly marked.\n
    +    \n
    +    THIS SOFTWARE IS PROVIDED "AS IS".  NO WARRANTIES, WHETHER EXPRESS, IMPLIED\n
    +    OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF\n
    +    MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.\n
    +    ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR\n
    +    CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
    +  </licenseText>
    +  <cpu>                                                           <!-- details about the cpu embedded in the device -->
    +    <name>CM3</name>
    +    <revision>r1p0</revision>
    +    <endian>little</endian>
    +    <mpuPresent>true</mpuPresent>
    +    <fpuPresent>false</fpuPresent>
    +    <nvicPrioBits>3</nvicPrioBits>
    +    <vendorSystickConfig>false</vendorSystickConfig>
    +  </cpu>
    +  <addressUnitBits>8</addressUnitBits>                            <!-- byte addressable memory -->
    +  <width>32</width>                                               <!-- bus width is 32 bits -->
    +  <!-- default settings implicitly inherited by subsequent sections -->
    +  <size>32</size>                                                 <!-- this is the default size (number of bits) of all peripherals
    +                                                                       and register that do not define "size" themselves -->
    +  <access>read-write</access>                                     <!-- default access permission for all subsequent registers -->
    +  <resetValue>0x00000000</resetValue>                             <!-- by default all bits of the registers are initialized to 0 on reset -->
    +  <resetMask>0xFFFFFFFF</resetMask>                               <!-- by default all 32Bits of the registers are used -->
    +
    +  <peripherals>
    +    <!-- Timer 0 -->
    +    <peripheral>
    +      <name>TIMER0</name>
    +      <version>1.0</version>
    +      <description>32 Timer / Counter, counting up or down from different sources</description>
    +      <groupName>TIMER</groupName>
    +      <baseAddress>0x40010000</baseAddress>
    +      <size>32</size>
    +      <access>read-write</access>
    +
    +      <addressBlock>
    +        <offset>0</offset>
    +        <size>0x100</size>
    +        <usage>registers</usage>
    +      </addressBlock>
    +
    +      <interrupt>
    +        <name>TIMER0</name>
    +        <description>Timer 0 interrupt</description>
    +        <value>0</value>
    +      </interrupt>
    +
    +      <registers>
    +      <!-- CR: Control Register -->
    +        <register>
    +          <name>CR</name>
    +          <description>Control Register</description>
    +          <addressOffset>0x00</addressOffset>
    +          <size>32</size>
    +          <access>read-write</access>
    +          <resetValue>0x00000000</resetValue>
    +          <resetMask>0x1337F7F</resetMask>
    +
    +          <fields>
    +            <!-- EN: Enable -->
    +            <field>
    +              <name>EN</name>
    +              <description>Enable</description>
    +              <bitRange>[0:0]</bitRange>
    +              <access>read-write</access>
    +              <enumeratedValues>
    +                <enumeratedValue>
    +                  <name>Disable</name>
    +                  <description>Timer is disabled and does not operate</description>
    +                  <value>0</value>
    +                </enumeratedValue>
    +                <enumeratedValue>
    +                  <name>Enable</name>
    +                  <description>Timer is enabled and can operate</description>
    +                  <value>1</value>
    +                </enumeratedValue>
    +              </enumeratedValues>
    +            </field>
    +
    +            <!-- RST: Reset -->
    +            <field>
    +              <name>RST</name>
    +              <description>Reset Timer</description>
    +              <bitRange>[1:1]</bitRange>
    +              <access>write-only</access>
    +              <enumeratedValues>
    +                <enumeratedValue>
    +                  <name>No_Action</name>
    +                  <description>Write as ZERO if necessary</description>
    +                  <value>0</value>
    +                </enumeratedValue>
    +                <enumeratedValue>
    +                  <name>Reset_Timer</name>
    +                  <description>Reset the Timer</description>
    +                  <value>1</value>
    +                </enumeratedValue>
    +              </enumeratedValues>
    +            </field>
    +
    +            <!-- CNT: Counting Direction -->
    +            <field>
    +              <name>CNT</name>
    +              <description>Counting direction</description>
    +              <bitRange>[3:2]</bitRange>
    +              <access>read-write</access>
    +              <enumeratedValues>
    +                <enumeratedValue>
    +                  <name>Count_UP</name>
    +                  <description>Timer Counts UO and wraps, if no STOP condition is set</description>
    +                  <value>0</value>
    +                </enumeratedValue>
    +                <enumeratedValue>
    +                  <name>Count_DOWN</name>
    +                  <description>Timer Counts DOWN and wraps, if no STOP condition is set</description>
    +                  <value>1</value>
    +                </enumeratedValue>
    +                <enumeratedValue>
    +                  <name>Toggle</name>
    +                  <description>Timer Counts up to MAX, then DOWN to ZERO, if no STOP condition is set</description>
    +                  <value>2</value>
    +                </enumeratedValue>
    +              </enumeratedValues>
    +            </field>
    +
    +            <!-- MODE: Operation Mode -->
    +            <field>
    +              <name>MODE</name>
    +              <description>Operation Mode</description>
    +              <bitRange>[6:4]</bitRange>
    +              <access>read-write</access>
    +              <enumeratedValues>
    +                <enumeratedValue>
    +                  <name>Continous</name>
    +                  <description>Timer runs continously</description>
    +                  <value>0</value>
    +                </enumeratedValue>
    +                <enumeratedValue>
    +                  <name>Single_ZERO_MAX</name>
    +                  <description>Timer counts to 0x00 or 0xFFFFFFFF (depending on CNT) and stops</description>
    +                  <value>1</value>
    +                </enumeratedValue>
    +                <enumeratedValue>
    +                  <name>Single_MATCH</name>
    +                  <description>Timer counts to the Value of MATCH Register and stops</description>
    +                  <value>2</value>
    +                </enumeratedValue>
    +                <enumeratedValue>
    +                  <name>Reload_ZERO_MAX</name>
    +                  <description>Timer counts to 0x00 or 0xFFFFFFFF (depending on CNT), loads the RELOAD Value and continues</description>
    +                  <value>3</value>
    +                </enumeratedValue>
    +                <enumeratedValue>
    +                  <name>Reload_MATCH</name>
    +                  <description>Timer counts to the Value of MATCH Register, loads the RELOAD Value and continues</description>
    +                  <value>4</value>
    +                </enumeratedValue>
    +              </enumeratedValues>
    +            </field>
    +
    +            <!-- PSC: Use Prescaler -->
    +            <field>
    +              <name>PSC</name>
    +              <description>Use Prescaler</description>
    +              <bitRange>[7:7]</bitRange>
    +              <access>read-write</access>
    +              <enumeratedValues>
    +                <enumeratedValue>
    +                  <name>Disabled</name>
    +                  <description>Prescaler is not used</description>
    +                  <value>0</value>
    +                </enumeratedValue>
    +                <enumeratedValue>
    +                  <name>Enabled</name>
    +                  <description>Prescaler is used as divider</description>
    +                  <value>1</value>
    +                </enumeratedValue>
    +              </enumeratedValues>
    +            </field>
    +
    +            <!-- CNTSRC: Timer / Counter Soruce Divider -->
    +            <field>
    +              <name>CNTSRC</name>
    +              <description>Timer / Counter Source Divider</description>
    +              <bitRange>[11:8]</bitRange>
    +              <access>read-write</access>
    +              <enumeratedValues>
    +                <enumeratedValue>
    +                  <name>CAP_SRC</name>
    +                  <description>Capture Source is used directly</description>
    +                  <value>0</value>
    +                </enumeratedValue>
    +                <enumeratedValue>
    +                  <name>CAP_SRC_div2</name>
    +                  <description>Capture Source is divided by 2</description>
    +                  <value>1</value>
    +                </enumeratedValue>
    +                <enumeratedValue>
    +                  <name>CAP_SRC_div4</name>
    +                  <description>Capture Source is divided by 4</description>
    +                  <value>2</value>
    +                </enumeratedValue>
    +                <enumeratedValue>
    +                  <name>CAP_SRC_div8</name>
    +                  <description>Capture Source is divided by 8</description>
    +                  <value>3</value>
    +                </enumeratedValue>
    +                <enumeratedValue>
    +                  <name>CAP_SRC_div16</name>
    +                  <description>Capture Source is divided by 16</description>
    +                  <value>4</value>
    +                </enumeratedValue>
    +                <enumeratedValue>
    +                  <name>CAP_SRC_div32</name>
    +                  <description>Capture Source is divided by 32</description>
    +                  <value>5</value>
    +                </enumeratedValue>
    +                <enumeratedValue>
    +                  <name>CAP_SRC_div64</name>
    +                  <description>Capture Source is divided by 64</description>
    +                  <value>6</value>
    +                </enumeratedValue>
    +                <enumeratedValue>
    +                  <name>CAP_SRC_div128</name>
    +                  <description>Capture Source is divided by 128</description>
    +                  <value>7</value>
    +                </enumeratedValue>
    +                <enumeratedValue>
    +                  <name>CAP_SRC_div256</name>
    +                  <description>Capture Source is divided by 256</description>
    +                  <value>8</value>
    +                </enumeratedValue>
    +              </enumeratedValues>
    +            </field>
    +
    +            <!-- CAPSRC: Timer / COunter Capture Source -->
    +            <field>
    +              <name>CAPSRC</name>
    +              <description>Timer / Counter Capture Source</description>
    +              <bitRange>[15:12]</bitRange>
    +              <access>read-write</access>
    +              <enumeratedValues>
    +                <enumeratedValue>
    +                  <name>CClk</name>
    +                  <description>Core Clock</description>
    +                  <value>0</value>
    +                </enumeratedValue>
    +                <enumeratedValue>
    +                  <name>GPIOA_0</name>
    +                  <description>GPIO A, PIN 0</description>
    +                  <value>1</value>
    +                </enumeratedValue>
    +                <enumeratedValue>
    +                  <name>GPIOA_1</name>
    +                  <description>GPIO A, PIN 1</description>
    +                  <value>2</value>
    +                </enumeratedValue>
    +                <enumeratedValue>
    +                  <name>GPIOA_2</name>
    +                  <description>GPIO A, PIN 2</description>
    +                  <value>3</value>
    +                </enumeratedValue>
    +                <enumeratedValue>
    +                  <name>GPIOA_3</name>
    +                  <description>GPIO A, PIN 3</description>
    +                  <value>4</value>
    +                </enumeratedValue>
    +                <enumeratedValue>
    +                  <name>GPIOA_4</name>
    +                  <description>GPIO A, PIN 4</description>
    +                  <value>5</value>
    +                </enumeratedValue>
    +                <enumeratedValue>
    +                  <name>GPIOA_5</name>
    +                  <description>GPIO A, PIN 5</description>
    +                  <value>6</value>
    +                </enumeratedValue>
    +                <enumeratedValue>
    +                  <name>GPIOA_6</name>
    +                  <description>GPIO A, PIN 6</description>
    +                  <value>7</value>
    +                </enumeratedValue>
    +                <enumeratedValue>
    +                  <name>GPIOA_7</name>
    +                  <description>GPIO A, PIN 7</description>
    +                  <value>8</value>
    +                </enumeratedValue>
    +                <enumeratedValue>
    +                  <name>GPIOB_0</name>
    +                  <description>GPIO B, PIN 0</description>
    +                  <value>9</value>
    +                </enumeratedValue>
    +                <enumeratedValue>
    +                  <name>GPIOB_1</name>
    +                  <description>GPIO B, PIN 1</description>
    +                  <value>10</value>
    +                </enumeratedValue>
    +                <enumeratedValue>
    +                  <name>GPIOB_2</name>
    +                  <description>GPIO B, PIN 2</description>
    +                  <value>11</value>
    +                </enumeratedValue>
    +                <enumeratedValue>
    +                  <name>GPIOB_3</name>
    +                  <description>GPIO B, PIN 3</description>
    +                  <value>12</value>
    +                </enumeratedValue>
    +                <enumeratedValue>
    +                  <name>GPIOC_0</name>
    +                  <description>GPIO C, PIN 0</description>
    +                  <value>13</value>
    +                </enumeratedValue>
    +                <enumeratedValue>
    +                  <name>GPIOC_5</name>
    +                  <description>GPIO C, PIN 1</description>
    +                  <value>14</value>
    +                </enumeratedValue>
    +                <enumeratedValue>
    +                  <name>GPIOC_6</name>
    +                  <description>GPIO C, PIN 2</description>
    +                  <value>15</value>
    +                </enumeratedValue>
    +              </enumeratedValues>
    +            </field>
    +
    +            <!-- CAPEDGE: Capture Edge -->
    +            <field>
    +              <name>CAPEDGE</name>
    +              <description>Capture Edge, select which Edge should result in a counter increment or decrement</description>
    +              <bitRange>[17:16]</bitRange>
    +              <access>read-write</access>
    +              <enumeratedValues>
    +                <enumeratedValue>
    +                  <name>RISING</name>
    +                  <description>Only rising edges result in a counter increment or decrement</description>
    +                  <value>0</value>
    +                </enumeratedValue>
    +                <enumeratedValue>
    +                  <name>FALLING</name>
    +                  <description>Only falling edges  result in a counter increment or decrement</description>
    +                  <value>1</value>
    +                </enumeratedValue>
    +                <enumeratedValue>
    +                  <name>BOTH</name>
    +                  <description>Rising and falling edges result in a counter increment or decrement</description>
    +                  <value>2</value>
    +                </enumeratedValue>
    +              </enumeratedValues>
    +            </field>
    +
    +            <!-- TRGEXT: Triggers an other Peripheral -->
    +            <field>
    +              <name>TRGEXT</name>
    +              <description>Triggers an other Peripheral</description>
    +              <bitRange>[21:20]</bitRange>
    +              <access>read-write</access>
    +              <enumeratedValues>
    +                <enumeratedValue>
    +                  <name>NONE</name>
    +                  <description>No Trigger is emitted</description>
    +                  <value>0</value>
    +                </enumeratedValue>
    +                <enumeratedValue>
    +                  <name>DMA1</name>
    +                  <description>DMA Controller 1 is triggered, dependant on MODE</description>
    +                  <value>1</value>
    +                </enumeratedValue>
    +                <enumeratedValue>
    +                  <name>DMA2</name>
    +                  <description>DMA Controller 2 is triggered, dependant on MODE</description>
    +                  <value>2</value>
    +                </enumeratedValue>
    +                <enumeratedValue>
    +                  <name>UART</name>
    +                  <description>UART is triggered, dependant on MODE</description>
    +                  <value>3</value>
    +                </enumeratedValue>
    +              </enumeratedValues>
    +            </field>
    +
    +            <!-- Reload: Selects Reload Register n -->
    +            <field>
    +              <name>RELOAD</name>
    +              <description>Select RELOAD Register n to reload Timer on condition</description>
    +              <bitRange>[25:24]</bitRange>
    +              <access>read-write</access>
    +              <enumeratedValues>
    +                <enumeratedValue>
    +                  <name>RELOAD0</name>
    +                  <description>Selects Reload Register number 0</description>
    +                  <value>0</value>
    +                </enumeratedValue>
    +                <enumeratedValue>
    +                  <name>RELOAD1</name>
    +                  <description>Selects Reload Register number 1</description>
    +                  <value>1</value>
    +                </enumeratedValue>
    +                <enumeratedValue>
    +                  <name>RELOAD2</name>
    +                  <description>Selects Reload Register number 2</description>
    +                  <value>2</value>
    +                </enumeratedValue>
    +                <enumeratedValue>
    +                  <name>RELOAD3</name>
    +                  <description>Selects Reload Register number 3</description>
    +                  <value>3</value>
    +                </enumeratedValue>
    +              </enumeratedValues>
    +            </field>
    +
    +            <!-- IDR: Inc or dec Reload Register Selection -->
    +            <field>
    +              <name>IDR</name>
    +              <description>Selects, if Reload Register number is incremented, decremented or not modified</description>
    +              <bitRange>[27:26]</bitRange>
    +              <access>read-write</access>
    +              <enumeratedValues>
    +                <enumeratedValue>
    +                  <name>KEEP</name>
    +                  <description>Reload Register number does not change automatically</description>
    +                  <value>0</value>
    +                </enumeratedValue>
    +                <enumeratedValue>
    +                  <name>INCREMENT</name>
    +                  <description>Reload Register number is incremented on each match</description>
    +                  <value>1</value>
    +                </enumeratedValue>
    +                <enumeratedValue>
    +                  <name>DECREMENT</name>
    +                  <description>Reload Register number is decremented on each match</description>
    +                  <value>2</value>
    +                </enumeratedValue>
    +              </enumeratedValues>
    +            </field>
    +
    +            <!-- START: Starts / Stops the Timer/Counter -->
    +            <field>
    +              <name>S</name>
    +              <description>Starts and Stops the Timer / Counter</description>
    +              <bitRange>[31:31]</bitRange>
    +              <access>read-write</access>
    +              <enumeratedValues>
    +                <enumeratedValue>
    +                  <name>STOP</name>
    +                  <description>Timer / Counter is stopped</description>
    +                  <value>0</value>
    +                </enumeratedValue>
    +                <enumeratedValue>
    +                  <name>START</name>
    +                  <description>Timer / Counter is started</description>
    +                  <value>1</value>
    +                </enumeratedValue>
    +              </enumeratedValues>
    +            </field>
    +          </fields>
    +        </register>
    +
    +        <!-- SR: Status Register -->
    +        <register>
    +          <name>SR</name>
    +          <description>Status Register</description>
    +          <addressOffset>0x04</addressOffset>
    +          <size>16</size>
    +          <access>read-write</access>
    +          <resetValue>0x00000000</resetValue>
    +          <resetMask>0xD701</resetMask>
    +
    +          <fields>
    +            <!-- RUN: Shows if Timer is running -->
    +            <field>
    +              <name>RUN</name>
    +              <description>Shows if Timer is running or not</description>
    +              <bitRange>[0:0]</bitRange>
    +              <access>read-only</access>
    +              <enumeratedValues>
    +                <enumeratedValue>
    +                  <name>Stopped</name>
    +                  <description>Timer is not running</description>
    +                  <value>0</value>
    +                </enumeratedValue>
    +                <enumeratedValue>
    +                  <name>Running</name>
    +                  <description>Timer is running</description>
    +                  <value>1</value>
    +                </enumeratedValue>
    +              </enumeratedValues>
    +            </field>
    +
    +            <!-- MATCH: Shows if a Match was hit -->
    +            <field>
    +              <name>MATCH</name>
    +              <description>Shows if the MATCH was hit</description>
    +              <bitRange>[8:8]</bitRange>
    +              <access>read-write</access>
    +              <enumeratedValues>
    +                <enumeratedValue>
    +                  <name>No_Match</name>
    +                  <description>The MATCH condition was not hit</description>
    +                  <value>0</value>
    +                </enumeratedValue>
    +                <enumeratedValue>
    +                  <name>Match_Hit</name>
    +                  <description>The MATCH condition was hit</description>
    +                  <value>1</value>
    +                </enumeratedValue>
    +              </enumeratedValues>
    +            </field>
    +
    +            <!-- UN: Shows if an underflow occured -->
    +            <field>
    +              <name>UN</name>
    +              <description>Shows if an underflow occured. This flag is sticky</description>
    +              <bitRange>[9:9]</bitRange>
    +              <access>read-write</access>
    +              <enumeratedValues>
    +                <enumeratedValue>
    +                  <name>No_Underflow</name>
    +                  <description>No underflow occured since last clear</description>
    +                  <value>0</value>
    +                </enumeratedValue>
    +                <enumeratedValue>
    +                  <name>Underflow</name>
    +                  <description>A minimum of one underflow occured since last clear</description>
    +                  <value>1</value>
    +                </enumeratedValue>
    +              </enumeratedValues>
    +            </field>
    +
    +            <!-- OV: Shows if an overflow occured -->
    +            <field>
    +              <name>OV</name>
    +              <description>Shows if an overflow occured. This flag is sticky</description>
    +              <bitRange>[10:10]</bitRange>
    +              <access>read-write</access>
    +              <enumeratedValues>
    +                <enumeratedValue>
    +                  <name>No_Overflow</name>
    +                  <description>No overflow occured since last clear</description>
    +                  <value>0</value>
    +                </enumeratedValue>
    +                <enumeratedValue>
    +                  <name>Overflow_occured</name>
    +                  <description>A minimum of one overflow occured since last clear</description>
    +                  <value>1</value>
    +                </enumeratedValue>
    +              </enumeratedValues>
    +            </field>
    +
    +            <!-- RST: Shows if Timer is in RESET state -->
    +            <field>
    +              <name>RST</name>
    +              <description>Shows if Timer is in RESET state</description>
    +              <bitRange>[12:12]</bitRange>
    +              <access>read-only</access>
    +              <enumeratedValues>
    +                <enumeratedValue>
    +                  <name>Ready</name>
    +                  <description>Timer is not in RESET state and can operate</description>
    +                  <value>0</value>
    +                </enumeratedValue>
    +                <enumeratedValue>
    +                  <name>In_Reset</name>
    +                  <description>Timer is in RESET state and can not operate</description>
    +                  <value>1</value>
    +                </enumeratedValue>
    +              </enumeratedValues>
    +            </field>
    +
    +            <!-- RELOAD: Shows the currently active Reload Register -->
    +            <field>
    +              <name>RELOAD</name>
    +              <description>Shows the currently active RELOAD Register</description>
    +              <bitRange>[15:14]</bitRange>
    +              <access>read-only</access>
    +              <enumeratedValues>
    +                <enumeratedValue>
    +                  <name>RELOAD0</name>
    +                  <description>Reload Register number 0 is active</description>
    +                  <value>0</value>
    +                </enumeratedValue>
    +                <enumeratedValue>
    +                  <name>RELOAD1</name>
    +                  <description>Reload Register number 1 is active</description>
    +                  <value>1</value>
    +                </enumeratedValue>
    +                <enumeratedValue>
    +                  <name>RELOAD2</name>
    +                  <description>Reload Register number 2 is active</description>
    +                  <value>2</value>
    +                </enumeratedValue>
    +                <enumeratedValue>
    +                  <name>RELOAD3</name>
    +                  <description>Reload Register number 3 is active</description>
    +                  <value>3</value>
    +                </enumeratedValue>
    +              </enumeratedValues>
    +            </field>
    +          </fields>
    +        </register>
    +
    +        <!-- INT: Interrupt Register -->
    +        <register>
    +          <name>INT</name>
    +          <description>Interrupt Register</description>
    +          <addressOffset>0x10</addressOffset>
    +          <size>16</size>
    +          <access>read-write</access>
    +          <resetValue>0x00000000</resetValue>
    +          <resetMask>0x0771</resetMask>
    +
    +          <fields>
    +            <!-- EN: Interrupt Enable -->
    +            <field>
    +              <name>EN</name>
    +              <description>Interrupt Enable</description>
    +              <bitRange>[0:0]</bitRange>
    +              <access>read-write</access>
    +              <enumeratedValues>
    +                <enumeratedValue>
    +                  <name>Disabled</name>
    +                  <description>Timer does not generate Interrupts</description>
    +                  <value>0</value>
    +                </enumeratedValue>
    +                <enumeratedValue>
    +                  <name>Enable</name>
    +                  <description>Timer triggers the TIMERn Interrupt</description>
    +                  <value>1</value>
    +                </enumeratedValue>
    +              </enumeratedValues>
    +            </field>
    +
    +            <!-- MODE: Interrupt Mode -->
    +            <field>
    +              <name>MODE</name>
    +              <description>Interrupt Mode, selects on which condition the Timer should generate an Interrupt</description>
    +              <bitRange>[6:4]</bitRange>
    +              <access>read-write</access>
    +              <enumeratedValues>
    +                <enumeratedValue>
    +                  <name>Match</name>
    +                  <description>Timer generates an Interrupt when the MATCH condition is hit</description>
    +                  <value>0</value>
    +                </enumeratedValue>
    +                <enumeratedValue>
    +                  <name>Underflow</name>
    +                  <description>Timer generates an Interrupt when it underflows</description>
    +                  <value>1</value>
    +                </enumeratedValue>
    +                <enumeratedValue>
    +                  <name>Overflow</name>
    +                  <description>Timer generates an Interrupt when it overflows</description>
    +                  <value>2</value>
    +                </enumeratedValue>
    +              </enumeratedValues>
    +            </field>
    +          </fields>
    +        </register>
    +
    +        <!-- COUNT: Counter Register -->
    +        <register>
    +          <name>COUNT</name>
    +          <description>The Counter Register reflects the actual Value of the Timer/Counter</description>
    +          <addressOffset>0x20</addressOffset>
    +          <size>32</size>
    +          <access>read-write</access>
    +          <resetValue>0x00000000</resetValue>
    +          <resetMask>0xFFFFFFFF</resetMask>
    +        </register>
    +
    +        <!-- MATCH: Match Register -->
    +        <register>
    +          <name>MATCH</name>
    +          <description>The Match Register stores the compare Value for the MATCH condition</description>
    +          <addressOffset>0x24</addressOffset>
    +          <size>32</size>
    +          <access>read-write</access>
    +          <resetValue>0x00000000</resetValue>
    +          <resetMask>0xFFFFFFFF</resetMask>
    +        </register>
    +        
    +        <!-- PRESCALE: Prescale Read Register -->
    +        <register>
    +          <name>PRESCALE_RD</name>
    +          <description>The Prescale Register stores the Value for the prescaler. The cont event gets divided by this value</description>
    +          <addressOffset>0x28</addressOffset>
    +          <size>32</size>
    +          <access>read-only</access>
    +          <resetValue>0x00000000</resetValue>
    +          <resetMask>0xFFFFFFFF</resetMask>
    +        </register>
    +        
    +        <!-- PRESCALE: Prescale Write Register -->
    +        <register>
    +          <name>PRESCALE_WR</name>
    +          <description>The Prescale Register stores the Value for the prescaler. The cont event gets divided by this value</description>
    +          <addressOffset>0x28</addressOffset>
    +          <size>32</size>
    +          <access>write-only</access>
    +          <resetValue>0x00000000</resetValue>
    +          <resetMask>0xFFFFFFFF</resetMask>
    +        </register>
    +
    +
    +        <!-- RELOAD: Array of Reload Register with 4 elements-->
    +        <register>
    +          <dim>4</dim>
    +          <dimIncrement>4</dimIncrement>
    +          <name>RELOAD[%s]</name>
    +          <description>The Reload Register stores the Value the COUNT Register gets reloaded on a when a condition was met.</description>
    +          <addressOffset>0x50</addressOffset>
    +          <size>32</size>
    +          <access>read-write</access>
    +          <resetValue>0x00000000</resetValue>
    +          <resetMask>0xFFFFFFFF</resetMask>
    +        </register>
    +      </registers>
    +    </peripheral>
    +
    +    <!-- Timer 1 -->
    +    <peripheral derivedFrom="TIMER0">
    +      <name>TIMER1</name>
    +      <baseAddress>0x40010100</baseAddress>
    +      <interrupt>
    +        <name>TIMER1</name>
    +        <description>Timer 2 interrupt</description>
    +        <value>4</value>
    +      </interrupt>
    +    </peripheral>
    +
    +    <!-- Timer 2 -->
    +    <peripheral derivedFrom="TIMER0">
    +      <name>TIMER2</name>
    +      <baseAddress>0x40010200</baseAddress>
    +      <interrupt>
    +        <name>TIMER2</name>
    +        <description>Timer 2 interrupt</description>
    +        <value>6</value>
    +      </interrupt>
    +    </peripheral>
    +  </peripherals>
    +</device>
    +
    +
    + + + + diff --git a/docs/SVD/html/svd_Format_pg.html b/docs/SVD/html/svd_Format_pg.html new file mode 100644 index 0000000..4515335 --- /dev/null +++ b/docs/SVD/html/svd_Format_pg.html @@ -0,0 +1,175 @@ + + + + + +SVD Description (*.svd) Format +CMSIS-SVD: SVD Description (*.svd) Format + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    CMSIS-SVD +  Version 1.3.3 +
    +
    CMSIS System View Description
    +
    +
    + +
    +
      + +
    +
    + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    +
    SVD Description (*.svd) Format
    +
    +
    +

    The CMSIS-SVD format is based on XML and was influenced by IP-XACT. Due to the much wider scope and complexity of IP-XACT, it was decided to specify a separate format focused and tailored towards the description of the programmer's view of a device.

    +

    CMSIS-SVD XML Hierarchy

    +
    +CMSIS_SVD_Schema_Gen.png +
    +CMSIS-SVD Hierarchy Levels
    +

    One CMSIS-SVD file contains the description of a single device. A device consists of a processor and at least one peripheral. Each peripheral contains at least one register. A register may consist of one or more fields. The range of values for a field may be further described with enumerated values.

    +
      +
    • File Conventions: Outlines the main conventions for writing an SVD description file.
      +
      +
    • +
    • SVD File Example Provides an example outlining the SVD XML structure.
      +
      +
    • +
    • Device Level: The top level of a System View Description is the device. On this level, information is captured that is specific to the device as a whole. For example, the device name, description, or version. The minimal addressable unit as well as the bit-width of the data bus are required by the debugger to perform the correct target accesses.
      +Default values for register attributes like register size, reset value, and access permissions can be set for the whole device on this level and are implicitly inherited by the lower levels of the description. If however specified on a lower level, the default setting from a higher level will get overruled.
      +
      +
    • +
    • CPU Level: The CPU section describes the processor included in the microcontroller device. This section is mandatory if the SVD file is used to generate the device header file.
      +
      +
    • +
    • Peripherals Level: A peripheral is a named collection of registers. A peripheral is mapped to a defined base address within the device's address space. A peripheral allocates one or more exclusive address blocks relative to its base address, such that all described registers fit into the allocated address blocks. Allocated addresses without an associated register description are automatically considered reserved. The peripheral can be assigned to a group of peripherals and may be associated with one or more interrupts.
      +
      +
    • +
    • Registers Level: A register is a named, programmable resource that belongs to a peripheral. Registers are mapped to a defined address in the address space of the device. An address is specified relative to the peripheral base address. The description of a register documents the purpose and function of the resource. A debugger requires information about the permitted access to a resource as well as side effects triggered by read and write accesses respectively.
      +
      +
    • +
    • Fields Level: Registers may be partitioned into chunks of bits of distinct functionality. A chunk is referred to as field. The field names within a single register must be unique. Only architecturally defined fields shall be described. Any bits not being explicitly described are treated as reserved. They are not displayed in the System Viewer and are padded in the bit fields of the device header file. The case-insensitive field named "reserved" is treated as a keyword and each field with this name is ignored.
      +
      +
    • +
    • Enumerated Values Level: An enumeration maps an unsigned integer constant to a descriptive identifier and, optionally, to a description string. Enumerations are used in C to enhance the readability of source code. Similarly, it can be used by debuggers to provide more instructive information to the programmer, avoiding a lookup in the device documentation.
      +
      +
    • +
    • Special Elements: Specific elements that occur in various other elements are described in this section.
      +
      +
    • +
    • Vendor Extensions: The CMSIS-SVD format includes a section named <vendorExtensions> positioned after the closing tag </peripherals>. This allows silicon vendors and tool partners to extend the description beyond the current specification.
    • +
    +

    Multiple Instantiation

    +

    CMSIS-SVD supports the reuse of whole sections of the description. The attribute derivedFrom for peripheral, register, and field specifies the source of the section to be copied from. Individual tags can be used to redefine specific elements within a copied section.

    +

    Array of Elements

    +

    A powerfull construct in data structures of the C programming language is the array. An array is a series of data elements of the same type selected via an index. CMSIS-SVD supports arrays for peripheral, cluster, and register.

    +

    Peripheral Grouping

    +

    Peripherals that provide similar functionality (Simple Timer, Complex Timer) can be grouped with the element <groupName>. Peripheral groups help structuring the list of peripherals in the debugger. All peripherals associated with the same group name are collectively listed under this group in the order they were specified in the SVD file.

    +

    Descriptions

    +

    On each level, the tag <description> provides verbose information about the respective element. The description field plays an important part in improving software development productivity as it gives instant access to information that otherwise would need to be looked up in the device documentation.

    +

    All multiple whitespace characters (space, tab, linefeed, carriage return) may be removed from the description by any tool for further processing (i.e. SVDConv does). In order to preserve explicit linebreaks one has to use the linefeed escape sequence (i.e. \n).

    +

     

    +
    +
    + + + + diff --git a/docs/SVD/html/svd_Format_pg.js b/docs/SVD/html/svd_Format_pg.js new file mode 100644 index 0000000..8442c1b --- /dev/null +++ b/docs/SVD/html/svd_Format_pg.js @@ -0,0 +1,35 @@ +var svd_Format_pg = +[ + [ "File Conventions", "svd_xml_conventions_gr.html", [ + [ "Names", "svd_xml_conventions_gr.html#Names", null ], + [ "Constants", "svd_xml_conventions_gr.html#Constants", null ], + [ "Comments", "svd_xml_conventions_gr.html#Comments", null ], + [ "Empty Tags", "svd_xml_conventions_gr.html#_", null ] + ] ], + [ "SVD File Example", "svd_Example_pg.html", null ], + [ "/device element", "elem_device.html", null ], + [ "/device/cpu element", "elem_cpu.html", [ + [ "/device/cpu/sauRegionsConfig element", "elem_cpu.html#elem_sauRegionsConfig", null ], + [ "/device/cpu/sauRegionsConfig/region element", "elem_cpu.html#elem_region", null ] + ] ], + [ "/device/peripherals element", "elem_peripherals.html", [ + [ "/device/peripherals/peripheral element", "elem_peripherals.html#elem_peripheral", null ], + [ "/device/peripherals/peripheral/addressBlock element", "elem_peripherals.html#elem_addressBlock", null ], + [ "/device/peripherals/peripheral/interrupt element", "elem_peripherals.html#elem_interrupt", null ] + ] ], + [ "/device/peripherals/peripheral/registers element", "elem_registers.html", [ + [ "/device/pripherals/peripheral/registers/.../cluster element", "elem_registers.html#elem_cluster", null ], + [ "/device/peripherals/peripheral/registers/.../register element", "elem_registers.html#elem_register", null ], + [ "/device/peripherals/peripheral/registers/.../register/.../writeConstraint element", "elem_registers.html#elem_writeConstraint", null ], + [ "/device/peripherals/peripheral/registers/.../register/fields element", "elem_registers.html#elem_fields", null ], + [ "/device/peripherals/peripheral/registers/.../fields/field element", "elem_registers.html#elem_field", null ], + [ "/device/peripherals/peripheral/registers/.../field/enumeratedValues element", "elem_registers.html#elem_enumeratedValues", null ], + [ "/device/peripherals/peripheral/registers/.../enumeratedValue element", "elem_registers.html#elem_enumeratedValue", null ] + ] ], + [ "Special Elements", "elem_special.html", [ + [ "dimElementGroup", "elem_special.html#dimElementGroup_gr", [ + [ "/device/peripherals/peripheral/.../dimArrayIndex element", "elem_special.html#elem_dimArrayIndex", null ] + ] ], + [ "registerPropertiesGroup", "elem_special.html#registerPropertiesGroup_gr", null ] + ] ] +]; \ No newline at end of file diff --git a/docs/SVD/html/svd_SVDConv_pg.html b/docs/SVD/html/svd_SVDConv_pg.html new file mode 100644 index 0000000..1c33724 --- /dev/null +++ b/docs/SVD/html/svd_SVDConv_pg.html @@ -0,0 +1,280 @@ + + + + + +SVDConv.exe +CMSIS-SVD: SVDConv.exe + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    CMSIS-SVD +  Version 1.3.3 +
    +
    CMSIS System View Description
    +
    +
    + +
    +
      + +
    +
    + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    +
    SVDConv.exe
    +
    +
    +

    SVDConv.exe is a command-line utility to validate CMSIS-SVD files and to generate CMSIS-compliant device header files. SVDConv.exe is distributed with the ARM::CMSIS Pack (in the CMSIS\Utilities directory) together with the CMSIS-SVD schema file.

    +

    SVDConv.exe performs the following operations:

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

    Operation

    +

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

    +
    SVDConv.exe <SVD_file> <options>
    +

     

    + + + + + + + + + + + + + + + + + + + + + + + +
    <options> Short Name Description
    none Validation Perform a validation check of the SVD file. Errors and warnings are printed on screen.
    -b Log File Specify the log file name for writing messages. Default: screen.
    -o Output Path Specify an output path for the generated device header file or log file. Default: current directory.
    --generate=header Generate Device Header File Generates the device header file. The name of the generated file is derived from the value of the tag <device<name> in the CMSIS-SVD file. Refer to device.
    --generate=partition Generate Partition file for Cortex-M Security Extensions (Armv8-M) Generates the device partition file. The name of the generated file is composed of partition_ and the value of the device <name> (for example, partition_CMSDK_ARMv8MBL.h). Refer to /device element. The content of the file uses Configuration Wizard annotations and is derived from the SAU-specific information of the /device/cpu/sauRegionsConfig element and the interrupts specified in the /device/peripherals element.
    --fields=enum Bit-field Enums Generates enum lists for each field value description contained in the CMSIS-SVD input file. Must be used in combination with --generate=header.
    --fields=macro Bit-field Macros Generates position and mask C-Macros for each field description contained in the CMSIS-SVD input file. Must be used in combination with --generate=header.
    --fields=struct Bit-field Structs Generates bit fields for each field description contained in the CMSIS-SVD input file. Must be used in combination with --generate=header.
    --fields=struct-ansic ANSI Bit-field Structs Generates MISRA-compliant structures for each bitfield. The generated code is not CMSIS-compliant! Must be used in combination with --generate=header.
    --strict Strict error checking RECOMMENDED! Applies strict error checking and generates a lot more messages.
    +

    Return Codes

    +

    SVDConv.exe returns the following codes:
    +

    + + + + + + + + + + + +
    Code Description Action
    0 OK No action required. Validation and conversion performed without errors.
    1 WARNINGS Warnings should be checked an possibly removed. The header file is created and could be used.
    2 ERRORS Errors in the SVD description file. Important elements are missing and must be corrected.
    3 Error in command line Check and correct the command line arguments.
    +

    Examples
    +

    +
      +
    1. Retrieve help information on screen.
      SVDConv.exe
      +

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

      + The result is printed on screen:
         MVCM3110.svd(1688) : info
      +   <description> missing for value '2 : MODE2'
      +   MVCM3110.svd(1692) : info
      +   <description> missing for value '3 : MODE3'
      +   MVCM3110.svd(1696) : info
      +   <description> missing for value '4 : MODE4'
      +   Area of improvements:
      +   * Description contains 267 <fields> defined without associated <enumeratedValues>
      +   Found 0 Errors and 1 Warnings
      +   Return Code: 1 (WARNINGS)

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

      + Code snippet from the generated header file showing the structure for TIMER0.
      +
      /* ================ TIMER0 ================ */
      +
      typedef struct {
      +
      __IO uint32_t CR;
      +
      __IO uint16_t SR;
      +
      __I uint16_t RESERVED0[5];
      +
      __IO uint16_t INT;
      +
      __I uint16_t RESERVED1[7];
      +
      __IO uint32_t COUNT;
      +
      __IO uint32_t MATCH;
      +
      union {
      +
      __O uint32_t PRESCALE_WR;
      +
      __I uint32_t PRESCALE_RD;
      +
      };
      +
      __I uint32_t RESERVED2[9];
      +
      __IO uint32_t RELOAD[4];
      +
      } TIMER0_Type;
      +

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

      + Code snippet from the generated header file showing the structure for TIMER0.
      + Compare to the code snippet above.
      /* ================ TIMER0 ================ */
      +
      typedef struct {
      +
      union {
      +
      __IO uint32_t CR;
      +
      struct {
      +
      __IO uint32_t EN : 1;
      +
      __O uint32_t RST : 1;
      +
      __IO uint32_t CNT : 2;
      +
      __IO uint32_t MODE : 3;
      +
      __IO uint32_t PSC : 1;
      +
      __IO uint32_t CNTSRC : 4;
      +
      __IO uint32_t CAPSRC : 4;
      +
      __IO uint32_t CAPEDGE : 2;
      +
      uint32_t : 2;
      +
      __IO uint32_t TRGEXT : 2;
      +
      uint32_t : 2;
      +
      __IO uint32_t RELOAD : 2;
      +
      __IO uint32_t IDR : 2;
      +
      uint32_t : 3;
      +
      __IO uint32_t S : 1;
      +
      } CR_b;
      +
      };
      +
      +
      union {
      +
      __IO uint16_t SR;
      +
      struct {
      +
      __I uint16_t RUN : 1;
      +
      uint16_t : 7;
      +
      __IO uint16_t MATCH : 1;
      +
      __IO uint16_t UN : 1;
      +
      __IO uint16_t OV : 1;
      +
      uint16_t : 1;
      +
      __I uint16_t RST : 1;
      +
      uint16_t : 1;
      +
      __I uint16_t RELOAD : 2;
      +
      } SR_b;
      +
      };
      +
      __I uint16_t RESERVED0[5];
      +
      +
      union {
      +
      __IO uint16_t INT;
      +
      struct {
      +
      __IO uint16_t EN : 1;
      +
      uint16_t : 3;
      +
      __IO uint16_t MODE : 3;
      +
      } INT_b;
      +
      };
      +
      __I uint16_t RESERVED1[7];
      +
      __IO uint32_t COUNT;
      +
      __IO uint32_t MATCH;
      +
      union {
      +
      __O uint32_t PRESCALE_WR;
      +
      __I uint32_t PRESCALE_RD;
      +
      };
      +
      __I uint32_t RESERVED2[9];
      +
      __IO uint32_t RELOAD[4];
      +
      } TIMER0_Type;
      +
    8. +
    +
    +
    + + + + diff --git a/docs/SVD/html/svd_revisionHistory.html b/docs/SVD/html/svd_revisionHistory.html new file mode 100644 index 0000000..ca2a44b --- /dev/null +++ b/docs/SVD/html/svd_revisionHistory.html @@ -0,0 +1,180 @@ + + + + + +Revision History +CMSIS-SVD: Revision History + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    CMSIS-SVD +  Version 1.3.3 +
    +
    CMSIS System View Description
    +
    +
    + +
    +
      + +
    +
    + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    +
    Revision History
    +
    +
    +

    From a schema perspective, CMSIS-SVD Version 1.1, 1.2 and 1.3 are fully backward compatible to version 1.0.

    + + + + + + + + + + + + + + + + + +
    Version Description
    V1.3.3
      +
    • Updated file header to Apache 2.0 License.
    • +
    • Added dimableIdentifierType, as a copy of previous identifierType adding "%s".
    • +
    • Updated identifierType to only allow names without "%s" included.
    • +
    • Removed enumerationNameType.
    • +
    • Added <headerEnumName> to enumeratedValues and to dimArrayIndex for peripheral arrays, overwriting hierarchically generated names.
    • +
    • Added <dimName> to dimElementGroup. Only valid in cluster context, ignored otherwise.
    • +
    +
    V1.3.2 +
    V1.3.1 +
    V1.3 +
    V1.2 Added optional elements for Cortex-M7 in CPU:
      +
    • <fpuDP>
    • +
    • <icachePresent>
    • +
    • <dcachePresent>
    • +
    • <itcmPresent>
    • +
    • <dtcmPresent>
    • +
    +
    V1.1 Many of the features added in version 1.1 are required for generating CMSIS-Core device header files from a CMSIS SVD description. It is expected that all CMSIS-SVD descriptions will comply with version 1.1 by now.
    V1.0 Initial version.
    +

     

    +
    +
    +
    + + + + diff --git a/docs/SVD/html/svd_validate_file_pg.html b/docs/SVD/html/svd_validate_file_pg.html new file mode 100644 index 0000000..db144b8 --- /dev/null +++ b/docs/SVD/html/svd_validate_file_pg.html @@ -0,0 +1,157 @@ + + + + + +SVD File Validation and Usage +CMSIS-SVD: SVD File Validation and Usage + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    CMSIS-SVD +  Version 1.3.3 +
    +
    CMSIS System View Description
    +
    +
    + +
    +
      + +
    +
    + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    +
    SVD File Validation and Usage
    +
    +
    +

    The description quality is key to success of the CMSIS-SVD format. Aspects of quality are:

    +
      +
    • Syntactical and structural compliance with the specified CMSIS-SVD format.
    • +
    • Consistency and correctness.
    • +
    • Completeness.
    • +
    • Level of detail.
    • +
    +
    Validation

    Automated validations are done on two levels:

    +
      +
    1. The CMSIS-SVD Schema File: XML tools use the schema file for checking the syntactical and structural correctness of an XML file that claims compliance with a certain format. The schema file CMSIS-SVD.xsd is located in the folder .\CMSIS\Utilities of the ARM::CMSIS Pack.
      +
      +
    2. +
    3. SVD Conversion Utility: The conversion utility SVDConv.exe checks the semantics and consistency of the data contained in a CMSIS-SVD file. SVDConv.exe is included in the CMSIS distribution.
    4. +
    +
    Usage

    CMSIS-SVD files can be used to generate:

    +
      +
    1. CMSIS-compliant device header files from a CMSIS-SVD description. Refer to the conversion tool SVDConv.exe for details. CMSIS device header files are developed and maintained by the silicon vendors. Therefore, the expectation is that this conversion is only of interest to these parties.
    2. +
    3. Debug dialogs that communicate with a debugger. See below.
    4. +
    +

    System Views
    +
    + A number of tool vendors support the CMSIS-SVD format with their products. Refer to the tools documentation to find out how to use CMSIS-SVD descriptions with the debugger of your choice. Please regularly check for updates to the CMSIS Device Family Packs from the silicon vendor to to use the latest versions of the CMSIS-SVD files.
    +
    + Generated Debug Dialog:

    +
    +SystemViewer_Generated.png +
    +uVision Debug Window generated from ARM_Example.svd
    +


    +

    +
    +
    + + + + diff --git a/docs/SVD/html/svd_xml_conventions_gr.html b/docs/SVD/html/svd_xml_conventions_gr.html new file mode 100644 index 0000000..af40a27 --- /dev/null +++ b/docs/SVD/html/svd_xml_conventions_gr.html @@ -0,0 +1,155 @@ + + + + + +File Conventions +CMSIS-SVD: File Conventions + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    CMSIS-SVD +  Version 1.3.3 +
    +
    CMSIS System View Description
    +
    +
    + +
    +
      + +
    +
    + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    +
    File Conventions
    +
    +
    +

    The section outlines the main conventions for writing the SVD description file.

    +

    +Names

    +

    All name tags must comp ly with the ANSI C identifier naming restrictions. In particular, they must not contain any spaces or special characters. This is necessary to support the generation of device header files thus providing consistency between the names being shown by the debugger and the symbols being used in the CMSIS compliant target software.

    +

    +Constants

    +

    Number constants shall be entered in hexadecimal, decimal, or binary format.

    +
      +
    • The Hexadecimal format is indicated by a leading 0x.
    • +
    • The Binary format is indicated by a leading #.
    • +
    • All other formats are interpreted as decimal numbers.
    • +
    • The element <enumeratedValue>.<value> can be used to define constants.
    • +
    +

    +Comments

    +

    Comments have the standard XML format.

    +
      +
    • Start a comment with <!--.
    • +
    • End a comment with -->.
    • +
    +

    +Empty Tags

    +
      +
    • Single tags are not supported (for example, <name\>).
    • +
    • The tag content must not consist of an empty string. Omit optional tags instead.
    • +
    +
    Remarks
    The latest CMSIS-SVD Schema File is provided alongside this document.
    +
    +
    + + + + diff --git a/docs/SVD/html/sync_off.png b/docs/SVD/html/sync_off.png new file mode 100644 index 0000000..3b443fc Binary files /dev/null and b/docs/SVD/html/sync_off.png differ diff --git a/docs/SVD/html/sync_on.png b/docs/SVD/html/sync_on.png new file mode 100644 index 0000000..e08320f Binary files /dev/null and b/docs/SVD/html/sync_on.png differ diff --git a/docs/SVD/html/tab_a.png b/docs/SVD/html/tab_a.png new file mode 100644 index 0000000..3b725c4 Binary files /dev/null and b/docs/SVD/html/tab_a.png differ diff --git a/docs/SVD/html/tab_b.png b/docs/SVD/html/tab_b.png new file mode 100644 index 0000000..e2b4a86 Binary files /dev/null and b/docs/SVD/html/tab_b.png differ diff --git a/docs/SVD/html/tab_h.png b/docs/SVD/html/tab_h.png new file mode 100644 index 0000000..fd5cb70 Binary files /dev/null and b/docs/SVD/html/tab_h.png differ diff --git a/docs/SVD/html/tab_s.png b/docs/SVD/html/tab_s.png new file mode 100644 index 0000000..ab478c9 Binary files /dev/null and b/docs/SVD/html/tab_s.png differ diff --git a/docs/SVD/html/tab_topnav.png b/docs/SVD/html/tab_topnav.png new file mode 100644 index 0000000..b257b77 Binary files /dev/null and b/docs/SVD/html/tab_topnav.png differ diff --git a/docs/SVD/html/tabs.css b/docs/SVD/html/tabs.css new file mode 100644 index 0000000..ffbab50 --- /dev/null +++ b/docs/SVD/html/tabs.css @@ -0,0 +1,71 @@ +.tabs, .tabs1, .tabs2, .tabs3 { + background-image: url('tab_b.png'); + width: 100%; + z-index: 101; + font-size: 10px; +} + +.tabs1 { + background-image: url('tab_topnav.png'); + font-size: 12px; +} + +.tabs2 { + font-size: 10px; +} +.tabs3 { + font-size: 9px; +} + +.tablist { + margin: 0; + padding: 0; + display: table; + line-height: 24px; +} + +.tablist li { + float: left; + display: table-cell; + background-image: url('tab_b.png'); + list-style: none; +} + +.tabs1 .tablist li { + float: left; + display: table-cell; + background-image: url('tab_topnav.png'); + list-style: none; +} + +.tablist a { + display: block; + padding: 0 20px; + font-weight: bold; + background-image:url('tab_s.png'); + background-repeat:no-repeat; + background-position:right; + color: #283A5D; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; + outline: none; +} + +.tabs3 .tablist a { + padding: 0 10px; +} + +.tablist a:hover { + background-image: url('tab_h.png'); + background-repeat:repeat-x; + color: #fff; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); + text-decoration: none; +} + +.tablist li.current a { + background-image: url('tab_a.png'); + background-repeat:repeat-x; + color: #fff; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +} -- cgit