RK3568 Linux驱动学习——Linux驱动开发准备工作

前言

在正式开始学习 Linux 驱动开发之前,有一些准备工作要先处理好,比如交叉编译器安装,Linux 内核与设备树的确定,ADB 使用等

Linux 内核编译

编译 Linux 内核

正点原子出厂 SDK 包中的 Linux 内核编译方法之前已经有写过一个笔记,可以在我的主页翻来看一下。

最终烧写到开发板里面的是编译出来的 boot.img 文件,boot.img 就是将编译出来的 Image 和 rk3568-atk-evb1-ddr4-v10-linux.dtb 打包在一起,rk3568-atk-evb1-ddr4-v10-linux.dtb 就是 arch/arm/boot/dts/ rk3568-atk-evb1-ddr4-v10-linux.dts 设备树文件编译出来的。所以后面如果要修改设备树,那么修改的就是 rk3568-atk-evb1-ddr4-v10-linux.dts 这个文件。根据 MIPI 屏幕分辨率大小,修改 rk3568-screen_choose.dtsi 这个设备树文件,开启对应的宏。

关闭内核 log 时间戳

出厂系统默认是有时间戳的,如下图所示:

如需要需要关闭,可以通过配置内核将其关闭,配置路径如下:

进入 kernel,执行下面的命令配置内核。

bash 复制代码
make ARCH=arm64 rockchip_linux_defconfig

打开图形菜单,执行下面的指令。

bash 复制代码
make ARCH=arm64 menuconfig

按如下步骤取消选中内核打印。

|----------------------------------------------------------------------------------------------|
| -> Kernel hacking -> printk and dmesg options ->Show timing information on printks //取消选中 |

如下图所示:

重新编译并烧写内核即可。

根文件系统确认

创建 /lib/modules/4.19.232 目录

需要在根文件系统中创建 /lib/modules/4.19.232 目录,因为后面驱动开发都是将驱动编译成模块,然后放到/lib/modules/4.19.232 目录中。其中 4.19.232 是所使用的 Linux 内核版本号,RK3568 所使用的 linux 内核版本号为 4.19.232,所以就是 /lib/modules/4.19.232 目录。

出厂系统有/lib 这个目录,所以需要创建/lib/modules 目录。再在/lib/modules 里面创建一个名为"4.19.232"子目录就行了,若系统有/lib/modules/4.19.232 目录,则无需要创建!完成后如下图所示:

检查相关命令是否存在

需要使用 depmod、modprobe 或 insmod 这三个命令来加载驱动模块,所以根文件系统要存在这两个命令。卸载驱动模块的时候需要用到 rmmod 命令,所以需要确保 depmod、modprobe、insmod 和 rmmod 这四个命令都存在。

Ubuntu 下使用 ADB 向开发板发送文件

一般都是在 Ubuntu 下进行驱动和应用的编写与编译,最终肯定要将编译出来的应用文件或驱动文件发送到开发板中运行测试。

在驱动开发中,需要使用 adb 将开发板连接到 Ubuntu 下,然后使用如下 "adb push" 命令将文件通过 adb 发送到开发板。

  1. 开发板通过 APB 连接到 Ubuntu

首先使用 adb 命令将开发板连接到 Ubuntu,先用 "adb devices" 命令查看一下能不能找到开发板,如果能找到的话就会例举出当前 Ubuntu 下所有连接的 adb 设备,如下图所示:

可以随便创建一个 "adbtest.txt" 的空文件,然后将这个文件通过 "adb push" 发送到开发板中,输入如下命令:

bash 复制代码
adb push adbtest.txt /lib/modules/4.19.232/

从上图可以看出,adbtest.txt 文件已经 push 成功 。 到开发板查看一下 /lib/modules/4.19.232 目录下是否有 adbtest.txt 这个文件,如下图所示:

安装驱动开发所使用交叉编译器

编译驱动肯定要用到交叉编译器,虽然 SDK 包里面已经提供了交叉编译器,但是需要先编译整个 SDK 包,而且里面的交叉编译期用起来也不方便,所以正点原子专门定制了一套交叉编译器,直接安装就可以很方便的使用

输入如下命令,

bash 复制代码
./atk-dlrk3568-toolchain-arm-buildroot-linux-gnueabihf-x86_64.run

当出现 "Enter target directory for toolchain (default: /opt/atk-dlrk3568-toolchain):" 时,表示让你确认安装路径,默认安装路径是/opt/atk-dlrk356x-toolchain,不要修改这个路径,直接按下回车键使用这个默认路径即可。如下图所示:

最后确认并输入密码,即可完成安装:

安装完成以后可以进入到/opt/atk-dlrk356x-toolchain/bin/目录下,看一下安装好的交叉编译器,如下图所示:

注意,这里就不能直接通过输入"aarch64-buildroot-linux-gnu-gcc -v" 这样来使用交

叉编译器了,而是需要输入绝对路径,也就是:

bash 复制代码
/opt/atk-dlrk356x-toolchain/bin/aarch64-buildroot-linux-gnu-gcc -v

若要卸载交叉编译器,进入安装目录 /opt 下直接删除即可,命令如下:

bash 复制代码
sudo rm -f atk-dlrk356x-toolchain/
相关推荐
大聪明-PLUS12 小时前
了解 Docker:镜像是如何创建的
linux·嵌入式·arm·smarc
丝斯201112 小时前
AI学习笔记整理(36)——自然语言处理
人工智能·笔记·学习
好奇龙猫13 小时前
【AI学习-comfyUI学习-第二十二-DepthAnythingV2深度图工作流-各个部分学习】
人工智能·学习
94621931zyn613 小时前
观影统计 - Cordova 与 OpenHarmony 混合开发实战
笔记
lllsure13 小时前
Linux 日志管理
linux·运维·服务器
virtual_k1smet13 小时前
梧桐·鸿鹄-大数据professional
大数据·笔记
stars-he13 小时前
单相双半波可控整流电路的MATLAB仿真设计
笔记·学习·matlab
龙亘川13 小时前
AI 赋能智慧农业:核心技术、应用案例与学习路径全解析
人工智能·学习
haluhalu.13 小时前
Linux系统下进程池设计与实现详解
linux·运维·服务器
小麦嵌入式13 小时前
Linux驱动开发实战(十三):RGB LED驱动并发控制——自旋锁与信号量对比详解
linux·c语言·驱动开发·stm32·单片机·嵌入式硬件·物联网