組み込みシステム、特に北欧皮質 m0 で malloc を使用しようとしています。gcc 4.6.3 を使用しています。uVision でコンパイルすると呼び出しが機能しますが、gcc でコンパイルすると機能しません。私はロープの終わりにいます。メイン ファイルを次のように絞り込みました (シリアル経由でのみボードとやり取りできるため、uart コマンドを使用します)。ライブラリのインクルードの問題ではないと思いますが、.map ファイルもインクルードしました。&malloc をログに記録して地図を見ると、アドレスが 1 つずれているように見える奇妙なことに気付きました。それは正常ですか?malloc がマップのたとえば 0x200 にあり、&malloc をログに記録すると、0x201 が得られます。どんな助けでも大歓迎です。
編集: コードは両方のコンパイラでコンパイルされます。uVision でコンパイルすると malloc 呼び出しは正常に完了しますが、gcc でコンパイルすると malloc の呼び出しが返されません。
#include <stdlib.h>
#include "boards.h"
#include "simple_uart.h"
void logSt(const char *str){
simple_uart_putstring((const uint8_t *) str);
simple_uart_putstring((const uint8_t *) "\r\n");
}
void logCh(const char ch){
simple_uart_put(ch);
}
int main(void)
{
simple_uart_config(
RTS_PIN_NUMBER,
TX_PIN_NUMBER,
CTS_PIN_NUMBER,
RX_PIN_NUMBER, HWFC);
logSt(" ----- System Started -------");
logSt("before malloc");
void *p = malloc(sizeof(int));
/* NEVER GETS HERE */
logSt("after malloc");
int *i = (int *)p;
logSt("after malloc");
*i = 3;
logCh((char)(*i));
return(0);
}
.map ファイル (ライブラリ パスは短縮されており、デバッグ セクションを削除したので、すべてを収めることができました。ここに ... があります。)
Archive member included because of file (symbol)
lib/armv6-m/libc.a(lib_a-malloc.o)
build/hw-debug/main.o (malloc)
lib/armv6-m/libc.a(lib_a-mallocr.o)
lib/armv6-m/libc.a(lib_a-malloc.o) (_malloc_r)
lib/armv6-m/libc.a(lib_a-mlock.o)
lib/armv6-m/libc.a(lib_a-mallocr.o) (__malloc_lock)
lib/armv6-m/libc.a(lib_a-sbrkr.o)
lib/armv6-m/libc.a(lib_a-mallocr.o) (_sbrk_r)
lib/armv6-m/libc.a(lib_a-freer.o)
lib/armv6-m/libc.a(lib_a-malloc.o) (_free_r)
lib/armv6-m/libc.a(lib_a-impure.o)
lib/armv6-m/libc.a(lib_a-malloc.o) (_impure_ptr)
lib/armv6-m/libc.a(lib_a-reent.o)
lib/armv6-m/libc.a(lib_a-sbrkr.o) (errno)
lib/armv6-m/libcs3.a(start_c.o)
(__cs3_start_c)
lib/armv6-m/libcs3unhosted.a(unhosted-sbrk.o)
lib/armv6-m/libc.a(lib_a-sbrkr.o) (_sbrk)
lib/armv6-m/libcs3unhosted.a(unhosted-start.o)
(_start)
lib/armv6-m/libc.a(lib_a-errno.o)
lib/armv6-m/libcs3unhosted.a(unhosted-sbrk.o) (__errno)
lib/armv6-m/libc.a(lib_a-init.o)
lib/armv6-m/libcs3.a(start_c.o) (__libc_init_array)
lib/armv6-m/libcs3.a(heap.o)
lib/armv6-m/libcs3unhosted.a(unhosted-sbrk.o) (__cs3_heap_limit)
Allocating common symbols
Common symbol size file
errno 0x4 lib/armv6-m/libc.a(lib_a-reent.o)
Memory Configuration
Name Origin Length Attributes
rom 0x0000000000014000 0x000000000002c000 xr
ram 0x0000000020002000 0x0000000000002000 xrw
*default* 0x0000000000000000 0xffffffffffffffff
Linker script and memory map
LOAD lib/gcc/arm-none-eabi/4.6.3/armv6-m/crti.o
LOAD lib/gcc/arm-none-eabi/4.6.3/armv6-m/crtbegin.o
LOAD build/hw-debug/system_nrf51.o
LOAD build/hw-debug/main.o
LOAD build/hw-debug/simple_uart.o
LOAD build/hw-debug/gcc_startup_nrf51.o
START GROUP
LOAD lib/gcc/arm-none-eabi/4.6.3/armv6-m/libgcc.a
LOAD lib/armv6-m/libc.a
LOAD lib/armv6-m/libcs3.a
LOAD lib/armv6-m/libcs3unhosted.a
LOAD lib/armv6-m/libm.a
LOAD lib/armv6-m/libstdc++.a
END GROUP
START GROUP
LOAD lib/gcc/arm-none-eabi/4.6.3/armv6-m/libgcc.a
LOAD lib/armv6-m/libc.a
END GROUP
LOAD lib/gcc/arm-none-eabi/4.6.3/armv6-m/crtend.o
LOAD lib/gcc/arm-none-eabi/4.6.3/armv6-m/crtn.o
START GROUP
LOAD lib/gcc/arm-none-eabi/4.6.3/armv6-m/libgcc.a
LOAD lib/armv6-m/libc.a
LOAD lib/armv6-m/libcs3.a
LOAD lib/armv6-m/libcs3unhosted.a
END GROUP
0x00000000200028b0 PROVIDE (__cs3_heap_start, _end)
0x0000000020004000 PROVIDE (__cs3_heap_end, (__cs3_region_start_ram + __cs3_region_size_ram))
0x0000000000000001 PROVIDE (__cs3_region_num, ((__cs3_regions_end - __cs3_regions) / 0x14))
0x0000000020004000 PROVIDE (__cs3_stack, (__cs3_region_start_ram + __cs3_region_size_ram))
.text 0x0000000000014000 0xe84
CREATE_OBJECT_SYMBOLS
0x0000000000014000 __cs3_region_start_rom = .
*(.cs3.region-head.rom)
0x0000000000000001 ASSERT ((. == __cs3_region_start_rom), .cs3.region-head.rom not permitted)
0x0000000000014000 __cs3_interrupt_vector = __cs3_interrupt_vector_cortex_m
*(.cs3.interrupt_vector)
.cs3.interrupt_vector
0x0000000000014000 0xc0 build/hw-debug/gcc_startup_nrf51.o
0x0000000000014000 __cs3_interrupt_vector_cortex_m
0x0000000000000001 ASSERT ((. != __cs3_interrupt_vector_cortex_m), No interrupt vector)
0x00000000000140c0 PROVIDE (__cs3_reset, __cs3_reset_cortex_m)
*(.cs3.reset)
.cs3.reset 0x00000000000140c0 0x20 build/hw-debug/gcc_startup_nrf51.o
0x00000000000140c0 __cs3_reset_cortex_m
0x0000000000014128 PROVIDE (__cs3_start_asm, _start)
*(.text.cs3.init)
.text.cs3.init
0x00000000000140e0 0x48 lib/armv6-m/libcs3.a(start_c.o)
0x00000000000140e0 __cs3_start_c
.text.cs3.init
0x0000000000014128 0x10 lib/armv6-m/libcs3unhosted.a(unhosted-start.o)
0x0000000000014128 _start
*(.text .text.* .gnu.linkonce.t.*)
.text 0x0000000000014138 0x0 lib/gcc/arm-none-eabi/4.6.3/armv6-m/crti.o
.text 0x0000000000014138 0x60 lib/gcc/arm-none-eabi/4.6.3/armv6-m/crtbegin.o
.text 0x0000000000014198 0x0 build/hw-debug/system_nrf51.o
.text.SystemInit
0x0000000000014198 0x34 build/hw-debug/system_nrf51.o
0x0000000000014198 SystemInit
.text.SystemCoreClockUpdate
0x00000000000141cc 0x10 build/hw-debug/system_nrf51.o
0x00000000000141cc SystemCoreClockUpdate
.text 0x00000000000141dc 0x0 build/hw-debug/main.o
.text.logSt 0x00000000000141dc 0x20 build/hw-debug/main.o
0x00000000000141dc logSt
.text.logCh 0x00000000000141fc 0x20 build/hw-debug/main.o
0x00000000000141fc logCh
.text.main 0x000000000001421c 0x68 build/hw-debug/main.o
0x000000000001421c main
.text 0x0000000000014284 0x0 build/hw-debug/simple_uart.o
.text.nrf_delay_us
0x0000000000014284 0x3c build/hw-debug/simple_uart.o
.text.nrf_gpio_cfg_output
0x00000000000142c0 0x18 build/hw-debug/simple_uart.o
.text.nrf_gpio_cfg_input
0x00000000000142d8 0x2c build/hw-debug/simple_uart.o
.text.simple_uart_get
0x0000000000014304 0x2c build/hw-debug/simple_uart.o
0x0000000000014304 simple_uart_get
.text.simple_uart_get_with_timeout
0x0000000000014330 0x78 build/hw-debug/simple_uart.o
0x0000000000014330 simple_uart_get_with_timeout
.text.simple_uart_put
0x00000000000143a8 0x40 build/hw-debug/simple_uart.o
0x00000000000143a8 simple_uart_put
.text.simple_uart_putstring
0x00000000000143e8 0x50 build/hw-debug/simple_uart.o
0x00000000000143e8 simple_uart_putstring
.text.simple_uart_config
0x0000000000014438 0xdc build/hw-debug/simple_uart.o
0x0000000000014438 simple_uart_config
.text 0x0000000000014514 0xc build/hw-debug/gcc_startup_nrf51.o
0x0000000000014514 NMI_Handler
0x0000000000014516 HardFault_Handler
0x0000000000014518 SVC_Handler
0x000000000001451a PendSV_Handler
0x000000000001451c SysTick_Handler
0x000000000001451e RADIO_IRQHandler
0x000000000001451e SWI4_IRQHandler
0x000000000001451e TEMP_IRQHandler
0x000000000001451e QDEC_IRQHandler
0x000000000001451e UART0_IRQHandler
0x000000000001451e SWI5_IRQHandler
0x000000000001451e WUCOMP_COMP_IRQHandler
0x000000000001451e TIMER0_IRQHandler
0x000000000001451e SWI0_IRQHandler
0x000000000001451e TIMER1_IRQHandler
0x000000000001451e ECB_IRQHandler
0x000000000001451e Default_Handler
0x000000000001451e ADC_IRQHandler
0x000000000001451e SWI3_IRQHandler
0x000000000001451e CCM_AAR_IRQHandler
0x000000000001451e WDT_IRQHandler
0x000000000001451e SWI2_IRQHandler
0x000000000001451e RNG_IRQHandler
0x000000000001451e SPI1_TWI1_IRQHandler
0x000000000001451e RTC1_IRQHandler
0x000000000001451e TIMER2_IRQHandler
0x000000000001451e SWI1_IRQHandler
0x000000000001451e SPI0_TWI0_IRQHandler
0x000000000001451e RTC0_IRQHandler
0x000000000001451e GPIOTE_IRQHandler
0x000000000001451e POWER_CLOCK_IRQHandler
.text 0x0000000000014520 0x28 lib/armv6-m/libc.a(lib_a-malloc.o)
0x0000000000014520 malloc
0x0000000000014534 free
.text 0x0000000000014548 0x510 lib/armv6-m/libc.a(lib_a-mallocr.o)
0x0000000000014548 _malloc_r
.text 0x0000000000014a58 0x8 lib/armv6-m/libc.a(lib_a-mlock.o)
0x0000000000014a58 __malloc_lock
0x0000000000014a5c __malloc_unlock
.text 0x0000000000014a60 0x24 lib/armv6-m/libc.a(lib_a-sbrkr.o)
0x0000000000014a60 _sbrk_r
.text 0x0000000000014a84 0x240 lib/armv6-m/libc.a(lib_a-freer.o)
0x0000000000014a84 _malloc_trim_r
0x0000000000014b2c _free_r
.text 0x0000000000014cc4 0x0 lib/armv6-m/libc.a(lib_a-impure.o)
.text 0x0000000000014cc4 0x100 lib/armv6-m/libc.a(lib_a-reent.o)
0x0000000000014cc4 cleanup_glue
0x0000000000014ce0 _reclaim_reent
0x0000000000014d80 _wrapup_reent
.text 0x0000000000014dc4 0x34 lib/armv6-m/libcs3.a(start_c.o)
0x0000000000014dc4 __cs3_premain
.text 0x0000000000014df8 0x3c lib/armv6-m/libcs3unhosted.a(unhosted-sbrk.o)
0x0000000000014df8 _sbrk
.text 0x0000000000014e34 0x0 lib/armv6-m/libcs3unhosted.a(unhosted-start.o)
.text 0x0000000000014e34 0xc lib/armv6-m/libc.a(lib_a-errno.o)
0x0000000000014e34 __errno
.text 0x0000000000014e40 0x44 lib/armv6-m/libc.a(lib_a-init.o)
0x0000000000014e40 __libc_init_array
.text 0x0000000000014e84 0x0 lib/armv6-m/libcs3.a(heap.o)
.text 0x0000000000014e84 0x0 lib/gcc/arm-none-eabi/4.6.3/armv6-m/crtend.o
.text 0x0000000000014e84 0x0 lib/gcc/arm-none-eabi/4.6.3/armv6-m/crtn.o
*(.plt)
*(.gnu.warning)
*(.glue_7t)
.glue_7t 0x0000000000000000 0x0 linker stubs
*(.glue_7)
.glue_7 0x0000000000000000 0x0 linker stubs
*(.vfp11_veneer)
.vfp11_veneer 0x0000000000000000 0x0 linker stubs
*(.ARM.extab* .gnu.linkonce.armextab.*)
.ARM.extab.cs3.reset
0x0000000000014e84 0x0 build/hw-debug/gcc_startup_nrf51.o
*(.gcc_except_table)
.v4_bx 0x0000000000014e84 0x0
.v4_bx 0x0000000000000000 0x0 linker stubs
.iplt 0x0000000000014e84 0x0
.iplt 0x0000000000000000 0x0 lib/gcc/arm-none-eabi/4.6.3/armv6-m/crti.o
.eh_frame_hdr
*(.eh_frame_hdr)
.eh_frame 0x0000000000014e84 0x4
*(.eh_frame)
.eh_frame 0x0000000000014e84 0x0 lib/gcc/arm-none-eabi/4.6.3/armv6-m/crtbegin.o
.eh_frame 0x0000000000014e84 0x4 lib/gcc/arm-none-eabi/4.6.3/armv6-m/crtend.o
0x0000000000014e88 PROVIDE (__exidx_start, .)
.ARM.exidx 0x0000000000014e88 0x8
*(.ARM.exidx* .gnu.linkonce.armexidx.*)
.ARM.exidx.cs3.reset
0x0000000000014e88 0x8 build/hw-debug/gcc_startup_nrf51.o
0x0000000000014e90 PROVIDE (__exidx_end, .)
.rel.dyn 0x0000000000014e90 0x0
.rel.iplt 0x0000000000000000 0x0 lib/gcc/arm-none-eabi/4.6.3/armv6-m/crti.o
.rodata 0x0000000000014e90 0x80
*(.rodata .rodata.* .gnu.linkonce.r.*)
.rodata 0x0000000000014e90 0x44 build/hw-debug/main.o
.rodata 0x0000000000014ed4 0x4 lib/armv6-m/libc.a(lib_a-impure.o)
0x0000000000014ed4 _global_impure_ptr
.rodata.str1.4
0x0000000000014ed8 0x4 lib/armv6-m/libc.a(lib_a-impure.o)
0x0000000000014edc . = ALIGN (0x4)
*(.init)
.init 0x0000000000014edc 0x4 lib/gcc/arm-none-eabi/4.6.3/armv6-m/crti.o
0x0000000000014edc _init
.init 0x0000000000014ee0 0x8 lib/gcc/arm-none-eabi/4.6.3/armv6-m/crtn.o
0x0000000000014ee8 . = ALIGN (0x4)
0x0000000000014ee8 __preinit_array_start = .
*(.preinit_array)
0x0000000000014ee8 __preinit_array_end = .
0x0000000000014ee8 . = ALIGN (0x4)
0x0000000000014ee8 __init_array_start = .
*(SORT(.init_array.*))
*(.init_array)
.init_array 0x0000000000014ee8 0x4 lib/gcc/arm-none-eabi/4.6.3/armv6-m/crtbegin.o
0x0000000000014eec __init_array_end = .
0x0000000000014eec . = ALIGN (0x4)
*(.fini)
.fini 0x0000000000014eec 0x4 lib/gcc/arm-none-eabi/4.6.3/armv6-m/crti.o
0x0000000000014eec _fini
.fini 0x0000000000014ef0 0x8 lib/gcc/arm-none-eabi/4.6.3/armv6-m/crtn.o
0x0000000000014ef8 . = ALIGN (0x4)
0x0000000000014ef8 __fini_array_start = .
*(.fini_array)
.fini_array 0x0000000000014ef8 0x4 lib/gcc/arm-none-eabi/4.6.3/armv6-m/crtbegin.o
*(SORT(.fini_array.*))
0x0000000000014efc __fini_array_end = .
0x0000000000014efc . = ALIGN (0x4)
*crtbegin.o(.ctors)
*(EXCLUDE_FILE(*crtend.o) .ctors)
*(SORT(.ctors.*))
*crtend.o(.ctors)
0x0000000000014efc . = ALIGN (0x4)
*crtbegin.o(.dtors)
*(EXCLUDE_FILE(*crtend.o) .dtors)
*(SORT(.dtors.*))
*crtend.o(.dtors)
0x0000000000014efc . = ALIGN (0x4)
0x0000000000014efc __cs3_regions = .
0x0000000000014efc 0x4 LONG 0x0
0x0000000000014f00 0x4 LONG 0x14f10 __cs3_region_init_ram
0x0000000000014f04 0x4 LONG 0x20002000 __cs3_region_start_ram
0x0000000000014f08 0x4 LONG 0x858 __cs3_region_init_size_ram
0x0000000000014f0c 0x4 LONG 0x58 __cs3_region_zero_size_ram
0x0000000000014f10 __cs3_regions_end = .
0x0000000000014f10 . = ALIGN (0x8)
*(.rom)
*(.rom.b .bss.rom)
0x0000000000014f10 _etext = .
0x0000000000040000 __cs3_region_end_rom = (__cs3_region_start_rom + 0x2c000)
0x000000000002c000 __cs3_region_size_rom = 0x2c000
.data 0x0000000020002000 0x858 load address 0x0000000000014f10
0x0000000020002000 __cs3_region_start_ram = .
*(.cs3.region-head.ram)
*(.jcr)
.jcr 0x0000000020002000 0x0 lib/gcc/arm-none-eabi/4.6.3/armv6-m/crtbegin.o
.jcr 0x0000000020002000 0x4 lib/gcc/arm-none-eabi/4.6.3/armv6-m/crtend.o
*(.got.plt)
*(.got)
*(.shdata)
*(.data .data.* .gnu.linkonce.d.*)
.data 0x0000000020002004 0x0 lib/gcc/arm-none-eabi/4.6.3/armv6-m/crti.o
.data 0x0000000020002004 0x4 lib/gcc/arm-none-eabi/4.6.3/armv6-m/crtbegin.o
0x0000000020002004 __dso_handle
.data 0x0000000020002008 0x0 build/hw-debug/system_nrf51.o
.data.SystemCoreClock
0x0000000020002008 0x4 build/hw-debug/system_nrf51.o
0x0000000020002008 SystemCoreClock
.data 0x000000002000200c 0x0 build/hw-debug/main.o
.data 0x000000002000200c 0x0 build/hw-debug/simple_uart.o
.data 0x000000002000200c 0x0 build/hw-debug/gcc_startup_nrf51.o
.data 0x000000002000200c 0x0 lib/armv6-m/libc.a(lib_a-malloc.o)
.data 0x000000002000200c 0x410 lib/armv6-m/libc.a(lib_a-mallocr.o)
0x000000002000200c __malloc_av_
0x0000000020002414 __malloc_sbrk_base
0x0000000020002418 __malloc_trim_threshold
.data 0x000000002000241c 0x0 lib/armv6-m/libc.a(lib_a-mlock.o)
.data 0x000000002000241c 0x0 lib/armv6-m/libc.a(lib_a-sbrkr.o)
.data 0x000000002000241c 0x0 lib/armv6-m/libc.a(lib_a-freer.o)
*fill* 0x000000002000241c 0x4 00
.data 0x0000000020002420 0x430 lib/armv6-m/libc.a(lib_a-impure.o)
0x0000000020002420 _impure_ptr
.data 0x0000000020002850 0x0 lib/armv6-m/libc.a(lib_a-reent.o)
.data 0x0000000020002850 0x0 lib/armv6-m/libcs3.a(start_c.o)
.data 0x0000000020002850 0x4 lib/armv6-m/libcs3unhosted.a(unhosted-sbrk.o)
.data 0x0000000020002854 0x0 lib/armv6-m/libcs3unhosted.a(unhosted-start.o)
.data 0x0000000020002854 0x0 lib/armv6-m/libc.a(lib_a-errno.o)
.data 0x0000000020002854 0x0 lib/armv6-m/libc.a(lib_a-init.o)
.data 0x0000000020002854 0x4 lib/armv6-m/libcs3.a(heap.o)
0x0000000020002854 __cs3_heap_limit
.data 0x0000000020002858 0x0 lib/gcc/arm-none-eabi/4.6.3/armv6-m/crtend.o
.data 0x0000000020002858 0x0 lib/gcc/arm-none-eabi/4.6.3/armv6-m/crtn.o
0x0000000020002858 . = ALIGN (0x8)
*(.ram)
0x0000000020002858 _edata = .
.igot.plt 0x0000000020002858 0x0 load address 0x0000000000015768
.igot.plt 0x0000000000000000 0x0 lib/gcc/arm-none-eabi/4.6.3/armv6-m/crti.o
.bss 0x0000000020002858 0x58 load address 0x0000000000015768
*(.shbss)
*(.bss .bss.* .gnu.linkonce.b.*)
.bss 0x0000000020002858 0x0 lib/gcc/arm-none-eabi/4.6.3/armv6-m/crti.o
.bss 0x0000000020002858 0x1c lib/gcc/arm-none-eabi/4.6.3/armv6-m/crtbegin.o
.bss 0x0000000020002874 0x0 build/hw-debug/system_nrf51.o
.bss 0x0000000020002874 0x0 build/hw-debug/main.o
.bss 0x0000000020002874 0x0 build/hw-debug/simple_uart.o
.bss 0x0000000020002874 0x0 build/hw-debug/gcc_startup_nrf51.o
.bss 0x0000000020002874 0x0 lib/armv6-m/libc.a(lib_a-malloc.o)
.bss 0x0000000020002874 0x34 lib/armv6-m/libc.a(lib_a-mallocr.o)
0x0000000020002874 __malloc_top_pad
0x0000000020002878 __malloc_current_mallinfo
0x00000000200028a0 __malloc_max_sbrked_mem
0x00000000200028a4 __malloc_max_total_mem
.bss 0x00000000200028a8 0x0 lib/armv6-m/libc.a(lib_a-mlock.o)
.bss 0x00000000200028a8 0x0 lib/armv6-m/libc.a(lib_a-sbrkr.o)
.bss 0x00000000200028a8 0x0 lib/armv6-m/libc.a(lib_a-freer.o)
.bss 0x00000000200028a8 0x0 lib/armv6-m/libc.a(lib_a-impure.o)
.bss 0x00000000200028a8 0x0 lib/armv6-m/libc.a(lib_a-reent.o)
.bss 0x00000000200028a8 0x0 lib/armv6-m/libcs3.a(start_c.o)
.bss 0x00000000200028a8 0x0 lib/armv6-m/libcs3unhosted.a(unhosted-sbrk.o)
.bss 0x00000000200028a8 0x0 lib/armv6-m/libcs3unhosted.a(unhosted-start.o)
.bss 0x00000000200028a8 0x0 lib/armv6-m/libc.a(lib_a-errno.o)
.bss 0x00000000200028a8 0x0 lib/armv6-m/libc.a(lib_a-init.o)
.bss 0x00000000200028a8 0x0 lib/armv6-m/libcs3.a(heap.o)
.bss 0x00000000200028a8 0x0 lib/gcc/arm-none-eabi/4.6.3/armv6-m/crtend.o
.bss 0x00000000200028a8 0x0 lib/gcc/arm-none-eabi/4.6.3/armv6-m/crtn.o
*(COMMON)
COMMON 0x00000000200028a8 0x4 lib/armv6-m/libc.a(lib_a-reent.o)
0x00000000200028a8 errno
0x00000000200028b0 . = ALIGN (0x8)
*fill* 0x00000000200028ac 0x4 00
*(.ram.b .bss.ram)
0x00000000200028b0 _end = .
0x00000000200028b0 __end = .
0x0000000020004000 __cs3_region_end_ram = (__cs3_region_start_ram + 0x2000)
0x0000000000002000 __cs3_region_size_ram = 0x2000
0x0000000000014f10 __cs3_region_init_ram = LOADADDR (.data)
0x0000000000000858 __cs3_region_init_size_ram = (_edata - ADDR (.data))
0x0000000000000058 __cs3_region_zero_size_ram = (_end - _edata)
...
.comment 0x0000000000000000 0x3d
.comment 0x0000000000000000 0x3d lib/gcc/arm-none-eabi/4.6.3/armv6-m/crtbegin.o
0x3e (size before relaxing)
.comment 0x0000000000000000 0x3e build/hw-debug/system_nrf51.o
.comment 0x0000000000000000 0x3e build/hw-debug/main.o
.comment 0x0000000000000000 0x3e build/hw-debug/simple_uart.o
.comment 0x0000000000000000 0x3e lib/armv6-m/libc.a(lib_a-malloc.o)
.comment 0x0000000000000000 0x3e lib/armv6-m/libc.a(lib_a-mallocr.o)
.comment 0x0000000000000000 0x3e lib/armv6-m/libc.a(lib_a-mlock.o)
.comment 0x0000000000000000 0x3e lib/armv6-m/libc.a(lib_a-sbrkr.o)
.comment 0x0000000000000000 0x3e lib/armv6-m/libc.a(lib_a-freer.o)
.comment 0x0000000000000000 0x3e lib/armv6-m/libc.a(lib_a-impure.o)
.comment 0x0000000000000000 0x3e lib/armv6-m/libc.a(lib_a-reent.o)
.comment 0x0000000000000000 0x3e lib/armv6-m/libc.a(lib_a-errno.o)
.comment 0x0000000000000000 0x3e lib/armv6-m/libc.a(lib_a-init.o)
.comment 0x0000000000000000 0x3e lib/gcc/arm-none-eabi/4.6.3/armv6-m/crtend.o
.stack 0x0000000000000000 0x800
.stack 0x0000000000000000 0x800 build/hw-debug/gcc_startup_nrf51.o
0x0000000000000000 __cs3_stack_mem
.heap 0x0000000000000000 0x800
.heap 0x0000000000000000 0x800 build/hw-debug/gcc_startup_nrf51.o
0x0000000000000000 __cs3_heap_start
0x0000000000000800 __cs3_heap_end
...
.ARM.attributes
0x0000000000000000 0x2f
*(.ARM.attributes)
.ARM.attributes
0x0000000000000000 0x1f lib/gcc/arm-none-eabi/4.6.3/armv6-m/crti.o
.ARM.attributes
0x000000000000001f 0x2d lib/gcc/arm-none-eabi/4.6.3/armv6-m/crtbegin.o
.ARM.attributes
0x000000000000004c 0x33 build/hw-debug/system_nrf51.o
.ARM.attributes
0x000000000000007f 0x33 build/hw-debug/main.o
.ARM.attributes
0x00000000000000b2 0x33 build/hw-debug/simple_uart.o
.ARM.attributes
0x00000000000000e5 0x23 build/hw-debug/gcc_startup_nrf51.o
.ARM.attributes
0x0000000000000108 0x2d lib/armv6-m/libc.a(lib_a-malloc.o)
.ARM.attributes
0x0000000000000135 0x2d lib/armv6-m/libc.a(lib_a-mallocr.o)
.ARM.attributes
0x0000000000000162 0x2d lib/armv6-m/libc.a(lib_a-mlock.o)
.ARM.attributes
0x000000000000018f 0x2d lib/armv6-m/libc.a(lib_a-sbrkr.o)
.ARM.attributes
0x00000000000001bc 0x2d lib/armv6-m/libc.a(lib_a-freer.o)
.ARM.attributes
0x00000000000001e9 0x2d lib/armv6-m/libc.a(lib_a-impure.o)
.ARM.attributes
0x0000000000000216 0x2d lib/armv6-m/libc.a(lib_a-reent.o)
.ARM.attributes
0x0000000000000243 0x2d lib/armv6-m/libcs3.a(start_c.o)
.ARM.attributes
0x0000000000000270 0x2d lib/armv6-m/libcs3unhosted.a(unhosted-sbrk.o)
.ARM.attributes
0x000000000000029d 0x1d lib/armv6-m/libcs3unhosted.a(unhosted-start.o)
.ARM.attributes
0x00000000000002ba 0x2d lib/armv6-m/libc.a(lib_a-errno.o)
.ARM.attributes
0x00000000000002e7 0x2d lib/armv6-m/libc.a(lib_a-init.o)
.ARM.attributes
0x0000000000000314 0x2d lib/armv6-m/libcs3.a(heap.o)
.ARM.attributes
0x0000000000000341 0x2d lib/gcc/arm-none-eabi/4.6.3/armv6-m/crtend.o
.ARM.attributes
0x000000000000036e 0x1f lib/gcc/arm-none-eabi/4.6.3/armv6-m/crtn.o