☰
驱动实验——针对嵌入式系统开发板的RGB灯设计驱动程序
2026/10/2 1:37:20 网站建设 项目流程

记录一下自己的学习过程

实验原理及内容:

【实验内容】

针对嵌入式系统开发板的RGB灯设计驱动程序,完成驱动程序的编译和加载。设计一个驱动程序的测试程序,要求可以依次点亮三个灯,最后熄灭。

【实验原理】

对于字符设备驱动,一定需入口与出口。

入口:在insmod xx.ko 时执行led_chrdev_init函数。

出口:在rmmod xx.ko 时执行led_chrdev_exit函数。

硬件电路原理图如下图所示。LED_R、LED_G、LED_B阴极分别连接到 i.MX6ULL 芯片上GPIO1_IO04引脚、GPIO4_IO20引脚和GPIO4_IO19引脚。

实验步骤及数据记录:

将12.6文件夹拷贝到ubuntu

打开命令终端,进入root用户

zmy@ubuntu:~$ sudo -i

将12.6文件夹复制到目录/home/zmy/

root@ubuntu:~# cp -r /home/zmy/Desktop/12.6/ /home/zmy/

4、进入目录/home/zmy/12.6

root@ubuntu:/home/zmy/12.6#

修改startup.sh脚本程序,注意将下图红圈部分修改为你12.6文件夹所在目录

5、执行startup.sh脚本程序,脚本程序负责配置nfs环境,编译交叉编译工具以及下载内核和源代码。

root@ubuntu:/home/zmy/12.6# source startup.sh

6、切换目录到led_cdev目录

7、修改Makefile,第一行为指定内核位置,修改为内核所在位置;直接指定交叉编译工具链位置。

KERNEL_DIR=../ebf_linux_kernel_6ull_depth1/build_image/build

CROSS_COMPILE=/usr/local/arm/gcc-linaro-7.5.0-2019.12-i686_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-

8、清除上一次编译的

make clean

重新编译程序

make

9、将生成的驱动文件.ko(led_cdev.ko)和应用程序(led_test)复制到共享文件夹目录

10、打开一个新的命令终端,配置minicom

配置开发板的ip地址(注意这里修改网口需要修改成你实际接网线的网口(eth1或eth2)):ifconfig eth1 192.168.1.25 netmask 255.255.255.0

从开发板去ping ubuntu系统:ping 192.168.1.110(注意这里是ubuntu的ip地址,可以用ifconfig获取)

11、挂载(192.168.1.110为ubuntu ip地址,/nfsFile为nfs共享文件夹路径)

sudo busybox mount -n -o nolock,rsize=1024 192.168.1.110:/nfsFile /mnt/

在minicom进入目录/mnt,加载驱动

root@npi:/mnt#

root@npi:/mnt# insmod led_cdev.ko

打印如下信息:

[ 73.632894] led_cdev: loading out-of-tree module taints kernel.

[ 73.646185] led chrdev init

执行测试程序

root@npi:/mnt# ./led_cdev_test

可以看到RGB灯依次闪烁,最后灭掉

14、卸载驱动

root@npi:/mnt# rmmod led_cdev

打印如下信息:

[ 168.431902] led chrdev exit

实验结果(结论):

可以看到RGB灯依次闪烁,最后灭掉。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询