搭建RK3568 Android11 编译环境以及编译固件

电脑配置

CPU 64位 越强劲越好;

磁盘:最好500GB以上(SDK压缩包约81GB;一套代码编完之后 占225GB;还要预留一些空间备用)。

虚拟机内存要求16GB以上,多多益善,小于16GB编译会报错。详见后文:【常见问题1:内存不够16GB,编Android出错 】 一节。

编译耗时参考数据:

build.sh默认为16线程并行编译;

虚拟机配置 I5 4核  2.9GHZ、DDR4 24GB ; -J8 ,全编 耗时8.5H;  -J16 ,全编 耗时8.5H;

由此可见4核8线程的PC,-J16 跟 -J8是一样的。

编译环境搭建

给虚拟机安装 ubuntu16.04 系统。

安装JDK8。

要求安装下列软件包:

sudo apt-get install 

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 lib32z-dev ccache libgl1-mesa-dev libxml2-utils xsltproc

unzip python-pyelftools python3-pyelftools device-tree-compiler libfdt-dev

libfdt1 libssl-dev liblz4-tool python-dev 

笔者是在RK3288 RK3399 Android8.1  Android9.0的编译环境基础上搭建的,补充安装下列软件包即可。

$sudo apt-get update

$sudo apt-get install libc6-dev-i386 x11proto-core-dev libx11-dev lib32z-dev ccache libgl1-mesa-dev unzip python-pyelftools python3-pyelftools device-tree-compiler libfdt-dev libfdt1 libssl-dev  python-dev

先计算SDK压缩包的MD5值,跟给来的MD5值对比,确认压缩包没损坏再解压

$md5sum rk_android11.0_sdk_220215.tgz 

$tar -xzvf rk_android11.0_sdk_220215.tgz 

编译SDK自带的板型

到SDK根目录下 执行:

$ source build/envsetup.sh

$ lunch

选55. rk3568_r-userdebug

执行编译脚本前 至少要source  lunch 一次,当想编另一个板型时,必须再执行一次source  lunch 。其作用是选定一个板型对应的配置并初始化编译环境变量。

简单了解一下build.sh:

$ ./build.sh --help
./build.sh: 非法选项 -- -
USAGE: [-U] [-CK] [-A] [-p] [-o] [-u] [-v VERSION_NAME]  
No ARGS means use default build option                  
WHERE: -U = build uboot                                 
       -C = build kernel with Clang                     
       -K = build kernel                                
       -A = build android                               
       -p = will build packaging in IMAGE      
       -o = build OTA package                           
       -u = build update.img                            
       -v = build android with 'user' or 'userdebug'    
       -d = huild kernel dts name    
       -V = build version    
       -J = build jobs    
 

所以,大多数情况下执行:

$ ./build.sh -UKApu

即可。

编译kernel时会弹出IO电压域确认提示框:

详情请看《Rockchip_Developer_Guide_Android11_SDK_V1.1.5_CN.pdf》  【RK356X IO-Domain GPIO电压配置确认,GPIO电压没配置对会导致芯片GPIO烧坏】 一节。

大意为:你首先要自己看原理图或者跟硬件同事确认各IO电压域选用的是1.8V还是3.3V;然后修改dts中pmu_io_domains节点的配置:

一般在kernel/arch/arm64/boot/dts/rockchip/rk3568-evb.dtsi中:

&pmu_io_domains {

status = "okay";

pmuio2-supply = <&vcc3v3_pmu>;

vccio1-supply = <&vccio_acodec>;

vccio3-supply = <&vccio_sd>;

vccio4-supply = <&vcc_1v8>;

vccio5-supply = <&vcc_3v3>;

vccio6-supply = <&vcc_1v8>;

vccio7-supply = <&vcc_3v3>;

};

然后在编译时 会弹出界面让你再确认一次,你按上面dts的配置选择并确认即可。

后续 如果dts中这部分不变 则不会再弹框;如果改变了 会让你再确认一次的。

一定要根据硬件实际情况来配置电压域,否则有烧器件的风险。

编译成功

经过漫长的等待,当看到这一段 即为已成功编译出固件:

#### build completed successfully (08:29:32 (hh:mm:ss)) ####

