娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2025年04月15日(星期二)

正在發生

2018年04月15日 | TQ2440之uboot---4.分析u-boot Makefile 最后連接的過程

發布者:polkmm 關鍵字:TQ2440  uboot 手機看文章 掃描二維碼
隨時隨地手機看文章

1.最后生成u-boot的過程
以下是u-boot Makefile最后連接生成u-boot的過程

  1. UNDEF_SYM=`arm-linux-objdump -x lib_generic/libgeneric.a board/EmbedSky/libEmbedSky.a cpu/arm920t/libarm920t.a cpu/arm920t/s3c24x0/libs3c24x0.a lib_arm/libarm.a fs/cramfs/libcramfs.a fs/jffs2/libjffs2.a net/libnet.a rtc/librtc.a drivers/libdrivers.a drivers/nand/libnand.a drivers/nand_legacy/libnand_legacy.a drivers/lcd/liblcd.a modules/usb.module modules/wince.module common/libcommon.a |sed -n -e 's/.*\(__u_boot_cmd_.*\)/-u\1/p'|sort|uniq`;\


  2. cd /root/embed/opt/EmbedSky/u-boot-1.1.6 && arm-linux-ld -Bstatic -T /root/embed/opt/EmbedSky/u-boot-1.1.6/board/EmbedSky/u-boot.lds -Ttext 0x33D80000 $UNDEF_SYM cpu/arm920t/start.o \


  3. --start-group lib_generic/libgeneric.a board/EmbedSky/libEmbedSky.a cpu/arm920t/libarm920t.a cpu/arm920t/s3c24x0/libs3c24x0.a lib_arm/libarm.a fs/cramfs/libcramfs.a fs/jffs2/libjffs2.a net/libnet.a rtc/librtc.a drivers/libdrivers.a drivers/nand/libnand.a drivers/nand_legacy/libnand_legacy.a drivers/lcd/liblcd.a modules/usb.module modules/wince.module common/libcommon.a --end-group -L /opt/EmbedSky/crosstools_3.4.5_softfloat/gcc-3.4.5-glibc-2.3.6/arm-linux/lib/gcc/arm-linux/3.4.5 -lgcc \


  4. -Map u-boot.map -o u-boot

a. UNDEF_SYM的作用

  1. 用objdump -x 列出所有庫的頭

  2.     用sed 將 __u_boot_cmd_.* 替換成 -u__u_boot_cmd_.*

  3.     sort| uniq 去掉重復的部分

  4. 所以執行后 UNDEF_SYM=

  5. -u__u_boot_cmd_autoscr

  6. …...

  7. -u__u_boot_cmd_test_zImage

  8. -u__u_boot_cmd_tftpboot

  9. -u__u_boot_cmd_usbslave

b. arm-linux-ld -Tu-boot.lds -Ttext 0x33D80000

  1. u-boot.lds 中有如下:

  2. . = 0x00000000;

  3. . = ALIGN(4);

  4. .text :

  5. {

  6. cpu/arm920t/start.o (.text)

  7. board/EmbedSky/boot_init.o (.text)

  8. *(.text)

  9. }

