u-boot.lds文件简介
生活随笔
收集整理的這篇文章主要介紹了
u-boot.lds文件简介
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
可執行文件由許多鏈接在一起的對象文件組成。對象文件有許多節,如文本、數據、init 數據、bss等。這些對象文件都是由一個稱為?鏈接器腳本(*lds)的文件鏈接并裝入的。這個鏈接器腳本的功能是將輸入對象文件的各節映射到輸出文件中;換句話說,它將所有輸入對象文件都鏈接到單一的可執行文件中,將該可執行文件的各節裝入到指定地址處。 因此在分析u-boot代碼是,首先應關注的是u-boot.lds文件,它位于$(U-BOOT_SRC_ROOT)/board/$(BOARD_NAME)目錄下。
1 /* 2 * OUTPUT_FORMAT(default, big, little),在鏈接的時候,如果使用了-EB的命令行參數,則使用這里的big 3 * 參數指定的字節序,如果使用了-EL;的命令行參數,則使用這里的little參數指定的字節序,如果沒有使用 4 * 任何命令行參數,則使用這里的default參數指定的字節序。 5 * 由$(SRC_ROOT)/board/samsung/smdk6410/u-boot.lds中的定義可見,不管在鏈接的時候使用了何種命令行參數, 6 * 輸出的目標文件都是使用elf32-littlearm方式的字節序。 7 */ 8 /*以下語句是指定輸出可執行文件是elf格式,32位ARM指令,小端 */ 9 OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") 10 /*指定輸出可執行文件的平臺為ARM*/ 11 OUTPUT_ARCH(arm) 12 /*指定輸出可執行文件的起始代碼段為_start.*/ 13 ENTRY(_start) 14 SECTIONS 15 { 16 . = 0x00000000; /*定位當前地址為0x0地址*/ 17 18 . = ALIGN(4); /*指定代碼以4字節對齊*/ 19 .text : /*指定代碼段 */ 20 { 21 arch/arm/cpu/arm1176/start.o (.text) 22 board/samsung/smdk6410/libsmdk6410.o (.text) 23 *(.text) 24 } 25 26 . = ALIGN(4); 27 .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) } /*指定只讀數據段 */ 28 29 . = ALIGN(4); 30 .data : { *(.data) } /*指定讀寫數據段*/ 31 32 . = ALIGN(4); 33 .got : { *(.got) } /*指定got段, got段式是uboot自定義的一個段, 非標準段*/ 34 35 36 . = ALIGN(4); 37 .u_boot_list : { 38 #include <u-boot.lst> 39 } 40 41 . = ALIGN(4); 42 .mmudata : { *(.mmudata) } 43 44 . = ALIGN(4); 45 46 .rel.dyn : { 47 __rel_dyn_start = .; 48 *(.rel*) 49 __rel_dyn_end = .; 50 } 51 52 .dynsym : { 53 __dynsym_start = .; 54 *(.dynsym) 55 } 56 57 _end = .; 58 59 .bss __rel_dyn_start (OVERLAY) : { 60 __bss_start = .; 61 *(.bss) 62 . = ALIGN(4); 63 __bss_end__ = .; 64 } 65 66 /DISCARD/ : { *(.dynstr*) } 67 /DISCARD/ : { *(.dynamic*) } 68 /DISCARD/ : { *(.plt*) } 69 /DISCARD/ : { *(.interp*) } 70 /DISCARD/ : { *(.gnu*) } 71 }?
轉載于:https://www.cnblogs.com/laojie4321/p/4248531.html
總結
以上是生活随笔為你收集整理的u-boot.lds文件简介的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SNF软件开发机器人-子系统-导出-导入
- 下一篇: 面试题:Fibonacci数列