【OK210试用体验】linux字符驱动框架 - 在线问答 - 电子技术论坛 - 最好最受欢迎电子论坛!

【OK210试用体验】linux字符驱动框架

陈星 ( 楼主 ) 2015-10-13 17:03:11  只看该作者 倒序浏览
   一、驱动程序框架:
        

        1.编写程序               led_writer(struct file *file, const char __user *buf, size_t counr, loff_t *ppos)

        2.定义相关结构体     static struct file_operations
led={  .ower = THIS_MODULE,    .write = led_write}

        3.注册驱动程序        register_chdev
(
major
, "led", &led)

           卸载驱动程序      
un
register_chdev(major, "led")

        4.驱动入口函数        frist_init(
register_chdev
)

          驱动出口函数         
frist_exit
(
unregister_chdev)

        5.修饰入口函数        module_init(
frist_init
)   

           修饰出口函数         
module_exit(
frist_exit
)

        6.使用makefile进行编译



    二、编译一个测试驱动



        1.编写.c程序

            #include "linux/init.h"

            #include "linux/module.h"



            static int hello_init(void)
            {
                    printk(KERN_ALERT"Hello World linux-driver-modulen");
                    return 0;
            }
            static int hello_exit(void)
            {
                    printk(KERN_ALERT"Goodbye linux-driver-modulen");
                    return 0;
            }
            module_init(hello_init);        安装驱动
            module_exit(hello_init);       卸载驱动

            MODULE_LICENSE("GPL");

            

        2.编写Makefile    注:文件名一定要为  Makefile  M不能为小写

            ARCH=arm    内核

            CROSS_COMPILE=/usr/local/arm/arm-2009q3/bin/arm-none-linux-gnueabi-    交叉编译工具地址

            APP_COMPILE=/usr/local/arm/arm-2009q3/bin/arm-none-linux-gnueabi-

            obj-m := app.o    编译不链接

            KDIR := /usr/android-kernel-samsung-dev/    内核目录

            PWD := $(shell pwd)    当前文件夹地址

            default:

                    make -C $(KDIR) M=$(PWD) ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE) mod ules    编译生成驱动模块,即.ko文件

            app:app

                    $(APP_COMPILE)gcc -o app app.c    交叉编译.c文件

            clean:

                    $(MAKE) -C $(KDIR) M=$(PWD) clean    清除



        3.安装与卸载驱动

            安装驱动:insmod app.ko   打印出:“Hello World linux-driver-module”

            查看驱动信息:lsmod app/app.ko  app 583 0 - Live 0xbf018000

            卸载驱动:rmmod app/app.ko  需创建 /lib/modules/内核版本 目录



          这里的驱动没有创建节点,所以没有应用程序来调用。


0个回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则


关闭

站长推荐上一条 /6 下一条

小黑屋|手机版|Archiver|电子发烧友 ( 湘ICP备2023018690号 )

GMT+8, 2024-4-20 11:21 , Processed in 0.605641 second(s), Total 59, Slave 42 queries .

Powered by 电子发烧友网

© 2015 bbs.elecfans.com

微信扫描
快速回复 返回顶部 返回列表