FL2440驱动添加(1):hello world 驱动模块添加
试试第一个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 驱动模块添加的更多相关文章
- FL2440驱动添加(3)LCD驱动添加学习笔记
		
FL2440 LCD内置控制器,320*240 TFT型LCD. 自我理解总结的两种添加驱动模式: 非platform方式添加驱动: 加载驱动: 1,硬件初始化,申请内存,并作地址映射 2,分配设备号 ...
 - FL2440驱动添加(2): RTC(Real time clock)
		
一,Linux下的时间分为两种,系统时间与硬件时间(RTC芯片): 1,系统时间就是运行系统能够直接看到的时间: 2,硬件时间就是RTC芯片中的时间,断电任然有电池供电: linux系统开机时,会从R ...
 - 如何在MyEclipse中通过hibernate使用jtds驱动连接数据库,并向数据库添加数据的方法
		
最近学习了下如何在MyEclipse中通过hibernate使用jtds驱动连接数据库,并向数据库添加数据的方法,虽然MyEclipse中自带了连接数据库的方法,我也尝试了下其他方法,如有不当之处请指 ...
 - 添加EF上下文对象,添加接口、实现类以及无处不在的依赖注入(DI)
		
添加EF上下文对象,添加接口.实现类以及无处不在的依赖注入(DI) 目录索引 [无私分享:ASP.NET CORE 项目实战]目录索引 简介 上一章,我们介绍了安装和新建控制器.视图,这一章我们来创建 ...
 - Linux-NGINX 能否添加P3P头,如何添加。 - 德问:编程社交问答
		
Linux-NGINX 能否添加P3P头,如何添加. - 德问:编程社交问答 您的投票让 杜鑫 声誉值增加5分. 支持投票,不仅能让提问用户获得声誉值,让好的问题有更多的曝光,更能帮助社区筛选出好 ...
 - JS添加节点方法与JQuery添加节点方法的比较及总结
		
原生JS添加节点方法与JQuery添加节点方法的比较及总结 一.首先构建一个简单布局,来供下边讲解使用 1.HTML部分代码: <div id="div1">div ...
 - PDF怎样添加注释,PDF文件添加注释的方法
		
Word文件跟纸质文件想要添加注释相信大家都知道该怎么添加,那么现在也使用频率挺高的PDF格式的文件要怎么添加注释呢?添加注释的方法有什么呢?有许多的小伙伴们都想知道吧,今天小编就来跟大家分享一下,想 ...
 - 于用cocoapods添加第三方库,并且cocoapods添加成功,但是却在任何一个文件上都导入不了头文件
		
关于用cocoapods添加第三方库,并且cocoapods添加成功,但是却在任何一个文件上都导入不了头文件,而且根本没有提示,即使手动打#import "xxxx.h"也报错xx ...
 - mac 添加环境变量(jmeter添加至环境变量中)
		
Mac系统的环境变量,加载顺序为:a. /etc/profileb. /etc/pathsc. ~/.bash_profiled. ~/.bash_logine. ~/.profilef. ~/.ba ...
 
随机推荐
- iOS杂谈-我为什么不用Interface builder
			
在互联网上关于Interface Builder的争吵每天都在发生,用和不用大家都有一大堆的理由.最近看了这篇文章,很多地方和作者有共鸣,结合自己的一些经历,就有了你现在所看到的东西,你可以把它当成前 ...
 - dos下mysql登陆
			
dos下先进入mysql的bin目录 然后执行:mysql -r root -p123456(注意123456是密码) 进去之后:首先要这样:use test;//代表你目前要使用的是test这个数据 ...
 - 由于无法创建应用程序域,因此未能执行请求。错误: 0x80070002 系统找不到指定的文件
			
前两天安装了一堆补丁后突然发现,原本正常使用了一年的应用系统打不开了,到事件日志中发现有.net framewok 2.0的补丁安装失败的日志,于从从重装补丁开始.到重新注册.net框架,再到所有.n ...
 - DMSFrame 之SqlCacheDependency(一)
			
1.SqlCacheDependency都是我们常用的一种Cache写法了.对后面的SQL 2005算是比较成熟的一种缓存模式了,这里介绍一下DMSFrame的SqlCacheDependency是怎 ...
 - 一起做RGB-D SLAM 第二季 (二)
			
本节目标 我们要实现一个基本的文件IO,用于读取TUM数据集中的图像.顺带的,还要做一个参数文件的读取. 设计参数文件读取的类:ParameterReader 首先,我们来做一个参数读取的类.该类读取 ...
 - jdk的设置及安装android studio提示does not point to a valid jvm问题
			
设置方法: 我的电脑->属性->高级->环境变量->系统变量中添加以下环境变量: JAVA_HOME值为:安装JDK的目录, 我的为C:\Program Files\Java\ ...
 - 【cs229-Lecture17】离散与维数灾难
			
主要内容: 解决MDP问题的算法: 离散化: 模型MDP的同化型: (model/similator) 拟合值迭代算法: Q函数: 近似政策迭代: 笔记转自:http://blog.csdn.net/ ...
 - Netty5 + WebSocket 练习
			
1. 了解WebSocket知识 略2. websocket实现系统简单反馈时间 WebSocketServerHandler.java package com.jieli.nettytest.web ...
 - 从头学Qt Quick(3)-- 用QML写一个简单的颜色选择器
			
先看一下效果图: 实现功能:点击不同的色块可以改变文字的颜色. 实现步骤: 一.创建一个默认的Qt Quick工程: 二.添加文件Cell.qml 这一步主要是为了实现一个自定义的组件,这个组件就是我 ...
 - DB2 v9.1 RACF 瞎学笔记
			
一.DB2 RACF control module 定义在prefix.SDSNSAMP(DSNXRXAC)中,查找一下数据集 符合*.SDSNSAMP数据集有两个,我这里使用的DB V9,自然pre ...