欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > DOC文档下载  

    Linux内核模块介绍,使用Linux模块的优点.doc

    • 资源ID:3255304       资源大小:21.50KB        全文页数:4页
    • 资源格式: DOC        下载积分:2
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要2
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    Linux内核模块介绍,使用Linux模块的优点.doc

    Linux内核模块介绍,使用Linux模块的优点1.1 Linux内核模块介绍1.1.1 Linux内核模块概述嵌入式设备驱动开发中将驱动程序以模块的形式发布,更是极大地提高了设备使用的灵活性用户只需要拿到相关驱动模块,再插入到用户的内核中,即可灵活地使用你的设备。1.1.2 使用Linux模块的优点1.        用户可以随时扩展Linux系统的功能。2.        当要修改当前Linux系统的驱动时,只需要卸载旧模块,编译目标驱动模块,重新安装插入即可。3.        系统中如果需要使用新模块,不必重新编译内核,只要插入相应的模块即可。4.        减小Linux内核的体积,节省flash。1.2 Linux模块入门1.2.1 模块相关命令1.2.1.1 Linux模块命令详细介绍1.      模块安装命令:insmodinsmod xxxx.ko2.      查看当前已经安装模块:lsmodlsmod 不需要参数3.      模块卸载命令:rmmodrmmod xxxxx.ko4.      查看模块信息:modinfo在X86上操作:rootzhifachen linux-3.5# modinfo/root/work/rootfs/home/mod/tiny4412_hello_module.kofilename:      /root/work/rootfs/home/mod/tiny4412_hello_module.kolicense:        GPLdepends:        intree:         Yvermagic:      3.5.0-FriendlyARM SMP preempt mod_unload ARMv7 p2v8rootzhifachen linux-3.5#1.2.1.2 Linux模块命令测试示例注意:模块的编译是依赖具体一份源码,并且这份被编译过,并且没有使用mrproper,distclean清除的源码工程。  1.2.2 使用makemodules编译内核源码树中的模块1.      添加内核菜单2.      make menuconfig 配置为 M3.      在顶层目录终端输入makemodules直接make 也可生成模块文件(.ko),也会生成zImage,当你只想编译模块而不想编译zImage时候使用 make modules 命令会更加快速。1.2.3 把内核源码树中模块源文件编译到内核映像中如果不需要配置菜单只想编译代码到内核zImage,Makefile可以这样写obj-y += xxxx.o如果不需要配置菜单只想编译代码为外部模块,Makefile可以这样写 obj-m+= xxxx.o1.2.4 在内核源码中添加自定义的模块并且编译1.2.5 外部独立Makefile编译模块在驱动开发阶段,接触到新驱动机率非常高,如果都要去修改内核源码Makefile, 太过于繁杂,也不利于移植,实际开发中会使用另外一种方法来编译模块文件。1.2.5.1 Linux内核模块代码文件模板可以直接复制内核源码中自带的示例模板来测试:drivers/char/tiny4412_hello_module.c1.2.5.2 Linux内核模块编译Makefile模板编译模块Makefile文件:obj-m +=  xyd_hello_module.oall:      make -C /root/work/linux-3.5/  M=$(PWD)    modules      rm -rf *.o *.mod.c modules.order Module.symvers  *   *.bakclean:      rm -rf *.o *.mod.c modules.order  Module.symvers *.ko  *  *.bak make -C $(KDIR)M=$(PWD) modulesM=选项让该Makefile在构造modules目标之前返回到模块源代码目录,然后modules目标指向obj-m变量中设定的模块;在上面的例子中,我们将该变量设置成了module.o。上面的清除规则是自己写的,也可利用内核Makefile清除规则来清编译生成目标文件,改进后代码:obj-m +=  xyd_hello_module.o# x86 编译时候使用:  uname -r 得到当前内核的版本号  #KDIR :=  /lib/modules/uname -r/build#arm 编译时候使用KDIR  :=/root/work/linux-3.5all:      make -C  $(KDIR)   M=$(PWD)  modulesclean:      make -C  $(KDIR)   M=$(PWD)  modules  clean      rm -f *.ko.unsigned * 1.1.1 Linux内核printk 函数内核中不能使用printf函数输出信息,要使用printk函数,这个函数有输出等级控制的。内核通过 printk() 输出的信息具有日志级别,日志级别是通过在 printk() 输出的字符串前加一个带尖括号的整数来控制的,如 printk("Hello, world!/n");。内核中共提供了八种不同的日志级别,在 linux/kernel.h 中有相应的宏对应。#defineKERN_EMERG    ""    /* system is unusable  系统不可用*/#defineKERN_ALERT     ""    /* action must be takenimmediately警报,必须立即采取行动*/#define KERN_CRIT        ""    /*critical conditions临界状态   */#defineKERN_ERR        ""    /* error conditions  错误状态*/#defineKERN_WARNING  ""    /* warningconditions警告状态*/#defineKERN_NOTICE    ""    /* normal but significant正常的,但引人注目*/#define KERN_INFO        ""    /*informational  信息*/#defineKERN_DEBUG     ""    /* debug-level messages调试等级信息 */可以通过 查看/proc/sys/kernel/printk 文件内容知道设置信息。rootChenZhiFa/# cat /proc/sys/kernel/printk7       4       1      7可以通过echo 命令修改种个等级:rootChenZhiFa/# echo  4  4 1  7  > /proc/sys/kernel/printk说明:直接使用printk( “kkkk”); 这样没有指明等级,这种未明确指定。只有等级比较当前终端等级高才会在终端上显示出来。以下进行X86 系统上的测试(在纯字符界面下测试有效,在图形界面中是无效)在图形界面系统中按 Ctl + Alt + F2 (F2F6键其中一个,不同电脑可能不同),可以进入到纯字符界面,要返回按Ctl +Alt + F1(不同电脑可能不同)printk   -  不支持浮点数,实际上驱动程序也不支持浮点运算。所有浮点运算应该放在用户空间。 

    注意事项

    本文(Linux内核模块介绍,使用Linux模块的优点.doc)为本站会员(白大夫)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开