fl2440开发板hello world模块驱动编写
来源:互联网 发布:c语言 戏说关键字 ppt 编辑:程序博客网 时间:2024/05/22 05:15
hello world
许多的编程都是从hello world开始编写,虽然简单但是意义重大!!!
hello.c 1 /********************************************************************************* 2 * Copyright: (C) 2015 guanlei 3 * All rights reserved. 4 * 5 * Filename: hellow.c 6 * Description: This file hellw.c 7 * 8 * Version: 1.0.0(2015年10月22日) 9 * Author: guanlei <995318056@qq.com> 10 * ChangeLog: 1, Release initial version on "2015年10月22日 19时08分08秒" 11 * 12 ********************************************************************************/ 13 14 #include<linux/init.h> //所有驱动编写都要包含的头文件 15 #include<linux/module.h> 16 17 18 static int hello_init(void) 19 { 20 printk(KERN_ALERT"hello world\n"); //KERN_ALERT是在内核中定义的规定的打印级别 21 return 0; 22 } 23 24 25 static int hello_exit(void) 26 { 27 28 printk(KERN_ALERT"GOOD BEY\n"); 29 30 } 31 32 module_init(hello_init); // module_init module_exit 内核中合数的宏 insmod 时会调用的module_init() 中的函数 33 module_exit(hello_exit); 34 ~ ~
hello world驱动的Makefile编写
适用于自己的linux操作系统
1
2 obj-m=hello.o //驱动模块从目标文件中构造
3 modules:
4 make -C /lib/modules/`uname -r`/build/ M=`pwd` modules // -C 指定内核源代码的目录 uname -r获得自己内核的版本信息 M指定编译生成的文件放在哪个路径中
5 make clean
6
7 clean:
8 rm -f *.ko.* *.o *.mod.c *.order *.symvers
~
~
make 成功后,会生成一个hello.ko的文件,insmod hello.ko (2.6版本的内核要加.ko 3.0版本的内核不用加.ko)就会在加载我们的驱动模块,若果想要看结果,敲dmesg再组后一行就会有hello world ,移除hello.ko的话要用rmmod命令,就会调用module_exit()里边调用的函数,dmesg查看信息的就会在最后一行出现GOOD BEY
2 obj-m=hello.o //驱动模块从目标文件中构造
3 modules:
4 make -C /lib/modules/`uname -r`/build/ M=`pwd` modules // -C 指定内核源代码的目录 uname -r获得自己内核的版本信息 M指定编译生成的文件放在哪个路径中
5 make clean
6
7 clean:
8 rm -f *.ko.* *.o *.mod.c *.order *.symvers
~
~
make 成功后,会生成一个hello.ko的文件,insmod hello.ko (2.6版本的内核要加.ko 3.0版本的内核不用加.ko)就会在加载我们的驱动模块,若果想要看结果,敲dmesg再组后一行就会有hello world ,移除hello.ko的话要用rmmod命令,就会调用module_exit()里边调用的函数,dmesg查看信息的就会在最后一行出现GOOD BEY
接下来的makefile是适配fl2440开发板的
Makefile
1 CC=/opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-gcc //应为要把模块给开发板用所以我们要把交叉编译器作指定我们的编译器
2 KDIR?=/home/guanlei/fl2440/kernel/linux-3.0 //该目录是告诉Makefile 从哪找到我们的内核
3 obj-m:=hello.o
4
5 default:
6 $(MAKE) -C $(KDIR) M=`pwd` modules
7 make clean
8
9 clean:
10 rm -f *.ko.* *.o *mod.c *.order *.symvers
~
make之后和上面的步骤一样,唯一的区别就是在加载驱动模块和移除驱动模块时 insmod 和rmmod不要.ko
感兴趣的读者若果想要知道insmod的工作,它就依赖于定义在kernel/module.c中的系统调用
Makefile
1 CC=/opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-gcc //应为要把模块给开发板用所以我们要把交叉编译器作指定我们的编译器
2 KDIR?=/home/guanlei/fl2440/kernel/linux-3.0 //该目录是告诉Makefile 从哪找到我们的内核
3 obj-m:=hello.o
4
5 default:
6 $(MAKE) -C $(KDIR) M=`pwd` modules
7 make clean
8
9 clean:
10 rm -f *.ko.* *.o *mod.c *.order *.symvers
~
make之后和上面的步骤一样,唯一的区别就是在加载驱动模块和移除驱动模块时 insmod 和rmmod不要.ko
感兴趣的读者若果想要知道insmod的工作,它就依赖于定义在kernel/module.c中的系统调用
0 0
- fl2440开发板hello world模块驱动编写
- 基于fl2440开发板Hello World 模块
- 编写 Hello world 模块驱动
- 编写 Hello world 模块驱动
- FL2440驱动添加(1):hello world 驱动模块添加
- Linux内核驱动模块编写(Hello,World)
- Linux内核驱动模块编写(Hello,World)
- 第一个模块,hello world 驱动编写
- 驱动开发-1 模块hello world
- fl2440——驱动入门,hello world!
- hello world!(驱动模块)
- linux2.6驱动模块编写的一个例子-hello world
- Hello World驱动模块尝试<2>_将驱动加载到mini210s开发板
- 编写linux驱动--Hello World
- 驱动学习,hello world模块
- TQ2440驱动-hello world 模块
- TQ2440驱动-hello world 模块
- TQ2440驱动-hello world 模块
- TOj 1153. Word Reversal【栈】
- Android之RecyclerView之空数据提示
- 最简单实用的MongoDB安装教程:在CentOS中使用 yum 安装MongoDB及服务器端配置详解
- ssh关闭后仍保持当前运行的进程
- 专访腾讯徐汉彬:日请求高达3.5亿+平台的架构设计及演变
- fl2440开发板hello world模块驱动编写
- boost:function
- 文章标题js一些方法的总结
- Windows安装Theano
- Android多媒体—音频技术
- 虚函数在对象中的内存布局
- JDBC-查询操作
- Linux 对VIM的一些格式设置
- C++类内存分布