導航:首頁 > 源碼編譯 > 烏班圖如何編譯uboot

烏班圖如何編譯uboot

發布時間:2022-07-14 02:00:49

1. 在ubuntu下使用什麼工具對uboot及內核進行燒寫

tftp比較通用的 網路燒寫 DNW USB燒寫

2. 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

3. 如何在Ubuntu下使用TF/SD 卡製作Exynos 4412 u-boot啟動盤

U-Boot源代碼下載地址 http://www.linuxidc.com/Linux/2011-07/38897.htm

硬體:迅為iTop 4412精英版 & TF卡
軟體:系統自帶終端即可

首先,我們應該清楚TF/SD卡可以看作一張完全空白的「白紙」,之所以有分區、分區格式的區別不過是在在這張「白紙」的某些特定位置寫入了一些數據來指示分區、分區格式。

其次,我們還應該清楚,在TF/SD啟動模式下,exynos 4412一上電,內部iROM會從TF/SD的第1個Block(第512個位元組開始)讀取8KB的數據到內部iRAM,然後從內部iRAM的0地址開始運行。

原理搞清楚了,那麼首先需要把TF/SD低級格式化-所有Block全部寫0x00。
1、連接TF/SD卡,打開終端
使用ls /dev/sd* 命令查看所有連接到電腦上磁碟。
問題:在這里為什麼不用df命令?
原因是假設你的TF/SD卡只有一個分區但這個分區已損壞,或者有多個分區但是沒有一個可以識別的分區,那麼此時df命令無法查看到tf/sd卡,所以說直接列出dev下所有sd開頭的設備,是終極方案。

(1)假設你的tf/sd卡只有一個分區,無論這個分區是否損壞,現象應該是類似這樣的:

插上tf/sd卡之前:

插上tf/sd卡之後:

很明顯多出的/dev/sdb就是本文後續操作的對象。

(2)假設你的tf/sd卡已有多個分區,無論這些分區是否損壞,現象應該是類似這樣的:

插上tf/sd卡之前:

插上tf/sd卡之後:

這里多出5個設備,但是我們仍然將/dev/sdb作為本文後續操作的對象。

注意:我這里是/dev/sdb,但是還有可能是/dev/sdc等等其它符號,必須根據你實際出現的設備名稱進行以下操作,否則有可能損壞系統分區,非常重要,切記!!!

2、使用16進制模式打開TF卡查看數據(可跳過)
我們使用linux自帶命令hexmp查看tf/sd卡中的數據:
命令為:
sudo hexmp -n 1048576 /dev/sdb
其中-n 1048576代表列印出前1M=1024*1024=1048576位元組的數據。

執行結果(部分)如下:

*代表內容為0x00,為了節省空間故作省略。
3、清空TF卡上前1MB的數據
由於4412的uboot大小基本在幾百kB的量級,所以清空前1MB空間足夠用,注意這里的清空不是格式化,而是填充0x00。
我們利用系統/dev下的zero設備,清零tf/sd卡前1MB。
執行結果如下:

這里的count=2000代表清空2000個block,一個block=512B,2000個正好為1MB。

再次hexmp查看tf/sd卡數據,發現:

前1MB空間成功清0x00。
4、燒寫uboot啟動文件
在這里,我們待燒寫的文件為 u-boot-iTOP-4412.bin 這個文件。
終端執行命令:

if代表輸入文件地址,以你u-boot-iTOP-4412.bin 這個文件的實際地址為准,of代表輸出地址,以你tf/sd卡的實際設備號為准。
到這里,就可以將tf/sd卡插入開發板上電啟動了,為了證明我們燒寫無誤,我們執行後續操作。
5、確認燒寫正確(可跳過)
我們需要確定從tf/sd卡的第一個block開始處,確實正確燒寫了u-boot-iTOP-4412.bin這個文件,下面我們對比一下,用到的命令同樣還是hexmp。
在這里,我們為了顯示方便,只列印前5KB數據,發現bin文件被正確的復制到了sd卡的512位元組處:

6、將TF卡接到開發板上,撥碼開關選擇TF啟動,上電:

Done。
本文永久更新鏈接地址:http://www.linuxidc.com/Linux/2015-02/113493.htm

4. ubuntu下如何編譯C語言

1、首先打開ubnutu開發環境,直接輸入組合鍵ctrl+alt+t調出命令行界面。

5. ubuntu 編譯uboot需要哪些工具,哎,新手,詳細點哦,親

1.首先安裝基本編譯環境:sudo apt-get install build-essential
2:先把交叉編譯環境包放到你的共享目錄,(我這里的版本是:arm-linux-gcc-4.4.3.tar.gz)
3:進行解壓 tar zxvf arm-linux-gcc-4.4.3.tar.gz -C (要解壓的路徑)
比如:tar zxvf arm-linux-gcc-4.4.3.tar.gz -C ~/ (root 用戶的工作目錄)

4:然後設置環境變數:export PATH=$PATH:~/opt/FriendlyARM/toolschain/4.4.3/bin

5:要想系統啟動自動載入環境變數:
1:普通用戶:vim .bashrc 在最後添加你的環境變數:export PATH=$PATH:~/opt/FriendlyARM/toolschain/4.4.3/bin

2:root用戶:vim .bashrc 在最後添加你的環境變數:export PATH=$PATH:~/opt/FriendlyARM/toolschain/4.4.3/bin

6. u-boot使用make編譯出現找不到dtc命令,如何解決啊

我在ubuntu14.04上編譯uboot時也遇到了這個問題,dtc是device-tree-compiler的縮寫,即設備樹編譯器,說明系統中沒有安裝這個編譯器,我用的是apt-get install device-tree-compiler安裝後就可以成功編譯了哈。

7. 在ubuntu12.04 64位系統上編譯uboot kernel的時候,出現找不到 arm-none-eabi-gcc

應該是系統不兼容引起的,可能是你安裝的編譯器只有32位系統才能支持。你要麼重新安裝個高等級的編譯器(支持64位系統),要麼你換個32位系統。

8. 從庖丁解牛說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

9. 在ubuntu下編譯uboot出現這個問題 Assembler messages: Fatal error: invalid -march= option:`armv7-a'

要用export指定環境變數和編譯器例如
Export PATH=$PATH:/opt/freescale/usr/local/gcc-4.1.78-eglibc-2.5.78-1/powerpc-e300c3-linux-gnu/bin
Export CROSS_COMPILE=powerpc-e300c3-linux-gnu-

閱讀全文

與烏班圖如何編譯uboot相關的資料

熱點內容
Python中Windows字體顏色 瀏覽:692
n7筆記app哪個好 瀏覽:415
kindle用什麼app好 瀏覽:719
方舟加密伺服器怎麼進 瀏覽:60
傳文件夾太慢 瀏覽:218
基於單片機的倉庫 瀏覽:377
央企直營朔源碼燕窩 瀏覽:340
日本校園老師電影 瀏覽:65
買黃金首飾上什麼app 瀏覽:452
共享pdf 瀏覽:343
老武俠電影,是一個女的用乳房打人,名字 瀏覽:649
pythonsocket庫 瀏覽:401
緝魂130分鍾台灣完整版 瀏覽:688
wifi電視一般需要什麼app 瀏覽:526
怎樣保護自己的id密碼加密 瀏覽:244
韓劇女主手上帶個鈴鐺 瀏覽:374
南充雲伺服器 瀏覽:984
哪個網站下載源碼不要錢 瀏覽:739
籌碼源碼指標公式股旁網 瀏覽:403
農商銀行的app是什麼名字 瀏覽:248