| Electronic Components Datasheet Search |
|
AN3307 Datasheet(PDF) 7 Page - STMicroelectronics |
|
|
|||||||||||||||||||||||||||||
AN3307 Datasheet(HTML) 7 Page - STMicroelectronics |
|
7 / 37 page ![]() AN3307 Main differences between STM32F packages and their possible modifications Doc ID 18186 Rev 4 7/37 To prevent this, it is suggested to initialize the concerned RAM space before calling startup self-test procedure. A simple loop inserted into startup assembly code can solve the problem and initialize parity system at dedicated RAM area: Note: Real content of the registers copied by STMIA instruction doesn’t care because purpose of this loop is to initialize the parity system. The content of the RAM will be initialized later by the compiler standard startup procedure anyway. RAM_block_begin and RAM_block_size constants' setting should correspond with number of data copied by STMIA instruction to prevent any undefined memory access. If the initial software March test is performed over a RAM area dedicated for stack, it destroys the stack content where the return address of the test routine is stored. That is why the return address must be saved before the test starts and restored back to the stack after the test finishes. The return address is kept at dedicated register while the test is running. The store and restore handling depends on compiler implementation and it can differ for different level of optimization settings. In case of any such change user has to check, how the return address is saved into stack and perform adequate store and restore of its value correctly back before return from test is performed and the address is popped out (follow intrinsic operations at begin and end of STL_FullRamMarchC() routine at stm32fxxx_STLFullRamMc.c file). FLASH tests While IAR compiler can be set to include 32-bit CRC result compatible with STMicroelectronics hardware directly into code (see IAR documentation) CRC calculation is not fully supported by KEIL compiler for STM32 microcontrollers yet. That is why the result provided by STM32's internal CRC generator cannot be used directly for such invariable ; Program starts here after reset ;------------------------------------------------------------------------ Reset_Handler ; Parity system initialization has to be performed here prior to the ; startup self-test procedure ;------------------------------------------------------------------------ ; r0 is used as a pointer to RAM, ; r1 keeps end address of the area ;------------------------------------------------------------------------ ;At every step of the loop, the 32-byte block (r2-r9) is copied to RAM ; starting from address kept at r0, r0 is then increased by 32 ; the loop body is performed while r0<r1 LDR R0, =RAM_block_begin ADD R1, R0, #RAM_block_size RAM_init_loop STMIA R0!, {R2-R9} CMP R0, R1 BLT RAM_init_loop ; RAM is initialized now, program can continue by startup self-test LDR R0, =STL_StartUp BLX R0 |
|
Link URL |
| Does ALLDATASHEET help your business so far? [ DONATE ] |
About Alldatasheet | Advertisement | Contact us | Privacy Policy | Link to Datasheet | Link Exchange | Manufacturer List All Rights Reserved©Alldatasheet.com |
| Russian : Alldatasheetru.com | Korean : Alldatasheet.co.kr | Spanish : Alldatasheet.es | French : Alldatasheet.fr | Italian : Alldatasheetit.com Portuguese : Alldatasheetpt.com | Polish : Alldatasheet.pl | Vietnamese : Alldatasheet.vn Indian : Alldatasheet.in | Mexican : Alldatasheet.com.mx | British : Alldatasheet.co.uk | New Zealand : Alldatasheet.co.nz |
|
Family Site : ic2ic.com |
icmetro.com |