0.前言
今年4月的时候申请了吉方工控的RK3568开发板试用,当时申请的开发板是这样的
这款开发板名为G5682。后因这款缺货,与厂家沟通,换了一款他们正在开发中的样机,长这样的
背面是这样的
这款开发板名为GI-3568-B _V0A,看了下PCB上面的信息,是22年24周生产的,那加上焊接的时间,应该是7月初左右生产出来的。看来笔者是成为这款开发板的第一批用户了。相比起G5682,这款开发板多了一个以太网口, SATA改成了msata接口,然后SD卡槽没了,取而代之的是后面的一大堆排针,其他相差不大。
刚拿到手的时候,这个板子上面有个Android11的系统,跟吉方的工程师沟通了一下,他们应该烧录的是其他3568主板的系统,很多外设都没有调试。看来笔者要自己动手,从零开始适配这款开发板了。
吉方的工程师比较大方,提供了原理图,那下面笔者就介绍下如何从零开始调试这款开发板。
1.准备工作
笔者计划是基于这款GI-3568-B开发板开发商显系列的产品。要想进行开发,首先就要拿到SDK,笔者手上正好有RK的Android11 SDK。SDK是用repo拉下来的,其目录如下
Android SDK的通用目录这里就不过多介绍了,介绍一下RK平台特有的几个目录。
kernel - 内核目录,Android的Linux内核版本是4.19
rkbin - RK的loader OPTEE等不开源BIN文件存放于此目录
RKDocs - RK的开发文档存放于此目录
RKTools - RK的烧录工具,固件打包工具等存放于此目录
rockdev - 编译固件最终输出目录
u-boot - uboot目录,RK的uboot常年是2017.09版本的
首先要编译一个能跑起来的版本,打通编译的流程。然后再进一步进行相关功能的调试。
按照RK的文档,
编译uboot的命令是
./make.sh rk3568,编译之后得到uboot的固件,同时会从rkbin中打包atf固件,optee固件
编译kernel的命令是
make ARCH=arm64 rockchip_defconfig rk356x_evb.config android-11.config
make ARCH=arm64 rk3568-evb1-ddr4-v10.img -j24
编译得到kernel的固件(kernel和dtb,开机动画打包在一起)
然后要编译Android
这里建议不要直接用RK SDK里面自带的哪个rk3568_r,将这个目录复制出来,比如复制为rk3568_test,然后将里面全部的rk3568_r都替换为rk3568_test,这样方便修改。然后在device/rockchip/rk356x/AndroidProducts.mk中增加这几行
这样,编译的命令是
source build/envsetup.sh
lunch rk3568_test-userdebug
make -j8
这里有可能会遇到内存不足的问题,在出现内存不足的时候,可以降低同时编译的线程数,然后重新开始编译。笔者的虚拟机16G内存,8个线程同时编译是没问题的。
之后执行./mkimage.sh打包
到这一步,软件开发的准备工作就完成了。后面可以针对硬件和特定需求进行定制开发。
2.调试串口
在系统运行起来之前的LOG都要通过串口查看,所以要先配置好调试串口。板上默认有个调试串口,在这个位置
其电路如下
这里可以使用那个RJ45的口,也可以使用这个4pin的口,由于这种RJ45的串口线很少见,所以笔者这里找了个232的串口板,然后从4pin座子上面接线。
这里有一个点要注意一下,SP3232E的最大波特率只有235k,说明书截图如下
而RK的SDK默认串口波特率都是1500000,且只能支持1500000和115200两种波特率。因此,这里需要改到115200
对于rkbin,需要修改miniloader的波特率,因为RK的uboot和miniloader之间支持参数传递,这个波特率会被传递到uboot里面,所以uboot不用修改
进入rkbin/tools目录,找到ddrbin_param.txt,将这个波特率修改为115200,
其他不用改,默认,然后执行
./ddrbin_tool ddrbin_param.txt ../bin/rk35/rk3568_ddr_1560MHz_v1.11.bin
就可以将rk3568_ddr_1560MHz_v1.11.bin这个文件里面的波特率改为115200。
然后回到uboot目录,执行./make.sh rk3568,即可得到新的固件。将这几个文件拷贝出来,
然后烧录到板上,如图所示
接好串口,设置波特率为115200,即可看到开机loader打印的信息
以及uboot打印的信息