Roc-rk3399-pc build Android-7.1

来自百问网嵌入式Linux wiki

编译android 7.1固件

  • 下载Android-7.1 SDK

使用浏览器打开 h https://pan.baidu.com/s/1yjc9aMB-ds7Xixifgov0Gg 保存资料光盘中的 Firefly-sdk_v1 到自己的网盘中,让后进行下载。

  • 安装openjdk-8
sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
sudo apt-get install openjdk-8-jdk
sudo java -version
  • 安装基本依赖包
sudo apt-get install libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev g++-multilib \
 git flex bison gperf build-essential libncurses5-dev:i386 \
 dpkg-dev libsdl1.2-dev libesd0-dev \
 git-core gnupg flex bison gperf build-essential \
 zip curl zlib1g-dev gcc-multilib g++-multilib \
 libc6-dev-i386  lib32ncurses5-dev x11proto-core-dev libx11-dev \
 libgl1-mesa-dev libxml2-utils xsltproc unzip m4 \
 lib32z1-dev ccache make  tofrodos  p7zip-full \
 python-markdown libxml2-utils xsltproc zlib1g-dev:i386 -y
  • 使用FileZilla或其它软件上传下载后的Android-7.1_sdk 源码包,让后通过7z工具进行解压
7z x roc-rk3399-pc_android7.1.2_2019.08.08.7z.001

ROC-RK3399-PC产品编译方法

HDMI显示编译

./FFTools/make.sh  -d rk3399-roc-pc -j8 -l ROC_RK3399_PC-userdebug
./FFTools/mkupdate/mkupdate.sh -l ROC_RK3399_PC-userdebug

手动编译ROC-RK3399-PC

  • 编译前执行如下命令配置环境变量:
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
  • 打包成统一固件 update.img

编译完可以用Firefly官方的脚本打包成统一固件,执行如下命令:

./FFTools/mkupdate/mkupdate.sh update 

打包完成后将在rockdev/Image-ROC_RK3399_PC/下生成统一固件:update.img

在 Windows 下打包统一固件 update.img 也很简单,将编译生成的文件拷贝到 AndroidTool 的 rockdev\Image 目录中,然后运行 rockdev 目录下的 mkupdate.bat 批处理文件即可创建 update.img 并存放到 rockdev\Image 目录里。

  • 生成tf卡启动的固件

编译完可以用Firefly官方的脚本打包成统一固件,执行如下命令:

./FFTools/mkupdate/mkupdate.sh sdboot  

打包完成后将在rockdev/Image-ROC_RK3399_PC/下生成sdboot固件:SDBOOT-ROC_RK3399_PC_Android7.1.2_MP_181229.img

用瑞芯微 SD_Firmware_Tool 工具创建sd卡启动,首先选择设备,在功能模式选择sd启动,然后选择上传生成的固件,最后点击创建,界面如下图:

_images/android_compile_android1.png

烧写分区映像

编译的时候执行 ./mkimage.sh 会重新打包 boot.img 和 system.img, 并将其它相关的映像文件拷贝到目录 rockdev/Image-ROC_RK3399_PC/ 中。以下列出一般固件用到的映像文件:

   boot.img :Android 的初始文件映像,负责初始化并加载 system 分区。
   kernel.img :内核映像。
   misc.img :misc 分区映像,负责启动模式切换和急救模式的参数传递。
   parameter.txt :emmc的分区信息
   recovery.img :急救模式映像。
   resource.img :资源映像,内含开机图片和内核的设备树信息。
   system.img :Android 的 system 分区映像,ext4 文件系统格式。
   trust.img :休眠唤醒相关的文件
   rk3399_loader_v1.08.106.bin :Loader文件
   uboot.img :uboot文件

请参照 如何升级固件 一文来烧写分区映像文件。

如果使用的是 Windows 系统,将上述映像文件拷贝到 AndroidTool (Windows 下的固件升级工具)的 rockdev\Image 目录中,之后参照升级文档烧写分区映像即可,这样的好处是使用默认配置即可,不用修改文件的路径。

update.img 方便固件的发布,供终端用户升级系统使用。一般开发时使用分区映像比较方便。 __NOTITLE__