日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

u-boot.lds 文件分析

發布時間:2023/12/20 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 u-boot.lds 文件分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
27 OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")

指定輸出的格式是32bits ARM 小端

OUTPUT_FORMAT原型為 OUTPUT_FORMAT(default, big, little),在鏈接的時候,如果使用了-EB的命令行參數,則使用這里的big參數指定的字節序,如果使用了-EL的命令行參數,則使用這里的little參數指定的字節序,如果沒有使用任何命令行參數,則使用這里的default參數指定的字節序。由uboot.lds中的定義可見,不管在鏈接的時候使用了何種命令行參數,輸出的目標文件都是使用elf32-littlearm方式的字節序。

28 OUTPUT_ARCH(arm)

指出輸出可執行文件的平臺是armd

29 ENTRY(_start)

指定輸出可執行文件的起始代碼段是_start

30 SECTIONS
31 {
32 ? ? . = 0x00000000;
33
34 ? ? . = ALIGN(4);
35 ? ? .text ? :
36 ? ? {
37 ? ? ? ? cpu/arm_cortexa8/start.o ? ?(.text)
38 ? ? ? ? *(.text)
39 ? ? }

32行對定位計數器進行賦值,.=0x00000000對定位計數器初始化為0x0

34 行使得當前定位計數器向四字節對齊

35~39定義了一個輸出節 .text,冒號是語法需要。.text后花括號中,列出了所有應當放到這個輸出節中的輸入節的名字,*是一個通配符,匹配任何文件名,

37行表示要把/cpu/arm_cortexa8/start.o中的.text輸入節放入這個輸出文件的.text輸出節。

38行*(.text)的意思是所有的輸入文件中的.text輸入節;


41 ? ? . = ALIGN(4);
42 ? ? .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) }

41 修改當前定位寄存器,使的下面的.rodata輸出節與4bytes對齊

42 定義.rodata輸出節為所有文件的.rodata輸入節


44 ? ? . = ALIGN(4);
45 ? ? .data : { *(.data) }
46
47 ? ? . = ALIGN(4);
48 ? ? .got : { *(.got) }

44 ~ 48 .data和.got輸出節的定義類似于.rodata,要求這兩個輸出節要以4 bytes對齊


50 ? ? __u_boot_cmd_start = .;
51 ? ? .u_boot_cmd : { *(.u_boot_cmd) }
52 ? ? __u_boot_cmd_end = .;

50 把__u_boot_cmd_start設置為當前定位技術器,即.u_boot_cmd節的起始位置

52 把__u_boot_cmd_end設置為當前定位計數器,即.u_boot_cmd節的結束位置

51 定義.u_boot_cmd輸出節為所有輸入文件的.u_boot_cmd輸入節


54 ? ? . = ALIGN(4);
55 ? ? __bss_start = .;
56 ? ? .bss : { *(.bss) }
57 ? ? _end = .;
58 }
定義.bss輸出節,并且把__bss_start定義為__bss_start輸出節的起始位置,把_end定義為__bss節的結束位置


轉載于:https://blog.51cto.com/7090376/1264611

總結

以上是生活随笔為你收集整理的u-boot.lds 文件分析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。