试试第一个hello world模块添加:

1,在添加drivers/char/hello.c

/*********************************************************************************

 *      Copyright:  (C) 2014 zhouguangfeng<zhouguangfeng91@gmail.com>

 *                  All rights reserved.

 *

 *       Filename:  hello.c

 *    Description:  This file 

 *                 

 *        Version:  1.0.0(08/09/2014)

 *         Author:  zhouguangfeng <zhouguangfeng91@gmail.com>

 *      ChangeLog:  1, Release initial version on "08/09/2014 06:23:18 PM"

 *                 

 ********************************************************************************/

#include <linux/module.h>

#include <linux/init.h>

#include <linux/kernel.h>



MODULE_LICENSE ("Dual BSD/GPL");



static int __init hello_init (void)

{

    printk (KERN_INFO "Hello world\n");

    return 0;

}

static void __exit hello_exit (void)

{

    printk (KERN_INFO "Goodbye world\n");

    return;

}



module_init (hello_init);

module_exit (hello_exit);

其中 printk是内核特有的打印函数,类似与printf,只是它不依赖库文件,KERN_INFO为

打印优先级

2,修改drivers/char/Kconfig文件,添加在make menuconfig的选项

#

# Character device configuration

#





menu "Character devices"





source "drivers/tty/Kconfig"





# add  by zhouguangfeng 2014.8.9 for "Hello world" 



config FL_HELLO

    tristate "CCTE2440 Hello Driver"

    depends on ARCH_S3C2440

    help

    FL2440 Hello Module.

3,修改drivers/char/Makefile,编译添加的hello.c

obj-$(CONFIG_FL_HELLO) += hello.o

4,make menuconfig选项

[*] Enable loadable module support  --->

[*]   Module unloading   //需要支持,否则已经加载的模块无法卸载载

Device Drivers  --->

Character devices  --->

<M> FL2440 Hello Driver  //刚才添加的Kconfig选项,这里编译为模块

5,make之后,下载内核与文件系统,挂在hello.ko模块

Copyright (C) 2014 zhouguangfeng<zhouguangfeng@gmail.com>

dm9000 dm9000 eth0: link up, 100Mbps, full-duplex, lpa 0xCDE1

zhouxiaoxing login: root

>: ls

apps     data     etc      info     lib      mnt      root     sys      usr

bin      dev      hello    init     linuxrc  proc     sbin     tmp      var

>: ping 192.168.1.1

PING 192.168.1.1 (192.168.1.1): 56 data bytes

64 bytes from 192.168.1.1: seq=0 ttl=64 time=2.592 ms

64 bytes from 192.168.1.1: seq=1 ttl=64 time=0.685 ms

64 bytes from 192.168.1.1: seq=2 ttl=64 time=0.658 ms

--- 192.168.1.1 ping statistics ---

9 packets transmitted, 9 packets received, 0% packet loss

round-trip min/avg/max = 0.658/0.896/2.592 ms

>: tftp -gr hello.ko 192.168.1.3

hello.ko             100% |*******************************|  2365   0:00:00 ETA

>: ls

apps      dev       hello.ko  lib       proc      sys       var

bin       etc       info      linuxrc   root      tmp

data      hello     init      mnt       sbin      usr

>: insmod hello.ko

Hello world

>: rmmod hello

Goodbye world

