]> begriffs open source - cmsis-driver-validation/blob - Doxygen/DriverValidation.txt
Merge branch 'develop' of https://github.com/ARM-software/CMSIS-Driver_Validation...
[cmsis-driver-validation] / Doxygen / DriverValidation.txt
1 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
2 /**
3 \mainpage Introduction
4
5 This manual explains the scope and the usage of the Software Pack for \b CMSIS-Driver \b Validation.
6 <a href="http://www.keil.com/pack/doc/CMSIS/Driver/html/index.html" target="_blank">CMSIS-Driver</a> are standard peripheral
7 API interfaces that connect microcontroller peripherals with middleware or the user application. 
8
9 The Software Pack for CMSIS-Driver validation provides:
10   - Configurable validation tests for several CMSIS-Driver interfaces
11   - Example projects that show the usage of the CMSIS-Driver validation
12
13 The CMSIS-Driver Validation tests and verifies:
14   - \b API \b interface \b interaction using the driver capabilities as well as valid and invalid parameters.
15   - \b Data \b communication with various transfer sizes and communication parameters (i.e. baudrate).
16   - \b Loopback \b communication (for some interfaces) for testing the underlying hardware.
17   - \b Transfer \b speed of the data communication with time measurement of data transfers.
18
19 The CMSIS-Driver Validation requires
20 <a href="http://www.keil.com/pack/doc/CMSIS/RTOS/html/index.html" target="_blank">CMSIS-RTOS</a> or
21 <a href="http://www.keil.com/pack/doc/CMSIS/RTOS2/html/index.html" target="_blank">CMSIS-RTOS2</a> functionality and can be
22 used to verify the setup and configuration of the CMSIS-Driver interfaces in a user system. It is also used to validate
23 implementation of a CMSIS-Driver interface.
24
25 The diagram below is an overview of the configuration for CMSIS-Driver validation.
26
27 \image html DVSuite.png
28
29 This manual contains the following chapters:
30   - \ref test_setup - Describes the general setup of the CMSIS-Driver validation test and how to generate test output.
31   - \ref test_results - Explains how to interpret the test results from loopback tests.
32   - \ref examples - Contains information of several example projects including the required hardware setup.
33   - \ref resource_requirements - Lists memory and CMSIS-RTOS requirements.
34   - <a class="el" href="./modules.html">Reference</a> - explains the individual tests for the various CMSIS-Driver
35     interfaces.
36
37 The Software Pack for CMSIS-Driver validation current tests the following interfaces:
38   - \ref can_funcs - Controller Area Network (CAN) peripheral.
39   - \ref eth_funcs - Interface to Ethernet MAC and PHY peripheral.
40   - \ref i2c_funcs - Inter-Integrated Circuit (I2C) multi-master serial single-ended bus interface driver.
41   - \ref mci_funcs - Memory card interface for SD/MMC memory.
42   - \ref spi_funcs - Serial Peripheral Interface (SPI) driver.
43   - \ref usart_funcs - Universal Synchronous and Asynchronous Receiver/Transmitter
44     (USART) interface driver.
45   - \ref usbd_funcs - Universal Serial Bus (USB) Device interface driver.
46   - \ref usbh_funcs - Universal Serial Bus (USB) Host interface driver.
47   - \ref wifi_funcs - WiFi (Wireless Fidelity Interface) module driver.
48
49 This manual assumes that you are familiar with MDK. Refer to
50 <a href="http://www2.keil.com/mdk5/install" target="_blank">MDK Version 5 - Getting Started</a> for additional information.
51
52 <hr>
53
54 Revision History
55 ----------------
56
57 <table class="cmtable" summary="Revision History">
58     <tr>
59       <th>Version</th>
60       <th>Description</th>
61     </tr>
62     <tr>
63       <td>V1.4.0</td>
64       <td>
65         - Updated conditions to support all Cortex-M devices
66         - Introduced test groups (each driver is organized in a group)
67         - Improved XSL for XML display
68         - Updated all examples
69         - Removed example for Atmel board
70         - WiFi Driver Testing: Added SockServer application for PC running Microsoft Windows
71         - WiFi Driver Testing: Added upstream and downstream bandwidth testing
72         - WiFi Driver Testing: Added example for Inventek ISM43362 WiFi Driver testing on STMicroelectronics B-L475E-IOT01A1 board
73         - WiFi Driver Testing: Added example for Inventek ISM43362 WiFi Driver testing using ISMART43362-E WiFi shield mounted on NXP LPCXpresso55S69 board
74         - WiFi Driver Testing: Added examples for Espressif ESP8266 and ESP32 WiFi Driver testing with NXP MIMXRT1064-EVK board
75         - WiFi Driver Testing: Added example for WIZnet WizFi360 WiFi Driver testing with NXP MIMXRT1064-EVK board
76       </td>
77     </tr>
78     <tr>
79       <td>V1.3.0</td>
80       <td>
81         - Added WiFi tests
82       </td>
83     </tr>
84     <tr>
85       <td>V1.2.0</td>
86       <td>
87         - Added CMSIS-RTOS2 and Arm Compiler 6 compatibility
88       </td>
89     </tr>
90     <tr>
91       <td>V1.1.0</td>
92       <td>
93         - Added USB Host, CAN and Ethernet Precision Time Protocol tests
94       </td>
95     </tr>
96     <tr>
97       <td>V1.0.0</td>
98       <td>
99         - Initial release for CMSIS-Driver API V2.0
100       </td>
101     </tr>
102  </table>
103 */
104
105 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
106 /**
107 \page test_setup Test Setup
108
109 \section step1 Step 1: Create an MDK project with your target microcontroller device
110
111
112 \section step2 Step 2: Add required software components
113
114 For proper operation, add the following software components in the <b>Manage Run-Time Environment</b> window:
115 - <b>CMSIS Driver Validation:Framework</b>
116 - <b>CMSIS Driver Validation:driver</b>, driver interfaces to be tested
117 - <b>CMSIS Driver:driver</b>, driver implementations to be tested
118 - <b>CMSIS:RTOS2 (API):Keil RTX5</b>
119 - <b>Compiler:I/O:STDOUT</b>, variant \b ITM (if your hardware does not support ITM select \b User or \b EVR)
120 - Resolve any unresolved component dependecies
121
122
123 \section step3 Step 3: Add main.c
124
125 Right-click <b>Source Group 1...</b> and select <b>Add New Item to Group</b>. Select <b>User Code Template</b> and choose the
126 \b main file from <b>Device:Startup</b> or <b>CMSIS-RTOS2:Keil RTX5</b>.
127
128 Add this include:
129 \code
130 include "cmsis_dv.h"
131 \endcode
132
133 In the main function, after kernel initialization, create the \c cmsis_dv thread:
134 \code
135 osThreadNew(cmsis_dv, NULL, NULL);
136 \endcode
137 to run all tests that you have chosen in the next step.
138
139
140 \section step4 Step 4: Configure DV_Config.h
141
142 Open \c DV_Config.h under the <b>CMSIS Driver Validation</b> group in the Project window.
143
144 \image html dv_config_h.png "Configuration File DV_Config.h"
145
146 <b>Common Test Settings</b>
147
148 The common test settings help you to choose the output format of the test, buffer sizes and buffer content that should
149 be used for the send, receive, and transfer tests:
150 - The \b Print \b Output \b Format lets you select if you wish to create the output as plain text or as styled XML.
151 - \b Buffer \b sizes lets you select the buffer sizes that are used for data transfer. This setting has a direct impact on
152   required \ref step6 "heap".
153 - You can specify also the <b>Buffer size for baudrate test</b>. For USART you can set the <b>Percentual tolerance for baudrate 
154   test</b> and for SPI the <b>Percentual trigger for bus speed test</b>. Depending on the device \ref step7 "configuration", for 
155   example when DMA is not used, the transfers may have larger overhead which is more significant for higher bus speeds. The 
156   transfer overhead is reduced for larger transfer buffer sizes.
157 - Select your preferred <b>Buffer pattern</b>
158
159 <b>Driver-specific Settings</b>
160
161 Every interface has specific settings that can be changed in the according section:
162 - You need to specify the driver instance number (<b>Driver_<i>interface</i>#</b>) used for the test. This is especially
163   important for microcontroller devices that have multiple peripherals of the same kind.
164 - Some drivers can have additional baudrate or timing settings.
165 - Select all driver tests that you wish to use. Note that all tests can run independently from each other. You do not need to
166   specify a certain order.
167
168 \note For more information on additional settings and the different driver test cases, check the
169 <a class="el" href="./modules.html">Reference</a> section.
170 \note For WiFi driver validation some settings depend on the test environment and they need to be set properly, 
171 for details please refer to \ref wifi_config section.
172
173
174 \section step5 Step 5: Configure Keil RTX5
175
176 Open \b RTX_Config.h and set:
177 - <b>Default Thread stack size [bytes]</b> to \a 2048
178 - <b>Global Dynamic Memory size [bytes]</b> to \a 8192 (Note 1)
179
180 \note Note 1: This setting is only necessary for WiFi driver testing, for other tests default setting of 4096 is sufficient.
181
182 \section step6 Step 6: Configure Heap
183
184 Depending on the buffer sizes that you have chosen in \ref step4 "Step 4", you need to add more heap. Depending on how heap is 
185 configured in your system open your startup_<i>device</i>.s file from the \b Device group in the \b Project window or use a 
186 linker script to adjust the heap setting. Click on the 
187 <a href="http://www.keil.com/support/man/docs/uv4/uv4_ut_configwizard.htm" target="_blank">Configuration Wizard</a> view. 
188 Increase the heap size:
189 - for the validation framework add 1024 bytes.
190 - double the largest buffer size you have set in the configuration file and add this as well.
191
192 Refer to the \ref resource_requirements section for a calculation example.
193
194
195 \section step7 Step 7: Configure the Device
196
197 Depending on your device, you might have different pin/hardware configuration options. Usually, you can configure the device
198 using the \c RTE_Device.h file from the \b Device group. Enable all interfaces you wish to use in the tests and make all
199 necessary pin-out changes required by your actual board layout (consult the board schematics). The pre-built
200 \ref examples "examples" are already configured for the underlying hardware.
201
202 For a robust test with good coverage, implement various targets with different settings:
203 - \b Enable/disable the \b DMA controller of your device
204 - Set different \b buffer \b sizes in \ref step4 "DV_Config.h"
205 - Select different compiler \b optimization \b levels in the
206   <a href="http://www.keil.com/support/man/docs/uv4/uv4_dg_adscc.htm" target="_blank">C/C++ tab</a> of the
207   <b>Options for Target</b> dialog.
208
209
210 \section step8 Step 8: Setup Additional Hardware
211
212 For the interfaces that support loopback testing: \ref eth_funcs "Ethernet", \ref spi_funcs "SPI", and \ref usart_funcs "USART", 
213 connect the following pins on your target hardware together (refer to the hardware schematics):
214
215 - Ethernet: RX+ and TX+, RX- and TX-
216 - SPI: MISO and MOSI
217 - USART: RX and TX
218
219 For WiFi specific hardware requirements please refer to \ref wifi_requirements.
220
221 \section step9 Step 9: Download and Run the Project
222
223 In the <b>Options for Target</b> dialog, under debug settings, if you use ITM as standard output channel ensure that 
224 \b Trace and ITM port \token{0} are enabled and that the correct clock frequency is set:
225
226 \image html target_dialog.png "ITM Channel setting"
227
228 Build, load and run the project. The output is displayed in the <b>Debug (printf) Viewer</b> window:
229
230 \verbatim
231 CMSIS-Driver ETH Test Report   Nov 15 2019   15:25:59 
232
233 TEST 01: ETH_MAC_GetCapabilities          PASSED
234 TEST 02: ETH_MAC_Initialization           PASSED
235 TEST 03: ETH_MAC_PowerControl             
236   DV_ETH.c (163): [WARNING] Low power is not supported
237                                           PASSED
238 TEST 04: ETH_MAC_SetBusSpeed              
239   DV_ETH.c (197): [WARNING] Link speed 1G is not supported
240                                           PASSED
241 TEST 05: ETH_MAC_Config_Mode              PASSED
242 TEST 06: ETH_MAC_Config_CommonParams      PASSED
243 TEST 07: ETH_PHY_Initialization           PASSED
244 TEST 08: ETH_PHY_PowerControl             
245   DV_ETH.c (300): [WARNING] Low power is not supported
246                                           PASSED
247 TEST 09: ETH_PHY_Config                   PASSED
248 TEST 10: ETH_Loopback_Transfer            PASSED
249 TEST 11: ETH_PHY_CheckInvalidInit         NOT EXECUTED
250 TEST 12: ETH_MAC_CheckInvalidInit         NOT EXECUTED
251
252 Test Summary: 12 Tests, 10 Passed, 0 Failed.
253 Test Result: PASSED
254 \endverbatim
255
256 If you see warnings during loopback transfer tests, please read the section \ref test_results which gives you more
257 information on how to interpret the results.
258 */
259
260
261 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
262 /**
263 \page test_results Reading Test Results
264
265 The tests \ref SPI_Loopback_CheckBusSpeed and \ref USART_Loopback_CheckBaudrate may issue warnings when using the default
266 settings (especially loopback communication tests for SPI and USART):
267 \verbatim
268 CMSIS-Driver SPI Test Report   Nov 15 2019   15:35:11 
269
270 TEST 01: SPI_GetCapabilities              PASSED
271 TEST 02: SPI_Initialization               PASSED
272 TEST 03: SPI_PowerControl                 
273   DV_SPI.c (244): [WARNING] Low power is not supported
274                                           PASSED
275 TEST 04: SPI_Config_PolarityPhase         PASSED
276 TEST 05: SPI_Config_DataBits              PASSED
277 TEST 06: SPI_Config_BitOrder              
278   DV_SPI.c (315): [WARNING] Bit order LSB_MSB is not supported
279                                           PASSED
280 TEST 07: SPI_Config_SSMode                
281   DV_SPI.c (343): [WARNING] Slave select MASTER_HW_INPUT is not supported
282                                           PASSED
283 TEST 08: SPI_Config_BusSpeed              PASSED
284 TEST 09: SPI_Config_CommonParams          PASSED
285 TEST 10: SPI_Send                         PASSED
286 TEST 11: SPI_Receive                      PASSED
287 TEST 12: SPI_Loopback_CheckBusSpeed       
288   DV_SPI.c (525): [WARNING] At 25000kHz: measured time is 2.437125 x expected time
289                                           PASSED
290 TEST 13: SPI_Loopback_Transfer            PASSED
291 TEST 14: SPI_CheckInvalidInit             NOT EXECUTED
292 \endverbatim
293
294 The measured time is depending mainly on two factors: \b DMA and \b software \b overhead.
295
296 If you are not using \b DMA for data transfer, an interrupt is generated, in worst case, for every transferred byte. The
297 interrupt handling overhead for each byte can produce 10 times slower transfer than DMA. DMA will transfer the data
298 without overhead. Thus, only bus speed/baudrate tests with DMA enabled should be considered for
299 optimization. In case DMA cannot be used (because no DMA channel is left to be used for example), the user needs to be aware
300 that the data rates will decrease significantly.
301
302 The \b software \b overhead is introduced by the way the measurement is done. When the measurement is started a system tick 
303 value is stored and then the transfer is set up and started. The software then needs to determine when the transfer 
304 has ended and calculate required time difference by using previously stored system ticks and current system ticks.
305 Usually, the software overhead is a constant number of CPU cycles. The total amount of time required for the software overhead 
306 depends on the actual CPU that is used and on the optimization level used during build. \n
307 Increasing the <b>Buffer size for baudrate test</b> reduces the software overhead effect. The following calculation example
308 explains why.
309
310 \b Calculation \b Example
311
312 SPI bus speed = 25 Mbps
313
314 - Buffer size for baudrate tests = 512 byte (default value, equals 512 * 8 bit)
315 - Actual bus speed = 18 Mbps (read from driver)
316 - Expected time to transfer data = 227 µs (512 * 8 bit/18 Mbps)
317 - Measured time = 245 µs = 227 µs + 18 µs (coming from a software overhead)
318 - This results in a measured/expected time ratio of 1.08 which will lead to a warning
319
320 Using a buffer size of 8192 bytes in the example above will reduce the software overhead to less than 1% (which will issue no
321 warning anymore).
322 */
323
324
325 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
326 /**
327 \page examples Examples
328
329 This Software Pack contains a set or pre-built examples that show how to use the validation suite together with real
330 hardware. The following example projects are available. Use
331 <a href="http://www2.keil.com/mdk5/packinstaller" target="_blank">Pack Installer</a> to copy them to your machine:
332
333 - \subpage examples_xmc4500_relax
334 - \subpage examples_mcbstm32f200
335 - \subpage examples_mcbstm32f400
336 - \subpage examples_b_l475e_iot01a1
337 - \subpage examples_stm32f746g
338 - \subpage examples_ismart43362_e
339 - \subpage examples_esp8266
340 - \subpage examples_esp32
341 - \subpage examples_wizfi360
342
343 \anchor example_targets
344 Targets
345 -------
346
347 All projects contain two targets:
348 - <b>Create Report</b>: Test results and statistics are printed to the file \c TestReport\TestReport.xml. 
349   Open the file in a web browser of your choice.
350   \note <span style="font-weight:bold; color:Green">Passed</span> Status means that test case has passed sucessfully.
351   \note <span style="font-weight:bold; color:DarkOrange">Passed</span> Status means that tests case has passed but there were some warnings (More details can be used to see the details).
352   \note <span style="font-weight:bold; color:Blue">Not executed</span> Status means test case did not check any assertions.
353   \note <span style="font-weight:bold; color:Red">Failed</span> Status means test case has failed (More details can be used to see the details).
354 - \b Debug: Results and statistics are printed to the Debug (printf) Viewer window through the standard output.
355 */
356
357
358 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
359 /**
360 \page examples_xmc4500_relax Infineon XMC4500 Relax Kit
361
362 Software Setup
363 --------------
364
365 Using <a href="http://www2.keil.com/mdk5/packinstaller" target="_blank">Pack Installer</a> install latest 
366 <b>Infineon::XMC4000_DFP</b> pack and copy the example project
367 <b>CMSIS-Driver Validation (XMC4500 Relax Lite Kit)</b> to your machine.
368
369 -# Choose one of the available \ref example_targets and build the project.
370 -# If you wish to test the loopback mode for some of the interfaces, refer to the next section for proper board
371    configuration.
372 -# Run the test on the target hardware using the on-board JLink-Lite debug adapter.
373
374 Hardware Setup
375 --------------
376
377 The following picture shows the necessary external loopback connections for the Infineon XMC4500 Relax Kit evaluation board:
378  - UART2: \b P0.4 (UART2_RX)  and \b P0.5 (UART2_TX)  (Header X2)
379  - SPI0:  \b P5.0 (SPI0_MOSI) and \b P5.1 (SPI0_MISO) (Header X2)
380  - For Ethernet use a loopback plug as described in \ref eth_loopback "Loopback Communication Setup". 
381
382 \image html xmc4500.png  "Connections for Loop Back Communication Tests on Infineon XMC4500 Relax Kit"
383 */
384
385
386 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
387 /**
388 \page examples_mcbstm32f200 Keil MCBSTM32F200
389
390 Software Setup
391 --------------
392
393 Using <a href="http://www2.keil.com/mdk5/packinstaller" target="_blank">Pack Installer</a> install latest 
394 <b>Keil::STM32F2xx_DFP</b> pack and copy the example project
395 <b>CMSIS-Driver Validation (MCBSTM32F200)</b> to your machine.
396
397 -# Choose one of the available \ref example_targets and build the project.
398 -# If you wish to test the loopback mode for some of the interfaces, refer to the next section for proper board
399    configuration.
400 -# Run the test on the target hardware.
401
402 \note To communicate with the development board, a debug adapter from the
403 <a href="http://www2.keil.com/mdk5/ulink/" target="_blank">ULINK</a> family is required.
404
405
406 Hardware Setup
407 --------------
408
409 The following picture shows the necessary external loopback connections for the Keil MCBSTM32F400 evaluation board:
410  - SPI2: \b PB14 (SPI2_MISO) and \b PB15 (SPI2_MOSI)
411  - USART1: \b PB6 (USART1_TX) and \b PB7 (USART1_RX)
412  - For Ethernet use a loopback plug as described in \ref eth_loopback "Loopback Communication Setup". 
413
414 \image html mcbstm32f400.png  "Connections for Loop Back Communication Tests on Keil MCBSTM32F200"
415 */
416
417
418 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
419 /**
420 \page examples_mcbstm32f400 Keil MCBSTM32F400
421
422 Software Setup
423 --------------
424
425 Using <a href="http://www2.keil.com/mdk5/packinstaller" target="_blank">Pack Installer</a> install latest 
426 <b>Keil::STM32F4xx_DFP</b> pack and copy the example project
427 <b>CMSIS-Driver Validation (MCBSTM32F400)</b> to your machine.
428
429 -# Choose one of the available \ref example_targets and build the project.
430 -# If you wish to test the loopback mode for some of the interfaces, refer to the next section for proper board
431    configuration.
432 -# Run the test on the target hardware.
433
434 \note To communicate with the development board, a debug adapter from the
435 <a href="http://www2.keil.com/mdk5/ulink/" target="_blank">ULINK</a> family is required.
436
437
438 Hardware Setup
439 --------------
440
441 The following picture shows the necessary external loopback connections for the Keil MCBSTM32F400 evaluation board:
442  - SPI2: \b PB14 (SPI2_MISO) and \b PB15 (SPI2_MOSI)
443  - USART1: \b PB6 (USART1_TX) and \b PB7 (USART1_RX)
444  - For Ethernet use a loopback plug as described in \ref eth_loopback "Loopback Communication Setup". 
445
446 \image html mcbstm32f400.png  "Connections for Loop Back Communication Tests on Keil MCBSTM32F400"
447 */
448
449
450 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
451 /**
452 \page examples_b_l475e_iot01a1 STMicroelectronics B-L475E-IOT01A1
453
454 Software Setup
455 --------------
456
457 Using <a href="http://www2.keil.com/mdk5/packinstaller" target="_blank">Pack Installer</a> install latest 
458 <b>Keil::STM32L4xx_DFP</b> pack and copy the example project
459 <b>CMSIS-Driver WiFi Inventek ISM43362 Validation (B-L475E-IOT01A1)</b> to your machine.
460
461 -# Choose one of the available \ref example_targets and build the project.
462 -# Run the test on the target hardware using the on-board ST-Link/V2.
463
464 This example is prepared for testing of the WiFi driver and it requires \ref wifi_requirements, as well as, propper 
465 configuration described in \ref wifi_config.
466
467 For details on WiFi driver tests please refer to \ref wifi_funcs.
468
469 \image html b-l475e-iot01a.png  "STMicroelectronics B-L475E-IOT01A1 board"
470 */
471
472
473 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
474 /**
475 \page examples_ismart43362_e Inventek ISMART43362-E WiFi Shield with NXP LPCXpresso55S69
476
477 Software Setup
478 --------------
479
480 Using <a href="http://www2.keil.com/mdk5/packinstaller" target="_blank">Pack Installer</a> install latest 
481 <b>NXP::LPC55S69_DFP</b> and <b>NXP::LPCXpresso55S69_EVK</b> packs and copy the example project
482 <b>CMSIS-Driver WiFi Inventek ISM43362 Validation (LPCXpresso55S69)</b> to your machine.
483
484 -# Choose one of the available \ref example_targets and build the project.
485 -# Run the test on the target hardware.
486
487 \note To communicate with the development board, a debug adapter 
488 <a href="http://www2.keil.com/mdk5/ulink/ulinkplus/" target="_blank">ULINKplus</a> is required.
489
490 This example is prepared for testing of the WiFi driver and it requires \ref wifi_requirements, as well as, propper 
491 configuration described in \ref wifi_config.
492
493 For details on WiFi driver tests please refer to \ref wifi_funcs.
494
495 \image html LPCXpresso55S69.png  "NXP LPCXpresso55S69 with Inventek ISMART43362-E WiFi Shield attached"
496 */
497
498
499 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
500 /**
501 \page examples_esp8266 Espressif ESP8266 SparkFun WiFi Shield with NXP MIMXRT1064-EVK
502
503 Software Setup
504 --------------
505
506 Using <a href="http://www2.keil.com/mdk5/packinstaller" target="_blank">Pack Installer</a> install latest 
507 <b>NXP::MIMXRT1064_DFP</b> and <b>NXP::EVK-MIMXRT1064_BSP</b> packs and copy the example project
508 <b>CMSIS-Driver WiFi Espressif ESP8266 Validation (EVK-MIMXRT1064)</b> to your machine.
509
510 -# Choose one of the available \ref example_targets and build the project.
511 -# Run the test on the target hardware using the on-board CMSIS-DAP Debugger.
512
513 This example is prepared for testing of the WiFi driver and it requires \ref wifi_requirements, as well as, propper 
514 configuration described in \ref wifi_config.
515
516 For details on WiFi driver tests please refer to \ref wifi_funcs.
517
518 \image html MIMXRT1064EVK.png  "NXP MIMXRT1064-EVK with"
519 \image html esp8266_sparkfun.png  "Espressif ESP8266 SparkFun WiFi Shield"
520 */
521
522
523 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
524 /**
525 \page examples_esp32 Espressif ESP32 WROOM SparkFun Thing Plus WiFi Shield with NXP MIMXRT1064-EVK
526
527 Software Setup
528 --------------
529
530 Using <a href="http://www2.keil.com/mdk5/packinstaller" target="_blank">Pack Installer</a> install latest 
531 <b>NXP::MIMXRT1064_DFP</b> and <b>NXP::EVK-MIMXRT1064_BSP</b> packs and copy the example project
532 <b>CMSIS-Driver WiFi Espressif ESP32 Validation (EVK-MIMXRT1064)</b> to your machine.
533
534 -# Choose one of the available \ref example_targets and build the project.
535 -# Run the test on the target hardware using the on-board CMSIS-DAP Debugger.
536
537 This example is prepared for testing of the WiFi driver and it requires \ref wifi_requirements, as well as, propper 
538 configuration described in \ref wifi_config.
539
540 For details on WiFi driver tests please refer to \ref wifi_funcs.
541
542 \image html MIMXRT1064EVK.png  "NXP MIMXRT1064-EVK with"
543 \image html esp32_wroom_sparkfun.png  "Espressif ESP32 WROOM SparkFun Thing Plus WiFi Shield"
544 */
545
546
547 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
548 /**
549 \page examples_wizfi360 WIZnet WizFi360-EVB WiFi Shield with NXP MIMXRT1064-EVK
550
551 Software Setup
552 --------------
553
554 Using <a href="http://www2.keil.com/mdk5/packinstaller" target="_blank">Pack Installer</a> install latest 
555 <b>NXP::MIMXRT1064_DFP</b> and <b>NXP::EVK-MIMXRT1064_BSP</b> packs and copy the example project
556 <b>CMSIS-Driver WiFi WIZnet WizFi360 Validation (EVK-MIMXRT1064)</b> to your machine.
557
558 -# Choose one of the available \ref example_targets and build the project.
559 -# Run the test on the target hardware using the on-board CMSIS-DAP Debugger.
560
561 This example is prepared for testing of the WiFi driver and it requires \ref wifi_requirements, as well as, propper 
562 configuration described in \ref wifi_config.
563
564 For details on WiFi driver tests please refer to \ref wifi_funcs.
565
566 \image html MIMXRT1064EVK.png  "NXP MIMXRT1064-EVK with"
567 \image html wizfi360-evb.png  "WIZnet WizFi360-EVB WiFi Shield"
568 */
569
570
571 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
572 /**
573 \page examples_stm32f746g STMicroelectronics STM32F746G-Discovery
574
575 Software Setup
576 --------------
577
578 Using <a href="http://www2.keil.com/mdk5/packinstaller" target="_blank">Pack Installer</a> install latest 
579 <b>Keil::STM32F7xx_DFP</b> pack and copy the example project
580 <b>CMSIS-Driver Validation (STM32F746G-Discovery)</b> to your machine.
581
582 -# Choose one of the available \ref example_targets and build the project.
583 -# If you wish to test the loopback mode for some of the interfaces, refer to the next section for proper board
584    configuration.
585 -# Run the test on the target hardware using the on-board ST-Link/V2.
586
587
588 Hardware Setup
589 --------------
590
591 The following picture shows the necessary external loopback connections for the STM32F746G-Discovery evaluation board:
592  - SPI2: \b D12 (SPI2_MISO) and \b D11 (SPI2_MOSI)
593  - USART6: \b D1 (USART6_TX) and \b D0 (USART6_RX)
594  - For Ethernet use a loopback plug as described in \ref eth_loopback "Loopback Communication Setup". 
595
596 \image html stm32f746G-disco.png  "Connections for Loop Back Communication Tests on STM32F746G-Discovery"
597 */
598
599 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
600 /**
601 \page resource_requirements Resource Requirements
602
603 \section heap_req Heap Requirements
604 Heap is used by memory allocation functions. It is configured in the
605 <a class="el" href="http://www.keil.com/support/man/docs/gsac/gsac_startupcodecortex.htm" target="_blank">startup_device.s</a>
606 file located under the \b Device component class.
607
608 Additional memory is allocated for the validation framework and for the buffers that are used in the driver tests. 
609
610 For the validation framework add 1024 bytes of heap. Then, double the amount of the largest buffer size specified in the
611 \ref step4 "DV_Config.h" file and add this as well.
612
613 | Option (under section Heap Configuration)                         | Increase Value by
614 | :---------------------------------------------------------------- | :----------------------
615 | Heap Size (in Bytes)                                              | + (1024 + 2 x maximum buffer size)
616
617 \b Calculation \b Example
618
619 Let's assume that the default heap size in your device's startup file is \c 0x400 (which is 1024 bytes). Add 1024 for the
620 framework and for example another 2048 bytes if you are using the default \b Buffer \b Size of 512 bytes but you have set the
621 <b>Buffer size for baudrate tests</b> to 1024 bytes. This computes to a total heap of 3584 bytes which is equivalent to
622 \c 0xE00. Set this number in the startup file.
623
624
625 \section rtos2_req CMSIS-RTOS2 Requirements
626
627 The thread requirements need to be reflected in the CMSIS-RTOS2 configuration. Refer to the
628 <a class="el" href="http://www.keil.com/pack/doc/cmsis/RTOS2/html/index.html" target="_blank">CMSIS-RTOS2 Reference</a> for further details.
629
630 For <a class="el" href="http://www.keil.com/pack/doc/cmsis/RTOS2/html/rtx5_impl.html" target="_blank">CMSIS-RTOS2 RTX5</a>, thread
631 requirements are configured in the
632 <a class=el href="http://www.keil.com/pack/doc/cmsis/RTOS2/html/config_rtx5.html" target="_blank">RTX_Config.h</a> file located
633 under the \b CMSIS component class:
634
635 <table class="doxtable" summary="CMSIS-RTOS2 Configuration">
636     <tr>
637       <th align="left">Option (under section Thread Configuration)</th>
638       <th>Set Value to</th>
639     </tr>
640     <tr>
641       <td>Default Thread stack size [bytes]</td>
642       <td>2048</td>
643     </tr>
644     <tr>
645       <td>Global Dynamic Memory size [bytes] (Note 1)</td>
646       <td>8192</td>
647     </tr>
648 </table>
649
650 \note Note 1: This setting is only necessary for WiFi driver testing, for other tests default setting of 4096 is sufficient.
651
652 \section rtos_req CMSIS-RTOS Requirements
653
654 Instead of CMSIS-RTOS2 you can use CMSIS-RTOS. In this case the \c main thread is implicitly created.
655 For proper operation, you need to add a certain amount of thread stack size to the \c main thread.
656
657 The thread requirements need to be reflected in the CMSIS-RTOS configuration. Refer to the
658 <a class="el" href="http://www.keil.com/pack/doc/cmsis/RTOS/html/index.html" target="_blank">CMSIS-RTOS Reference</a> for further details.
659
660 For <a class="el" href="http://www.keil.com/pack/doc/cmsis/RTOS/html/rtxImplementation.html" target="_blank">CMSIS-RTOS RTX</a>, thread
661 requirements are configured in the
662 <a class=el href="http://www.keil.com/pack/doc/cmsis/RTOS/html/configure.html" target="_blank">RTX_Conf_CM.c</a> file located
663 under the \b CMSIS component class:
664
665 <table class="doxtable" summary="CMSIS-RTOS Configuration">
666     <tr>
667       <th align="left">Option (under section Thread Configuration)</th>
668       <th>Set Value to</th>
669     </tr>
670     <tr>
671       <td>Default Thread stack size [bytes]</td>
672       <td>2048</td>
673     </tr>
674     <tr>
675       <td>Main Thread stack size [bytes]</td>
676       <td>2048</td>
677     </tr>
678 </table>
679
680 \note Do not forget to set the correct <b>RTOS Kernel Timer input clock frequency [Hz]</b> otherwise the tests will not run
681 properly on the device.
682
683 \note Only WiFi tests create one additional thread for socket testing and usually WiFi drivers have a thread 
684 for processing messages.
685 */