mirror of https://github.com/ARMmbed/mbed-os.git
Add RTL8195AM support for mbed client with IAR
Move ticker related code to SRAM due to time drift sensitivepull/4665/head
parent
e16c2d2833
commit
1e398cfc60
Binary file not shown.
|
@ -70,15 +70,16 @@ SECTIONS
|
||||||
*rtl8195a_crypto.o (.text* .rodata*)
|
*rtl8195a_crypto.o (.text* .rodata*)
|
||||||
*mbedtls*.o (.text* .rodata*)
|
*mbedtls*.o (.text* .rodata*)
|
||||||
*libc.a: (.text* .rodata*)
|
*libc.a: (.text* .rodata*)
|
||||||
*Ticker.o (.text*)
|
*Ticker.o (.text*)
|
||||||
*Timeout.o (.text*)
|
*Timeout.o (.text*)
|
||||||
*TimerEvent.o (.text*)
|
/* *rtx_timer.o (.text*)*/
|
||||||
*mbed_ticker_api.o (.text*)
|
*TimerEvent.o (.text*)
|
||||||
*mbed_critical.o (.text*)
|
*mbed_ticker_api.o (.text*)
|
||||||
|
*mbed_critical.o (.text*)
|
||||||
*us_ticker.o (.text*)
|
*us_ticker.o (.text*)
|
||||||
*lib_peripheral_mbed_gcc.a: (.text*)
|
|
||||||
|
*lib_peripheral_mbed_gcc.a: (.text*)
|
||||||
|
|
||||||
} > SRAM1
|
} > SRAM1
|
||||||
|
|
||||||
.text.sram2 :
|
.text.sram2 :
|
||||||
|
@ -203,7 +204,7 @@ SECTIONS
|
||||||
__end__ = .;
|
__end__ = .;
|
||||||
end = __end__;
|
end = __end__;
|
||||||
*(.heap*)
|
*(.heap*)
|
||||||
. = ORIGIN(SRAM1) + LENGTH(SRAM1) - StackSize;
|
. = ORIGIN(SRAM1) + LENGTH(SRAM1) - StackSize;
|
||||||
__HeapLimit = .;
|
__HeapLimit = .;
|
||||||
} > SRAM1
|
} > SRAM1
|
||||||
|
|
||||||
|
@ -214,7 +215,7 @@ SECTIONS
|
||||||
{
|
{
|
||||||
__StackLimit = .;
|
__StackLimit = .;
|
||||||
*(.stack)
|
*(.stack)
|
||||||
. += StackSize - (. - __StackLimit);
|
. += StackSize - (. - __StackLimit);
|
||||||
} > SRAM1
|
} > SRAM1
|
||||||
|
|
||||||
/* Set stack top to end of RAM, and stack limit move down by
|
/* Set stack top to end of RAM, and stack limit move down by
|
||||||
|
|
Binary file not shown.
|
@ -16,7 +16,7 @@ define symbol __ICFEDIT_region_ROM_USED_RAM_end__ = 0x10005FFF;
|
||||||
//define symbol __ICFEDIT_region_RECY_RAM_start__ = 0x10002090;
|
//define symbol __ICFEDIT_region_RECY_RAM_start__ = 0x10002090;
|
||||||
//define symbol __ICFEDIT_region_RECY_RAM_end__ = 0x100037FF;
|
//define symbol __ICFEDIT_region_RECY_RAM_end__ = 0x100037FF;
|
||||||
if( !isdefinedsymbol( __ICFEDIT_region_BD_RAM_start__ ) ) {
|
if( !isdefinedsymbol( __ICFEDIT_region_BD_RAM_start__ ) ) {
|
||||||
define symbol __ICFEDIT_region_BD_RAM_start__ = 0x10006000;
|
define symbol __ICFEDIT_region_BD_RAM_start__ = 0x10007000;
|
||||||
}
|
}
|
||||||
if( !isdefinedsymbol( __ICFEDIT_region_BD_RAM_end__ ) ) {
|
if( !isdefinedsymbol( __ICFEDIT_region_BD_RAM_end__ ) ) {
|
||||||
define symbol __ICFEDIT_region_BD_RAM_end__ = 0x1006FFFF;
|
define symbol __ICFEDIT_region_BD_RAM_end__ = 0x1006FFFF;
|
||||||
|
@ -31,12 +31,12 @@ define symbol __ICFEDIT_size_heap__ = 0x19000;
|
||||||
|
|
||||||
|
|
||||||
define memory mem with size = 4G;
|
define memory mem with size = 4G;
|
||||||
define region ROM_region = mem:[from __ICFEDIT_region_ROM_start__ to __ICFEDIT_region_ROM_end__];
|
define region ROM_region = mem:[from __ICFEDIT_region_ROM_start__ to __ICFEDIT_region_ROM_end__];
|
||||||
define region TCM_region = mem:[from __ICFEDIT_region_TCM_start__ to __ICFEDIT_region_TCM_end__];
|
define region TCM_region = mem:[from __ICFEDIT_region_TCM_start__ to __ICFEDIT_region_TCM_end__];
|
||||||
define region ROM_USED_RAM_region = mem:[from __ICFEDIT_region_ROM_USED_RAM_start__ to __ICFEDIT_region_ROM_USED_RAM_end__];
|
define region ROM_USED_RAM_region = mem:[from __ICFEDIT_region_ROM_USED_RAM_start__ to __ICFEDIT_region_ROM_USED_RAM_end__];
|
||||||
//define region RECY_RAM_region = mem:[from __ICFEDIT_region_RECY_RAM_start__ to __ICFEDIT_region_RECY_RAM_end__];
|
//define region RECY_RAM_region = mem:[from __ICFEDIT_region_RECY_RAM_start__ to __ICFEDIT_region_RECY_RAM_end__];
|
||||||
define region BD_RAM_region = mem:[from __ICFEDIT_region_BD_RAM_start__ to __ICFEDIT_region_BD_RAM_end__];
|
define region BD_RAM_region = mem:[from __ICFEDIT_region_BD_RAM_start__ to __ICFEDIT_region_BD_RAM_end__];
|
||||||
define region SDRAM_RAM_region = mem:[from __ICFEDIT_region_SDRAM_RAM_start__ to __ICFEDIT_region_SDRAM_RAM_end__];
|
define region SDRAM_RAM_region = mem:[from __ICFEDIT_region_SDRAM_RAM_start__ to __ICFEDIT_region_SDRAM_RAM_end__];
|
||||||
|
|
||||||
define block CSTACK with alignment = 8, size = __ICFEDIT_size_cstack__ { };
|
define block CSTACK with alignment = 8, size = __ICFEDIT_size_cstack__ { };
|
||||||
define block HEAP with alignment = 8, size = __ICFEDIT_size_heap__ { };
|
define block HEAP with alignment = 8, size = __ICFEDIT_size_heap__ { };
|
||||||
|
@ -95,11 +95,11 @@ define block .ram_image1.data with fixed order{ section .image1.validate.rodata*
|
||||||
section .infra.ram.data*,
|
section .infra.ram.data*,
|
||||||
section .timer.ram.data*,
|
section .timer.ram.data*,
|
||||||
section .cutb.ram.data*,
|
section .cutb.ram.data*,
|
||||||
section .hal.ram.data* object rom.o, // for standard libaray __impure_data_ptr
|
section .hal.ram.data* object rom.o, // for standard libaray __impure_data_ptr
|
||||||
section .cutc.ram.data*,
|
section .cutc.ram.data*,
|
||||||
section .hal.ram.data*
|
section .hal.ram.data*
|
||||||
};
|
};
|
||||||
define block .ram_image1.bss with fixed order{ //section .hal.flash.data*,
|
define block .ram_image1.bss with fixed order{ //section .hal.flash.data*,
|
||||||
section .hal.sdrc.data*
|
section .hal.sdrc.data*
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -113,13 +113,14 @@ define block IMAGE1 with fixed order { section LOADER };
|
||||||
define block IMAGE1_DBG with fixed order { block .ram.start.table, block .ram_image1.data, block .ram_image1.bss, block .ram_image1.text };
|
define block IMAGE1_DBG with fixed order { block .ram.start.table, block .ram_image1.data, block .ram_image1.bss, block .ram_image1.text };
|
||||||
|
|
||||||
place at start of ROM_USED_RAM_region {
|
place at start of ROM_USED_RAM_region {
|
||||||
block .vector_table,
|
block .vector_table,
|
||||||
block .user_vector_table,
|
block .user_vector_table,
|
||||||
block .user_data_table,
|
block .user_data_table,
|
||||||
block .rom.bss,
|
block .rom.bss,
|
||||||
block IMAGE1
|
block IMAGE1
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
keep { section .image2.ram.data* };
|
keep { section .image2.ram.data* };
|
||||||
define block .image2.start.table1 with fixed order{ section .image2.ram.data* };
|
define block .image2.start.table1 with fixed order{ section .image2.ram.data* };
|
||||||
|
|
||||||
|
@ -133,98 +134,197 @@ define block CPP_INIT with alignment = 8, fixed order {
|
||||||
block SHT$$INIT_ARRAY
|
block SHT$$INIT_ARRAY
|
||||||
};
|
};
|
||||||
define block FPB_REMAP with alignment = 256,fixed order {
|
define block FPB_REMAP with alignment = 256,fixed order {
|
||||||
section .fpb.remap*
|
section .fpb.remap*
|
||||||
};
|
};
|
||||||
define block .ram_image2.text with fixed order{ section .infra.ram.start*,
|
|
||||||
section .rodata*,
|
define block MBEDTLS_TEXT with alignment = 8, fixed order{
|
||||||
block CPP_INIT,
|
section .text* object aes.o,
|
||||||
|
section .text* object aesni.o,
|
||||||
|
section .text* object arc4.o,
|
||||||
|
section .text* object asn1parse.o,
|
||||||
|
section .text* object asn1write.o,
|
||||||
|
section .text* object base64.o,
|
||||||
|
section .text* object bignum.o,
|
||||||
|
section .text* object blowfish.o,
|
||||||
|
section .text* object camellia.o,
|
||||||
|
section .text* object ccm.o,
|
||||||
|
section .text* object certs.o,
|
||||||
|
section .text* object cipher.o,
|
||||||
|
section .text* object cipher_wrap.o,
|
||||||
|
section .text* object cmac.o,
|
||||||
|
section .text* object ctr_drbg.o,
|
||||||
|
section .text* object debug.o,
|
||||||
|
section .text* object des.o,
|
||||||
|
section .text* object dhm.o,
|
||||||
|
section .text* object ecdh.o,
|
||||||
|
section .text* object ecdsa.o,
|
||||||
|
section .text* object ecjpake.o,
|
||||||
|
section .text* object ecp.o,
|
||||||
|
section .text* object ecp_curves.o,
|
||||||
|
section .text* object entropy.o,
|
||||||
|
section .text* object entropy_poll.o,
|
||||||
|
section .text* object error.o,
|
||||||
|
section .text* object gcm.o,
|
||||||
|
section .text* object havege.o,
|
||||||
|
section .text* object hmac_drbg.o,
|
||||||
|
section .text* object md.o,
|
||||||
|
section .text* object md2.o,
|
||||||
|
section .text* object md4.o,
|
||||||
|
section .text* object md5.o,
|
||||||
|
section .text* object md_wrap.o,
|
||||||
|
section .text* object memory_buffer_alloc.o,
|
||||||
|
section .text* object net_sockets.o,
|
||||||
|
section .text* object oid.o,
|
||||||
|
section .text* object padlock.o,
|
||||||
|
section .text* object pem.o,
|
||||||
|
section .text* object pk.o,
|
||||||
|
section .text* object pk_wrap.o,
|
||||||
|
section .text* object pkcs11.o,
|
||||||
|
section .text* object pkcs12.o,
|
||||||
|
section .text* object pkcs5.o,
|
||||||
|
section .text* object pkparse.o,
|
||||||
|
section .text* object pkwrite.o,
|
||||||
|
section .text* object platform.o,
|
||||||
|
section .text* object ripemd160.o,
|
||||||
|
section .text* object rsa.o,
|
||||||
|
section .text* object sha1.o,
|
||||||
|
section .text* object sha256.o,
|
||||||
|
section .text* object sha512.o,
|
||||||
|
section .text* object ssl_cache.o,
|
||||||
|
section .text* object ssl_ciphersuites.o,
|
||||||
|
section .text* object ssl_cli.o,
|
||||||
|
section .text* object ssl_cookie.o,
|
||||||
|
section .text* object ssl_srv.o,
|
||||||
|
section .text* object ssl_ticket.o,
|
||||||
|
section .text* object ssl_tls.o,
|
||||||
|
section .text* object threading.o,
|
||||||
|
section .text* object timing.o,
|
||||||
|
section .text* object version.o,
|
||||||
|
section .text* object version_features.o,
|
||||||
|
section .text* object x509.o,
|
||||||
|
section .text* object x509_create.o,
|
||||||
|
section .text* object x509_crl.o,
|
||||||
|
section .text* object x509_crt.o,
|
||||||
|
section .text* object x509_csr.o,
|
||||||
|
section .text* object x509write_crt.o,
|
||||||
|
section .text* object x509write_csr.o,
|
||||||
|
section .text* object xtea.o,
|
||||||
|
};
|
||||||
|
|
||||||
|
define block .sram1.text with fixed order {
|
||||||
|
block MBEDTLS_TEXT,
|
||||||
|
section .text* object Ticker.o,
|
||||||
|
section .text* object Timeout.o,
|
||||||
|
section .text* object TimerEvent.o,
|
||||||
|
section .text* object mbed_ticker_api.o,
|
||||||
|
section .text* object mbed_critical.o,
|
||||||
|
section .text* object us_ticker.o,
|
||||||
|
|
||||||
|
section .text* object lib_peripheral_mbed_iar.a,
|
||||||
|
};
|
||||||
|
|
||||||
|
define block .sram2.text with fixed order {
|
||||||
|
block .image2.start.table1,
|
||||||
|
block .image2.start.table2,
|
||||||
section .mon.ram.text*,
|
section .mon.ram.text*,
|
||||||
section .hal.flash.text*,
|
section .hal.flash.text*,
|
||||||
|
section .hal.sdrc.text*,
|
||||||
section .hal.gpio.text*,
|
section .hal.gpio.text*,
|
||||||
section .text* object main.o,
|
section .text*,
|
||||||
section .wlan.text,
|
section .infra.ram.start*,
|
||||||
section .wps.text,
|
section .rodata*,
|
||||||
|
};
|
||||||
|
|
||||||
|
define block .sram2.data with fixed order {
|
||||||
|
//section .infra.ram.start*,
|
||||||
|
//section .rodata*,
|
||||||
|
//section .wlan.text,
|
||||||
|
//section .wps.text,
|
||||||
section CODE,
|
section CODE,
|
||||||
section .otg.rom.text,
|
//section .otg.rom.text,
|
||||||
section Veneer object startup.o,
|
section Veneer object startup.o,
|
||||||
section __DLIB_PERTHREAD,
|
section __DLIB_PERTHREAD,
|
||||||
section .iar.dynexit*,
|
section .iar.dynexit*,
|
||||||
|
block CPP_INIT,
|
||||||
//section .mdns.text
|
//section .mdns.text
|
||||||
};
|
};
|
||||||
|
define block .ram.data with fixed order {
|
||||||
|
readwrite, readonly,
|
||||||
|
section .data*,
|
||||||
|
section .wlan.data,
|
||||||
|
section .wps.data,
|
||||||
|
section DATA,
|
||||||
|
section .ram.otg.data.a,
|
||||||
|
section .iar.init_table,
|
||||||
|
//section .mdns.data,
|
||||||
|
//section .data* object lib_peripheral_mbed_iar.a,
|
||||||
|
};
|
||||||
|
|
||||||
define block .ram.data with fixed order{ readwrite, readonly,
|
define block .ram.bss with fixed order {
|
||||||
section .data*,
|
section .bss*,
|
||||||
section .wlan.data,
|
section COMMON,
|
||||||
section .wps.data,
|
section .bdsram.data*,
|
||||||
section DATA,
|
};
|
||||||
section .ram.otg.data.a,
|
|
||||||
section .iar.init_table,
|
|
||||||
//section .mdns.data
|
|
||||||
};
|
|
||||||
|
|
||||||
define block IMAGE2 with fixed order { block .image2.start.table1, block .image2.start.table2, block .ram_image2.text, block .ram.data };
|
define block IMAGE2 with fixed order {
|
||||||
|
block .sram1.text,
|
||||||
|
block .ram.data,
|
||||||
|
block .ram.bss
|
||||||
|
};
|
||||||
|
|
||||||
define block .ram.bss with fixed order{ section .bss*,
|
|
||||||
section .ssl_ram_map,
|
|
||||||
section .hal.flash.data*,
|
|
||||||
section .hal.gpio.data*,
|
|
||||||
section COMMON,
|
|
||||||
section .bdsram.data*,
|
|
||||||
section .bss* object heap_4.o
|
|
||||||
};
|
|
||||||
define block .bf_data with fixed order{ section .bfsram.data* };
|
define block .bf_data with fixed order{ section .bfsram.data* };
|
||||||
define block .heap with fixed order{ section .heap* };
|
define block .heap with fixed order{ section .heap* };
|
||||||
define block .stack_dummy with fixed order { section .stack };
|
define block .stack_dummy with fixed order { section .stack };
|
||||||
place at start of BD_RAM_region {
|
place at start of BD_RAM_region {
|
||||||
block IMAGE2,
|
block IMAGE2,
|
||||||
//block IMAGE1_DBG,
|
//block IMAGE1_DBG,
|
||||||
block .ram.bss,
|
//block .ram.bss,
|
||||||
//block .bf_data,
|
//block .bf_data,
|
||||||
};
|
};
|
||||||
|
|
||||||
//place at address mem:0x10052b00 { readwrite,
|
|
||||||
place at end of BD_RAM_region {
|
place at end of BD_RAM_region {
|
||||||
block .bf_data,
|
block .bf_data,
|
||||||
block HEAP,
|
block HEAP,
|
||||||
};
|
};
|
||||||
|
|
||||||
define block SDRAM with fixed order{
|
define block SDRAM with fixed order {
|
||||||
section .text*,
|
block .sram2.text,
|
||||||
section .sdram.text*,
|
block .sram2.data,
|
||||||
section .sdram.data*,
|
section .sdram.text*,
|
||||||
section .mdns.text*,
|
section .sdram.data*,
|
||||||
section .mdns.data*,
|
section .mdns.text*,
|
||||||
block FPB_REMAP
|
section .mdns.data*,
|
||||||
};
|
block FPB_REMAP
|
||||||
|
};
|
||||||
define block SDRBSS with fixed order{
|
define block SDRBSS with fixed order{
|
||||||
section .sdram.bss*
|
section .sdram.bss*
|
||||||
};
|
};
|
||||||
|
|
||||||
place at start of SDRAM_RAM_region {
|
place at start of SDRAM_RAM_region {
|
||||||
block SDRAM,
|
block SDRAM,
|
||||||
block SDRBSS,
|
block SDRBSS,
|
||||||
//block IMAGE1_DBG
|
//block IMAGE1_DBG
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/* TCM placement */
|
/* TCM placement */
|
||||||
define overlay TCM_overlay {
|
define overlay TCM_overlay {
|
||||||
section .tcm.heap,
|
section .tcm.heap,
|
||||||
section .bss object lwip_mem.o,
|
section .bss object lwip_mem.o,
|
||||||
section .bss object lwip_memp.o,
|
section .bss object lwip_memp.o,
|
||||||
block .heap,
|
block .heap,
|
||||||
block .stack_dummy
|
block .stack_dummy
|
||||||
};
|
};
|
||||||
/* dummy code placement */
|
/* dummy code placement */
|
||||||
define overlay TCM_overlay { block IMAGE1_DBG };
|
define overlay TCM_overlay { block IMAGE1_DBG };
|
||||||
place at start of TCM_region { overlay TCM_overlay };
|
place at start of TCM_region { overlay TCM_overlay };
|
||||||
place at end of TCM_region { block CSTACK};
|
place at end of TCM_region { block CSTACK};
|
||||||
|
|
||||||
define exported symbol __rom_bss_start__ = 0x10000300; // use in rom
|
define exported symbol __rom_bss_start__ = 0x10000300; // use in rom
|
||||||
define exported symbol __rom_bss_end__ = 0x10000bc8; // use in rom
|
define exported symbol __rom_bss_end__ = 0x10000bc8; // use in rom
|
||||||
define exported symbol __ram_start_table_start__= 0x10000bc8; // use in rom
|
define exported symbol __ram_start_table_start__= 0x10000bc8; // use in rom
|
||||||
define exported symbol __image1_validate_code__= 0x10000bdc; // needed by ram code
|
define exported symbol __image1_validate_code__= 0x10000bdc; // needed by ram code
|
||||||
define exported symbol _rtl_impure_ptr = 0x10001c60; // for standard library
|
define exported symbol _rtl_impure_ptr = 0x10001c60; // for standard library
|
||||||
|
|
||||||
define exported symbol __sdio_rom_bss_start__ = 0x1006D000;
|
define exported symbol __sdio_rom_bss_start__ = 0x1006D000;
|
||||||
define exported symbol __sdio_rom_bss_end__ = 0x1006fa10;
|
define exported symbol __sdio_rom_bss_end__ = 0x1006fa10;
|
||||||
|
|
|
@ -214,6 +214,8 @@ def parse_load_segment_iar(image_elf):
|
||||||
offset = int(segment[2][2:], 16)
|
offset = int(segment[2][2:], 16)
|
||||||
addr = int(segment[3][2:], 16)
|
addr = int(segment[3][2:], 16)
|
||||||
size = int(segment[5][2:], 16)
|
size = int(segment[5][2:], 16)
|
||||||
|
if addr < 0x10007000:
|
||||||
|
continue
|
||||||
if addr != 0 and size != 0:
|
if addr != 0 and size != 0:
|
||||||
segment_list.append((offset, addr, size))
|
segment_list.append((offset, addr, size))
|
||||||
return segment_list
|
return segment_list
|
||||||
|
|
Loading…
Reference in New Issue