2019年8月13日 星期二

Linker

1. Makefile 中會 指定linker.ld.c 要編成 linker.ld .
 e.g. $(OBJ_DIR)/linker.ld: $(SRC_DIR)/linker.ld.c
       $(CC) -Xpreprocessor $(IFLAGS) -P -E  $< -o $@


2. linker.ld.c中會指定 obj 要放在哪個地方
 e.g. 
  .sram : {   
     obj/wcom*.o(.text); 
     *(.sram);
  } > sram AT> flash

  .text :  {
*(.text);
  } > flash

 這樣表示 , 除非特別指定放在sram , 否則都放在 flash
 從編出來的執行檔 可以看出這個差異 (1.有放在.sram . 2. 拿掉)
 
  $ nm PDK_dbg.elf | grep OOBResponseTask
  8a00008c T OOBResponseTask //in SRAM

  $ nm PDK_dbg.elf | grep OOBResponseTask
  8b03b108 T OOBResponseTask //in FLASH