三防平板設計-刷機的基礎知識
時間:2024-08-23 作者:樂凡信息 瀏覽:253

三防平板電腦的刷機就是將操作系統和應用程序重新裝入計算機的一個過程,操作系統和應用程序是由工具軟件封裝而成的壓縮包或者鏡像包,作為平板電腦的刷機文件來使用。平板電腦中的刷機文件有時也稱為刷機固件,還有的叫做刷機包、ROM 包(因為平板電腦中存放固件的閃存芯片是 ROM 中的一種,所以又叫 ROM 包)。我們自己通常使用的刷機固件內一般不包括引導加載程序,如 U-Boot 代碼等。當把刷機文件刷入電腦后,刷機壓縮包或者鏡像包就會進行自解壓、復制、安裝等操作,將操作系統和應用程序安裝到平板電腦中,此時平板電腦就可以正常運行了。

我們所使用的刷機文件其格式多種多樣,平常用到的有以.zip 結尾的壓縮文件、以.img結尾的鏡像文件(又叫映像文件,簡稱映像)、以.bin結尾的二進制文件,還有以.fw為結尾的固件文件等,這些不同結尾的文件是使用不同的工具軟件和程序經過打包封裝后形成的。例如,使用 RAR 壓縮軟件可以將多個文件及多個文件夾等壓縮成一個.zip 結尾的壓縮包,使用mkimg工具軟件或者UltraISO可以將多個文件及多個文件夾等封裝成為一個以.img結尾的鏡像包,其他的.bin和.hex以及.fw等工具軟件都是通過不同的工具程序制作而成。

那么這么多不同格式的刷機文件在壓縮打包之前是如何得來的呢?是經過編譯器編譯形成的。因為程序設計人員所編寫的代碼一般 CPU 并不能讀懂,只有經過編譯器編譯變成二進制的機器碼以后,CPU 才能讀懂這些代碼并按要求執(zhí)行具體的操作。代碼經過編譯后會形成一個或多個文件及文件夾,經過打包封裝后就形成刷機文件了。

那么編譯之前的文件是如何得來的呢?是由程序設計人員編寫的,包括很多文件及文件夾和工具軟件等,這些人工編寫的代碼還需經過編譯才能被CPU識別和使用。

那么這些文件是怎么被編譯的呢?由于操作系統不同,甚至 CPU 或者硬件不同,編譯器都會有所不同,而且編譯器的稱呼和名稱各不相同。下面就以平板電腦中常見的安卓(Android)系統為例說明編譯過程,希望能夠對平板電腦的刷機和維修起到進一步的分析和理解作用。

編譯對計算機的硬件有些要求,否則不能完成編譯,大致要求如下:Linux 操作系統的ubuntu或Widnows操作系統的XP或以上版本,CPU雙核或四核,內存保證在2GB以上,硬盤空間50G以上。

下面是Android 系統的編譯過程和步驟(因為Android版本不同,所以編譯步驟不會完全一樣,僅供參考):

(1)安裝必要的軟件環(huán)境

安裝Java sdk,執(zhí)行JDK安裝文件,配置JDK環(huán)境變量,安裝依賴包(一些其他的工具程序)。

(2)設置環(huán)境變量

設置環(huán)境變量的作用是告訴編譯器相關工具程序所在磁盤的具體位置,通常使用 export來設置環(huán)境變量,例如如下語句:

#export JAVA_HOME=

#export CLASSPATH=

#export PATH=

(3)安裝repo(用來更新Android源碼)。

(4)初始化repo。

(5)設置Git。

Git 是 Linux Torvalds 為了幫助管理 Linux 內核而開發(fā)的一個開放源碼的分布式版本控制系統,因為Android是由Kernel、Dalvik、Bionic、Prebuild、Build等多個Git項目組成,所以Android項目編寫了一個名為repo的python的腳本來統一管理這些項目的倉庫,使得Git的使用更加簡單。

(6)同步源代碼

① 創(chuàng)建工程目錄,例如如下命令:

$ mkdir myandroid

$ cd myandroid

② repo初始化以及同步代碼,命令如下:

$repo init -u https://android.googlesource.com/platform/manifest

在此過程中需要輸入名字和email地址。初始化成功后,會顯示:


repo initialized in /android

在~/android下會有一個.repo的隱藏目錄:

$repo sync同步(“repo sync”開始下載源代碼,其大小約為4GB左右,這一步會花費很長的時間,根據平板電腦配置和網速不同,可能需要幾個小時、十幾個小時,甚至幾十個小時不等)。

下載完源代碼后,在源碼目錄里大致有以下一些目錄和文件:

|--Makefile|--bionic (bionic C庫)

|--bootable (啟動引導相關代碼)

