板子用的是RK3568卡片电脑,操作简单,主要分两大步骤:
一、旋转屏幕横屏显示
1.旋转uboot和内核
修改如下文件:
rk3568_linux_sdk/kernel/arch/arm64/boot/dts/rockchip/rk3568-atk-atompi-ca1-720p.dts
rk3568_linux_sdk/kernel/arch/arm64/boot/dts/rockchip/rk3568-atk-atompi-ca1-1080p.dts
logo,rotate = <3>;
logo,rotate = <1>;代表逆时针旋转 90 度
logo,rotate = <2>;代表逆时针旋转 180 度
logo,rotate = <3>;代表逆时针旋转 270 度
logo,rotate = <0>;代表逆时针旋转 360 度
上面为什么要写成3呢,因为正点原子1080p屏幕是倒向显示的,所以要旋转270°,如果屏幕接口类型为lvds则修改route_lvds。
2.旋转buildroot桌面
可参考瑞芯微官方文档:Rockchip buildrootWeston开发指南
修改如下文件:
rk3568_linux_sdk/buildroot/board/rockchip/common/base/etc/xdg/weston/weston.ini
[output]
name=DSI-1
transform=rotate-90
# normal|90|180|270|flipped|flipped-90|flipped-180|flipped-270
buildroot系统启动完之后也可以修改weston.ini文件的,只不过没那么方便而已。
启动系统后weston.ini文件路径:/etc/xdg/weston/weston.ini
3.旋转触摸
一般是不用改的,如果触摸不正常才需要改动设备树。(我使用的正点原子1080屏就不用改)
修改如下文件:
rk3568_linux_sdk/kernel/arch/arm64/boot/dts/rockchip/rk3568-atk-evb1-ddr4-v10.dtsi
touchscreen-inverted-x;
touchscreen-swapped-x-y;
gt911:代表触摸芯片是gt911的屏幕。
4.更换开机logo
准备好自己的两张图片,尺寸要与sdk里面的一样:
uboot图片:logo.bmp
kernel图片:logo_kernel.bmp
把两张图片覆盖掉rk3568_linux_sdk/kernel/中的图片。
二、更换自启动程序
1.修改分区文件
瑞芯微官方分区文件分了好几个区的,而且根目录所在分区很小,不是很合理;现在要把所有可用空间都划分给根目录所在的分区。
修改文件如下:
rk3568_linux_sdk/device/rockchip/rk356x/parameter-buildroot-fit.txt
FIRMWARE_VER: 1.0
MACHINE_MODEL: RK3568
MACHINE_ID: 007
MANUFACTURER: RK3568
MAGIC: 0x5041524B
ATAG: 0x00200800
MACHINE: 0xffffffff
CHECK_MASK: 0x80
PWR_HLD: 0,0,A,0,1
TYPE: GPT
CMDLINE: mtdparts=rk29xxnand:0x00002000@0x00004000(uboot),0x00080000@0x00006000(boot),-@0x00086000(rootfs:grow)
uuid:rootfs=614e0000-0000-4b53-8000-1d28000054a9
主要改动的是CMDLINE那一行的配置。
改动后效果如下:
2.修改Qt Demo编译脚本
这里要修改两个文件,对应的是正点原子720p和1080p的自启动程序,主要目的是为了不创建S50QDesktop脚本文件。(如果觉得麻烦可以直接把mk文件删掉)
rk3568_linux_sdk/buildroot/package/alientek/qt_demo/720p_demo/720p_demo.mk
rk3568_linux_sdk/buildroot/package/alientek/qt_demo/1080p_demo/1080p_demo.mk
720p_demo.mk屏蔽内容如下:
1080p_demo.mk屏蔽内容如下:
上面图片中最底下那几行基本都是影音相关的工具。
3.更换自启动程序
①.修改安装脚本
rk3568_linux_sdk/buildroot/package/alientek/atk_installs/atk_installs.mk
去掉上图中的/appData,然后新增两行:
cp -r $(@D)/MainBasic $(TARGET_DIR)/opt/apps
cp -r $(@D)/S50QDesktop $(TARGET_DIR)/etc/init.d
MainBasic:开机自动的程序
S50QDesktop:自启动脚本(脚本内容见文章最底下)
②.最终修改如下图所示
③.拷贝自启动脚本和程序到sdk中,拷贝目标路径如下。(记得给拷贝的两个文件0777权限)
rk3568_linux_sdk/buildroot/package/alientek/atk_installs/src/
④.更改主机名
rk3568_linux_sdk/buildroot/configs/rockchip/alientek.config
文件修改如下:
效果如下:
至此,直观上的地方都已经改完了,基本可以做到工厂生产化了。
三、最终效果图
1.uboot启动界面
2.kernel启动界面
3.buildroot系统运行App界面
PS.附上自启动脚本内容(跟正点原子的S50QDesktop一样,只是改了路径和程序名而已):
# Provides: qdesktop
# Required-Start: mountvirtfs
# Required-Stop:
# Should-Start:
# Should-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Qt desktop
### END INIT INFO
PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin"
# Load default env variables from profiles(e.g. /etc/profile.d/qdesktop.sh)
. /etc/profile
start_qdesktop()
{
# Wait for weston ready
[ "${QT_QPA_PLATFORM}" == wayland ] && \
while [ ! -e ${XDG_RUNTIME_DIR}/wayland-0 ]; do
sleep .1
done
wayland-info | grep "logical_width: 1080" > /dev/null
if [ $? -eq 0 ]; then
/opt/apps/MainBasic > /dev/null 2>&1 &
else
/opt/apps/MainBasic > /dev/null 2>&1 &
fi
}
stop_qdesktop()
{
killall MainBasic
}
case "$1" in
start)
echo -n "starting qdesktop... "
start_qdesktop
echo "done."
;;
stop)
echo -n "stoping qdesktop... "
stop_qdesktop
echo "done."
;;
restart|reload)
echo -n "stoping qdesktop... "
stop_qdesktop && sleep .3
echo "done."
echo -n "starting qdesktop... "
start_qdesktop
echo "done."
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
esac
exit 0