當前位置:首頁 » 編程軟體 » linux怎麼重新編譯uboot

linux怎麼重新編譯uboot

發布時間: 2022-08-16 15:40:28

Ⅰ rk3188的uboot.img怎麼編譯

U-Boot編譯命令對於mini2440開發板,編譯U-Boot需要執行如下的命令:$makemini2440_config$makeall使用上面的命令編譯U-Boot,編譯生成的所有文件都保存在源代碼目錄中。為了保持源代碼目錄的干凈,可以使用如下命令將編譯生成的文件輸出到一個外部目錄,而不是在源代碼目錄中,下面的2種方法都將編譯生成的文件輸出到/tmp/build目錄:$exportBUILD_DIR=/tmp/build$makemini2440_config$makeall或$makeO=/tmp/buildmini2440_config(注意是字母O,而不是數字0)$makeall為了簡化分析過程,方便讀者理解,這里主要針對第一種編譯方式(目標輸出到源代碼所在目錄)進行分析。2.1.2U-Boot配置、編譯、連接過程U-Boot開頭有一些跟主機軟硬體環境相關的代碼,在每次執行make命令時這些代碼都被執行一次。1.U-Boot配置過程(1)定義主機系統架構HOSTARCH:=$(shelluname-m|\sed-es/i.86/i386/\-es/sun4u/sparc64/\-es/arm.*/arm/\-es/sa110/arm/\-es/powerpc/ppc/\-es/ppc64/ppc/\-es/macppc/ppc/)「sed–e」表示後面跟的是一串命令腳本,而表達式「s/abc/def/」表示要從標准輸入中,查找到內容為「abc」的,然後替換成「def」。其中「abc」表達式用可以使用「.」作為通配符。命令「uname–m」將輸出主機CPU的體系架構類型。作者的電腦使用IntelCore2系列的CPU,因此「uname–m」輸出「i686」。「i686」可以匹配命令「sed-es/i.86/i386/」中的「i.86」,因此在作者的機器上執行Makefile,HOSTARCH將被設置成「i386」。(2)定義主機操作系統類型HOSTOS:=$(shelluname-s|tr'[:upper:]''[:lower:]'|\sed-e's/\(cygwin\).*/cygwin/')「uname–s」輸出主機內核名字,作者使用linux發行版Ubuntu9.10,因此「uname–s」結果是「Linux」。「tr'[:upper:]''[:lower:]'」作用是將標准輸入中的所有大寫字母轉換為響應的小寫字母。因此執行結果是將HOSTOS設置為「linux」。(3)定義執行shell腳本的shell#Setshelltobashifpossible,otherwisefallbacktoshSHELL:=$(shellif[-x"$$BASH"];thenecho$$BASH;\elseif[-x/bin/bash];thenecho/bin/bash;\elseechosh;fi;fi)"$$BASH"的作用實質上是生成了字元串「$BASH」(前一個$號的作用是指明第二個$是普通的字元)。若執行當前Makefile的shell中定義了「$BASH」環境變數,且文件「$BASH」是可執行文件,則SHELL的值為「$BASH」。否則,若「/bin/bash」是可執行文件,則SHELL值為「/bin/bash」。若以上兩條都不成立,則將「sh」賦值給SHELL變數。由於作者的機器安裝了bashshell,且shell默認環境變數中定義了「$BASH」,因此SHELL被設置為$BASH。(4)設定編譯輸出目錄ifdefOifeq("$(originO)","commandline")BUILD_DIR:=$(O)endifendif函數$(origin,variable)輸出的結果是一個字元串,輸出結果由變數variable定義的方式決定,若variable在命令行中定義過,則origin函數返回值為"commandline"。假若在命令行中執行了「exportBUILD_DIR=/tmp/build」的命令,則「$(originO)」值為「commandline」,而BUILD_DIR被設置為「/tmp/build」。ifneq($(BUILD_DIR),)saved-output:=$(BUILD_DIR)#.$(shell[-d${BUILD_DIR}]||mkdir-p${BUILD_DIR})若${BUILD_DIR}表示的目錄沒有定義,則創建該目錄。#Verifyifitwassuccessful.BUILD_DIR:=$(shellcd$(BUILD_DIR)&&/bin/pwd)$(if$(BUILD_DIR),,$(erroroutputdirectory"$(saved-output)"doesnotexist))endif#ifneq($(BUILD_DIR),)若$(BUILD_DIR)為空,則將其賦值為當前目錄路徑(源代碼目錄)。並檢查$(BUILD_DIR)目錄是否存在。OBJTREE:=$(if$(BUILD_DIR),$(BUILD_DIR),$(CURDIR))SRCTREE:=$(CURDIR)TOPDIR:=$(SRCTREE)LNDIR:=$(OBJTREE)……MKCONFIG:=$(SRCTREE)/mkconfig……ifneq($(OBJTREE),$(SRCTREE))obj:=$(OBJTREE)/src:=$(SRCTREE)/elseobj:=src:=endifCURDIR變數指示Make當前的工作目錄,由於當前Make在U-Boot頂層目錄執行Makefile,因此CURDIR此時就是U-Boot頂層目錄。執行完上面的代碼後,SRCTREE,src變數就是U-Boot代碼頂層目錄,而OBJTREE,obj變數就是輸出目錄,若沒有定義BUILD_DIR環境變數,則SRCTREE,src變數與OBJTREE,obj變數都是U-Boot源代碼目錄。而MKCONFIG則表示U-Boot根目錄下的mkconfig腳本。2.makemini2440_config命令執行過程下面分析命令「makemini2440_config」執行過程,為了簡化分析過程這里主要分析將編譯目標輸出到源代碼目錄的情況。mini2440_config:unconfig@$(MKCONFIG)$(@:_config=)其中的依賴「unconfig」定義如下:unconfig:@rm-f$(obj)include/config.h$(obj)include/config.mk\$(obj)board/*/config.tmp$(obj)board/*/*/config.tmp\$(obj)include/autoconf.mk$(obj)include/autoconf.mk.dep其中「@」的作用是執行該命令時不在shell顯示。「obj」變數就是編譯輸出的目錄,因此「unconfig」的作用就是清除上次執行make*_config命令生成的配置文件(如include/config.h,include/config.mk等)。$(MKCONFIG)在上面指定為「$(SRCTREE)/mkconfig」。$(@:_config=)為將傳進來的所有參數中的_config替換為空(其中「@」指規則的目標文件名,在這里就是「mini2440_config」。$(text:patternA=patternB),這樣的語法表示把text變數每一個元素中結尾的patternA的文本替換為patternB,然後輸出)。因此$(@:_config=)的作用就是將mini2440_config中的_config去掉,得到mini2440。因此「@$(MKCONFIG)$(@:_config=)」實際上就是執行了如下命令:./mkconfigmini2440即將「mini2440」作為參數傳遞給當前目錄下的mkconfig腳本執行。在mkconfig腳本中給出了mkconfig的用法:#Parameters:TargetArchitectureCPUBoard[VENDOR][SOC]因此傳遞給mkconfig的參數的意義分別是:mini2440:Target(目標板型號)arm:Architecture(目標板的CPU架構)arm920t:CPU(具體使用的CPU型號)mini2440:Boardsamsung:VENDOR(生產廠家名)s3c24x0:SOC

