Jimmy Chen

A Programmer

(原创)使用AOSP源码为Khadas VIM3编译系统镜像

  事情的开始是这样,去年在咸鱼蹲了一块Khadas VIM3的开发板,本来是想体验一下Fuchsia系统的的,但是Fuchsia系统对VIM3支持并不好,一直没有运行成功,但是呢,最近发现Google的Android Open Source Project(AOSP)项目已经支持Khadas VIM3了,所以就特意下载源码来了一个编译体验,下面是编译好后Android Version显示的信息,可以看到基于AOSP Master分之编译运行后,Android的版本显示Android S,内核版本是4.19,接下来简单介绍下编译刷机的过程和方法,另外对于repo工具和编译环境的准备,网上资料已经非常多了,各位同学可以上网进行查看

《(原创)使用AOSP源码为Khadas VIM3编译系统镜像》

AOSP源码下载

Google官方下载

在国外有条件的同学可以通过下面的方式进行源码的下载,国内的同学这节可以跳过了,直接看下一节通过清华镜像源进行下载

上面--depth=5表示指下载完之后每个git仓库只显示最近的5条修改,同时这个指令可以加快我们的下载速度

清华镜像源下载

清华镜像源的官网上已经有比较详细的说明了,如果不行看的话,可以直接无脑的运行下面两条指令进行下载

同样--depth=5表示指下载完之后每个git仓库指显示最近的5条修改,同时这个指令可以加快我们的下载速度

AOSP源码编译

有了AOSP源码,想要为Khadas VIM3编译系统镜像,其实也很简单,只需要执行下面几条指令,然后等待系统编译完成即可。

-j8编译使用8个线程进行编译,这个看大家电脑的配置就行。接下来就是漫长的等待,等待编译完成即可。

VIM3刷机方法

刷机的话首先需要让开发版进入刷机模式,VIM3有三个实体按键,在插入type-c后,快速按中间的按钮3下,按的时候会显示蓝灯,蓝灯熄灭后,开发版就进入刷机模式了,是否进入刷机模式可以通过lsusb指令进行查看,如下图显示ID显示为1b8e:c003即表示已经进入刷机模式了,

《(原创)使用AOSP源码为Khadas VIM3编译系统镜像》

随后进入到源码device/amlogic/yukawa/bootloader/目录内,执行下属指令

如果上面的指令无法执行(macOS不支持啊),也可以通过pyamlboot tool工具进行写入,想要使用pyamlboot tool工具,首先主机需要安装python3,以macOS系统为例,按照如下指令进行安装,其他系统可以参考进行安装

安装完毕,同样进入源码device/amlogic/yukawa/bootloader/目录,执行如下指令:

执行完效果如下:

《(原创)使用AOSP源码为Khadas VIM3编译系统镜像》

执行完上述指令后,开发版就进入了fastboot模式,同样在源码device/amlogic/yukawa/bootloader/目录执行如下指令:

非常重要的一点,执行完上述指令后,需要拔出type-c数据线,让开发板断电之后,再重新插入type-c数据线,让开发板自然进入fastboot模式,同样可以通过lsusb指令查看,这里显示1b8e:fada表示已经进入fastboot模式

《(原创)使用AOSP源码为Khadas VIM3编译系统镜像》

如果进入fastboot模式后,进入源码out/target/product/yukawa目录,执行如下fastboot指令进行镜像刷写,如果执行出错可以尝试断电再上电重试,或者从头再来让开发板进入刷机模式执行一遍

执行完后,开发板会直接重启,重启后理应能够直接进入系统了,当然这里需要通过HDMI接显示器才能看到。

基于源码编译VIM3 5.4内核

可以另外开启一个命令行窗口,执行下述指令

/path/to/your/aosp/source为AOSP源码的根目录,首先是先下载编译内核依赖的工具链,然后通过下述指令下载VIM3的内核源码,这里有两个版本,一个是4.19的内核,另一个则是5.4的内核,同学们可以按照自身需求进行下载和编译,这里如标题所说了,我们以5.4的内核为例

下载完内核源码之后,对于Ubuntu等Linux系统可以执行下述语句,设置编译环境,而如果同学用的是macOS系统的话,建议通过docker运行Ubuntu进行编译,博主试过在macOS本机系统上进行编译,发现有些编译依赖错误无法解决(也可能是博主最近才开始接触macOS,有好些地方不理解)

环境变量配置好后,便可以进行编译了

如果上述编译没有问题,那么之后需要将编译后的文件复制到AOSP源码中

执行完上述语句,现在可以回到AOSP的源码目录,重新编译boot.img即可,编译完boot.img后,我们通过fastboot指令重新刷写boot分区

重启后,在settings设备信息中可以看到,Kernel的版本已经更新为我们自行编译的版本,后面内核开发的同学就可以自由的玩转5.4版本的内核了。

《(原创)使用AOSP源码为Khadas VIM3编译系统镜像》

基于源码编译VIM3 u-boot

源码需要通过如下指令下载并切换到对应的分之和目录

在进行编译之前需要下载配置相应的编译链工具并配置环境变量,可按照下述指令进行:

通过上面的指令,我们完成了uboot的编译了,但是现在编译出来的Uboot二进制文件是无法直接烧写到开发板来运行的,需要进一步进行完善,首先到AOSP源码device/amlogic/yukawa/bootloader/fip_packages目录下,执行下面指令解压出vim3所需要的firmware文件

然后切换到device/amlogic/yukawa/bootloader目录下,执行如下指令生成最终的uboot文件

最后开发板使用的uboot刷机文件会生成在uboot-bins/u-boot.bin,之后就可以通过fastboot模式来烧写bootloader分区了。

总结

总的来说,现在看AOSP对Khadas VIM3的支持已经是相当的完善了,从bootloader、到kernel、再到Android都有完整的源码和编译支持,就是不知道后续Google是否有可能会将trusty TEE运行环境也移植到VIM3上,这个我们可以稍微进行期待。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注