Linux高级应用(八)LED驱动

1、编译LED驱动
led_drv.c(驱动源文件) + Makefile(编译工具)---->led_drv.ko(驱动安装文件)

1)修改Makefile文件
根据Linux内核源码的目录:
gec@ubuntu:~/linux-3.0.8$ pwd
/home/gec/linux-3.0.8

修改:
obj-m += led_drv.o

KERN_DIR=/home/gec/linux-3.0.8
PWD = $(shell pwd)
modules:
$(MAKE) -C ( K E R N D I R ) M = (KERN_DIR) M= (KERNDIR)M=(PWD) modules
clean:
$(MAKE) -C ( K E R N D I R ) M = (KERN_DIR) M= (KERNDIR)M=(PWD) modules clean

2)编译驱动源文件
gec@ubuntu:~/linux-3.0.8$ cd /mnt/hgfs/led_drv_ok/
gec@ubuntu:/mnt/hgfs/led_drv_ok$ ls
led_drv.c Makefile

gec@ubuntu:/mnt/hgfs/led_drv_ok$ make
make -C /home/gec/linux-3.0.8 M=/mnt/hgfs/led_drv_ok modules
make[1]: 正在进入目录 /home/gec/linux-3.0.8' CC [M] /mnt/hgfs/led_drv_ok/led_drv.o Building modules, stage 2. MODPOST 1 modules CC /mnt/hgfs/led_drv_ok/led_drv.mod.o LD [M] /mnt/hgfs/led_drv_ok/led_drv.ko make[1]:正在离开目录/home/gec/linux-3.0.8’

3)生成了ko文件

2、将led_drv.ko下载到试验箱
[root@FriendlyARM /]# mkdir test
[root@FriendlyARM /]# cd test
[root@FriendlyARM /test]# rx led_drv.ko
CCC
开始 xmodem 传输。 按 Ctrl+C 取消。
100% 73 KB 7 KB/s 00:00:10 0 Errors

[root@FriendlyARM /test]# ls
led_drv.ko

3、安装led灯的驱动

[root@FriendlyARM /test]# insmod led_drv.ko
[ 1338.922853] module init …

[root@FriendlyARM /test]# lsmod
led_drv 2196 0 - Live 0xbf1e1000

4、查看生成的设备文件

[root@FriendlyARM /test]# ls /dev/led_drv -l
crw-rw---- 1 root root 200, 0 Jan 1 14:06 /dev/led_drv

通过/dev/led_drv 设备文件就可以访问LED驱动了。

5、在project中增加led.h头文件

#ifndef LED_H
#define LED_H 1

#define LED1 1
#define LED2 2
#define LED3 3
#define LED4 4

#define LED_ON 1
#define LED_OFF 0

int led_ctrl(int led_num, int led_state);
#endif /!LED_H/

6、在project中增加led.c应用程序

定义一个函数:

int led_ctrl(int led_num, int led_state)
{
int fd_led;
fd_led = open("/dev/led_drv", O_RDWR);

char led_buf[2];
led_buf[1]=led_num;
led_buf[0]=led_state;

write(fd_led, led_buf, 2);

close(fd_led);

return 0;

}

7、修改project的main.c

#include “led.h”
例:led2 亮
原来:
printf(“led2 on\n”);

改成:
led_ctrl(LED2, LED_ON);

8、修改project的Makefile文件
在里面添加led.c的编译过程

9、下载project的应用程序,控制LED

10、关闭试验箱上跑马灯程序
试验箱自带了跑马灯的程序,需要关闭。修改试验箱的启动脚本文件—/etc/init.d/rcS

[root@FriendlyARM /test]# vi /etc/init.d/rcS
输入“i”,进入插入模式
#/etc/rc.d/init.d/leds start
注释掉上面这行

输入“Esc”键,返回命令模式
:wq
保存退出。

重启试验箱
[root@FriendlyARM /test]# reboot

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值