Linux3.6.7在OK6410平台的移植(五)字符设备驱动程序之LED

本次移植部分代码拷贝自开发板厂家提供的源代码linux 3.0.1

5.1.cp linux 3.0.1/arch/arm/mach-s3c64xx/include/mach/gpio-bank-m.h  linux 3.6.7/arch/arm/mach-s3c64xx/include/mach/gpio-bank-m.h

5.2.cp linux 3.0.1/drivers/char/forlinx6410_leds.c linux 3.6.7/drivers/char/ok6410_leds.c

并去掉#include <mach/gpio-bank-e.h>

5.3.linux 3.6.7/drivers/char/Makefile加上obj-m += ok6410_leds.o编译成模块

5.4.linux 3.6.7主目录下make modules然后把编译好的linux 3.6.7/drivers/char/ok6410_leds.ko复制到yaffs2根文件系统的lib/modules目录下

5.5.linux 3.6.7主目录下新建一个文件夹test,里面放有LED应用程序led.c及Makefile文件

      5.5.1 led.c内容如下:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/ioctl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

int main(int argc, char **argv)
{
int on;
int led_no;
int fd;

if (argc != 3 || sscanf(argv[1], "%d", &led_no) != 1 || sscanf(argv[2],"%d", &on) != 1 ||
on < 0 || on > 1 || led_no < 0 || led_no > 3) {
fprintf(stderr, "Usage: leds led_no 0|1\n");
exit(1);
}

fd = open("/dev/leds0", 0);
if (fd < 0) {
fd = open("/dev/leds", 0);
}
if (fd < 0) {
perror("open device leds");
exit(1);
}

ioctl(fd, on, led_no);
close(fd);

return 0;
}

      5.5.2 Makefile内容如下:

CROSS=arm-linux-
CFLAGS= -Wall -O2
all: led

led: led.c
$(CROSS)gcc $(CFLAGS) $< -o $@

clean:
@rm -rf led *.o

      5.5.3 在test目录下执行make 生成led可执行文件

5.6 把test文件夹里面的led复制到yaffs2根文件系统目录下的usr/bin目录下

5.7 在yaffs2根文件系统目录下的dev目录下创建设备节点:

    #  mknod leds c 231 0

5.8 制作烧写到NAND的yaffs文件:

    # mkyaffs2image mdev mdev_leds.yaffs

    这里的mdev就是我测试的yaffs2根文件系统 

    把mdev_leds.yaffs烧写到NAND的文件系统分区后重启开发板,系统启动后可以查看到ok6410_leds.ko及

   led应用程序:

[root@STANzxd /]# ls
bin fs.sh linuxrc mnt sbin usr
dev home lost+found proc sys var
etc lib mdev.conf root tmp

[root@STANzxd /]# cd lib/modules
[root@STANzxd modules]# ls
ok6410_leds.ko

[root@STANzxd /]# cd usr/bin
[root@STANzxd bin]# ls
led

5.9 加载ok6410_leds.ko模块:

[root@STANzxd modules]# insmod ok6410_leds.ko

5.10 最后测试开发板上的4个led,先依次点亮然后熄灭:

[root@STANzxd /]# led 0 0
[root@STANzxd /]# led 1 0
[root@STANzxd /]# led 2 0
[root@STANzxd /]# led 3 0


[root@STANzxd /]# led 0 1
[root@STANzxd /]# led 1 1
[root@STANzxd /]# led 2 1
[root@STANzxd /]# led 3 1
[root@STANzxd /]#

<script type=text/javascript charset=utf-8 src="http://static.bshare.cn/b/buttonLite.js#style=-1&uuid=&pophcol=3&lang=zh"></script> <script type=text/javascript charset=utf-8 src="http://static.bshare.cn/b/bshareC0.js"></script>
阅读(7) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
评论热议
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值