b.1雖然 u-boot.lds 是從0x00000000 開始,但是這兒明確的指定了 -Ttext 0x33D80000, 所以生成的u-boot的代碼段是從0x33D80000開始的。
b.2 另外 UNDEF_SYM中的一系列的 -u__u_boot_cmd_.*提供給ld
但是還有一點不太明白的就是,為什么要這樣做?
參考了這篇文章,對crifan的崇拜有如滔滔江水......
http://www.crifan.com/2010/02/27/detailed_analysis_of_the_make_uboot_final_compile_and_link_the_implementation_process/
以下引自crifan的《詳細分析make uboot 最后的編譯鏈接的具體執行過程 v2012-03-29》

  1. “-u symname

  2. ——————————

  3. Enter symname as an undefined symbol in the symbol table. This is useful for loading entirely from an archive library, since initially the symbol table is empty, and an unresolved reference is needed to force the loading of the first routine. The placement of this option on the command line is significant; it must be placed before the library that will define the symbol.

  4. —————————————————————————————————————-

  5. 總的意思,就是,在ld的時候,不定義,這些符號,即不定義__u_boot_cmd_asdebug,__u_boot_cmd_base等等這些符號,我的理解是,因為開始需要從某個庫中載入其他的符號,而這個時候,還沒有載入到那個包含此符號定義的庫,所以,暫時先加入這個-u說明,先不定義這些符號,等到所有的庫都加載完了,再去找這些符號的定義,此時已經加載完所有的庫了,也就能找到這些符號的定義了。

  6. (F)接下來的,就是要ld的,那一堆的目標文件,庫文件了:

  7. cpu/arm926ejs/start.o和

  8. –start-group lib_generic/libgeneric.a lib_generic/lzma/liblzma.a cpu/arm926ejs/libarm926ejs.a 。。。。。。 post/libpost.a board/ams/as3536/libas3536.a –end-group

  9. 關于–start-group和 –end-group的含義:

  10. -(archives)或者—start-group archives –end-group 參數中間的目標文件會被ld反復搜索,對相互交叉引用的目標文件很有用

  11. 所以,我的理解是,如果ld載入了一個庫,發現該庫中,有UNDF,未被定義的變量,有了這個參數的指示后,就會在這一堆.a和.o文件里面反復搜索,直至找到為止,否則,如果在已經加載的庫中,找不到,就會報錯。”


  12. 關于”–start-group和 –end-group”,又去找了相關資料:


  13. Linker order – GCC


  14. GCC: –start-group and –end-group command line options


  15. 得知確切的含義是:


  16. 鏈接器LD去load對應的庫(lib,module)的時候,可能會遇到這些情況:


  17. (1)A庫,引用了B庫中funcInB(),但是先ld A庫,導致找不到對應的funInB而鏈接報錯


  18. (2)A庫和B庫,互相都包含對應所引用到的函數,即互相引用/循環引用,ld編譯器會因為找不到A庫中所引用的B庫的中的函數(或者反過來B庫引用A庫中的函數)而報錯。


  19. 此時,用”–start-group和 –end-group“,通知ld鏈接器,去在–start-group和–end-group中間的這些庫函數,多花點時間,對于這些庫,都從頭到尾,多查幾遍,去找找那些還沒有找到的所引用的函數,是不是在另外的庫中有這些函數,以此解決:


  20. (1)A庫引用到了后來才加載的B庫中的函數


  21. (2)解決循環引用


  22. 之類的問題。



關鍵字:TQ2440  uboot 引用地址:TQ2440之uboot---4.分析u-boot Makefile 最后連接的過程

上一篇:TQ2440之uboot---5.jlink 在線調試 u-boot
下一篇:TQ2440之uboot---3.make EmbedSky_config

推薦閱讀

原標題:兆易創新戰略投資伙伴領投、閃存控制器廠商得一微電子成立并獲A輪3億元融資硅格半導體SiliconGo宣布與立而鼎科技合并,新公司“得一微電子YEESTOR”獲A輪3億人民幣融資,兆易創新的戰略投資伙伴石溪資本、屹唐華創領投,江波龍、華登國際、清控銀杏、TCL、傳音控股、耀途資本等知名產業和投資機構跟投,與泰科源,ESMT,上海享趣、松尚光電等股東...
集微網消息 4月12日,深紡織陸續發布了2018年業績快報以及2019年第一季度業績公告。在2018年業績公告中提到,該公司營收達到12.72億元,同比下滑13.77%,歸屬上市公司股東的凈利潤為-2298.06萬元,同比下滑143.54%。對于報告期內公司營業利潤、利潤總額、歸屬于上市公司股東的凈利潤較上年同期大幅減少的主要原因,深紡織表示,首先是報告期內受顯示終端...
無人駕駛作為汽車未來的研究方向,其對于汽車行業甚至是交通運輸業有著深遠的影響。無人駕駛汽車的來臨將能夠解放人類的雙手,降低發生交通事故發生的頻率,保證了人們的安全。同時隨著人工智能、傳感檢測等核心技術的突破和不斷推進,無人駕駛必將更加智能化,同時也能夠實現無人駕駛汽車的產業化。雖然將無人車理解為機器人并且使用機器人開發的思維處理...
據新加坡《聯合早報》網站近日報道,自2015年第2季以來,LG公司的手機部門就一直處于虧損狀態。由于市場競爭加劇,移動領域業績持續低迷,故決定退出手機市場。  韓國LG電子近日宣布,由于手機市場競爭激烈、連年虧損,企業決定縮減手機生產和銷售規模,7月底徹底停產。這意味著LG在經營26年手機業務后,最終退出手機市場。自2015年第2季以來,LG的手機...

