Chinaunix首页 | 论坛 | 博客
  • 博客访问: 226762
  • 博文数量: 63
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 16
  • 用 户 组: 普通用户
  • 注册时间: 2014-03-29 21:37
文章分类

全部博文(63)

文章存档

2017年(3)

2016年(3)

2014年(57)

我的朋友

分类: LINUX

2014-03-29 21:45:07

本次移植部分代码拷贝自开发板厂家提供的源代码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

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
#include
#include
#include
#include
#include
#include

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 /]#

阅读(1187) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~