Tiny6410下的第一个Linux驱动程序

发布者:快乐心跳最新更新时间:2024-10-08 来源: cnblogs关键字:Tiny6410  Linux  驱动程序 手机看文章 扫描二维码
随时随地手机看文章

Linux系统环境是照着友善之臂的教程搭建的


//Hello  World驱动程序源文件


 1 #include <linux/miscdevice.h>

 2 #include

 3 #include

 4 

 5 #include

 6 #include

 7 #include

 8 #include

 9 #include

10 #include

11 #include

12 #include

13 #include

14 #include

15 #include

16 #include

17 #include

18 #include

19 #include

20 #include

21 #include

22 #include

23 #include

24 

25 #include

26 #include

27 #include gpio.h>

28 

29 #include

30 #include

31 #include

32 #include

33 #include


//驱动读函数

static int first_drv_open(struct inode *inode, struct file *file)

{

    printk('Hello Drivern');

    return 0;

}


//驱动写函数

static ssize_t first_drv_write(struct file *file, const char __user *buf, size_t count, loff_t * ppos)

{

    printk('Hello Worldn');

    return 0;

}


//定义file_operations结构体

static struct file_operations first_drv_fops =

{

   .owner  =   THIS_MODULE, //这是一个宏,推向编译模块时自动创建的__this_module变量

   .open   =   first_drv_open,     

    .write  =    first_drv_write,       

};


//驱动入口函数

static int first_drv_init(void)

{

    register_chrdev(111, 'first_drv', &first_drv_fops);//向内核注册驱动

    return 0;

}


static void first_drv_exit(void)

{

    unregister_chrdev(111, 'first_drv'); //卸载驱动

}


module_init(first_drv_init);//定义一个结构体,供内核调用入口函数(first_drv_init--函数指针)


module_exit(first_drv_exit);//


Makefile文件


obj-m    += first_drv.o    #制定目标名

KDIR = /opt/FriendlyARM/mini6410/linux/linux-2.6.38    #指定内核路径

all :

    make -C $(KDIR) M=$(PWD) modules CROSS_COMPILE=arm-linux- ARCH=arm

clean :

    rm -f *.ko *.o *.mod.o *.mod.c *.symvers *.bak *.order


//测试驱动的程序

//测试程序要用arm-linux-gcc来编译


 1 #include

 2 

 3 #include

 4 

 5 #include

 6 

 7 #include

 8 

 9 int main(int argc, char **argv)

10 {

11     int fd;

12     int val = 1;

13     fd = open('/dev/xxx', O_RDWR);

14     if (fd < 0)

15     {

16         printf('can't open!n');

17     }

18     

19     write(fd, &val, 4);

20     return 0;

21 }


加载内核步骤


1、将编译好的驱动文件--first_drv.ko  和测试程序--firstdevtest  发送到Tiny6410上。


2、执行命令   insmod first_drv.ko   //加载内核驱动     使用  cat /proc/devices  命令查看加载的驱动


3、执行命令   mknod /dev/xxx c 111 0  //创建设备节点   在/dev目录下生成xxx文件   主设备号为111 次设备号为0


4、执行命令   ./firstdrvtest     //执行测试程序  出现Hello Wrold   成功!


关键字:Tiny6410  Linux  驱动程序 引用地址:Tiny6410下的第一个Linux驱动程序

上一篇:Tiny 6410的Linux学习总结!
下一篇:ARM核心及体系结构的关系

小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved