- 博客(16)
- 收藏
- 关注
原创 uboot目录介绍
1、第一类目录与处理器体系结构或者开发板硬件直接相关;2、第二类目录是一些通用的函数或者驱动程序;3、第三类目录是u-boot的应用程序、工具或者文档。Board:和一些已有开发板相关的文件,比如Makefile和u-boot.lds等都和具体开发板的硬件和地址分配有关。Common:与体系结构无关的文件,实现各种命令的C文件。CPU:CPU相关文件,其中的子目录都
2014-06-30 14:29:22 856
原创 SI3.5添加新的文件类型
大家用source insight看linux源码的时候都遇到这么一个麻烦,makefile和kconfig中的文字在搜索的时候不能找到,这是因为source insight默认是不选makefile的,也没有konfig这种类型的文件。下面就讲一下如何添加makefile:打开Source Insight,在新建工程之前,进入Options -> Document Options
2013-08-28 00:45:35 945
原创 Linux--中断
专业的linux驱动开发离不开中断处理,在处理中断,首先要注册中断,在linux下通过request_irq来注册中断的,不同内核版本,注册中断所需要的参数也不同,本文以linux-2.6.34为例,对比老版本进行说明。 request_irq()函数在include/linux/interrupt.h中定义,原型为: static inline int __must_chec
2013-06-27 23:32:18 749
原创 LInux总线,设备和驱动
linux设备驱动归纳总结:总线、设备和驱动xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx这几天一直在看设备模型,内核的代码看得我越来越沮丧,特别是kboject、kset和ktype之间的关系。但是,设备模型的归纳我打算先跳过这几个重要结构体,先介绍总线、
2013-06-21 23:44:17 816
原创 Linux的同步机制
一、引言在现代操作系统里,同一时间可能有多个内核执行流在执行,因此内核其实象多进程多线程编程一样也需要一些同步机制来同步各执行单元对共享数据的访问。尤其是在多处理器系统上,更需要一些同步机制来同步不同处理器上的执行单元对共享的数据的访问。在主流的Linux内核中包含了几乎所有现代的操作系统具有的同步机制,这些同步机制包括:原子操作、信号量(semaphore)、读写信号量(rw_semap
2013-06-04 23:29:09 609
转载 barrier 和 preempt_disable() 学习
#define preempt_disable() \do{ \ inc_preempt_count(); \ barrier(); \}while(0) 一、这个barrier 在干什么... 内存屏障出现因为编译器或现在的处理器常会自作聪明地对指令序列进行一些处理,比如数据缓存,读写指令乱序执行等等。如果优化对象是普通内存,那么一般会提升性能
2013-06-04 22:16:23 538
原创 container_of
linux中container_of【zz】2013年6月3日15:11:12自己的理解:参数1 file_ops 参数2 属于哪个结构体 参数3 参数2中的结构体当中哪个成员 返回值:返回某个结构体变量的在内存中的首地址
2013-06-03 15:19:30 471
原创 signal_pending与返回-ERESTARTSYS
经常我们在睡眠的代码中 会看到这样的例子:if (signal_pending(current)) {ret = -ERESTARTSYS;return ret;}关于 -ERESTARTSYS到底是什么意思? -ERESTARTSYS表示信号函数处理完毕后重新执行信号函数前的某个系统调用.也就是说,如果信号函数前有发生
2013-06-01 02:27:08 706
转载 信号量/互斥的理解
信号量实现的机制信号量是一种睡眠锁。它是实现同步操作,防止竟态的方式之一。任何进程在对共享数据进行读写操作之前必须获得用来保护共享数据的信号量,否则不能供访问权限,信号量会把这个访问进程放进一个等待队列中(这个等待队列是在信号量初始化过程中被初始化的),然后让其进入睡眠状态。这是处理器重新调度,去执行其他进程的操作。保护共享数据的信号量被释放,被这个信号量放进等待队列的进程会被激活,获得该信号
2013-05-03 11:22:25 729
原创 等待队列头init_waitqueue_head
等待队列头 |wait_queue_head_t | init_waitqueue_head() | DECLARE_WAIT_QUEUE_HEAD多个线程在等待同一件事件的发生时会进入睡眠状态,等待事件发生时,它们又会被唤醒从而结束休眠。在被唤醒的过程中,首先需要能够找到这些进程,而这些等待的进程由一个称为等待队列的数据结构维护着。等待队列就是一个进程链表,其中包含了所有等待某个
2013-05-03 11:07:45 3852
原创 register_chrdev_region()参数意义以及动态分配设备号
1. 字符设备结构体 内核中所有已分配的字符设备编号都记录在一个名为 chrdevs 散列表里。该散列表中的每一个元素是一个 char_device_struct 结构,它的定义如下: static struct char_device_struct { struct char_device_struct *next; // 指向散列冲突链表中的下一个元
2013-05-01 00:31:17 2592
原创 register_chrdev_region()注册的问题
2013年5月1日0:27:48register_chrdev_region()主设备号、次设备号2008年03月23日 星期日 21:40分配并注册主次设备号 设备号是在驱动module中分配并注册的,也就是说,驱动module拥有这个设备号(我的理解),而/dev目录下的设备文件是根据这个设备号创建的,因此,当访问/dev目录下的设备文件时,驱动module就知道
2013-05-01 00:23:41 776
转载 Linux设备驱动--简单字符设备驱动程序
Linux设备驱动程序——简单字符设备驱动程序 一、重要知识点1. 主次设备号dev_t dev_t是内核中用来表示设备编号的数据类型;int MAJOR(dev_t dev)int MINOR(dev_t dev) 这两个宏抽取主次设备号。dev_t MKDEV(unsigned int major, unsignedi
2013-04-25 12:47:32 614
原创 mini2440 led驱动
mini2440 led驱动 2009-09-27 18:36:12| 分类:C++学习 | 标签:|字号大中小订阅 整理一下思路,刚刚看的mini2440 led驱动。mini2440的led接了4个GPIO,分别是GPB5-8关于这几个GPIO的寄存器描述可以看三星的文档,主要是GPBCON,GPBDAT和GPBUP,GPBC
2013-04-23 23:16:15 621
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人