FL2440驱动添加(1):hello world 驱动模块添加的更多相关文章

  1. FL2440驱动添加(3)LCD驱动添加学习笔记

    FL2440 LCD内置控制器,320*240 TFT型LCD. 自我理解总结的两种添加驱动模式: 非platform方式添加驱动: 加载驱动: 1,硬件初始化,申请内存,并作地址映射 2,分配设备号 ...

  2. FL2440驱动添加(2): RTC(Real time clock)

    一,Linux下的时间分为两种,系统时间与硬件时间(RTC芯片): 1,系统时间就是运行系统能够直接看到的时间: 2,硬件时间就是RTC芯片中的时间,断电任然有电池供电: linux系统开机时,会从R ...

  3. 如何在MyEclipse中通过hibernate使用jtds驱动连接数据库,并向数据库添加数据的方法

    最近学习了下如何在MyEclipse中通过hibernate使用jtds驱动连接数据库,并向数据库添加数据的方法,虽然MyEclipse中自带了连接数据库的方法,我也尝试了下其他方法,如有不当之处请指 ...

  4. 添加EF上下文对象,添加接口、实现类以及无处不在的依赖注入(DI)

    添加EF上下文对象,添加接口.实现类以及无处不在的依赖注入(DI) 目录索引 [无私分享:ASP.NET CORE 项目实战]目录索引 简介 上一章,我们介绍了安装和新建控制器.视图,这一章我们来创建 ...

  5. Linux-NGINX 能否添加P3P头,如何添加。 - 德问:编程社交问答

    Linux-NGINX 能否添加P3P头,如何添加. - 德问:编程社交问答   您的投票让 杜鑫 声誉值增加5分. 支持投票,不仅能让提问用户获得声誉值,让好的问题有更多的曝光,更能帮助社区筛选出好 ...

  6. JS添加节点方法与JQuery添加节点方法的比较及总结

    原生JS添加节点方法与JQuery添加节点方法的比较及总结   一.首先构建一个简单布局,来供下边讲解使用 1.HTML部分代码: <div id="div1">div ...

  7. PDF怎样添加注释,PDF文件添加注释的方法

    Word文件跟纸质文件想要添加注释相信大家都知道该怎么添加,那么现在也使用频率挺高的PDF格式的文件要怎么添加注释呢?添加注释的方法有什么呢?有许多的小伙伴们都想知道吧,今天小编就来跟大家分享一下,想 ...

  8. 于用cocoapods添加第三方库,并且cocoapods添加成功,但是却在任何一个文件上都导入不了头文件

    关于用cocoapods添加第三方库,并且cocoapods添加成功,但是却在任何一个文件上都导入不了头文件,而且根本没有提示,即使手动打#import "xxxx.h"也报错xx ...

  9. mac 添加环境变量(jmeter添加至环境变量中)

    Mac系统的环境变量,加载顺序为:a. /etc/profileb. /etc/pathsc. ~/.bash_profiled. ~/.bash_logine. ~/.profilef. ~/.ba ...

随机推荐

  1. IOS 开发环境,证书和授权文件等详解

    (转自:http://blog.csdn.net/gtncwy/article/details/8617788) 一.成员介绍1.    Certification(证书)证书是对电脑开发资格的认证, ...

  2. js 判断微信浏览器

    上周接到个需求,需求是这样的:用户扫一扫二维码会产生一个链接,该链接会向后端发送个请求,返回一个 apk 的下载地址,用户点击下载按钮可以下载此 apk.然后就发生了问题,经过测试,发现用微信扫一扫打 ...

  3. post 的body json要使用双引号,而不是单引号

      string parse error , JS eval error {'name' : 'wade' }   http://json.parser.online.fr/ string parse ...

  4. Ubuntu14.04手动创建桌面快捷方式

    如果是系统自带的程序,默认的桌面图标放在 /usr/share/applications/下面,可以直接将对应的图标放到当前用户的~/Desktop/目录下即可 如果是从网上下载已编译的二进制文件(e ...

  5. 对已经add的文件不在跟踪

    记录每次更新到仓库 现在我们手上已经有了一个真实项目的 Git 仓库,并从这个仓库中取出了所有文件的工作拷贝.接下来,对这些文件作些修改,在完成了一个阶段的目标之后,提交本次更新到仓库. 请记住,工作 ...

  6. 『Golang』跨平台TUI(基于文字的用户界面)库Terbox-Go文档翻译

    原文 package termbox import "github.com/nsf/termbox-go" termbox-go 是一个用于创建跨平台TUI(基于文本的用户界面)的 ...

  7. 安卓开发笔记——关于照片墙的实现(完美缓存策略LruCache+DiskLruCache)

    这几天一直研究在安卓开发中图片应该如何处理,在网上翻了好多资料,这里做点小总结,如果朋友们有更好的解决方案,可以留言一起交流下. 内存缓存技术 在我们开发程序中要在界面上加载一张图片是件非常容易的事情 ...

  8. VS-Visual Studio-IIS Express 支持局域网访问

    本文转自:http://www.itnose.net/detail/6132793.html 使用Visual Studio开发Web网页的时候有这样的情况:想要在调试模式下让局域网的其他设备进行访问 ...

  9. 快乐的JS正则表达式(开篇)

    我不喜欢一开始就去讨论某某有多强大,因为我觉得那样没意思,首先我们的知道它是干什么,对我们有啥用,再去讨论它的强大之处也不迟.那和往常一样我们先来看几个例子. var arr = [1,4,2,5,2 ...

  10. http--响应请求状态码

    针对客户端向Web服务器发送的任意一个HTTP请求,不论在何种情况下得到一个响应,每个响应均具有一个由3位数字表示的状态码和相应的描述文字.不同数值的状态码体现了不同类型的响应状态,W3C对响应状态码 ...