1、Linux中EXPORT_SYMBOL的用法
EXPORT_SYMBOL标签内定义的函数对全部内核代码公开,不用修改内核代码就可以在您的内核模块中直接调用。您还可以手工修改内核源代码来导出另外的函数,用于重新编译并加载新内核后的测试。
//mod1.c
编译模块mod2,成功。
加载mod2时,输出:
insmod: error inserting 'mod2.ko': -1 Invalid parameters
dmesg查看:
mod2: no symbol version for func...
分类:
系统相关 时间:
2015-05-29 10:13:47
阅读次数:
244
生成驱动依赖文件depmod会生成驱动之间的依赖文件 modules.dep,保存在/lib/modules/$(uname -r)目录下。查看已经加载驱动lsmod
?查看驱动信息modinfo
还可以从模块文件名字分析驱动信息modinfo -F depends
查看相关字段信息加载驱动insmod后面加驱动的路径。带依赖分析加载驱动modprobe可以加驱动的驱动名,并自行分析依赖文件m...
分类:
系统相关 时间:
2015-05-28 18:07:57
阅读次数:
221
1.
关键配置文件路径
1).
项目板级配置:idh.code/device/sprd/scx35_sp7731geaplus_pad_qhd/文件夹内各文件
⑴.BoardConfig.mk---板级宏配置文件。包括设置该板(项目)所使用的uboot/kerenl全局配置宏文件,摄像头接口类型、分辨率等参数,所使用的重力加速度、光线传感器,内部存储空间大小分配等。
⑵.
...
分类:
其他好文 时间:
2015-05-28 17:59:45
阅读次数:
4877
在linux编写驱动的过程中,有两个文件是我们必须要了解和知晓的。这其中,一个是Kconfig文件,另外一个是Makefile文件。如果大家比较熟悉的话,那么肯定对内核编译需要的.config文件不陌生,在.config文件中,我们发现有的模块被编译进了内核,有的只是生成了一个module。这中间,我们如何让内核发现我们编写的模块呢,这就需要在Kconfig中进行说明。至于如何生成模块,那么就需要利用Makefile告诉编译器,怎么编译生成这个模块。模仿其实就是最好的老师,我们可以以内核中经常使用到的网卡e...
分类:
系统相关 时间:
2015-05-28 14:15:39
阅读次数:
232
等待队列工作过程就是睡眠和唤醒的过程
使用:
static DECLARE_WAIT_QUEUE_HEAD(button_waitq); //定义初始化等待队列头
wake_up_interruptible(&button_waitq); //唤醒 发出
wait_event_interruptible(button_waitq, e...
分类:
系统相关 时间:
2015-05-28 14:11:49
阅读次数:
166
原子操作
原子操作就是单位操作,也就是说操作过程不能被中断
下面代码中每条语句看起来是原子操作,其实不是原子操作;
int main(0
{
int i=2;//两天汇编语句组成
i=i+3;//三条汇编语句组成
}
实现原子操作方法;
1 自旋锁
自旋锁它是为为实现保护共享资源而提出一种锁机制。其实,自旋锁与互斥锁比较类似
,它们都是为了解决对某项资源的互斥...
分类:
系统相关 时间:
2015-05-28 10:53:52
阅读次数:
269
1,、proc — 一个虚拟文件系统
/proc 文件系统是一种内核和内核模块用来向进程 (process) 发送信息的机制 (所以叫做 /proc)。这个伪文件系统让你可以和内核内部数据结构进行交互,获取 有关进程的有用信息,在运行中 (on the fly) 改变设置 (通过改变内核参数)。 与其他文件系统不同,/proc 存在于内存之中而不是硬盘上。
2、/proc 由内核控制,没有承载 /proc 的设备。因为 /proc 主要存放由内核控制 的状态信息,所以大部分这些信息的逻辑位置位于内核控制的...
分类:
系统相关 时间:
2015-05-26 09:21:30
阅读次数:
275
#This line cannot be removed. by FriendlyARM(www.arm9.net)
CheckOneButton=No
Action = Install
OS =Linux
LCD-Mode = No
LCD-Type = S70
LowFormat = No
VerifyNandWrite = No
CheckCRC32=No
StatusType = Beeper | LED
################### Linux ##############...
分类:
其他好文 时间:
2015-05-24 17:28:49
阅读次数:
214
1、互斥锁原理
在编程中,引入了对象互斥锁的概念,来保证共享数据操作的完整性。每个对象都对应于一个可称为" 互斥锁" 的标记,这个标记用来保证在任一时刻,只能有一个线程访问该对象。
互斥锁,是一种信号量,常用来防止两个进程或线程在同一时刻访问相同的共享资源。可以保证以下三点:
(1)原子性:把一个互斥量锁定为一个原子操作,这意味着操作系统(或pthread函数库)保证了如果一个线程锁定了一个互斥量,没有其他线程在同一时间可以成功锁定这个互斥量。
(2)唯一性:如果一个线程锁定了一个互斥量,在它解除锁...
分类:
其他好文 时间:
2015-05-21 22:42:10
阅读次数:
178
1、编写任何驱动程序都必须带的头文件
#include :在编写任何模块都需要包含此头文件。该头文件自动包含了 头文件,该头文件包含了宏 MODULE_LICENSE("GPL")的定义。
#include :此头文件也是...
分类:
系统相关 时间:
2015-05-19 19:14:55
阅读次数:
164