小松之LINUX 驱动学习笔记(一)
本篇主要是讲解驱动开发的基础知识以及一些环境配置方面的问题。
下面是一个hello world的简单的模块代码,很简单。
/**********************
* 模块的简单例子
* author: 小松
* date : 2014-4-20
***********************/
#include<linux/module.h>
/*模块的入口函数,在insmod时调用*/
static int __init my_init(void)
{
	printk("hello world,i am xiao song\n");
	return 0;
}
/*模块的出口函数,在rmmod时调用*/
static void __exit my_exit(void)
{
	printk("bye bye xiao song\n");
}
//这是驱动程序初始化的入口点,对于内置模块,内核在引导时调用该入口点
module_init(my_init);
//这是驱动程序卸载的入口
module_exit(my_exit);
MODULE_LICENSE("GPL");
MODULE_AUTHOR("SYS");
	上面这个例子很简单,我相信大部分人都能看懂,如果看不懂可以谷歌一下,这里就不再赘述啦。
	下面是Makefile
	obj-m :=01.o
	KERNEL := /lib/modules/`uname -r`/build
	all:
			make -C $(KERNEL) M=`pwd` modules
	install:
			make -C $(KERNEL) M=`pwd` modules_install
			depmod -A
	clean:
			make -C $(KERNEL) M=`pwd` clean
			rm -f *.*~
这个很简单,网上有很多的资料,不明白的自己问谷歌吧。下面有源码,自己可以编译下
我的系统是ubuntu14.04,我编译的时候一直都是3.13那个内核树,我想编译3.08那个,可是一直没有成功,后来,我把
KERNEL := /lib/modules/`uname -r`/build改成KERNEL := /lib/modules/3.0.8-FriendlyARM/build就可以拉,如果谁有知道更好地方法,请告知一下。
小松之LINUX 驱动学习笔记(一)的更多相关文章
- 小松之LINUX 驱动学习笔记(二)
		这两天一直在看字符驱动那块,后来从网上找啦几个例子,自己编译啦下,安装啥的都挺正常,就是用测试程序测试的时候总出问题,现在找到一个能测试的代码,自己先看看和原来的那个代码有啥不同,后面会继续更新,说下 ... 
- 小松之LINUX驱动学习笔记之模块间函数调用通讯
		1. 符号导出函数 EXPORT_SYMBOL() EXPORT_SYMBOL标签内定义的函数对全部内核代码公开,不用修改内核代码就可以在您的内核模块中直接调用. EXPORT_SYMBOL_GPL( ... 
- 小松之LINUX 驱动学习笔记(开篇)
		时间对每个人都是公平的,就看你怎么对待他.每天多努力一点,未来就会轻松一点.作为一名北漂,感受着首都的压力,也曾萌生过逃离北上广的想法,但是,最后我最终还是选择留下来,随着年龄的增长,我已经没有那么多 ... 
- linux 驱动学习笔记01--Linux 内核的编译
		由于用的学习材料是<linux设备驱动开发详解(第二版)>,所以linux驱动学习笔记大部分文字描述来自于这本书,学习笔记系列用于自己学习理解的一种查阅和复习方式. #make confi ... 
- Linux 驱动学习笔记05--字符驱动实例,实现一个共享内存设备的驱动
		断断续续学驱动,好不容易有空,做了段字符驱动的例子.主要还是跟书上学习在此记录下来,以后说不定能回过头来温故知新. 首先上驱动源码 gmem.c: /************************* ... 
- linux 驱动学习笔记04--简单驱动
		首先贴代码helloworld.c和Makefile /************************************************************************ ... 
- linux 驱动学习笔记03--Linux 内核的引导
		如图所示为 X86 PC 上从上电/复位到运行 Linux 用户空间初始进程的流程.在进入与 Linux相关代码之间,会经历如下阶段. ( 1 ) 当系统上电或复位时, CPU 会将 PC 指针赋值为 ... 
- linux驱动学习笔记---实现中断下半部以及驱动编写规范(七)【转】
		转自:https://blog.csdn.net/weixin_42471952/article/details/81609141 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协 ... 
- linux 驱动学习笔记02--应用实例:在内核中新增驱动代码目录和子目录
		下面来看一个综合实例,假设我们要在内核源代码 drivers 目录下为 ARM 体系结构新增如下用于 test driver 的树型目录:| --test | -- cpu | -- cpu.c ... 
随机推荐
- POJ 1985
			求一棵树内最远的两点,DFS,顺便记录以某节点为根内最远的两点的距离,返回最远点的距离.其实是DP. #include <cstdio> #include <iostream> ... 
- UVA 11383 - Golden Tiger Claw(二分图完美匹配扩展)
			UVA 11383 - Golden Tiger Claw 题目链接 题意:给定每列和每行的和,给定一个矩阵,要求每一个格子(x, y)的值小于row(i) + col(j),求一种方案,而且全部行列 ... 
- expdp impdp 数据库导入导出命令具体解释
			一.创建逻辑文件夹,该命令不会在操作系统创建真正的文件夹.最好以system等管理员创建. create directory dpdata1 as 'd:\test\dump'; 二.查看管理理员文件 ... 
- atitit.浏览器插件解决方式----ftp插件  attilax 总结
			atitit.浏览器插件解决方式----ftp插件 attilax 总结 1. 界面概览 D:云盘同步目录p5p5f tp.demo.html1 2. 初始化1 3. 事实调用2 4. 參考2 1 ... 
- DNS负载均衡  Nginx 负载均衡的种类
			DNS负载均衡 当一个网站有足够多的用户的时候,假如每次请求的资源都位于同一台机器上面,那么这台机器随时可能会蹦掉.处理办法就是用DNS负载均衡技术,它的原理是在DNS服务器中为同一个主机名配置多个I ... 
- Mysql数据库性能
			Mysql数据库设计规范 https://www.cnblogs.com/Luke-Me/p/8994432.html 我们在项目一开始的设计中,就要忙着考虑数据库的设计,表.字段.索引.sql等等, ... 
- Netty简单介绍(非原创)
			文章大纲 一.Netty基础介绍二.Netty代码实战三.项目源码下载四.参考文章 一.Netty基础介绍 1. 简介 官方定义为:”Netty 是一款异步的事件驱动的网络应用程序框架,支持快速地 ... 
- python 网络通讯 服务器端代码demo,能够同时处理多个客户端的连接请求
			这是一个python网络通讯服务器端的代码demo,能够同时处理多个客户端的连接请求. from socket import * import threading from datetime impo ... 
- X264编码实现
			H264 H264的官方测试源码,由德国hhi研究所负责开发.特点:实现了264所有的特性,由于是官方的测试源码,所以学术研究的算法都是在JM基础上实现并和JM进行比较.但其程序结构冗长,只考虑引入各 ... 
- java8 Stream 笔记
			stream的定义:对一个源中的一系列元素进行聚合操作. 一系列元素:stream对一组有特定类型的元素提供了一个接口.但是stream并不真正存储元素,元素根据需求被计算出来. 源:stream可以 ... 
