編譯 Android 7.1 (tvbox版本)固件
準(zhǔn)備工作
編譯 Android 對(duì)機(jī)器的配置要求較高:
64 位 CPU
16GB 物理內(nèi)存+交換內(nèi)存
30GB 空閑的磁盤空間用于構(gòu)建,源碼樹另外占用大約 25GB
官方推薦 Ubuntu 14.04 操作系統(tǒng),經(jīng)測試,Ubuntu 12.04 也可以編譯運(yùn)行成功,只需要滿足 http://source.android.com/source/building.html 里的軟硬件配置即可。編譯環(huán)境的初始化可參考 http://source.android.com/source/initializing.html 。
安裝 OpenJDK 8:
sudo apt-get install openjdk-8-jdk
提示:安裝 openjdk-8-jdk,會(huì)更改 JDK 的默認(rèn)鏈接,這時(shí)可用:
$ sudo update-alternatives --config java $ sudo update-alternatives --config javac
來切換 JDK 版本。SDK 在找不到操作系統(tǒng)默認(rèn) JDK 的時(shí)候會(huì)使用內(nèi)部設(shè)定的 JDK 路徑,因此,為了讓同一臺(tái)機(jī)器可以編譯 Android 5.1 及之前的版本,去掉鏈接更方便:
$ sudo /var/lib/dpkg/info/openjdk-8-jdk:amd64.prerm remove
Ubuntu 12.04 軟件包安裝:
sudo apt-get install git gnupg flex bison gperf build-essential \ zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev \ libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 \ g++-multilib mingw32 tofrodos gcc-multilib ia32-libs \ python-markdown libxml2-utils xsltproc zlib1g-dev:i386 \ lzop libssl1.0.0 libssl-dev
Ubuntu 14.04 軟件包安裝:
sudo apt-get install git-core gnupg flex bison gperf libsdl1.2-dev \ libesd0-dev libwxgtk2.8-dev squashfs-tools build-essential zip curl \ libncurses5-dev zlib1g-dev pngcrush schedtool libxml2 libxml2-utils \ xsltproc lzop libc6-dev schedtool g++-multilib lib32z1-dev lib32ncurses5-dev \ lib32readline-gplv2-dev gcc-multilib libswitch-perl \ libssl1.0.0 libssl-dev
下載 Android SDK
下載 tvbox 版本的SDK
Android SDK 源碼包比較大,可以通過如下方式獲取Android7.1源碼包:[下載鏈接]
下載完成后先驗(yàn)證一下 MD5 碼:
$ md5sum /path/to/Firefly-RK3399_Android7.1.2_git_20180126.7z 699cff05bfa39a341e7aae3857cea4a7 Firefly-RK3399_Android7.1.2_git_20180126.7z
確認(rèn)無誤后,就可以解壓:
mkdir -p ~/proj/firefly-rk3399 cd ~/proj/firefly-rk3399 7z x /path/to/Firefly-RK3399_Android7.1.2_git_20180126.7z -r -o./ git reset --hard
注意:解壓后務(wù)必要先更新下遠(yuǎn)程倉庫,以下為從 gitlab 處更新的方法:
1. 進(jìn)入SDK根目錄 cd ~/proj/firefly-rk3399 2. 下載遠(yuǎn)程bundle倉庫 git clone https://gitlab.com/TeeFirefly/rk3399-nougat-bundle.git .bundle 3. 若下載倉庫失敗,目前bundle倉庫大約1.4G左右,所以同步的時(shí)候可能會(huì)出現(xiàn)卡住或失敗的問題, 可以從下方的百度云鏈接下載并解壓到SDK根目錄,解壓指令如下: 7z x rk3399-nougat-bundle.7z -r -o. && mv rk3399-nougat-bundle/ .bundle/ 4. 更新SDK,并且后續(xù)更新不需要再次拉取遠(yuǎn)程倉庫,直接執(zhí)行以下命令即可 .bundle/update 5. 按照提示已經(jīng)更新內(nèi)容到 FETCH_HEAD,同步FETCH_HEAD到firefly分支 git rebase FETCH_HEAD
[bundle壓縮包]https://pan.baidu.com/s/1ZS130eZcNDmKvBN55oZ5Bg#list/path=%2Fsharelink1414141670-712292296135918%2FAndroid7.1%2FFirefly-RK3399_Android7.1.2_git_20180126%2Fbundle&parentPath=%2Fsharelink1414141670-712292296135918
tvbox版本SDK的整體編譯
HDMI顯示編譯
./FFTools/make.sh -d rk3399-roc-pc -j8 -l ROC_RK3399_PC-userdebug ./FFTools/mkupdate/mkupdate.sh -l ROC_RK3399_PC-userdebug
手動(dòng)編譯ROC-RK3399-PC
編譯前執(zhí)行如下命令配置環(huán)境變量:
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar
編譯kernel:
cd ~/proj/firefly-rk3399/kernel/ make ARCH=arm64 firefly_defconfig make -j8 ARCH=arm64 rk3399-roc-pc.img
編譯uboot:
cd ~/proj/firefly-rk3399/u-boot/ make rk3399_box_defconfig make ARCHV=aarch64 -j8
編譯android:
cd ~/proj/firefly-rk3399/ source build/envsetup.sh lunch ROC_RK3399_PC-userdebug make -j8 ./mkimage.sh
打包成統(tǒng)一固件 update.img
編譯完可以用Firefly官方的腳本打包成統(tǒng)一固件,執(zhí)行如下命令:
./FFTools/mkupdate/mkupdate.sh -l ROC_RK3399_PC-userdebug
打包完成后將在rockdev/Image-XXX/ 目錄下生成統(tǒng)一固件: product名XXX_XXX_日期XXX.img
在 Windows 下打包統(tǒng)一固件 update.img 也很簡單,將編譯生成的文件拷貝到 AndroidTool 的 rockdev\Image 目錄中,然后運(yùn)行 rockdev 目錄下的 mkupdate.bat 批處理文件即可創(chuàng)建 update.img 并存放到 rockdev\Image 目錄里。
生成tf卡啟動(dòng)的固件
編譯完之后,先執(zhí)行以下命令,然后用Firefly官方的腳本打包成統(tǒng)一的SD卡固件,執(zhí)行如下命令:
./mkimage sdboot ./FFTools/mkupdate/mkupdate.sh -l ROC_RK3399_PC-userdebug
打包完成后將在rockdev/Image-XXX/ 目錄下生成統(tǒng)一固件: product名XXX_XXX_日期XXX.img
(注意:SD卡固件以及EMMC固件在生成的時(shí)候名字并無不同,在官網(wǎng)資源上面的帶SD字樣的固件是在打包生成之后,手動(dòng)修改的名字,用以用戶做區(qū)分)
用瑞芯微 SD_Firmware_Tool 工具創(chuàng)建sd卡啟動(dòng),首先選擇設(shè)備,在功能模式選擇sd啟動(dòng),然后選擇上傳生成的固件,最后點(diǎn)擊創(chuàng)建,界面如下圖:
燒寫分區(qū)映像
編譯的時(shí)候執(zhí)行 ./mkimage.sh 會(huì)重新打包 boot.img 和 system.img, 并將其它相關(guān)的映像文件拷貝到目錄 rockdev/Image-roc_3399_pc/ 中。以下列出一般固件用到的映像文件:
boot.img :Android 的初始文件映像,負(fù)責(zé)初始化并加載 system 分區(qū)。
kernel.img :內(nèi)核映像。
misc.img :misc 分區(qū)映像,負(fù)責(zé)啟動(dòng)模式切換和急救模式的參數(shù)傳遞。
parameter.txt :emmc的分區(qū)信息
recovery.img :急救模式映像。
resource.img :資源映像,內(nèi)含開機(jī)圖片和內(nèi)核的設(shè)備樹信息。
system.img :Android 的 system 分區(qū)映像,ext4 文件系統(tǒng)格式。
trust.img :休眠喚醒相關(guān)的文件
rk3399_loader_v1.08.106.bin :Loader文件
uboot.img :uboot文件
請(qǐng)參照 如何升級(jí)固件 一文來燒寫分區(qū)映像文件。
如果使用的是 Windows 系統(tǒng),將上述映像文件拷貝到 AndroidTool (Windows 下的固件升級(jí)工具)的 rockdev\Image 目錄中,之后參照升級(jí)文檔燒寫分區(qū)映像即可,這樣的好處是使用默認(rèn)配置即可,不用修改文件的路徑。
update.img 方便固件的發(fā)布,供終端用戶升級(jí)系統(tǒng)使用。一般開發(fā)時(shí)使用分區(qū)映像比較方便。
-
嵌入式主板
+關(guān)注
關(guān)注
7文章
6096瀏覽量
36130 -
安卓
+關(guān)注
關(guān)注
5文章
2146瀏覽量
58294 -
Firefly
+關(guān)注
關(guān)注
2文章
541瀏覽量
7388
發(fā)布評(píng)論請(qǐng)先 登錄
RK3399 Android7.1 DTS介紹
RK3399 Android7.1 SDK軟件介紹
RK3399 android7.1打包固件出現(xiàn)錯(cuò)誤怎么解決?
RK3399 Android 7.1亮度調(diào)節(jié)的步驟有哪些呢
如何對(duì)RK3399 Android7.1進(jìn)行編譯呢
介紹瑞芯微RK3399固件在windows系統(tǒng)下燒寫的步驟
分享一種Face-RK3399 Android固件產(chǎn)品的編譯方法
RK3399編譯Android7.1 Industry固件步驟分析
RK3399 Android7.1 WiFI關(guān)閉屏幕后DLNA無法發(fā)現(xiàn)設(shè)備
RK3399 Android7.1 Audio中的MCLK時(shí)鐘相關(guān)資料分享
RK3399 Android7.1系統(tǒng)重啟調(diào)用過程相關(guān)資料介紹
RK3399 Android 7.1系統(tǒng)TSADC驅(qū)動(dòng)流程小結(jié)
ROC RK3399 PC Pro源代碼Android 7.1 industry SDK

ROC RK3399 PC Pro固件Android 7.1(industry)固件

ROC RK3399 PC Pro固件Android10.0

評(píng)論