史海拾趣

問答坊 | AI 解惑

一點建議

來這個論壇的人不乏有剛接觸單片機的。 但是,在單片機學習的過程中,因為很多人都是初學,有時候問別人跟問自己也沒什么區別。 有時候一點東西想不通,就有可能影響我們的興趣,畢竟是初學。難度很大。 建議:單片機高手,拿出一些完整的成功的 ...…

查看全部問答∨

求救!!`GLIBC_2.4' not found

編譯內核時出錯: scripts/kallsyms: /lib/tls/libc.so.6: version `GLIBC_2.4\' not found (required by scripts/kallsyms) make: *** [.tmp_kallsyms1.S] Error 1 請球高手解答!!謝謝…

查看全部問答∨

nand flash驅動的問題

大家好,請問:smflash_lib.lib這個庫是在哪里生成的呀?我在BSP沒有發現在生成這個庫的地方!謝謝 了!…

查看全部問答∨

對IDE和SATA的I/O端口比較了解的高手看看

  最近要把原來寫過的IDE接口的硬盤讀寫程序改成SATA的,用到1F0~1F7和3F6~3F7這些I/O映射地址對硬盤控制芯片的寄存器進行尋址,現在我需要知道用SATA接口時,這些I/O地址應該是什么,只要知道對SATA操作的I/O端口地址就能解決所有問題了,請 ...…

查看全部問答∨

急驅動器開發高級工程師

高級軟件工程師 職責: 系統底層軟件的開發; 參與系統需求分析和設計; 職位要求: 1.要求本科以上的計算機相關專業,有豐富開發經驗; 2.三年以上的軟件開發經驗,良好的軟件編程習慣; 3.具有兩年以上的系統內核程序的開發經驗,熟 ...…

查看全部問答∨

急需數控機床系統開發??

我公司需要開發套數控機床系統,請問有沒有知道這方面知識的朋友?可以加我QQ:913410767,我回電話給你…

查看全部問答∨

s3c2440 800x600 如何提速控件顯示速度

本人初學wince,請教大蝦們一個問題。 本人使用的是S3c2440,wince5.0,800x600的LCD。 因為屏幕過大,wince的顯示看起來已經較慢。 因為客戶的要求,開發軟件需要保持與pc機版本的界面一致。導致程序中需要在一個界面上繪制上百個控件,可以看 ...…

查看全部問答∨

基于繼電器的溫度加熱控制器

基于繼電器的溫度加熱控制器…

查看全部問答∨

請教個問題:關于CC2530_2591模塊

原理圖中CC2530很多引腳都是連接到插座上,想請教下這些插座的作用以及插座上幾個焊盤接gnd或者VCC的原因。另外一個問題就是可不可以改變插座引腳的位置以更方便自己PCB布局。我畫的是2層板布局。…

查看全部問答∨
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 甘孜县| 蒲城县| 玉门市| 正宁县| 农安县| 万宁市| 额敏县| 昌黎县| 漯河市| 东阿县| 东乡族自治县| 嘉义县| 垣曲县| 逊克县| 永嘉县| 安义县| 庆元县| 宁海县| 孟村| 新宾| 聂荣县| 富民县| 平塘县| 茂名市| 钟祥市| 铅山县| 昆山市| 鄂尔多斯市| 黄龙县| 武城县| 宿迁市| 和平区| 娱乐| 万山特区| 光泽县| 高邑县| 许昌县| 东乡| 炎陵县| 特克斯县| 衡阳市|