Ⅱ 大家好,小弟一直不明白對linux或uboot源碼包打補丁的原因。在網上查了資料也沒有詳細的介紹。

1、配置源碼需要重新編譯,而重新編譯系統會花費大量的時間,而且Linux系統並不是修改源碼就能編譯通過,還涉及到很多的Makefile,那麼要你單獨一個個的修改工作量也會比較大。但是源碼補丁可以自動識別和替換需要的,方便了一些並不是太熟悉Linux的人,而且減輕了用戶的工作量。
2、既然是補丁,肯定都是針對某一些特殊情況開發的,並不是所有人都會遇到這些情況,也並不是所有人都需要這些補丁。Linux發布的源碼都是一些Linux比較大的升級時候發布一次的,而源碼是提供給所有人的,那麼也不是每個人都需要這個補丁的源碼呀,一般都只是下載和自己所從事專業有關的。

補丁的話隨便你自己,因為不是所有人都需要那個補丁,就算你不裝,也沒什麼問題的

Ⅲ linux怎麼進入uboot菜單

linux下的dnw配置步驟以下:1
下載源碼
源碼:dnw_linux
這個是在1個論壇上搜到的,這個不需要注冊,就能夠免費下載奧,感謝作者的辛苦勞動和忘我的奉獻精神,呵呵...2
解壓這個下載完以後是rar格式的,還得到windows下解壓。解壓後到linux下便可。其中secbulk.c是pc端usb驅動,
dnw.c是寫入工具。3
編譯並載入secbulk模塊$cd
secbulk$make
-c
/lib/moles/`uname
-r`/build
m=`pwd`
moles編譯成功後在當前目錄下可以看到secbulk.ko
用insmod命令載入模塊,這需要root許可權$sudo
insmod
./secbulk.ko4
編譯dnw寫入工具$gcc
-o
dnw
dnw.c編譯成功後生成可履行dnw5
使用dnw下載使用方式和windows下基本1致。在終端下輸入相應的uboot命令,當出現「usb
host
is
connected.
waiting
a
download.」時,在pc端linux上用dnw工具寫入要下載的文件便可。切換到root許可權,履行dnw下載.$./dnw
/path註:這個/path就是所要下載的文件的路徑及名稱,例:/home/linux⑵.6.30.4/arch/arm/boot/zimage寫入完成後提示成功100%
xxxxxxx
bytes
ok可以把編譯好的dnw拷貝到/usr/sbin下或是usr/bin下,以後使用就直接使用dnw
/path
便可。至此,完成內核的下載,下載文件系統一樣的方法便可。注意:注意:有時候由於內核的升級,運行時會提示can
not
open
/dev/secbulk0的毛病,此時需要重新到secbulk目錄履行$make
-c
/lib/moles/`uname
-r`/build
m=`pwd`
moles,然後載入模塊$sudo
insmod
./secbulk.ko便可!

