1: ./mk n(r) kernel; ./mk bootimage;當修改kernel相關代碼時,具體如下:
alps/kernel/
alps/mediatek/platform/mt65xx/kernel/
alps/mediatek/source/kernel/
alps/mediatek/customer/mt65xx/kernel/
alps/mediatek/customer/common/kernel/
alps/mediatek/customer/$porject_name$/kernel
......
2: ./mk n pl 當修改preloader相關代碼時, 具體如下:
alps/mediatek/platform/mt65xx/preloader/
alps/mediatek/source/preloader/
alps/mediatek/customer/mt65xx/preloader/
alps/mediatek/customer/common/preloader/
alps/mediatek/customer/$porject_name$/kernle
......
3: ./mk uboot 當修改uboot相關代碼時,具體如下:
alps/mediatek/platform/mt65xx/uboot/
alps/mediatek/source/uboot/
alps/bootable/bootloader/uboot/
alps/mediatek/customer/mt65xx/uboot/
alps/mediatek/customer/common/buoot/
alps/mediatek/customer/$porject_name$/uboot/
......
4: ./mk systemimage 當修改system相關代碼時,具體如下:
alps/frameworks/
alps/packages/
alps/vendor/
alps/hardware/
alps/dalvik/
...........
5: ./mk recoverimage 當修改recover相關代碼時,具體如下:
alps/bootable/recovery/
alps/mediatek/customer/$project_name$/recovery/
......
6: ./mk factoryimage: 當修改factory相關代碼時使用此命令,具體如下:
alps/mediatek/customer/$project_name$/factory/
alps/mediatek/customer/common/factory/
alps/mediatek/source/factory/
......
7: ./mk secroimage 當修改secro相關代碼時,具體如下:
alps/mediatek/source/secro/
alps/mediatek/customer/$project_name$/secro/
.....
B. uboot怎麼樣才可以編譯成自己的u-boot.bin
按照uboot移植手冊,修改源代碼,然後用交叉編譯工具編譯,就會生成uboot.bin文件了。
C. 您好,uboot裡面支持的晶元是不是就不需要對uboot進行修改而只要把編譯好的uboot燒入到nand去
uboot是引導程序,android是系統,兩者之間是兩個獨立工程,使用Uboot的目的只是為了引導Andriod的linux內核和ramdisk(如果有需要使用ramdisk的話)。如果uboot通過屏蔽通過 ****.h文件中拿掉一些宏定義,使uboot編譯通過。那麼Andriod編譯時候,也應該對一下宏進行屏蔽。
你的採納是我前進的動力!
記得好評和採納,答題不易,互相幫助,
手機提問的朋友在客戶端右上角評價點滿意即可.
如果你認可我的回答,請及時點擊採納為滿意回答按鈕
D. 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
E. 如何在SoCEDS環境下編譯和更新preloader和uboot程序
打開14.0中的command shell把工作目錄轉換到ghrd中,使用make -j8 sof開始編譯硬體。(-j8 選項可以不帶,只是為了多打開幾個線程編譯比較快,但是需要四核的CPU支持)。
使用bsp-editor.exe打開bsp-editor工具,選擇file->New BSP。把Preloader setting directory指定為ghrd中的hps_isw_handoff/soc_system_hps_0。點擊OK關閉。再點擊Geneate生成BSP後exit BSP Editor。此時應該可以在GHRD中看到software目錄了。接下來需要注意的是要把GHRD中的makefile用\embedded\examples\hardware\cv_soc_devkit_ghrd的Makefile換掉(13.0下編譯不用替換)。然後使用 make uboot 命令會把preloader 和uboot文件都編譯出來。如果只需要編譯preloader,就使用make prelaoder好了。過程比較漫長,這里會重新編譯一遍硬體工程。
編譯完成後在software\preloader\uboot-socfpga 目錄下會找到u-boot.img文件,在software\preloader\uboot-socfpga\spl下會找到u-boot-spi.bin。為了方便,在GHRD下建立目錄preloader,把這兩個文件復制到該目錄!
u-boot-spi.bin為binary格式的文件,按照Altera的要求要按照特定格式添加文件頭!需要使用到的工具為mkpimage工具。切換工具目錄為剛剛建立的preloader目錄,使用命令mkpimage -o preloader_de1_soc.img u-boot-spl.bin 。此時文件夾下會產生一個preloader_de1_soc.img。 可以用於更新SD image中的preloader。
———————————————————————————————————————————————————
在更新之前,還是先說SoCEDS14.0中的一個工具alt-boot-disk-util.exe。在Command Shell 中輸入這個名稱就可以看見使用方法。
#Wirte BOOTLoader and PREloader to disk driver 'E'
alt-boot-disk-util -p preloaer -b bootloader -a write -d E
我的SD Card 被識別為I盤,所以我使用的命令為:
alt-boot-disk-util -p preloaer_de1_soc.img -b u-boot.img -a write -d I
不給我目前使用都會遇到device open error的錯誤。不知道是環境問題還是其他原因。所以還是在Linux 系統下去更新preloader。
————————————————————————————————————————————————————
(個人使用的ubuntu linux 機器,其他版本應該類似)
把兩份文件復制到linux 機器上,並掛載啟動SD card。使用fisk -l 查看SD card 對應的節點編號。比如我的SD card 為8G,會看到這樣的一條信息:Disk /dev/sdb: 7948 MB, 7948206080 bytes 。說明這個節點為 /dev/sdb。
linux 工作目錄切換到preloader放置的地方後。分別使用下面兩條命令更新preloader和 uboot。
sudo dd if=preloader_de1_soc.img of=/dev/sdb3 bs=64k seek=0
sudo dd if=u-boot.img of=/dev/sdb3 bs=64k seek=4
再使用下sudo sync 命令就可以彈出SD card 了。
使用這張SD boot,你會發現列印出Clock 相關的信息。這個是14.0中添加的列印。另外注意到時間戳應該與編譯時間對應
F. 手機刷機包中的uboot.bin文件怎麼解壓出裡面的文件
刷機包的文件是不需要解壓就可以刷機的。
Recovery模式刷機方法:
步驟一、首先要確定手機是否刷入了Recovery ,如果沒有的需要刷入Recovery才能進入Recovery進行刷機。
步驟二、然後在進入設置把USB調試關閉掉,把刷機包復制到SD卡裡面。關閉了USB調試才能讀取出來手機內存。
步驟三、然後在進入recovery模式,進入recovery模式的按鍵有的不一樣。有的可以從電腦控制進入recovery模式,有的按著開機鍵+音量鍵就能進入recovery模式。進入recovery模式之後先清除所有的數據。
步驟四、然後在清除手機裡面的緩存數據,這些操作上下就可以使用音量鍵調節。確定就是開機鍵。
步驟五、然後在選擇刷機包,一般是裝在SD卡上面的。所以從SD卡上面選擇刷機包。
步驟六、刷機包是ZIP文件,點擊從SD卡上面選擇ZIP文件。然後選擇刷機包的文件點擊確定即可。