|--build (存放系統編譯規(guī)則及generic等基礎開發(fā)包配置)

|--cts (Android兼容性測試套件標準)

|--dalvik (經過Google優(yōu)化了的Java虛擬機)

|--development (應用程序開發(fā)用的一些文件夾,包括模擬器和工具等)

|--external (Android使用的一些外部功能庫)

|--frameworks (核心框架—Java及C++語言)

|--hardware (和硬件有關的一些HAL代碼)

|--out (編譯完成后的代碼輸出到此目錄)

|--bionic (Android編譯過程所需要的一些庫)

|--repo (主要是同步管理所用到的一系列文件)

|--packages (應用程序包)

|--prebuilt (x86和ARM架構下預編譯的一些資源)

|--sdk (SDK及模擬器)

|--system (文件系統庫、應用及組件—C語言)

`--vendor (廠商定制代碼)

(7)編譯Android源碼

源碼是由程序設計人員編寫的代碼,又叫源代碼,這類代碼只有經過(編譯器/編譯程序)編譯后,成為二進制的機器碼,才能被 CPU 識別和運行,所以代碼下載完成后需要進行編譯。為了保證編譯成功,一般需要增加SWAP分區(qū)的大小。編譯的步驟如下:

編譯初始化;

選擇編譯目標;

在終端執(zhí)行下面的命令:

lunch

執(zhí)行命令后選擇你要編譯的設備,初始化編譯的相關文件。

$ cd myandroid

$ make(開始編譯,此過程需要很長時間,根據機器配置不同,大約需要幾個小時左右)

Android 編譯完成后,將會在根目錄下生成一個 out 文件夾,所有生成的內容均放在這個文件夾中。

Out文件夾中有相關目標機的主要文件夾out/target/product/generic/里的文件內容:

|-- android-info.txt

|-- clean_steps.mk

|-- data

|-- obj

|--ramdisk.img

|-- root

|-- symbols

|-- system

|--system.img

|--userdata.img

說明:system 目錄是主要的文件系統;data 目錄是存放數據的文件系統。以.img 結尾的文件是目標映像文件,其中 ramdisk.img 是作為內存盤的根文件系統映像,system.img 是主要文件系統的映像,userdata.img 是數據內容的映像。這幾個 image 文件是運行時真正需要的文件。

(8)使用模擬器emulator,在模擬器上運行編譯好的鏡像文件:

$ emulator -system system.img -data userdata.img -ramdisk ramdisk.img

最后進入 Android 桌面,這就說明編譯成功了。此時并沒有編譯 Linux 內核(Kernel),只是模擬運行,包括模擬一些尚未創(chuàng)建的環(huán)境(包括內核和CPU)。

(9)編譯模塊

Android 中的應用程序可以單獨編譯,編譯后生成相對應的以.apk 為結尾的 APK 包,編譯后要重新生成system.img。

(10)編譯SDK

形成Android的開發(fā)工具,開發(fā)應用程序的工具包集合,是整體開發(fā)中所用到的工具包。

(11)編譯Linux內核映像

在Android源碼中,并不包括Android的Linux內核,所以Linux內核還需要單獨下載和編譯。

準備交叉編譯工具鏈;

設定環(huán)境變量;

復制或者下載合適的內核源代碼,例如,Linux-2.6.30或者其他版本的源代碼;

解壓上述內核源碼;

設定交叉編譯參數;


Nand backup—NAND備份;

Nand + ext backup—NAND備份(系統和ext 分區(qū)一同備份);

Nand restore—NAND還原;

BART backup—BART 備份 (包括系統和ext 分區(qū));

BART restore—還原最后一次的BART備份;

Flash zip from sdcard—從SD卡根目錄的.zip刷機升級;

Wipe—清除數據;

Partition sdcard—SD卡分區(qū)(現在多為TF卡)。

Fastboot:

從字面上理解就是“快速引導”的意思,其實Fastboot也是一個程序,此模式下不加載內核及文件系統,它比Recovery更底層,更接近硬件層,當不能進入Recovery的時候,可以進入該模式試試,不過在該模式下需要和電腦相連,平板電腦的 USB 口有 OTG 功能,并且電腦端需要裝有ADB驅動(Android Debug Bridge,Android debug工具,是一個客戶端—服務器端的程序, 其中客戶端是用來操作的電腦或者一個終端,服務器端是 Android設備如平板電腦。ADB 驅動就是三防平板電腦與 Android 設備通信的客戶端驅動程序。例如手機管家和卓大師刷機專家等都是通過ADB驅動來進行管理設備的),常用的功能有:

update:更新、刷機;

flashall:刷入單個或者多個鏡像文件,如 boot.img、system.img、recovery.img 鏡像文件;

erase <partition>:擦除單個或者多個鏡像。