Ⅳ 從庖丁解牛說uboot如何編譯

其實,這個世界上的萬事萬物,都有一個「紋理」。我讀中學的時候劈柴,如果順著木頭的紋理劈下去很輕易的就劈開了,但如果反其道而行之不但劈不開而且斧頭還會彈回來傷人!呵呵,城裡出生的孩子是沒這個體會,即使現在農村的孩子因為家裡都燒液化氣也沒有這個機會體驗了。 庖丁解牛之所以游刃有餘,是因為他掌握了牛的紋理,順著這些紋理就應該很容易。 那麼我們的uboot的紋理在哪裡呢? 很多初學者,拿到這種代碼從來沒有去看過它的readme或者document!這兩個文本文件是非常重要的東西,可惜呀!很多人不去看readme而去請教別人,google,,跑圖書館。其實,有些東西當你問到別人的時候,聰明的人也是去看readme然後給你解答的。 下面我們就去找uboot的紋理! 本文u-boot版本U-Boot 1.1.4 我們按正常人的思維(智商90)來分析。 首先,是要編譯,那麼編譯就要執行命令make,而make實際上就是執行makefile文件。第一次make肯定是不能成功的。聽從觀音菩薩的教誨「從哪裡來就到哪裡去」!make 出問題,我們就去makefile里找原因。Makefile里有這樣一段話: TOPDIR := $(shell if [「$$PWD」 != 「」]; then echo $$PWD; else pwd; fi) export TOPDIR ifeq (include/config.mk,$(wildcard include/config.mk)) # load ARCH, BOARD, and CPU configuration include include/config.mk export ARCH CPU BOARD VENDOR SOC # load other configuration include $(TOPDIR)/config.mk ifndef CROSS_COMPILE ifeq ($(HOSTARCH),ppc) CROSS_COMPILE = else ifeq ($(ARCH),ppc) CROSS_COMPILE = powerpc-linux- endif ifeq ($(ARCH),arm) CROSS_COMPILE = /usr/local/arm/2.95.3/bin/arm-linux- endif ifeq ($(ARCH),i386) ifeq ($(HOSTARCH),i386) CROSS_COMPILE = else CROSS_COMPILE = i386-linux- endif endif ifeq ($(ARCH),mips) CROSS_COMPILE = mips_4KC- endif ifeq ($(ARCH),nios) CROSS_COMPILE = nios-elf- endif ifeq ($(ARCH),nios2) CROSS_COMPILE = nios2-elf- endif ifeq ($(ARCH),m68k) CROSS_COMPILE = m68k-elf- endif ifeq ($(ARCH),microblaze) CROSS_COMPILE = mb- endif endif endif export CROSS_COMPILE 這段腳本就是設置交叉編譯路徑CROSS_COMPILE,在設置這個路徑前要判斷我們所用的平台是什麼,即ARCH是什麼。我們這里以ARM為例。1 2

Ⅳ linux編譯u-boot時顯示[arch/arm/dts/zynq-zc702.dtb]錯誤

在編譯uboot的時候,會出現出錯,因此我們要首先做  make disclean. 將原來的一些中間文件清理干凈。

因此在編譯Uboot依次執行  1.make disclean

                                                   ​2.make smdk2440_config

                                                   ​3. make

就可以編譯通過了

Ⅵ uboot用什麼編譯軟體啊 請盡量說的詳細些

用arm-linux-gcc(如果你的處理器是ARM的話),具體有好多版本,一般都是直接用開發板公司提供的,這樣比較保證,因為重新編譯一個編譯器還是比較麻煩的事(想自己編譯一個編譯器的話,就用Cross tools吧)。

Ⅶ [新手求救]怎麼可以編譯出UBOOT和ART分區可寫的固件

樓主解鎖uboot的路由器固件要怎麼編譯,復雜嘛?能不能給個教程,謝謝!!!針對mt7620n的路由器

熱點內容
怎樣刪除小視頻文件夾 發布:2024-05-19 05:49:29 瀏覽:589
開啟php短標簽 發布:2024-05-19 05:44:12 瀏覽:473
android各國語言 發布:2024-05-19 05:42:54 瀏覽:247
微信什麼資料都沒怎麼找回密碼 發布:2024-05-19 05:35:34 瀏覽:907
填志願密碼是什麼 發布:2024-05-19 05:30:23 瀏覽:318
城堡爭霸自動掠奪腳本 發布:2024-05-19 05:22:06 瀏覽:204
asp編程工具 發布:2024-05-19 05:20:36 瀏覽:143
insertpython 發布:2024-05-19 05:12:26 瀏覽:244
androidant編譯 發布:2024-05-19 05:04:11 瀏覽:988
按鍵腳本優化 發布:2024-05-19 04:59:57 瀏覽:752