当前位置: 首页 > news >正文

RK3568 Debian调试记录

文章目录

  • 1、环境介绍
  • 2、前言
  • 3、debian目录结构
    • 3.1、脚本调用顺序
  • 4、编译debian
    • 4.1、构建debian编译所需的环境
    • 4.2、编译debian
    • 4.3、打包
  • 5、系统启动
  • 6、debian适配
    • 6.1、新增板级配置单
    • 6.2、USB
    • 6.3、Wi-Fi / BT
    • 6.4、屏幕旋转
    • 6.5、触摸旋转
    • 6.6、时钟
  • 7、测试
  • 8、总结

1、环境介绍

硬件:飞凌ok3568-c开发板

软件:原厂rk356x sdk

2、前言

rk不仅支持buildroot,还支持debian。所以本文将记录适配debian的过程。

3、debian目录结构

在sdk里,有一个debian目录,主要存放用于构建debian系统所需的文件:

cohen@ubuntu:~/platform/rk356x-sdk/debian$ tree -L 1
.
├── mk-base-debian.sh
├── mk-image.sh
├── mk-iso-debian.sh
├── mk-rootfs-bullseye.sh
├── mk-rootfs.sh
├── overlay
├── overlay-debug
├── overlay-firmware
├── packages
├── packages-patches
├── post-build.sh
├── readme.md
├── scripts
└── ubuntu-build-service

mk-base-debian.sh:配置编译基础系统镜像,最后生成一个linaro-bullseye-alip-20250421-1.tar.gz。

mk-image.sh:用于生成最终的系统镜像文件。

mk-iso-debian.sh:用于生成 Debian 的 ISO 镜像文件。

mk-rootfs-bullseye.sh:解压linaro-bullseye-alip-20250421-1.tar.gz,完善构建rootfs。

mk-rootfs.sh:实际也是调用mk-rootfs-bullseye.sh。

overlay:包含一些覆盖文件,用于在构建过程中覆盖或添加到目标文件系统中。

overlay-debug:包含一些覆盖文件,用于在构建过程中覆盖或添加到目标文件系统中。

overlay-firmware:包含一些覆盖文件,用于在构建过程中覆盖或添加到目标文件系统中。

packages:包含预编译的 Debian 包,这些包在构建过程中会被安装到目标文件系统中。

packages-patches:包含用于修补软件包的补丁文件。

post-build.sh:在构建完成后执行的脚本,用于进行一些清理或额外的配置。

readme.md:使用说明。

scripts:包含一些辅助脚本,用于执行特定任务。

ubuntu-build-service:包含用于构建 Ubuntu 系统的配置和服务文件。

3.1、脚本调用顺序

<sdk>/common/build-hooks/30-rootfs.sh脚本的build_debian()函数作为起始来看的话,脚本的调用顺序如下:

30-rootfs.sh check-debian.sh				# 检查当前环境是否满足构建 Debian Live 镜像的依赖条件mk-base-debian.sh 		# 配置编译基础系统镜像,最后生成一个linaro-bullseye-alip-20250421-1.tar.gzmk-rootfs-bullseye.sh # 解压linaro-bullseye-alip-20250421-1.tar.gz,完善rootfsmk-image.sh 					# 生成最终的系统镜像文件./post-build.sh../device/rockchip/common/post-build.sh

4、编译debian

4.1、构建debian编译所需的环境

