一. 简介
上一篇文章实现了蜂鸣器驱动代码,实现关闭蜂鸣器与打开功能。文章地址如下:
本文对所实现的蜂鸣器驱动代码进行测试。
二. 蜂鸣器驱动代码测试
1. 准备应用程序
这里应用程序还使用 前面实现所使用的Led应用程序 led_app,调用蜂鸣器驱动程序,最终驱动蜂鸣器的开与关。
应用程序代码 led_app.c代码实现如下:
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdlib.h>
#include <string.h>
/*
* 打开/关闭 Led灯
* 参数:
* ./app_name /dev/beep 0 //关闭 beep
* ./app_name /dev/beep 1 //打开 beep
*/
int main(int argc, char* argv[])
{
int fd = 0,count = 0;
char * device_name = NULL;
unsigned int led_value[1] = {0};
if(argc != 3)
{
printf("main's param number error!\n");
return -1;
}
device_name = argv[1];
fd = open(device_name, O_RDWR);
if(fd < 0)
{
printf("open led device failed!\n");
return -1;
}
led_value[0] = atoi(argv[2]); //将字符转为数字
count = write(fd, led_value, sizeof(led_value));
if(count < 0)
{
printf("write data failed!\n");
close(fd);
}
close(fd);
return 0;
}
(1) 首先,编译应用程序 led_app.c
编译 led_app.c的命令如下:
arm-linux-gnueabihf-gcc led_app.c -o led_app
(2) 其次,拷贝 应用程序led_app 到开发板上
将 编译生成的应用程序拷贝到开发板上,进入 led_app.c所在目录,输入如下命令进行拷贝:
sudo cp led_app /home/wangtian/linux/nfs_File/rootfs/lib//modules/4.1.15/ -f
2. 驱动测试
(1) 首先,将驱动程序拷贝到开发板上
注意:开发板的系统是通过 nfs服务挂载方式访问 ubuntu系统的。即 系统文件存放在 ubuntu系统所设置的 nfs目录下!而开发板通过 nfs服务加载系统文件!
将 7_beep工程下编译生成的驱动文件 beep.ko,拷贝到 开发板系统 /lib/modules/4.1.15/目录下,这里系统存放在 /home/wangtian/linux/nfs_File/ 目录下,命名是 rootfs:
wangtian@wangtian-virtual-machine:~/zhengdian_Linux/Linux_Drivers/7_beep$ sudo cp beep.ko /home/wangtian/linux/nfs_File/rootfs/lib/modules/4.1.15/ -f
[sudo] wangtian 的密码:
wangtian@wangtian-virtual-machine:~/zhengdian_Linux/Linux_Drivers/7_beep$
(2) 其次,加载驱动模块
注意:这里第一次运行 "modprobe beep.ko" 命令加载驱动之前,需要先运行 "depmod" 命令。因为 beep.ko驱动模块是第一次被加载。
开发板上电后,进入系统 /lib/modules/4.1.15目录下,查看是否存在驱动程序 beep.ko:
运行 "modprobe beep.ko" 命令,加载驱动模块:
(3) 最后,测试驱动程序
运行应用程序,测试驱动程序。打开 蜂鸣器:
/lib/modules/4.1.15 # ./led_app /dev/beep 1
这时可以确定蜂鸣器是否响,正常情况下这时蜂鸣器会响。
关闭蜂鸣器:
/lib/modules/4.1.15 # ./led_app /dev/beep 0
这时可以确认蜂鸣器是否关闭,正常情况下蜂鸣器的响声会被关。
卸载驱动模块,具体卸载驱动命令如下:
注意:一般在测试完驱动模块后,可以卸载掉驱动模块!