公司最近评估T527,使用的是盈鹏飞嵌入式的T527开发板-AHD-X527,该开发板支持4路AHD摄像头输入,也可以支持6路,不过需要增加一个转换板。恰好符合我们的应用。以下操作都是在该开发板上操作,该产品介绍如下:
AHD-X527产品特性:
-
采用Allwinner公司Cortex-A55八核A527/T527处理器,运行最高速度为2.0GHZ(T527最高1.8GHZ);
-
支持Mali-G57 MC1 GPU,支持OpenGL ES 3.2/2.0/1.0, Valkan 1.1,OpenCL 2.0
-
支持4K/25fps H.264视频编码,支持4K/15fps MJPEG编码;
-
多格式4K/60fps视频解码 (H.265,H.264,VC-1, MPEG-1/2/4, VP8) ;
-
支持双屏异显;支持HDMI 2.0B, 分辨率最高4K@60fps;支持LVDS,分辨率最高1920x1080@60fps;支持MIPI DSI,分辨率最高2.5K@60fps(与LVDS复用);
-
支持1-4G Bytes LPDDR4X SDRAM;
-
支持EMMC 8G-64G大容量电子盘,可启动;
-
支持1路USB 3.0;支持3路USB2.0 HOST和一路OTG(TYPE-C接口);
-
支持2路I2C(其中一路支持掉电唤醒)、2路PWM(应用于背光);
-
支持双路千兆以太网;
-
支持3G/4G通信;
-
支持2路UART(TTL)、支持1路RS485、支持双路CAN BUS(2.0B,仅T527支持);
-
支持4路AHD摄像头输入,最高分辨率为1080p;支持MIPI CSI接口-1x4-lane/2x2-lane;
-
操作系统的支持,可预装Android13/LINUX 5.15/Ubuntu 22.04;
-
尺寸为146X119MM
AHD-X527产品功能:
开发调试
为了适配不同的主板,一般都需要进行dts的修改,SDK中u-boot有单独的dts,名字是uboot-board.dts;内核也有单独的dts,名字是board.dts;它们分别位于如下目录:
Uboot设备树路径:
/device/config/chips/<LICHEE_IC>/configs/<LICHEE_BOARD>/uboot-board.dts
Kernel设备树路径:
/device/config/chips/<LICHEE_IC>/configs/<LICHEE_BOARD>/linux-5.15/board.dts
备注:SDK表示SDK根目录;LICHEE_IC是选择的处理器,例如:a527; LICHEE_BOARD是您选择的板型,例如ahd_a527;
3.1、适配不同的显示屏
我司dts默认显示方式为LVDS,如需切换其他显示方式,可通过修改dts中的宏定义实现。屏幕显示是从uboot阶段开始,因此切换屏幕时需同步修改uboot-board.dts和board.dts。
值得注意的是,选择HDMI显示时,uboot-board.dts需要同步开启#define USE_HDMI和#define USE_EDP,如下图所示:
3.2、配置内核选项
执行如下命令,可通过menuconfig对内核选项进行图形化配置。
Host# ./build.sh menuconfig
Allwinner BSP选项中是全志官方的驱动(用户应尽可能使用官方驱动),用户可根据应用进行选择:
其中带[]的配置是不编译进内核的;带[]的配置是直接编译进入内核的,而带[M]的配置是编译成驱动模块( .so文件),用户可根据实际情况进行选择。
配置完成后,进行编译调试是起作用的。如果需要保存该内核配置,请执行如下指令:
Host# ./build.sh saveconfig
3.2.1、关于GPU驱动的编译说明
GPU的驱动可以使用闭源的驱动,使用闭源驱动时,选择配置如下:
同时要取消开源GPU驱动,见下图:
我司SDK中默认使用开源的驱动,见对应的内核配置文件,其中bsp_valhall_defconfig是闭源驱动的内核配置;bsp_defconfig是含有开源驱动Panfrost的内核配置。
3.3、配置buildroot根文件系统选项
执行如下命令,可通过menuconfig对文件系统选项进行图形化配置。
Host# ./build.sh buildroot_menuconfig
其中带[]的配置是不编译进根文件系统的;带[*]的配置是直接编译进根文件系统的,用户可根据实际情况进行选择。
配置完成后,进行编译调试是起作用的。如果需要保存该内核配置,请执行如下指令:
Host# ./build.sh buildroot_saveconfig
3.3.1、buildroot中关于GPU库的配置
Buildroot编译中,也需要选择对应GPU驱动的访问库,如果内核中GPU选择的是开源驱动Panfrost,那么该GPU的访问库一定要选择Mesa3D,具体位置在
Target packages->Graphic libraries and applications->mesa3d
见下图:
如果内核选择的是闭源驱动,那么buildroot的GPU访问库务必要选择sunxi_valhall的库,
推荐选择Target packages->allwinner platform private package select->allwinner->display->gpu_um_pub,具体选择如下:
这里有两个选择,如果您需要运行QT程序,且QT程序需要有显示服务器的情况下运行,请选择wayland;如果QT不需要显示服务器,请选择fbdev。
buildroot的GPU访问库选择sunxi_valhall库还有一种办法,路径Target packages-> Hardware handling->sunxi-mali-valhall, 如下图:
我们并不推荐这么选择,因为它不能够直观的反应GPU访问库的不同。
3.4、将预制文件pack进文件系统
在实际开发中,经常需要将应用程序或脚本等预制文件pack打包进文件系统,这时可以通过rootfs-overlay机制方式实现。我司SDK已经创建rootfs-overlay,位于 /buildroot/buildroot-202205/board/embfly目录下。
将相关需要pack打包进文件系统的文件放进相应目录(目录可自行创建)即可,rootfs-overlay机制会实现目录的"叠加"和"覆盖"。
点击查看代码
ping@embfly-server:~/work/x527_aiot_v14/TinaLinux/buildroot/buildroot-202205/board/embfly$ tree -L 3
.
└── overlay
└── common
├── embfly_test
├── etc
├── lib
├── stress_test
├── usr
└── var
8 directories, 0 files
SDK中还有一个办法可以预制文件pack进文件系统,执行./build.sh buildroot_menuconfig进行配置buildroot后,在Target packages->allwinner platform private package select-> allwinner->system,选中->busybox-init-base-files,见下图:
选择该配置后,编译时 /buildroot/config/buildroot/allwinner/system/busybox-init-base-files路径下的文件会覆盖到根文件系统下。具体会拷贝什么请参考busybox-init-base-files.mk文件。我司默认的buildroot配置文件中rootfs-overlay和busybox-init-base-files这两个都作为默认配置。不同的是,我司的根文件系统使用的是udev,因此把busybox-init-base-files中mdev启动进行了屏蔽。