九鼎创展论坛中文版English
登录 | 立即注册 设为首页收藏本站 切换到宽版
查看: 6129|回复: 3
打印 上一主题 下一主题

x4412&ibox项目实战15-移植第一个hello x4412内核驱动

[复制链接]
跳转到指定楼层
楼主
发表于 2014-9-26 15:30:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
前面我们学习了Linux驱动的调试方法,加载方法以及编写步骤,本章节我们将从零开始,编写第一个字符设备驱动。
在kernel/drivers/char/x4412目录下新建Makefile,Kconfig以及hello-x4412.c三个文件,Makefile文件内容如下:
  1. obj-$(CONFIG_HELLO_X4412_DRIVER) += hello-x4412.o
复制代码
Kconfig文件内容如下:
  1. config HELLO_X4412_DRIVER
  2.          tristate "hello X4412 driver"
  3.          default y
  4.          help
  5.          compile for hello x4412 driver,y for kernel,m for module.
复制代码
hello-x4412.c内容如下:
  1. #include <linux/module.h>
  2. #include <linux/init.h>

  3. static int __devinit hello_x4412_init(void)
  4. {
  5.          printk("hello,x4412!\r\n");
  6.          return 0;
  7. }

  8. static void hello_x4412_exit(void)
  9. {
  10.          printk("Goodbye,x4412!\r\n");
  11. }

  12. module_init(hello_x4412_init);
  13. module_exit(hello_x4412_exit);

  14. MODULE_LICENSE("GPL");
  15. MODULE_VERSION("1.0");
  16. MODULE_AUTHOR("www.9tripod.com");
  17. MODULE_ALIAS("a Character driver sample");
  18. MODULE_DESCRIPTION("hello x4412 driver");
复制代码
       这个程序只包含设备驱动的加载,卸载函数以及一些模块描述信息。当驱动加载时,打印“hello,x4412!”,当驱动卸载时,打印“Goodbye,x4412!”。
       kernel/drivers/char/Kconfig中添加如下语句:
  1. source "drivers/char/x4412/Kconfig"
复制代码
       kernel/drivers/char/Makefile中添加如下语句:
  1. obj-y                             += x4412/
复制代码
       再编译内核,即将驱动编译进内核映像zImage中了。更新开发板内核映像,重启开发板可以看到如下标红的打印信息:
  1. [    1.818915] console [ttySAC3] enabled
  2. [    1.900122] x4412 Oops driver
  3. [    1.901891] <b><font color="#ff0000">hello,x4412!</font></b>
  4. [    1.908596] brd: module loaded
复制代码
       这里驱动被编译进内核了,它将无法被卸载。这时,卸载函数以及驱动的相关信息我们将无从测试。因此,我们有必要将它编译成驱动模块。

回复

使用道具 举报

沙发
发表于 2014-12-10 21:04:03 | 只看该作者
继续学习······
回复 支持 反对

使用道具 举报

板凳
发表于 2014-12-12 11:34:18 | 只看该作者
非常感谢您的分享~~~~~~~~
回复 支持 反对

使用道具 举报

地板
发表于 2015-9-16 15:22:05 | 只看该作者
学习了,非常感谢~
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|手机版|小黑屋|深圳市九鼎创展科技官方论坛 ( 粤ICP备11028681号-2  

GMT+8, 2024-11-23 16:45 , Processed in 0.019180 second(s), 17 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表