01介绍
今天的文章主题是分享与探讨关于Purple Pi OH开发板Android开发之搭建编译环境及编译Android固件。
为什么同样是ARM架构的芯片,我以前开发STM32的时候只需要在Windows里的MDK5点一点就可以了。现在我想要使用Purple Pi OH开发板进行RK3566芯片开发,反而要使用虚拟机,要使用Linux黑乎乎的终端敲打一长串的命令,要关注内核版本、编译工具链的安装和配置、开发环境是否支持编译等等!对比习惯了Windows开发的人员一时之间也是无法快速上手的。
因此在今天的文章中小智会跟你说为什么同样是嵌入式开发,我们需要学习如此多的知识和做这么多的准备。
在Linux虚拟机环境中进行RK3566开发有很多原因,这里我只例举比较重要的几个原因:
PC虚拟机通常具有比嵌入式硬件更强的计算和内存资源,这意味着在虚拟机上编译内核和程序可以大幅缩短编译时间。
使用虚拟机可以确保开发环境的一致性,有助于减少因环境差异导致的问题,尤其是在团队成员之间同步工作环境时。
通过虚拟机,可以将开发环境与主机系统隔离开来,避免对主机系统的潜在影响,如系统崩溃或数据丢失等风险。
在开发过程中,可能需要频繁地测试和修改系统配置,这可能会带来安全风险。使用虚拟机可以在一个封闭的环境中进行这些操作,从而保护主机系统不受潜在的恶意软件或误操作的影响。
某些开发工具和编译器可能只在特定的Linux发行版上提供最佳支持,使用虚拟机可以轻松地安装和运行这些工具。
综上所述,搭建Linux虚拟机环境对于RK3566开发来说是非常有益的,它不仅能够提高编译效率,还能提供一个安全、一致且易于管理的开发环境。
来看我们用到的开发板长什么样子
Purple Pi OH开发板
02固件源码获取
2.1源码下载
当我们拿到一块Linux开发板时,我们就需要同步进行开发的初期准备。
首先就是获取资料,通常包括板子的芯片手册、数据手册、原理图等。
获取到资料后第二步就是通过查阅资料了解到源码的获取方式,其他的芯片资料可以先不看。因为通常源码都非常大,我们需要时间从网络上进行获取。
第三步即开发环境搭建,通常我们也是通过官方资料查阅编译SDK所需要的环境要求并搭建一个编译环境。

注意:所有的补丁都是基于1.1中的sdk整包生成。

2.2开发环境搭建
接下来我们需要使用VMWare或者VirtualBox创建虚拟机,环境搭建的教程通常在网上搜索即可获取大量资料。
只要根据要求配置编译环境即可,以下是Android11推荐编译主机配置:
1.Ubuntu18.04 操作系统
2.64 位 CPU
3.16GB 物理内存+交换内存
4.250GB 空闲的磁盘空间
2.3VMWare文件传输
在完成源码获取和编译环境搭建后,我们需要将源码拖动到虚拟机内,这就涉及到Windows和Linux虚拟机之间的传输文件方式,通常我们可以通过共享文件夹、FTP或SFTP、网络传输工具等方式,我通常使用的是共享文件夹方式,其配置简单且速度快,方便开发。
它可以直接在Windows资源管理器中访问,即Linux虚拟机和Windows共享一块存储空间,两边都可以直接访问和操作。过去我总是在Windows下直接通过VScode打开文件夹进行编码,在Linux中进入文件夹直接编译或者复制出来在其他地方编译都可。
接下来我将讲解如何创建与配置共享文件夹:
1. 首先将VMWare Tools安装好,安装详细流程可以在网上搜索并学习。
2. 点击【编辑虚拟机设置】,选中【选项】即可查看到共享文件夹的设置,
如下图所示:

3. 点击【总是启用】,弹出下图中第二步的【添加共享文件夹向导】。
在电脑中选择合适的位置建立共享文件夹。这里我是和虚拟机位置放在一起的。
如下图所示:

4. 在设置好共享文件夹路径后,点击下一步时记得选中启用此共享。
如下图所示:

5. 接着我们在电脑资源管理器中访问位置即可查看到,此时往文件夹拖文件就可以在Linux中的/mnt/hgfs/文件夹下即可实时看到,如下图所示:

03SDK编译3.1源码解压
将源码传输进Linux中后,
我们通过如下命令可以将源码压缩文件解压缩至我们想要的路径:
cat purple_pi_android11.tar.gza* | tar -xz -C target_path
语句意思为在当前文件夹下查看全部以
“purple_pi_android11.tar.gza”开头的文件,
并将其结果使用tar命令解压至[ target_path ],target_path即你想要解压到的文件夹路径。
效果如下图所示:

3.2uboot编译
接着我们进入SDK根目录下的文件夹u-boot执行如下命令:
cd u-boot./make.shrk3566
执行命令后结果如下图所示:

