Added all the F4 libraries to the project
[fw/stlink] / exampleF4 / CMSIS / Documentation / CMSIS_History.htm
1 <html>
2
3 <head>
4 <title>CMSIS Version History</title>
5 <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
6 <meta name="GENERATOR" content="Microsoft FrontPage 12.0">
7 <meta name="ProgId" content="FrontPage.Editor.Document">
8 <style>
9 <!--
10 /*-----------------------------------------------------------
11 Keil Software CHM Style Sheet
12 -----------------------------------------------------------*/
13 body         { color: #000000; background-color: #FFFFFF; font-size: 75%; font-family: 
14                Verdana, Arial, 'Sans Serif' }
15 a:link       { color: #0000FF; text-decoration: underline }
16 a:visited    { color: #0000FF; text-decoration: underline }
17 a:active     { color: #FF0000; text-decoration: underline }
18 a:hover      { color: #FF0000; text-decoration: underline }
19 h1           { font-family: Verdana; font-size: 18pt; color: #000080; font-weight: bold; 
20                text-align: Center; margin-right: 3 }
21 h2           { font-family: Verdana; font-size: 14pt; color: #000080; font-weight: bold; 
22                background-color: #CCCCCC; margin-top: 24; margin-bottom: 3; 
23                padding: 6 }
24 h3           { font-family: Verdana; font-size: 10pt; font-weight: bold; background-color: 
25                #CCCCCC; margin-top: 24; margin-bottom: 3; padding: 6 }
26 pre          { font-family: Courier New; font-size: 10pt; background-color: #CCFFCC; 
27                margin-left: 24; margin-right: 24 }
28 ul           { list-style-type: square; margin-top: 6pt; margin-bottom: 0 }
29 ol           { margin-top: 6pt; margin-bottom: 0 }
30 li           { clear: both; margin-bottom: 6pt }
31 table        { font-size: 100%; border-width: 0; padding: 0 }
32 th           { color: #FFFFFF; background-color: #000080; text-align: left; vertical-align: 
33                bottom; padding-right: 6pt }
34 tr           { text-align: left; vertical-align: top }
35 td           { text-align: left; vertical-align: top; padding-right: 6pt }
36 .ToolT       { font-size: 8pt; color: #808080 }
37 .TinyT       { font-size: 8pt; text-align: Center }
38 code         { color: #000000; background-color: #E0E0E0; font-family: 'Courier New', Courier; 
39                line-height: 120%; font-style: normal }
40 /*-----------------------------------------------------------
41 Notes
42 -----------------------------------------------------------*/
43 p.note       { font-weight: bold; clear: both; margin-bottom: 3pt; padding-top: 6pt }
44 /*-----------------------------------------------------------
45 Expanding/Contracting Divisions
46 -----------------------------------------------------------*/
47 #expand      { text-decoration: none; margin-bottom: 3pt }
48 img.expand   { border-style: none; border-width: medium }
49 div.expand   { display: none; margin-left: 9pt; margin-top: 0 }
50 /*-----------------------------------------------------------
51 Where List Tags
52 -----------------------------------------------------------*/
53 p.wh         { font-weight: bold; clear: both; margin-top: 6pt; margin-bottom: 3pt }
54 table.wh     { width: 100% }
55 td.whItem    { white-space: nowrap; font-style: italic; padding-right: 6pt; padding-bottom: 
56                6pt }
57 td.whDesc    { padding-bottom: 6pt }
58 /*-----------------------------------------------------------
59 Keil Table Tags
60 -----------------------------------------------------------*/
61 table.kt     { border: 1pt solid #000000 }
62 th.kt        { white-space: nowrap; border-bottom: 1pt solid #000000; padding-left: 6pt; 
63                padding-right: 6pt; padding-top: 4pt; padding-bottom: 4pt }
64 tr.kt        {  }
65 td.kt        { color: #000000; background-color: #E0E0E0; border-top: 1pt solid #A0A0A0; 
66                padding-left: 6pt; padding-right: 6pt; padding-top: 2pt; 
67                padding-bottom: 2pt }
68 /*-----------------------------------------------------------
69 -----------------------------------------------------------*/
70 -->
71
72 </style>
73 </head>
74
75 <body>
76
77 <h1>CMSIS Version History</h1>
78 <p align="center">This document describes the changes between the different CMSIS versions.</p>
79 <p align="center">Version: 2.10 - July 2011</p>
80
81 <p class="TinyT">Information in this file, the accompany manuals, and software is<br>
82                  Copyright © ARM Ltd.<br>All rights reserved.
83 </p>
84
85 <hr>
86
87
88 <h2>Contents</h2>
89
90 <ol>
91   <li class="LI2"><a href="#Toolchain">Used Toolchains</a></li>
92   <li class="LI2"><a href="#6">Changes to version V2.00</a></li>
93   <li class="LI2"><a href="#5">Changes to version V1.30</a></li>
94   <li class="LI2"><a href="#4">Changes to version V1.20</a></li>
95   <li class="LI2"><a href="#2">Open Points</a></li>
96   <li class="LI2"><a href="#1">Limitations</a></li>
97 </ol>
98
99
100 <h2><a name="Toolchain"></a>Used Toolchains</h2>
101 <p>
102   Following toolchains have been used for test / verification:</i>.
103 </p>
104   <ul>
105     <li>ARM: MDK-ARM Version 4.21</li>
106     <li>GNU: Sourcery G++ Lite Edition for ARM 2010.09-51</li>
107     <li>IAR: IAR Embedded Workbench Kickstart Edition V6.10</li>
108   </ul>
109
110
111 <h2><a name="6"></a>Changes to version V2.00</h2>
112
113 <h3>Added CMSIS DSP Software Library support for Cortex-M0 based MCUs</h3>
114 <p>
115   The <strong>CMSIS DSP Software Library</strong> provides now also libraries and examples for Cortex-M0.
116 </p>
117 <p>
118   For more information refer to <i>CMSIS DSP Library documentation</i>.
119 </p>
120
121 <h3>Added big endian support for DSP library</h3>
122 <p>
123   The <strong>CMSIS DSP Software Library</strong> provides now also pre-build libraries 
124         and projects for big endian devices.
125 </p>
126 <p>
127   For more information refer to <i>CMSIS DSP Library documentation</i>.
128 </p>
129
130
131 <h3>Simplified folder structure for CMSIS include files</h3>
132 <p>
133   All CMSIS core include files as well as the DSP-Library header files are located in 
134         a single folder <strong>./CMSIS/Include</strong>.
135 </p>
136
137 <h3>Changed folder structure for Device Support packages</h3>
138 <p>
139   Device Support packages are expected to be in folder <strong>./Device</strong> located at the
140   same level as <strong>./CMSIS</strong>.
141 </p>
142 <p>The new Device folder contains the following subfolders:</p>
143   <ul>
144      <li><b>Device</b></li>
145        <ul>
146          <li>&lt;<b>Vendor</b>&gt; 
147            <ul>
148              <li>&lt;<b>Device</b>&gt; | &lt;<b>Device Series</b>&gt;
149                <ul>
150                   <li><b>Include</b><br>
151                       &lt;device&gt;.h<br>
152                       system_&lt;device&gt;.h<br>
153                   </li>
154                   <li><b>Source</b>
155                     <ul>
156                        <li><b>Templates</b><br>
157                            system_&lt;device&gt;.c<br>
158                           <ul>
159                              <li>&lt;<b>Toolchain</b>&gt;<br>
160                                  startup_&lt;device&gt;.s<br>
161                              </li>
162                              <li>&lt;<b>Toolchain</b>&gt;</li>
163                                 <li>...</li>
164                           </ul>
165                        </li>
166                     </ul>
167                   </li>
168                </ul>
169              <li>&lt;<b>Device</b>&gt; | &lt;<b>Device Series</b>&gt;</li>
170              <li>...</li>
171            </ul>
172          </li>
173          <li>&lt;<b>Vendor</b>&gt;</li>
174          <li>...</li>
175        </ul>
176      </li>
177   </ul>
178 <p>Template files are application specific files and are required to be copied to the project prior to use!</p>
179
180 <h3>Removed CMSIS core source files</h3>
181 <p>
182   The CMSIS core source files <strong>core_cm0.c, core_cm3.c, core_cm4.c</strong> 
183   containing helper functions for older ARM compiler versions got removed.
184 </p>
185 <p>
186   For the <b>ARM Compiler Toolchain </b>version <b>V4.0.677</b> or later is 
187         required!</p>
188
189
190 <h2><a name="5"></a>Changes to version V1.30</h2>
191
192 <h3>Added CMSIS DSP Software Library</h3>
193 <p>
194   The <strong>CMSIS DSP Software Library</strong> is a suite of common signal processing functions targeted 
195   to Cortex-M processor based microcontrollers. Even though the code has been specifically 
196   optimized towards using the extended DSP instruction set of the Cortex-M4 processor, 
197   the library can be compiled for any Cortex-M processor.
198 </p>
199 <p>
200   For more information see <i>CMSIS DSP Library documentation</i>.
201 </p>
202
203 <h3>Added CMSIS System View Description</h3>
204 <p>
205   The <strong>CMSIS System View Description</strong> answers the challenges of accurate, detailed and 
206   timely device aware peripheral debugging support for Cortex Microcontroller based 
207   devices by the software development tools vendor community.
208 </p>
209 <p>
210   Silicon vendors shall create and maintain a formalized description of the debug view 
211   for all the peripherals contained in their Cortex Microcontroller based devices.
212   Tool vendors use such descriptions to establish device specific debug support in 
213   their debugging tools.
214 </p>
215 <p>
216   A standardized System View Description shall provide a common approach to 
217   capturing peripheral debug related information in a machine readable files.
218 </p>
219 <p>
220   For more information see <i>CMSIS System View Description</i>.
221 </p>
222
223 <h3>Added Cortex-M4 Core Support</h3>
224 <p>
225   Additional folder <strong>CM4</strong>, containing the Cortex-M4 core support files, has been added.
226 </p>
227   <ul>
228     <li>CM0</li>
229     <li>CM3</li>
230     <li>CM4
231        <ul>
232          <li>CoreSupport</li>
233          <li>DeviceSupport</li>
234        </ul>
235     </li>
236   </ul>
237
238 <h3>New naming for Core Support Files</h3>
239 <p>
240   The new Core Support Files are:
241 </p>
242 <ul>
243   <li>core_cm#.h  (# = 0, 3, 4)</li>
244   <li>core_cmFunc.h  (Cortex-M Core Register access functions)</li>
245   <li>core_cmInstr.h  (Cortex-M Core instructions)</li>
246   <li>core_cm4_simd.h (Cortex-M4 SIMD instructions)</li>
247 </ul>
248
249 <h2><a name="4"></a>Changes to version V1.20</h2>
250
251 <h3>Removed CMSIS Middelware packages</h3>
252 <p>
253   CMSIS Middleware is removed and no longer focus of CMSIS.
254 </p>
255
256 <h3>SystemFrequency renamed to SystemCoreClock</h3>
257 <p>
258   The variable name <strong>SystemCoreClock</strong> is more precise than <strong>SystemFrequency</strong>
259   because the variable holds the clock value at which the core is running.
260 </p>
261
262 <h3>Changed startup concept</h3>
263 <p>
264   The old startup concept (calling SystemInit_ExtMemCtl from startup file and calling SystemInit 
265   from main) has the weakness that it does not work for controllers which need a already 
266   configuerd clock system to configure the external memory controller.
267 </p>
268
269 <h5>Changed startup concept</h5>
270 <ul>
271   <li>
272     SystemInit() is called from startup file before <strong>premain</strong>.
273   </li>
274   <li>
275     <strong>SystemInit()</strong> configures the clock system and also configures
276     an existing external memory controller.
277   </li>
278   <li>
279     <strong>SystemInit()</strong> must not use global variables.
280   </li>
281   <li>
282     <strong>SystemCoreClock</strong> is initialized with a correct predefined value.
283   </li>
284   <li>
285     Additional function <strong>void SystemCoreClockUpdate (void)</strong> is provided.<br>
286    <strong>SystemCoreClockUpdate()</strong> updates the variable <strong>SystemCoreClock</strong>
287    and must be called whenever the core clock is changed.<br>
288    <strong>SystemCoreClockUpdate()</strong> evaluates the clock register settings and calculates
289    the current core clock.
290   </li>
291 </ul>
292       
293
294 <h3>Advanced Debug Functions</h3>
295 <p>
296   ITM communication channel is only capable for OUT direction. To allow also communication for
297   IN direction a simple concept is provided.
298 </p>
299 <ul>
300   <li>
301     Global variable <strong>volatile int ITM_RxBuffer</strong> used for IN data.
302   </li>
303   <li>
304     Function <strong>int ITM_CheckChar (void)</strong> checks if a new character is available.
305   </li>
306   <li>
307     Function <strong>int ITM_ReceiveChar (void)</strong> retrieves the new character.
308   </li>
309 </ul>
310
311 <p>
312   For detailed explanation see file <strong>CMSIS debug support.htm</strong>. 
313 </p>
314
315
316 <h3>Core Register Bit Definitions</h3>
317 <p>
318   Files core_cm3.h and core_cm0.h contain now bit definitions for Core Registers. The name for the
319   defines correspond with the Cortex-M Technical Reference Manual.  
320 </p>
321 <p>
322   e.g. SysTick structure with bit definitions
323 </p>
324 <pre>
325 /** \brief  Structure type to access the System Timer (SysTick).
326  */
327 typedef struct
328 {
329   __IO uint32_t CTRL;                    /*!< Offset: 0x000 (R/W)  SysTick Control and Status Register */
330   __IO uint32_t LOAD;                    /*!< Offset: 0x004 (R/W)  SysTick Reload Value Register       */
331   __IO uint32_t VAL;                     /*!< Offset: 0x008 (R/W)  SysTick Current Value Register      */
332   __I  uint32_t CALIB;                   /*!< Offset: 0x00C (R/ )  SysTick Calibration Register        */
333 } SysTick_Type;
334
335 /* SysTick Control / Status Register Definitions */
336 #define SysTick_CTRL_COUNTFLAG_Pos         16                                             /*!< SysTick CTRL: COUNTFLAG Position */
337 #define SysTick_CTRL_COUNTFLAG_Msk         (1UL << SysTick_CTRL_COUNTFLAG_Pos)            /*!< SysTick CTRL: COUNTFLAG Mask */
338
339 #define SysTick_CTRL_CLKSOURCE_Pos          2                                             /*!< SysTick CTRL: CLKSOURCE Position */
340 #define SysTick_CTRL_CLKSOURCE_Msk         (1UL << SysTick_CTRL_CLKSOURCE_Pos)            /*!< SysTick CTRL: CLKSOURCE Mask */
341
342 #define SysTick_CTRL_TICKINT_Pos            1                                             /*!< SysTick CTRL: TICKINT Position */
343 #define SysTick_CTRL_TICKINT_Msk           (1UL << SysTick_CTRL_TICKINT_Pos)              /*!< SysTick CTRL: TICKINT Mask */
344
345 #define SysTick_CTRL_ENABLE_Pos             0                                             /*!< SysTick CTRL: ENABLE Position */
346 #define SysTick_CTRL_ENABLE_Msk            (1UL << SysTick_CTRL_ENABLE_Pos)               /*!< SysTick CTRL: ENABLE Mask */
347
348 /* SysTick Reload Register Definitions */
349 #define SysTick_LOAD_RELOAD_Pos             0                                             /*!< SysTick LOAD: RELOAD Position */
350 #define SysTick_LOAD_RELOAD_Msk            (0xFFFFFFUL << SysTick_LOAD_RELOAD_Pos)        /*!< SysTick LOAD: RELOAD Mask */
351
352 /* SysTick Current Register Definitions */
353 #define SysTick_VAL_CURRENT_Pos             0                                             /*!< SysTick VAL: CURRENT Position */
354 #define SysTick_VAL_CURRENT_Msk            (0xFFFFFFUL << SysTick_VAL_CURRENT_Pos)        /*!< SysTick VAL: CURRENT Mask */
355
356 /* SysTick Calibration Register Definitions */
357 #define SysTick_CALIB_NOREF_Pos            31                                             /*!< SysTick CALIB: NOREF Position */
358 #define SysTick_CALIB_NOREF_Msk            (1UL << SysTick_CALIB_NOREF_Pos)               /*!< SysTick CALIB: NOREF Mask */
359
360 #define SysTick_CALIB_SKEW_Pos             30                                             /*!< SysTick CALIB: SKEW Position */
361 #define SysTick_CALIB_SKEW_Msk             (1UL << SysTick_CALIB_SKEW_Pos)                /*!< SysTick CALIB: SKEW Mask */
362
363 #define SysTick_CALIB_TENMS_Pos             0                                             /*!< SysTick CALIB: TENMS Position */
364 #define SysTick_CALIB_TENMS_Msk            (0xFFFFFFUL << SysTick_VAL_CURRENT_Pos)        /*!< SysTick CALIB: TENMS Mask */
365
366 /*@} end of group CMSIS_SysTick */</pre>
367
368 <h3>DoxyGen Tags</h3>
369 <p>
370   DoxyGen tags in files core_cm3.[c,h] and core_cm0.[c,h] are reworked to create proper documentation
371   using DoxyGen.
372 </p>
373
374 <h3>Folder Structure</h3>
375 <p>
376   The folder structure is changed to differentiate the single support packages.
377 </p>
378
379   <ul>
380     <li>CM0</li>
381     <li>CM3
382        <ul>
383          <li>CoreSupport</li>
384          <li>DeviceSupport</li>
385            <ul>
386              <li>Vendor 
387                <ul>
388                  <li>Device
389                    <ul>
390                       <li>Startup
391                         <ul>
392                           <li>Toolchain</li>
393                           <li>Toolchain</li>
394                           <li>...</li>
395                         </ul>
396                       </li>
397                    </ul>
398                  </li>
399                  <li>Device</li>
400                  <li>...</li>
401                </ul>
402              </li>
403              <li>Vendor</li>
404              <li>...</li>
405            </ul>
406          </li>
407          <li>Example <i>(optional)</i>
408            <ul>
409              <li>Toolchain 
410                <ul>
411                  <li>Device</li>
412                  <li>Device</li>
413                  <li>...</li>
414                </ul>
415              </li>
416              <li>Toolchain</li>
417              <li>...</li>
418            </ul>
419          </li>
420        </ul>
421     </li>
422      
423     <li>Documentation</li>
424   </ul>
425
426 <h2><a name="2"></a>Open Points</h2>
427 <p>
428   Following points need to be clarified and solved:
429 </p>
430 <ul>
431   <li>
432     <p>
433       Equivalent C and Assembler startup files.
434     </p>
435     <p>
436       Is there a need for having C startup files although assembler startup files are
437       very efficient and do not need to be changed?
438     <p/>
439   </li>
440   <li>
441     <p>
442       Placing of HEAP in external RAM.
443     </p>
444     <p>
445       It must be possible to place HEAP in external RAM if the device supports an 
446       external memory controller.
447     </p>
448   </li>
449   <li>
450     <p>
451       Placing of STACK /HEAP.
452     </p>
453     <p>
454       STACK should always be placed at the end of internal RAM.
455     </p>
456     <p>
457       If HEAP is placed in internal RAM than it should be placed after RW ZI section.
458     </p>
459   </li>
460 </ul>
461
462
463 <h2><a name="1"></a>Limitations</h2>
464 <p>
465   The following limitations are not covered with the current CMSIS version:
466 </p>
467 <ul>
468  <li>
469   No <strong>C startup files</strong> are available. 
470  </li>
471 </ul>
472