频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

实用技巧:Linux操作系统驱动编译与运行

来源:中国IT实验室 作者:佚名 出处:巧巧读书 2008-05-23 进入讨论组

    一、手工加载测试

    1、insmod ./key_test.ko 加载驱动模块到内核

    2、cat /proc/modules |grep key_test 查看key_test模块在内核中的地址,不加过滤器可以看到全部加载的模块。

    3、lsmod 显示模块,这时可以看到所有的模块名字,后面跟的是主设备号和次设备号。

    4、rmmod key_test 把模块从内核里卸载。

    二、动态加载

    1、把key_test.c源代码放到内核源代码的/drives/char/下,因为这是属字符型驱动,放在这编译到zImage中。

    2、这时我们make menuconfig 编译内核是看不到key_test这个选项的。我们把这个选项写到菜单里面才行。在内核源代码的/drives/char/下有一个Kconfig文件,打开

    (1) vi Kconfig 加几行到里面:

    config ConFig_key_test

    bool "key test" //前面那个bool换成tristate就是支持模块化编译

    上面句是在make menuconfig时会出现key test这个选项在drive/char子菜单下,bool前面是TAB键

  ------help---------- 这句是出现在菜单选项下面的

    This key test help. 这句是你的驱动的说明会出现在help里面

    (2)在/drivers/char目录下的Makefile文件里加上一句:

    obj-$(CONFIG_key_test) += key_test.o

    上面这句是让Make时把key_test编译到内核中。

    (3) make menuconfig 把key_test选项选取上

    (4) make zImage

    生成zImage文件,重启动加载这个新编的内核。

    3、lsmod就能看到key_test了,但是还不能用,没有接口,也就是/dev下面没有

    4、mknod /dev/key_test c 121 0 这是创建设备到/dev下,使普通程序可以调用了,121是在源代码里定义的它的主设备号,0是次设备号。

    5、cat /dev/key_test 这是相当于open这个设备了,或者写一个程序直接调用open、write等函数。

    fd=("/dev/key_test",ORW);

更多文章 更多内容请看Office技巧专区Windows操作系统安装系统优化大全专题,或进入讨论组讨论。
收藏此文】【 】【打印】【关闭
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
讨论组问题推荐
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章