若编译成功结果如下图所示:

3.3kernel编译
内核配置文件路径:kernel/arch/arm64/configs/rockchip_purple_pi_3566_defconfig设备树文件路径:kernel/arch/arm64/boot/dts/rockchip/
我们提供了两种显示屏的适配,分别是:
1. “ido-pi-oh3566-v1.dts”,显示屏驱动适配HDMI接口;
2. “ido-pi-oh3566-v1-dsi0-mipi.dts”,显示屏驱动适配MIPI接口;
我们以编译HDMI屏内核为例,编译命令如下:
cd kernel make ARCH=arm64 rockchip_purple_pi_3566_defconfig rk356x_evb.config android-11.configmakeARCH=arm64ido-pi-oh3566-v1.img-j10
命令解释:

分别是:
Purple Pi OH默认的配置文件,包含了该开发板的默认设置和选项;
Rockchip RK356x的配置文件,包含了针对该板的特定设置和选项;
Android 11版本的配置文件,包含了针对Android 11操作系统的特定设置和选项。

特别注意:
部分开发者遇到编译失败时,可能是虚拟机的内存分配不够,此时我们可以尝试调小并行任务数编译,例如 -j10调整为 –j4 或 –j1。
如果编译提示选择io_domain电压,vccio4和vccio5选择1.8v,其它选择3.3v。
以上方式编译完成后,kernel目录生成的boot.img文件不能直接烧录。
需要使用build.sh -K 命令来编译kernel,编译后烧写rockdev/Image-rk3566_r/boot.img。
单独编译kernel生成可直接烧录的boot.img。
此处的编译方法的前提已存在rockdev/Image-rk3566_r/boot.img文件(即Android代码已经完全编译过一次或者执行过build.sh -K)。
编译的原理为在kernel目录下将编译生成的 kernel.img 和 resource.img 替换到旧的 boot.img 中,命令如下:
cd kernel make ARCH=arm64 rockchip_purple_pi_3566_defconfig rk356x_evb.config android-11.configmakeARCH=arm64BOOT_IMG=../rockdev/Image-rk3566_r/boot.imgido-pi-oh3566-v1.img-j10
使用此方法编译出kernel/boot.img文件可以直接用于烧录至boot分区,kernel编译结果如下图所示:

3.4Android编译及固件生成步骤
使用如下命令编译
source build/envsetup.shlunch rk3566_r-userdebugmake-j10
编译过程如下图所示:

Android编译成功结果如下图所示:

需要编译内核选择的屏幕修改Android主显和系统方向时可以修改如下参数:
1)HDMI: A)device/rockchip/rk356x/rk3566_r/rk3566_r.mk PRODUCT_PROPERTY_OVERRIDES += vendor.hwc.device.primary=HDMI-A-1B)device/rockchip/rk356x/BoardConfig.mk SF_PRIMARY_DISPLAY_ORIENTATION := 0
2)MIPI: A)device/rockchip/rk356x/rk3566_r/rk3566_r.mk PRODUCT_PROPERTY_OVERRIDES += vendor.hwc.device.primary=DSI B)device/rockchip/rk356x/BoardConfig.mk SF_PRIMARY_DISPLAY_ORIENTATION := 270
3.5固件打包
编译完成后,执行 SDK 根目录下的 mkimage.sh 脚本生成固件,所有烧写所需的各分区镜像将都
rockdev/Image-rk3566_r/目录下,
命令如下:
./mkimage.sh
结果如下:

将所有分区镜像合并成单个的镜像,命令如下:
cd RKTools/linux/Linux_Pack_Firmware/rockdev/./mkupdate_rk356x.sh
结果如下:

执行mkupdate_rk356x.sh 命令后
会将各分区镜像合并成一个update.img 的镜像文件,如下图所示:

当我们做到这一步时,我们的固件编译就完成啦!
由于固件编译本身就是一个非常复杂和繁琐的活,因此本篇内容的篇幅较长,非常感谢有耐心看到这里的小伙伴!
-
Android
+关注
关注
12文章
4043浏览量
134834 -
开发板
+关注
关注
26文章
6521浏览量
121391 -
Purple
+关注
关注
0文章
8浏览量
408
发布评论请先 登录
【触觉智能 Purple Pi开发板试用】系统重烧固件及ffmpeg编译
【触觉智能 Purple Pi OH 开发板体验】检测Android系统的完备性
Purple Pi OH Android11 ROOT方法
Purple Pi OH Android11 ROOT方法
3568编译环境搭建
瑞芯微RK3566鸿蒙开发板Ubuntu虚拟机环境搭建教程,触觉智能Purple Pi OH主板
瑞芯微RK3566鸿蒙开发板Ubuntu虚拟机环境搭建教程,触觉智能Purple Pi OH主板
RK3568 Android11编译环境搭建及报错解决指南
Purple Pi OH又开外挂!带你搭建编译环境及编译Android 11固件
评论