From 32e57dac2e61e79b029593eb4d34d727bcc10678 Mon Sep 17 00:00:00 2001 From: iperry Date: Thu, 17 Dec 2009 02:37:07 +0000 Subject: Initial commit of library code, moved from leaftest repo git-svn-id: https://leaflabs.googlecode.com/svn/trunk/library@69 749a229e-a60e-11de-b98f-4500b42dc123 --- .../linker/HiTOP/STM32F10x_offset.lsl | 132 +++++++++++++++++++++ .../linker/HiTOP/link_offset.lnk | 5 + 2 files changed, 137 insertions(+) create mode 100755 src/stm32lib/examples/NVIC/VectorTable_Relocation/linker/HiTOP/STM32F10x_offset.lsl create mode 100755 src/stm32lib/examples/NVIC/VectorTable_Relocation/linker/HiTOP/link_offset.lnk (limited to 'src/stm32lib/examples/NVIC/VectorTable_Relocation/linker/HiTOP') diff --git a/src/stm32lib/examples/NVIC/VectorTable_Relocation/linker/HiTOP/STM32F10x_offset.lsl b/src/stm32lib/examples/NVIC/VectorTable_Relocation/linker/HiTOP/STM32F10x_offset.lsl new file mode 100755 index 0000000..164cf72 --- /dev/null +++ b/src/stm32lib/examples/NVIC/VectorTable_Relocation/linker/HiTOP/STM32F10x_offset.lsl @@ -0,0 +1,132 @@ +// define rom size +#define __ROM_SIZE 512k +#define __ROM_ADDR 0x08002000 +// define ram size +#define __RAM_SIZE 64k +#define __RAM_ADDR 0x20000000 + +#define __NR_OF_VECTORS 42 +#define __VECTOR_TABLE_SIZE (__NR_OF_VECTORS * 4) +#define __VECTOR_TABLE_ROM_ADDR 0x08002000 +#define _Vectors 0x08002000 + +#define _ENTRYADDR (0x08002001 + __VECTOR_TABLE_SIZE + 80) /* xB0 */ + +#define _START max(_ENTRYADDR, 0x08002165) + +#define __RESET 0x08002004 + +#define __STACK 0x400 +#define __STACKADDR (__RAM_ADDR + __RAM_SIZE - __STACK) +#define __HEAP 2k + +#define __TABLE_RAM_SIZE 20 +#define __TABLE_RAM_ADDR (__STACKADDR - __STACK - __TABLE_RAM_SIZE) + + +#define __MEMORY + +#define __PROCESSOR_MODE 0x10 /* User mode */ +#define __IRQ_BIT 0x80 /* IRQ interrupts disabled */ +#define __FIQ_BIT 0x40 /* FIQ interrupts disabled */ +#define __APPLICATION_MODE (__PROCESSOR_MODE | __IRQ_BIT | __FIQ_BIT) + + +architecture ARM +{ + endianness + { + little; + big; + } + space linear + { + id = 1; + mau = 8; + align = 4; + map (size = 4G, dest = bus:local_bus); + + copytable + ( + align = 4, + copy_unit = 1, + dest = linear + ); + start_address + ( + // It is not strictly necessary to define a run_addr for _START + // because hardware starts execution at address 0x0 which should + // be the vector table with a jump to the relocatable _START, but + // an absolute address can prevent the branch to be out-of-range. + // Or _START may be the entry point at reset and the reset handler + // copies the vector table to address 0x0 after some ROM/RAM memory + // re-mapping. In that case _START should be at a fixed address + // in ROM, specifically the alias of address 0x0 before memory + // re-mapping. + run_addr = _START, + symbol = "_START" + ); + + stack "stack" + ( + + align = 4, + min_size = __STACK, + grows = high_to_low + ); + heap "heap" + ( + align = 4, + min_size=__HEAP + ); + section_layout + { + "_lc_ub_vector_table" = __VECTOR_TABLE_ROM_ADDR; + "_lc_ue_vector_table" = __VECTOR_TABLE_ROM_ADDR + __VECTOR_TABLE_SIZE + 8; +// "_lc_ub_table" = __TABLE_RAM_ADDR; +// "_lc_ue_table" = __TABLE_RAM_ADDR + __TABLE_RAM_SIZE; + "_lc_ub_vector_table_copy" := "_lc_ub_vector_table"; + "_lc_ue_vector_table_copy" := "_lc_ue_vector_table"; + + group ( ordered, run_addr=__VECTOR_TABLE_ROM_ADDR ) + { + select ".text.vector"; + + } + +#ifdef __HEAPADDR + group ( ordered, run_addr=__HEAPADDR ) + { + select "heap"; + } +#endif + group ( ordered, run_addr=__STACKADDR) + { + select "stack"; + } + } + } + bus local_bus + { + mau = 8; + width = 32; + } +} +/////////////////////////////////////////////////////////////////// + + +memory flash +{ + mau = 8; + type = rom; + size = __ROM_SIZE; + map ( size = __ROM_SIZE, dest_offset = __ROM_ADDR, dest = bus:ARM:local_bus ); +} + +memory sram +{ + mau = 8; + type = ram; + size = __RAM_SIZE; + map ( size = __RAM_SIZE, dest_offset = __RAM_ADDR, dest = bus:ARM:local_bus ); +} diff --git a/src/stm32lib/examples/NVIC/VectorTable_Relocation/linker/HiTOP/link_offset.lnk b/src/stm32lib/examples/NVIC/VectorTable_Relocation/linker/HiTOP/link_offset.lnk new file mode 100755 index 0000000..5bfdd21 --- /dev/null +++ b/src/stm32lib/examples/NVIC/VectorTable_Relocation/linker/HiTOP/link_offset.lnk @@ -0,0 +1,5 @@ +-d"./settings/STM32F10x_offset.lsl" +--optimize=0 +--map-file-format=2 +$(LinkObjects) +--output=.\Objects\$(Target) \ No newline at end of file -- cgit v1.2.3