# HG changeset patch # User nickg # Date 1234195069 0 # Node ID 1a58c9c41c502aa3ed8726cf0462fea021825f4f # Parent 4db2c98d89f84e8544f2c6652563ac5a6df1902b Apply patch to support SRAM initialization. Fix a few copyright notices. diff --git a/packages/hal/cortexm/arch/current/ChangeLog b/packages/hal/cortexm/arch/current/ChangeLog --- a/packages/hal/cortexm/arch/current/ChangeLog +++ b/packages/hal/cortexm/arch/current/ChangeLog @@ -1,3 +1,9 @@ +2009-02-07 Chris Holgate + + * src/hal_misc.c: + * src/cortexm.ld: + Modified SRAM linker section to support initialisation from ROM. + 2008-12-03 Nick Garnett * src/hal_misc.c (hal_deliver_interrupt): Fix instrumentation call diff --git a/packages/hal/cortexm/arch/current/src/cortexm.ld b/packages/hal/cortexm/arch/current/src/cortexm.ld --- a/packages/hal/cortexm/arch/current/src/cortexm.ld +++ b/packages/hal/cortexm/arch/current/src/cortexm.ld @@ -235,8 +235,12 @@ OUTPUT_FORMAT(elf32-bigarm) #define SECTION_sram(_region_, _vma_, _lma_) \ .sram _vma_ : _lma_ \ - { FORCE_OUTPUT; *(.sram*) } \ - > _region_ + { __sram_data_start = ABSOLUTE (.); \ + *(.sram*) . = ALIGN (4); } \ + > _region_ \ + __srom_data_start = LOADADDR (.sram); \ + __sram_data_end = .; PROVIDE (__sram_data_end = .); \ + PROVIDE (__srom_data_end = LOADADDR (.sram) + SIZEOF(.sram)); #define SECTION_data(_region_, _vma_, _lma_) \ .data _vma_ : _lma_ \ diff --git a/packages/hal/cortexm/arch/current/src/hal_misc.c b/packages/hal/cortexm/arch/current/src/hal_misc.c --- a/packages/hal/cortexm/arch/current/src/hal_misc.c +++ b/packages/hal/cortexm/arch/current/src/hal_misc.c @@ -97,6 +97,9 @@ typedef cyg_uint32 cyg_isr(cyg_uint32 ve __externC cyg_uint32 __ram_data_start; __externC cyg_uint32 __ram_data_end; __externC cyg_uint32 __rom_data_start; +__externC cyg_uint32 __sram_data_start; +__externC cyg_uint32 __sram_data_end; +__externC cyg_uint32 __srom_data_start; __externC cyg_uint32 __bss_start; __externC cyg_uint32 __bss_end; @@ -197,6 +200,15 @@ void hal_reset_vsr( void ) p++, q++ ) *p = *q; } + + // Relocate data from ROM to SRAM + { + register cyg_uint32 *p, *q; + for( p = &__sram_data_start, q = &__srom_data_start; + p < &__sram_data_end; + p++, q++ ) + *p = *q; + } #endif // Clear BSS diff --git a/packages/hal/cortexm/stm32/stm3210e_eval/current/ChangeLog b/packages/hal/cortexm/stm32/stm3210e_eval/current/ChangeLog --- a/packages/hal/cortexm/stm32/stm3210e_eval/current/ChangeLog +++ b/packages/hal/cortexm/stm32/stm3210e_eval/current/ChangeLog @@ -1,3 +1,16 @@ +2009-02-04 Nick Garnett + + * include/pkgconf/mlt_cortexm_stm3210e_eval_rom.ldi: + * include/pkgconf/mlt_cortexm_stm3210e_eval_ram.ldi: + * include/pkgconf/mlt_cortexm_stm3210e_eval_jtag.ldi: + * include/pkgconf/mlt_cortexm_stm3210e_eval_sram.ldi: + Add .sram section to linker scripts. + +2009-02-07 Chris Holgate + + * include/pkgconf/mlt_cortexm_stm3210e_eval_rom.ldi: + Modified SRAM section so that initialisation data is placed in ROM. + 2009-01-31 Bart Veer * cdl/hal_cortexm_stm32_stm3210e_eval.cdl: update compiler flags for gcc 4.x @@ -58,7 +71,7 @@ 2008-10-06 Nick Garnett