概述
本文描述RK3506 Linux SDK的编译和烧写。
编译环境准备
前面我们讲述了安装vscode和设置步骤。对于刚入门的小伙伴,对于ubuntu的熟练程度还不够,因此我们使用vmware + vscode ssh的方式,搭建开发环境,RK3506的源码放入vmware虚拟机,平时定制开发的时候,我们使用vscode的ssh方式,远程修改RK3506的源码,下面是环境搭建的步骤
1、解压RK3506 Linux的源码放入vmware ubuntu中,如下所示:
2、在wmware ubuntu中安装ssh服务器,
sudo apt install openssh-server net-tools
3、获取vmware ubuntu的网卡的ip地址,按顺序执行箭头所指的地方,获得ubuntu的网卡地址为192.168.199.128
4、打开vscode。点击箭头所指的地方
5、点击箭头所指的地方,打开ssh配置
弹出如下的对话框
之前我们获得了ubuntu的网卡地址。输入如下的信息
其中,yanl1229是我的主机名字,替换为自己安装的虚拟机的主机名即可(登录时的用户名),然后回车,弹出保存ssh账户的信息。
我选择为第一个。至此ssh登录设置完成,在vsocde的右侧可以看到:
然后点击箭头所指的地方,开始ssh服务器链接
选择后,弹出如下的对话框,选择linux平台
然后选择Continue继续
输入ssh 服务器的地址,也就是ubuntu的登录密码,然后等待链接完成,成功后,如下所示:
链接完成后。我们点击Open Folder,打开RK3506_Linux代码
选择RK3506 Linux后,点击OK,最后的打开效果,如下所示:
编译
1、产品配置文件的选择
当我们首次拿到官方的sdk时,官方的sdk只保留了evb相关的产品配置。我们可以根据自己的硬件平台最小系统的组成,选择合适的产品配置文件:
1)最小系统的电源设计:
电源设计,主要是关注电源的输出,在RK3506上官方提供了两种电源的设计实现,分离器件和使用pmic。分离器件,系统的电源不受软件的控制,由硬件控制实现,使用pmic的芯片,则使用软件编程的方式,实现对系统电源的控制;例如我使用的硬件平台,使用的分离器件的电源管理方式
2)flash的类型
RK3506 可以分为RK3506 G2 和RK3506 B RK3506J等型号,对于我使用的是RK3506 G2平台,他支持sd/emmc,spi Flash。我默认使用SPI Flash作为系统镜像的存储位置;因此在选择的时候,使用带有nand flash标识的产品配置文件,作为参考;
3)ddr的配置
RK3506 支持外接DDR和内置DDR, 我使用的平台是RK3506 G2,他支持内置DDR,因此选择产品配置文件的时候,选择带有RK3506 G2的标识作为参考;
通过上述的选择要求,我们最终选择如下的产品配置文件:
RK3506_Linux/device/rockchip/.chips/rk3506/rockchip_rk3506_g_evb2_defconfig
RK_ROOTFS_UBI=yRK_ROOTFS_INSTALL_MODULES=yRK_WIFIBT_CHIP="AP6256"# RK_ROOTFS_LOG_GUARDIAN is not setRK_UBOOT_CFG_FRAGMENTS="rk3506_tb"RK_UBOOT_SPL=yRK_KERNEL_CFG="rk3506_defconfig"RK_KERNEL_CFG_FRAGMENTS="rk3506-display.config"RK_KERNEL_DTS_NAME="rk3506g-evb2-v10"RK_BOOT_COMPRESSED=yRK_BOOT_FIT_ITS_NAME="thunderboot.its"RK_RECOVERY_FIT_ITS_NAME="thunderboot4recovery.its"RK_FLASH_SIZE=2048RK_EXTRA_PARTITION_1_SRC="rk3506_oem"RK_PARAMETER="parameter-128M.txt"RK_USE_FIT_IMG=y
2、编译步骤
顺序执行如下的步骤,打开vscode中的终端
在vscode RK3506_Linux终端中执行如下的指令
我们选择9,回车后,生成编译配置文件。生成路径如下所示:
配置完成后,首次编译,我们直接不带任何参数,直接执行
其他编译选项
除了支持全部编译外,我们还可以单独选择编译bootloader,kernel和rootfs
bootloader编译选项
kernel编译选型
rootfs的编译
打包为update.img
烧写
编译完系统后,我们打开烧写工具,如下所示:
在烧写系统前,我们需要将板子设置为烧写模式,RK3506支持两种烧写模式Maskrom和Loader。如果你的板子之前从未烧写过镜像。上电后,由于存储未发现启动的镜像,系统自动进入maskrom模式,如下所示:
我们也可以手动进入maskrom烧写模式,按下boot按键,然后给板子重新上电,CPU自动进入maskrom模式;maskrom还还有一个好处,就是当我们的系统变砖进入不了loader模式的时候,可以使用maskrom模式下,继续烧写系统。
Loader模式
Loader模式是RK自己在uboot中定制开发实现的,Loader进入方式为:
按下recovery按键,然后给板子供电,进入Loader模式,烧写工具显示如下:
烧写 update.img镜像
点击固件按钮,弹出选择固件文件的对话框
选择好烧写的固件后,点击打开,完成加载后,如下所示:
然后点击升级按钮,开始烧写
分区烧写
我们在开发过程,比如我们开发驱动代码,文件系统不进行修改,那么我们可以使用分区烧写,以下以boot的分区烧写为例讲述烧写的方法,其他的分区操作方法是一样的,这里不再讲述。
1、板子进入烧写模式
2、点击下载镜像按钮
4、导入配置信息
鼠标右键。弹出导入信息,然后导入RKDevTool\RKDevTool_Release\rk3506-config.cfg配置文件
导入完成后,弹出如下的信息
3、读取设备分区表
点击设备分区表按钮,读取设备分区表,如下所示:
4、选择boot镜像
点击箭头所指的地方,弹出选择boot镜像对话框
选择完镜像后,选中烧写boot的选项
然后点击执行,进入烧写
烧写完成后,系统自动重启;
总结
本文描述了RK3506 Linux SDK的编译和烧写的方法,下一篇,讲述RK3506 Linux的串口驱动的调试和应用开发。