cohen@ubuntu:~/platform/rk356x-sdk/$ sudo dpkg -i debian/ubuntu-build-service/packages/*
cohen@ubuntu:~/platform/rk356x-sdk/$ sudo apt-get install -f

4.2、编译debian

cohen@ubuntu:~/platform/rk356x-sdk/$ ./build.sh debian

4.3、打包

编译成功后,执行如下命令打包成烧录镜像:

cohen@ubuntu:~/platform/rk356x-sdk/$ ./build.sh firmware

5、系统启动

将新的镜像烧录到板卡,可以看到系统正常启动:

6、debian适配

以下只是列出在适配过程中需要完善的项。对于片上外设来说,之前buildroot适配的大部分东西是可以直接用的。对于芯片自带的硬件,rk提供的debian也早已做好了适配。

6.1、新增板级配置单

RK SDK 提供了多种版本的 Debian 系统,适用于不同的硬件平台和需求。这些版本可以根据功能和架构分为以下几类:

功能版本:

  • base:基础版本(也带桌面了)。
  • gnome:桌面版本,使用 GNOME 桌面环境。
  • xfce:桌面版本,使用 XFCE 桌面环境。
  • lxde:桌面版本,使用 LXDE 桌面环境。

架构版本:

  • arm64:适用于 64 位 ARM 架构的处理器,如 RK3568、RK3588 等。
  • armhf:适用于 32 位 ARM 架构的处理器,支持硬件浮点运算。

所以这里为这四种不同功能版本的debian系统分别创建一个配置单,结果如下图:

其实也没做什么,这4个不同的配置单只是用来选择配置编译哪一个debian基础系统镜像,以forlinx_rk3568_c_debian_desktop_defconfigforlinx_rk3568_c_debian_base_defconfig为例:

这几个宏变量来自sdk menuconfig,需自行在/common/configs/下定义。如:

然后根据自己的需求修改debian相关的构建脚本即可。这里列出我的修改:

mk-rootfs:

mk-base-debian.sh:

mk-rootfs-bullseye.sh:

6.2、USB

鼠标键盘正常。

插入U盘后,可以正常识别,但没有自动挂载。这里添加一个udev规则文件来实现自动挂载和卸载u盘。这里折腾了两个晚上,udev规则文件调用的挂载脚本中的挂载命令要使用systemd-mount,不能使用mount。

最终的udev规则文件/etc/udev/rules.d/99-usb-mount.rules如下:

ACTION=="add",KERNEL=="sd*",SUBSYSTEM=="block",ENV{ID_FS_TYPE}!="",ENV{label_uuid_name}="%k", RUN+="/usr/local/bin/auto-mount.sh add /dev/%k %E{label_uuid_name}"
ACTION=="remove",KERNEL=="sd*",SUBSYSTEM=="block",ENV{ID_FS_TYPE}!="",ENV{label_uuid_name}="%k", RUN+="/usr/local/bin/auto-mount.sh remove /dev/%k %E{label_uuid_name}

挂载卸载脚本/usr/local/bin/auto-mount.sh如下:

#!/bin/sh
{
echo "=======$(date)======="
echo "Action: $1 | Device: $2 | MINOR: $3"if [ $# -ne 3 ]; thenexit 1
fiexport XDG_RUNTIME_DIR=/run/user/0MAJOR_PATH=/media
MINOR_PATH=$3if [[ ! -b "$2" && "$1" == "add" ]]; thenecho "ERROR: Device $2 not found after checks!"exit 2
fi
if [ "$1" = "add" ]; thenmkdir -p $MAJOR_PATH/$MINOR_PATH/usr/bin/systemd-mount -o relatime,sync --no-block --collect $2 $MAJOR_PATH/$MINOR_PATH 2>&1if [ $? -ne 0 ]; thenrmdir $MAJOR_PATH/$MINOR_PATHfi
#	udisksctl mount -b "$2" --no-user-interaction 2>&1
elif [ "$1" = "remove" ]; thenif [ -d $MAJOR_PATH/$MINOR_PATH ]; then/usr/bin/systemd-mount --umount $MAJOR_PATH/$MINOR_PATHrmdir $MAJOR_PATH/$MINOR_PATHfi
#	udisksctl unmount -b "$2" 2>&1
fi
echo "Exit Code: $?"
} >> /tmp/mount.log 2>&1

参考文章:https://blog.csdn.net/m0_69014205/article/details/147076378?spm=1001.2014.3001.5502

6.3、Wi-Fi / BT

无线wifi/bt模块用的海华awcm358sm。实测debian系统启动后没有自动加载驱动。这里需要把内核模块安装到debian rootfs,然后设置开启自动加载驱动。

  1. 将内核模块安装到debian rootfs:
run_command $KMAKE modules_install INSTALL_MOD_PATH=$RK_SDK_DIR/debian/overlay/usr

  1. 在debian系统中,/etc/modules-load.d/是一个用于配置内核模块在启动时自动加载的目录。在该目录下创建一个modules.conf,并填写开机启动时要加载的驱动。:

/lib/systemd/systemd-modules-load.service服务在系统启动时会读取modules-load.d下的所有配置文件,并根据文件中的列表加载指定的内核模块。

这里可以稍微介绍一下,是如何找到moal.ko的。实际就像平时执行modprobe xx.ko命令时,会先在/lib/modules/$(uname -r)/目录下找到modules.alias.bin和module.dep.bin。里面记录驱动的依赖关系和存储位置。如下是module.dep的内容(module.dep.bin是module.dep的二进制文件):

6.4、屏幕旋转

目前适配所使用debian的桌面环境为xfce,使用的是X11显示架构。对于屏幕旋转,修改/etc/X11/xorg.conf.d/20-modesetting.conf

可选值:normal、left、right、inverted

6.5、触摸旋转

屏幕旋转后,鼠标是可以正常使用的。但触摸的旋转还需要修改:

sudo cp /usr/share/X11/xorg.conf.d/40-libinput.conf /etc/X11/xorg.conf.d/
sudo vi /etc/X11/xorg.conf.d/40-libinput.conf
Option "CalibrationMatrix" "-1 0 1 0 -1 1 0 0 1"	# 180度旋转

6.6、时钟

现在的时间比北京时间少8小时。需要设置时区。直接修改配置脚本:

ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

关于适配先到此为止,后续有其它内容再补充。

7、测试

进入系统时的桌面:

网络:

小破站播放视频:

蓝牙:

目前使用笔记本电脑配对测试不成功。到时候使用安卓手机再试试。

8、总结

嵌入式Linux学习交流群:424571391
本人也是第一次接触发行版linux。可能对于一些测试指标有所忽略,欢迎指点。另一方面是rk对debian的支持已经很完善了,规避了很多问题。后面会继续移植ubuntu,更全面的体验发行版linux的移植过程。

相关文章:

  • 基于强化学习的智能交通控制系统设计
  • 基于STM32单片机PWM讲解(HAL库)
  • html css js网页制作成品——HTML+CSS+js美甲店网页设计(5页)附源码
  • pytest 技术总结
  • Windows怎样使用curl下载文件
  • 大模型时代的语言格局演变:为什么是 JavaScript?
  • uml类关系(实现、继承,聚合、组合,依赖、关联)
  • Python并发编程全景解析:多线程、多进程与协程的深度对比
  • 职场十二法则-马方
  • 刚体运动 (位置向量 - 旋转矩阵) 笔记 1.1~1.3 (台大机器人学-林沛群)
  • Python Cookbook-6.11 缓存环的实现
  • 光子计算芯片进展评估:下一代AI算力突破的可能性
  • 逻辑运算符
  • C++之map
  • 缓存替换算法之 FIFO(先进先出)
  • L1-4 零头就抹了吧
  • 图解 Redis 事务 ACID特性 |源码解析|EXEC、WATCH、QUEUE
  • 第5讲:不同杂志风格主题复刻指南——打造像Nature、Science、Cell那样的高水准科研图表!
  • 软件维护类型四大类型(IEEE 14764 标准)
  • 021-C语言文件操作
  • 文旅部:推动离境退税购物便利化有利于更多国内优质商品走出去
  • 上海论坛2025年会聚焦创新的时代,9份复旦智库报告亮相
  • 铜钴巨头洛阳钼业一季度净利润同比大增九成,最新宣布超30亿元收购黄金资产
  • 海南高院通报去年知产领域司法保护状况:审结民事一审案件4847起
  • 朱守科任西藏自治区政府副主席、公安厅厅长
  • 看展览|深濑昌久:一位超现实主义摄影者的三种意象