第一个led驱动的加载和实现
2015-04-09 20:10
211 查看
************************************************************************************************************************************************************
这里是接着上次的s3c_led驱动程序的续集http://blog.csdn.net/liuzijiang1123/article/details/44829319
首先我们在虚拟机上编译好我们所需要的文件。
因为是在ARM板下运行,所以我们要改一下Makefile文件(编译驱动的)里面的一个小小的内容。
Makefile文件:
****************************************************************************************************************************
#ARCH=x86
ARCH=arm920t
PROJ=fl2440
PWD=$(shell pwd)
ifneq ("${ARCH}", "x86")
CROSS_COMPILE ?= /opt/buildroot-2011.11/${ARCH}/usr/bin/arm-linux-
KERNEL_DIR = ${PWD}/../../kernel/linux-3.0
else
KERNEL_DIR = /lib/modules/`uname -r`/build
endif
obj-m += s3c_led.o
all:
make -C $(KERNEL_DIR) M=$(PWD) modules
@make clear
clear:
@rm -f *.o *.cmd *.mod.c
@rm -rf *~ core .depend .tmp_versions Module.symvers modules.order -f
@rm -f .*ko.* *ko.* .*.o.cmd
clean:
rm -f *.ko
****************************************************************************************************************************
s3c_led.c实现文件
****************************************************************************************************************************
**************************************************************************************************************************************
然后将驱动程序(.ko文件)和实现文件(进过交叉编译器编译过后)下载到自己的电脑下,再打开自己的tftp服务。
然后通过tftp传到自己的开发板上
PS:如果是用tftp传的话,就需要使开发板和自己的电脑处在同一个网段,修改你开发板的ip地址,http://blog.csdn.net/liuzijiang1123/article/details/44837355 我的上篇文章介绍了如何去修改。
从服务器获得文件
tftp –g –r filename ipaddr(主机的ip)
上传文件:
tftp –p –l filename ipaddr(开发板的ip)
然后再insmod
这里我们可以看见我们的主设备号是253
接着我们就需要创建设备节点了。
然后再chmod 777 s3c_led ,修改我们的实现文件的权限。
最后./s3c_led就OK啦
这里是接着上次的s3c_led驱动程序的续集http://blog.csdn.net/liuzijiang1123/article/details/44829319
首先我们在虚拟机上编译好我们所需要的文件。
因为是在ARM板下运行,所以我们要改一下Makefile文件(编译驱动的)里面的一个小小的内容。
Makefile文件:
****************************************************************************************************************************
#ARCH=x86
ARCH=arm920t
PROJ=fl2440
PWD=$(shell pwd)
ifneq ("${ARCH}", "x86")
CROSS_COMPILE ?= /opt/buildroot-2011.11/${ARCH}/usr/bin/arm-linux-
KERNEL_DIR = ${PWD}/../../kernel/linux-3.0
else
KERNEL_DIR = /lib/modules/`uname -r`/build
endif
obj-m += s3c_led.o
all:
make -C $(KERNEL_DIR) M=$(PWD) modules
@make clear
clear:
@rm -f *.o *.cmd *.mod.c
@rm -rf *~ core .depend .tmp_versions Module.symvers modules.order -f
@rm -f .*ko.* *ko.* .*.o.cmd
clean:
rm -f *.ko
****************************************************************************************************************************
s3c_led.c实现文件
****************************************************************************************************************************
#include <stdio.h> #include <stdarg.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <sys/ioctl.h> #include <unistd.h> #define LED_CNT 4 #define DEVNAME_LEN 10 #define PLATDRV_MAGIC 0x60 #define LED_OFF _IO (PLATDRV_MAGIC, 0x18) #define LED_ON _IO (PLATDRV_MAGIC, 0x19) int main (int argc, char **argv) { int i; int fd[LED_CNT]; char dev_name[DEVNAME_LEN]={0,0,0,0}; for(i=0; i<LED_CNT; i++) { snprintf(dev_name, sizeof(dev_name), "/dev/led%d", i); fd[i] = open(dev_name, O_RDWR, 0755); if(fd[i] < 0) goto err; } while(1) { for(i=0; i<LED_CNT; i++) { ioctl(fd[i], LED_ON); } sleep(1); for(i=0; i<LED_CNT; i++) { ioctl(fd[i], LED_OFF); } sleep(1); } for(i=0; i<LED_CNT; i++) { close(fd[i]); } return 0; err: for(i=0; i<LED_CNT; i++) { if(fd[i] >= 0) { close(fd[i]); } } return -1; }
**************************************************************************************************************************************
然后将驱动程序(.ko文件)和实现文件(进过交叉编译器编译过后)下载到自己的电脑下,再打开自己的tftp服务。
然后通过tftp传到自己的开发板上
PS:如果是用tftp传的话,就需要使开发板和自己的电脑处在同一个网段,修改你开发板的ip地址,http://blog.csdn.net/liuzijiang1123/article/details/44837355 我的上篇文章介绍了如何去修改。
从服务器获得文件
tftp –g –r filename ipaddr(主机的ip)
上传文件:
tftp –p –l filename ipaddr(开发板的ip)
然后再insmod
这里我们可以看见我们的主设备号是253
接着我们就需要创建设备节点了。
然后再chmod 777 s3c_led ,修改我们的实现文件的权限。
最后./s3c_led就OK啦
相关文章推荐
- 编译第一个驱动,加载点亮LED
- 我写的第一个LED驱动的心得
- 利用GRUB4DOS实现加载SCSI/RAID驱动免软驱,免按F6
- 编译加载mini2440_led驱动后,测试 该驱动是否有用
- 字符设备实现控制led的驱动
- Tiny6410 led 驱动实现分析
- 单片机定时驱动led程序2--c语言实现
- Linux下实现流水灯等功能的LED驱动代码及测试实例
- 【嵌入式linux】(第六步):使用eclipse集成开发环境开发第一个嵌入式Linux程序,并测试LED驱动
- S3C6410 GPIO 驱动(三) ---LED应用程序--实现关闭或打开指定LED灯
- 分步加载流驱动实现启动提速
- 详解MSDN上推荐的分步加载流驱动实现启动提速
- MINI2440 LED驱动的汇编语言实现
- ARM开发板(S3C2440)上LED灯驱动及跑马灯的实现
- 使用WDM驱动实现在NT下读取物理端口,特殊寄存器,物理内存的代码(C++驱动加载代码) .
- uClinux2.6(bf561)的NorFlash驱动实现分析(5) : 驱动加载
- 第一个驱动helloworld module加载insmod “Invalid module format ”问题解决
- 使用WDM驱动实现在NT下读取物理端口,特殊寄存器,物理内存的代码(C++驱动加载代码)
- 第一个驱动程序-led驱动
- 基于tiny6410开发板的LED驱动 编写与使用(第一个linux驱动)