驱动实验——针对嵌入式系统开发板的RGB灯设计驱动程序

记录一下自己的学习过程

实验原理及内容:

【实验内容】

针对嵌入式系统开发板的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灯依次闪烁,最后灭掉。

  • 11
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

喜迎财神

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值