Build android ok!
make and copy android images
TARGET_PRODUCT=rk3568_r
TARGET_BASE_PARAMETER_IMAGE==device/rockchip/common/baseparameter/v2.0/baseparameter.img
HIGH_RELIABLE_RECOVERY_OTA=
BOARD_AVB_ENABLE=false
system filesysystem is ext4
create dtbo.img...
done.
create resource.img...
done.
create boot.img...
done.
create boot-debug.img...
done.
skip copy images: vendor_boot.img
skip copy images: vendor_boot-debug.img
create recovery.img...
done.
create super.img...
done.
create vbmeta.img...
BOARD_AVB_ENABLE is false, use default vbmeta.img
create misc.img.... done.
create uboot.img...
u-boot/trust.img not fount! Please make it from u-boot first!
create loader...
create config.cfg...
create baseparameter...done.
Make image ok!
Make update.img
start to make update.img...
Android Firmware Package Tool v2.0
------ PACKAGE ------
Add file: ./package-file
package-file,Add file: ./package-file done,offset=0x800,size=0x2ba,userspace=0x1
Add file: ./Image/MiniLoaderAll.bin
bootloader,Add file: ./Image/MiniLoaderAll.bin done,offset=0x1000,size=0x719c0,userspace=0xe4
Add file: ./Image/parameter.txt
parameter,Add file: ./Image/parameter.txt done,offset=0x73000,size=0x282,userspace=0x1
Add file: ./Image/uboot.img
uboot,Add file: ./Image/uboot.img done,offset=0x73800,size=0x400000,userspace=0x800
Add file: ./Image/misc.img
misc,Add file: ./Image/misc.img done,offset=0x473800,size=0xc000,userspace=0x18
Add file: ./Image/boot.img
boot,Add file: ./Image/boot.img done,offset=0x47f800,size=0x1f68800,userspace=0x3ed1
Add file: ./Image/dtbo.img
dtbo,Add file: ./Image/dtbo.img done,offset=0x23e8000,size=0x26f,userspace=0x1
Add file: ./Image/vbmeta.img
vbmeta,Add file: ./Image/vbmeta.img done,offset=0x23e8800,size=0x1000,userspace=0x2
Add file: ./Image/recovery.img
recovery,Add file: ./Image/recovery.img done,offset=0x23e9800,size=0x435c800,userspace=0x86b9
Add file: ./Image/baseparameter.img
baseparameter,Add file: ./Image/baseparameter.img done,offset=0x6746000,size=0x100000,userspace=0x200
Add file: ./Image/super.img
super,Add file: ./Image/super.img done,offset=0x6846000,size=0x60410e00,userspace=0xc0822
Add CRC...
Make firmware OK!
------ OK ------
********rkImageMaker ver 2.0********
Generating new image, please wait...
Writing head info...
Writing boot file...
Writing firmware...
Generating MD5 data...
MD5 data generated successfully!
New image generated successfully!
Making update.img OK.
Make update image ok!
/home/ubuntu/work/rk_android11.0_sdk_220215
make and copy packaging in IMAGE 
Generate patch for hardware/rockchip/libhwjpeg done
Generate patch for kernel done
Saved manifest to out/commit_id.xml
 

编译好的固件在rockdev/Image-rk3568_r目录下:

rockdev/Image-rk3568_r$ ls -al
总用量 3400364
drwxrwxr-x 2 ubuntu ubuntu       4096 4月  11 07:11 .
drwxrwxr-x 3 ubuntu ubuntu       4096 4月  11 07:10 ..
-rwxrwxr-x 1 ubuntu ubuntu    1048576 9月   7  2021 baseparameter.img
-rw-rw-r-- 1 ubuntu ubuntu   33081344 4月  11 04:22 boot-debug.img
-rw-rw-r-- 1 ubuntu ubuntu   32933888 4月  11 04:22 boot.img
-rwxrwxr-x 1 ubuntu ubuntu       6129 5月  14  2021 config.cfg
-rw-rw-r-- 1 ubuntu ubuntu        623 4月  11 02:35 dtbo.img
-rw-rw-r-- 1 ubuntu ubuntu     465344 4月  10 22:26 MiniLoaderAll.bin
-rw-rw-r-- 1 ubuntu ubuntu      49152 2月  19  2021 misc.img
-rw-rw-r-- 1 ubuntu ubuntu        630 4月  11 03:06 parameter.txt
-rw-rw-r-- 1 ubuntu ubuntu      49152 2月  19  2021 pcba_small_misc.img
-rw-rw-r-- 1 ubuntu ubuntu      49153 2月  19  2021 pcba_whole_misc.img
-rw-rw-r-- 1 ubuntu ubuntu   70633472 4月  11 05:59 recovery.img
-rw-rw-r-- 1 ubuntu ubuntu     224256 4月  10 22:39 resource.img
-rw-r--r-- 1 ubuntu ubuntu 1614876160 4月  11 07:08 super.img
-rw-rw-r-- 1 ubuntu ubuntu    4194304 4月  10 22:26 uboot.img
-rw-rw-r-- 1 ubuntu ubuntu 1724680778 4月  11 07:11 update.img
-rwxrwxr-x 1 ubuntu ubuntu       4096 2月  19  2021 vbmeta.img

常见问题1:内存不够16GB,编Android出错

编Android,才编几分钟就失败,看log 缓存,又看不到有error。

启动编译后,守着看或者将编译log写到文件中,会看到有提示:

start build android

21:10:55 ************************************************************

21:10:55 You are building on a machine with 9.76GB of RAM

21:10:55

21:10:55 The minimum required amount of free memory is around 16GB,

21:10:55 and even with that, some configurations may not work.

21:10:55

21:10:55 If you run into segfaults or other errors, try reducing your

21:10:55 -j value.

21:10:55 ************************************************************

============================================

原因是:虚拟机内存不够大,编Android11 内存需要16GB以上。

解决办法:增大内存。

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值