『壹』 如何設置uboot命令讓板子從emmc啟動
Arm板系統文件一般有三個——bootloader(uboot)、kernel(uImage)及根文件系統(rootfs)。在arm板上電後,按uboot->kernel->rootfs的順序依次啟動。由於開發板上有多種存儲介質,三個文件可以放在任何可以存儲的介質上,因此也就導致文件的多種啟...
『貳』 arm開發板emmc報錯怎麼檢查硬體錯誤
1.linux系統啟動方式
bootloader->kernel->system
在嵌入式系統中內存為DRAM,inand flash 都不能直接啟動需要被初始化。其中初始化程序在(bootloader中)。
解決思路是通過內部irom中的bl0代碼引導執行uboot。
啟動uboot可以有多種方式,可以使用內部emmc啟動,sd卡啟動,usb啟動等多種方法。
由於優先順序不同,用sd卡啟動時除了必要的硬體配置(撥碼開關等)也必須破壞內部emmc中的uboot才能通過sd卡啟動uboot。
在linux系統下破壞uboot的方法:
破壞iNand中的bootloader以從SD2啟動
linux下:
busybox dd if=/dev/zero of=/dev/block/mmcblk0 bs=512 seek=1 count=1 conv=sync
sync
uboot下:
『叄』 ARM里bootloader一般放在NAND FALSH哪個地址是不是從0X0地址開始 那中斷向量表呢
是0地址,中斷向量表(應該叫異常向量表)放在bootloader的最開始,bootloader可以放在nor里也可以放在nand里,由啟動類型確定
『肆』 如何在bootloader中訪問emmc的各寄存器
首先你需要在bootloader中移植emmc驅動,通常bootloader中有的。
然後設置cmdline(還是commandline,記得不太清楚),這個是能設置啟動分區的。
在代碼中是能找到任何一個分區的,之前做bootloader的時候有用到過。
『伍』 安卓開機卡在logo變磚了,清除emmc有用嗎清除emmc就是恢復出廠設置嗎
Android系統開機的時候停止在android logo界面說明系統已經無法啟動了,可能是手機在線ota升級後沒有自動雙清,導致系統緩存混亂,或者刪除了系統必備apk,或者是替換了不同版本的apk,造成無法開機。
建議進入Recovery模式執行雙清wipe操作。
Recovery模式指的是一種可以對安卓機內部的數據或系統進行修改的模式(類似於windows PE或DOS)。在這個模式下可以刷入新的安卓系統,或者對已有的系統進行備份或升級,也可以在此恢復出廠設置。
進入recovery的方法:
1、將手機完全關機後,按住音量鍵下+電源鍵,進入bootloader界面(部分手機可能不同,多數是音量上或下+電源鍵);
2、按音量鍵將游標移動到recovery那一行;
3、按電源鍵,之後手機會自動重啟進入recovery模式。
其中音量鍵為游標選擇鍵,可以用來移動游標,電源鍵則是確認鍵。
雙wipe步驟如下:
在recovery模式下,用音量下鍵選擇wipe data/factory reset這項。
按HOME鍵執行wipe data/factory reset命令後再用音量下鍵選擇Yes -- delete all user data並按HOME鍵執行命令。
執行Yes -- delete all user data命令後,表示開始執行。
按音量下鍵選擇wipe cache partition命令並按HOME鍵執行。
執行wipe cache partition命令後,音量下鍵選擇Yes -- Wipe Cache並按HOME鍵執行命令。
執行Yes -- Wipe Cache命令後,表示wipe cache partition也執行成功了。
wipe data/factory reset和wipe cache partition執行成功後 選擇 reboot system now 重啟系統即可。
『陸』 你好Bootloader解鎖碼怎麼弄
如果您的手機已root,您可以直接用dd if命令提取bootloader分區鏡像文件;如果您的手機已root,您可以網上找刷機包提取emmc_appsboot.mbn文件。文件用文本瀏覽器打開。文件前面好大一段可能內含解鎖碼的亂碼文段(不用16進制編輯器的情況下),中間一小段是可以看懂的英文,後面是空的。解鎖碼可能是0123456789ABCDEF(老機型)或為空(直接使用fastboot oem unlock命令解鎖),如果不是那就文件中搜索test key找與他最鄰近的一串解鎖碼(有時不一定是16位:理論上解鎖碼可重復使用)。部分機型與上述機型略有出入。
『柒』 小7莫名其妙的廢了,開不了機,求助
本文章基於360論壇小C的總結,結合本人遇到問題,加以補充。
QPST工具目前支持Windows 2000/XP和32位Windows Vista/7系統,暫不支持64位Windows Vista/7系統。
注意:該步驟幫助你的Qualcomm平台裸機更新相應的bootloader/fastboot等操作,或者手機產線上的首次裸機下載,請勿斷電或拔下電池!
一、 QPST工具安裝
解壓72-V1400-138_2.7.395.rar(參見本文最後下載鏈接),雙擊setup.exe文件,運行安裝程序。
二、 操作步驟
1、 埠識別
待處理手機插入USB數據線連接PC,設備管理器將識別出QDLoader 9008埠,否則該手機不在本文介紹的處理范圍內。
如果未能識別驅動,提示有「「Qhsusb-Dload」」則需安裝相應的驅動,請下載小米工具MiPhone2.11.6(參見本文最後下載鏈接) 安裝即可安裝驅動。
2、 工具配置
進入 開始 ->所有程序 -> QPST eMMC Software Download打開工具;
工具界面如下圖所示。
本 人使用win7 32bit 在打開"QPST eMMC Software Download"彈出提示 「Failed to connect QPST server」, 折騰半天搞不清楚為什麼。最終在一篇帖子的幫助下,嘗試將"QPST eMMC Software Download"使用XP兼容模式運行,最終可以成功運行。
如下圖,右鍵點擊並選擇「兼容性疑難解答」->"嘗試建議的設置"->"測試程序的兼容性設置"中測試程序,即可啟動。
之後再次進入主程序菜單,單擊"QPST eMMC Software Download"即可。
請按照下述各項描述仔細配置:
1) 連接手機
如果顯示No Ports Active或No Phone Connnected,請在電腦狀態欄的藍色地球圖標上點擊右鍵,選擇Qpst Configuration。
選擇Ports頁面,點擊Add New Port按鈕。
選中QDLoader 9008一列,點擊OK按鈕。
此時,Ports頁面將顯示出剛才添加的COM口信息,且狀態為Download。
在下載工具界面點擊Browse按鈕,選擇COM口,點擊OK,主界面將顯示出已連接手機。
2) 界面配置
如下圖所示,四個復選框都要選中;Flash Programmer file name和Boot Image分別寫入MPRG8X25.hex和8X25_msimage.mbn;SPC寫入000000。
3) 版本配置
點擊Load XML def按鈕,選擇升級包msm7627a文件夾中的rawprogram0.xml文件。
點擊Load patch def按鈕,選擇升級包SSNSKMLY文件夾中的patch0.xml文件。
勾選Search path 2,點擊瀏覽按鈕,選中升級包SSNSKMLY文件夾。
至此,全部配置均已完成,如下圖所示。
4) 版本下載
點擊Download按鈕,開始下載版本,如下圖所示。
以下圖示表示正在下載版本。
下圖表示下載完成。注意,下載完成的標志為:Log區出現write complete。
以上步驟3)和步驟4)中program bootloader 和 program emmc在高通默認的下載方式中,兩者是分開下載的,參見如下:首先program bootloader
接著program emmc devices:
到此通過QPST 更新fastboot bootloader和EMMC 分區配置完成, 用戶可以重啟系統進入fastboot 模式更新系統文件。
ADB和fastboot操作在此略去。
工具驅動和相關文件下載:
MIUI QHSUSB-DLOAD driver MiPhone2.11.6
Coolpad HSUSB adb driver (vista64 and WinXP32 bit)
MIUI APQ8064/MSM8960/MSM8930 QPST image (mbn/hex)
DB APQ8060 GingerBread/ICS QPST image files (mbn/hex/patch0...)
Qualcomm QPST-2.7.399
Qualcomm FMT/DIAG(USB serial) port driver
『捌』 uboot201407如何查看從哪啟動SD卡還是EMMC
Arm板系統文件一般有三個——bootloader(uboot)、kernel(uImage)及根文件系統(rootfs)。在arm板上電後,按uboot->kernel->rootfs的順序依次啟動。由於開發板上有多種存儲介質,三個文件可以放在任何可以存儲的介質上,因此也就導致文件的多種啟動方式。本文就來討論,以上三個文件對應不通存放位置的不同啟動配置。
一般開發板上會有flash(Nor or NAND),mmc,emmc,sd卡等。系統文件可以燒寫在其中的任意一種上,因此也就對應不通的啟動。在開發過程中,有時經常需要改動內核,或者修改應用程序,如果每次都修改後都重新燒寫到板上的存儲介質,會比較麻煩。因此,為方便調試,uImage和rootfs還可以從網路啟動,即nfs啟動。但uboot只能從板上介質啟動。
啟動過程其實是先將要啟動的文件從存儲位置拷貝到內存空間,再在內存中運行。因此所謂不同位置啟動,也就是從不同位置拷貝而已。
下面我們以開發板啟動為例,分別介紹三個文件從不同位置啟動的過程方法。我使用的開發板上有emmc和兩個sd卡。我們按照啟動順序,依次介紹。
首先是uboot啟動。Uboot是三個系統文件中第一個啟動的,對它的拷貝工作由cpu中的固件決定。固件中支持從幾個位置拷貝uboot,它就能存放在幾個位置上。至於每次啟動具體從其中的哪裡開始,硬體撥碼開關決定,對應撥碼在開發板手冊上能查到。啟動之前,先將uboot的二進制文件拷貝到對應介質。有兩種不同方法燒寫,如下:
1. uboot二進制文件拷貝到emmc,是通過晶元供應商的下載工具軟體燒寫完成;
2. 拷貝到sd卡是在linux下,通過dd命令完成的。
燒寫完成後,將啟動撥碼撥到對應位置即可啟動uboot。
然後介紹kernel文件(uImange)和rootfs的啟動。如上所述,uImage和rootfs可以從emmc、sd卡或nfs拷貝到內核啟動。具體的啟動位置由uboot中的參數傳遞的內容決定。這些參數的內容在uboot中有寫死的值,也可以在uboot啟動階段進入到命令輸入界面,修改這些參數的值,來改變啟動位置。(作者:圍補)
進入uboot命令界面後,輸入如下一段命令,修改啟動參數,並重啟。
setenv loadaddr 0x10800000
setenv bootargs_base 'setenv bootargsconsole=ttymxc0,115200'
setenv bootargs_mmc 'setenv bootargs${bootargs} root=/dev/mmcblk0p1 rootwait rw video=mxcfb1:dev=ldb,LDB-XGA,if=RGB666video=mxcfb0:dev=hdmi,1920x1080M@60,if=RGB24 ip=dhcp'
setenv bootcmd_mmc 'run bootargs_basebootargs_mmc;mmc dev 1;mmc read ${loadaddr} 0x800 0x2000;bootm'
setenv bootcmd 'run bootcmd_mmc'
saveenv
run bootcmd
命令輸入完後,重啟開發板,即可按照上述命令中設置的參數來啟動系統。
下面我們來分析一下uboot階段輸入的啟動參數的意義,以便讀者自己修改相關內容,讓板子從自己需要的位置啟動。
首先介紹幾個命令。是在上面看到最多的setenv命令,該命令使用來設置或刪除某個環境變數的。當setenv後面只帶一個參數,該參數必須為已有的變數名,輸入命令回車後該變數即被刪除;當setenv後面有多個參數,將把其後第一個參數作為環境變數,後面其他參數作為該變數的值或內容。
第二個要解釋的命令mmc。在uboot命令界面中敲入mmc,回車,能夠看到其多個用法:
Usage:
mmc read addr blk# cnt
mmc write addr blk# cnt
mmc erase blk# cnt
mmc rescan
mmc part - lists available partition on currentmmc device
mmc dev [dev] [part] - show or set current mmcdevice [partition]
mmc bootpart [dev] [part] - show or set bootpartition
mmc list - lists available devices
解釋一下其中幾個用法:
mmc read addr blk# cnt 用來將硬碟(emmc/sd)中的內容讀取到內存中。其中addr指內存中的目標位置起始地址,blk#指被拷貝內容起始存儲塊的塊號,cnt指要被拷貝的塊數。一般每個塊的大小為512byte。
mmc dev [dev] [part] - show or set current mmc device [partition] 顯示或設置當前設備。命令mmc dev即為顯示當前是哪個device;mmc dev #意為設置「#」為當前設備。
第三個命令saveenv是保存環境變數的意思。環境變數設置後,使用該指令保存,下次重啟時會按照上次保存的設置啟動,就不用再次設置了。
最後,run命令比較明顯,「運行」的意思。一般加在某內容為可執行命令的變數前。
再來說明一下變數。在上述參數設置命令中,參數bootargs和bootcmd是uboot的參數,其功能和名稱不能被改變,其他都是用戶自定義的變數,可以改變其名稱。其中bootargs代表由uboot傳給內核的參數;bootcmd是uboot啟動時,系統自動載入的命令序列。如果設置了啟動參數後,想讓系統下次自動按照本次設置的方式啟動,則一定要把拷貝和啟動內核的語句設置為bootcmd的值,否則下次啟動無法自動載入並啟動內核。(作者圍補)
介紹完重要的命令及uboot環境變數後,我們再來看上面的啟動參數設置命令行:
setenv loadaddr 0x10800000
setenv bootargs_base 'setenv bootargsconsole=ttymxc0,115200'
setenv bootargs_mmc 'setenv bootargs${bootargs} root=/dev/mmcblk0p1 rootwait rwvideo=mxcfb1:dev=ldb,LDB-XGA,if=RGB666video=mxcfb0:dev=hdmi,1920x1080M@60,if=RGB24 ip=dhcp'
setenv bootcmd_mmc 'run bootargs_basebootargs_mmc;mmc dev 1;mmc read ${loadaddr} 0x800 0x2000;bootm'
setenv bootcmd 'run bootcmd_mmc'
saveenv
run bootcmd
按照上面對命令和參數的講解,做一些變數的替換之後,可以看到,此處只做了兩件事,一是設置環境變數bootargs的值,二是設置bootcmd的值,並保存。其中bootargs的值傳遞給內核,用來初始化一些設備和啟動rootfs;bootcmd的值用來啟動內核,即自動載入的命令序列。(最後一句run bootcmd是啟動,不再是設置命令了。)
對上述命令中,採用如此多自定義變數的原因是,有些調試工具命令行輸入不能過長,因此用中間自定義變數縮短一次性輸入的命令行長度。我們將不必要的自定義變數做替換掉,然後來分析其內容。
setenv bootargs console=ttymxc0,115200root=/dev/mmcblk0p1 rootwait rw video=mxcfb1:dev=ldb,LDB-XGA,if=RGB666 video=mxcfb0:dev=hdmi,1920x1080M@60,if=RGB24ip=dhcp
setenv bootcmd 'mmc dev 1;mmc read0x10800000 0x800 0x2000;bootm'
saveenv
run bootcmd
將自定義變數替代掉後,能看到,參數設置其實就是做了對兩個系統環境變數賦值的工作。下面具體分析各變數值得內容。
對bootargs的賦值,對要是跟rootfs啟動相關。內容是一個很大的字元串,不同項之間由空格隔開,也可以把由空格隔開的多項看做是多個參數。
第一項是console=ttymxc0,115200是選擇操作台,並設置波特率。
中間幾項root=/dev/mmcblk0p1 rootwait rw,是對rootfs啟動位置設置root=/dev/mmcblk0p1是指從設備mmcblk0的p1分區掛載rootfs。那麼mmcblk0到底是哪個設備呢?由於文件系統的掛載是在kernel啟動後進行的,而內核啟動後會安裝linux的分配方式給現有設備分配名稱,因此可對應區分設備。我使用的開發板上,emmc即為mmcblk0設備,sd安裝掛載順序依次後排。如果多個卡槽在系統啟動前都插上了sd卡,系統會安裝sd卡槽所在介面號依次分配設備名稱號。比如,兩個sd卡槽,slot2和slot3(對應匯流排號),只插一個sd開始,無論在哪個槽都是mmcblk1;但兩個都插上sd時,在slot2中的是mmcblk1,slot3中的則是mmcblk2。Ok,至此,從哪個設備掛載rootfs已經很清楚了。後面兩個參數,rw是聲明啟動許可權,即以讀寫方式啟動;rootwait是指等待設備/dev/mmcblk0p1設備就緒後才嘗試掛載rootfs。如果沒有此參數,linux內核啟動時可能會在存儲設備尚未就緒是就嘗試掛載rootfs,此時肯定掛載失敗,那麼啟動也就失敗了。
最後的幾個參數,video=mxcfb1:dev=ldb,LDB-XGA,if=RGB666video=mxcfb0:dev=hdmi,1920x1080M@60,if=RGB24 ip=dhcp,是做一些設備初始化的,主要是對視頻設備和網路,對不需要視頻設備的嵌入式系統可以不設置此項,ip也可以單獨設置。
然後是第二個環境變數bootcmd的設置,主要跟kernel啟動相關。
setenv bootcmd 'mmc dev 1;mmc read0x10800000 0x800 0x2000;bootm'
設置bootcmd內容為命令序列,用用單引號包圍,命令間由分號分隔。
按照上面對mmc命令的講解,第一個命令mmc dev 1,意思是將dev 1設置為當前設備。這里就是uImage啟動(拷貝)的位置。在我使用的開發板上,dev 1指放在卡槽slot2中的sd卡。此處由於linux內核沒有啟動,設備名稱不能按照linux分配方式確定。在我使用的開發板上,dev 2是放在卡槽slot3中的sd卡,dev3是emmc。對此句做相應修改,即可更改內核啟動位置。
mmc read 0x10800000 0x800 0x2000這句大家也應該可以明白意思了,即將存儲設備上從塊號0x800開始的0x2000個存儲塊的東西拷貝到內存0x10800000開始的空間內。
bootm也是uboot命令,用於載入uboot能辨認的操作系統映像。
『玖』 求解BootLoader具體解鎖原理
解鎖原理:在bootloader所在分區寫入一個標記,但我也不知道那個標記是什麼。好像不同品牌手機標記都不一樣。bootloader分區名稱:aboot
這個是可以的。需要的條件:你的設備root過且可以授權,可以刷入aboot。並且你得有已解鎖的aboot可刷(來自已解bootloader的機友提供的aboot分區文件)。
使用16進制編輯器破解版(過大文件不允許用戶未沖錢編輯保存)文件前面好大一段可能內含解鎖碼的亂碼文段(不用16進制編輯器的情況下),中間一小段是可以看懂的英文,後面是空的。解鎖碼可能是0123456789ABCDEF(老機型)或為空(直接使用fastboot oem unlock命令解鎖),如果不是那就文件中搜索test key找與他最鄰近的一串解鎖碼(有時不一定是16位:理論上解鎖碼可重復使用)。部分機型與上述機型略有出入。
希望能幫到您。祝您解鎖成功。