<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[wangdaobadao的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/wangdaobadao</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; wangdaobadao]]></copyright><item><title><![CDATA[Linux下实现U盘、SD卡自动挂载功能 .]]></title><link>https://blog.youkuaiyun.com/wangdaobadao/article/details/78389199</link><guid>https://blog.youkuaiyun.com/wangdaobadao/article/details/78389199</guid><author>wangdaobadao</author><pubDate>Sun, 29 Oct 2017 23:29:25 +0800</pubDate><description><![CDATA[转载大神的一篇文章，个人感觉写的非常好，所以拿过来用]]></description><category></category></item><item><title><![CDATA[uboot的relocate代码分析]]></title><link>https://blog.youkuaiyun.com/wangdaobadao/article/details/36179139</link><guid>https://blog.youkuaiyun.com/wangdaobadao/article/details/36179139</guid><author>wangdaobadao</author><pubDate>Tue, 01 Jul 2014 10:48:55 +0800</pubDate><description><![CDATA[还是那句话：除了代码，神马都是浮云！]]></description><category></category></item><item><title><![CDATA[uboot目录介绍]]></title><link>https://blog.youkuaiyun.com/wangdaobadao/article/details/35996457</link><guid>https://blog.youkuaiyun.com/wangdaobadao/article/details/35996457</guid><author>wangdaobadao</author><pubDate>Mon, 30 Jun 2014 14:29:22 +0800</pubDate><description><![CDATA[1、第一类目录与处理器体系结构或者开发板硬件直接相关；
2、第二类目录是一些通用的函数或者驱动程序；
3、第三类目录是u-boot的应用程序、工具或者文档。

Board：和一些已有开发板相关的文件，比如Makefile和u-boot.lds等都和具体开发板的硬件和地址分配有关。

Common：与体系结构无关的文件，实现各种命令的C文件。

CPU：CPU相关文件，其中的子目录都]]></description><category></category></item><item><title><![CDATA[SI3.5添加新的文件类型]]></title><link>https://blog.youkuaiyun.com/wangdaobadao/article/details/10421453</link><guid>https://blog.youkuaiyun.com/wangdaobadao/article/details/10421453</guid><author>wangdaobadao</author><pubDate>Wed, 28 Aug 2013 00:45:35 +0800</pubDate><description><![CDATA[大家用source insight看linux源码的时候都遇到这么一个麻烦，makefile和kconfig中的文字在搜索的时候不能找到，这是因为source insight默认是不选makefile的，也没有konfig这种类型的文件。下面就讲一下

如何添加makefile：
打开Source Insight，在新建工程之前，进入
Options -> Document Options]]></description><category></category></item><item><title><![CDATA[Linux--中断]]></title><link>https://blog.youkuaiyun.com/wangdaobadao/article/details/9192645</link><guid>https://blog.youkuaiyun.com/wangdaobadao/article/details/9192645</guid><author>wangdaobadao</author><pubDate>Thu, 27 Jun 2013 23:32:18 +0800</pubDate><description><![CDATA[专业的linux驱动开发离不开中断处理，在处理中断，首先要注册中断，在linux下通过request_irq来注册中断的，不同内核版本，注册中断所需要的参数也不同，本文以linux-2.6.34为例，对比老版本进行说明。
    request_irq()函数在include/linux/interrupt.h中定义，原型为：
    static inline int __must_chec]]></description><category></category></item><item><title><![CDATA[LInux总线，设备和驱动]]></title><link>https://blog.youkuaiyun.com/wangdaobadao/article/details/9148963</link><guid>https://blog.youkuaiyun.com/wangdaobadao/article/details/9148963</guid><author>wangdaobadao</author><pubDate>Fri, 21 Jun 2013 23:44:17 +0800</pubDate><description><![CDATA[linux设备驱动归纳总结：总线、设备和驱动


xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
这几天一直在看设备模型，内核的代码看得我越来越沮丧，特别是kboject、kset和ktype之间的关系。但是，设备模型的归纳我打算先跳过这几个重要结构体，先介绍总线、]]></description><category></category></item><item><title><![CDATA[Linux的同步机制]]></title><link>https://blog.youkuaiyun.com/wangdaobadao/article/details/9026697</link><guid>https://blog.youkuaiyun.com/wangdaobadao/article/details/9026697</guid><author>wangdaobadao</author><pubDate>Tue, 04 Jun 2013 23:29:09 +0800</pubDate><description><![CDATA[一、引言
在现代操作系统里，同一时间可能有多个内核执行流在执行，因此内核其实象多进程多线程编程一样也需要一些同步机制来同步各执行单元对共享数据的访问。尤其是在多处理器系统上，更需要一些同步机制来同步不同处理器上的执行单元对共享的数据的访问。
在主流的Linux内核中包含了几乎所有现代的操作系统具有的同步机制，这些同步机制包括：原子操作、信号量（semaphore）、读写信号量（rw_semap]]></description><category></category></item><item><title><![CDATA[barrier 和 preempt_disable() 学习]]></title><link>https://blog.youkuaiyun.com/wangdaobadao/article/details/9026155</link><guid>https://blog.youkuaiyun.com/wangdaobadao/article/details/9026155</guid><author>wangdaobadao</author><pubDate>Tue, 04 Jun 2013 22:16:23 +0800</pubDate><description><![CDATA[#define preempt_disable() \
do{ \
    inc_preempt_count(); \
    barrier();    \
}while(0)
 
一、这个barrier 在干什么...
    内存屏障出现因为编译器或现在的处理器常会自作聪明地对指令序列进行一些处理，比如数据缓存，读写指令乱序执行等等。如果优化对象是普通内存，那么一般会提升性能]]></description><category></category></item><item><title><![CDATA[container_of]]></title><link>https://blog.youkuaiyun.com/wangdaobadao/article/details/9013721</link><guid>https://blog.youkuaiyun.com/wangdaobadao/article/details/9013721</guid><author>wangdaobadao</author><pubDate>Mon, 03 Jun 2013 15:19:30 +0800</pubDate><description><![CDATA[linux中container_of【zz】



2013年6月3日15:11:12
自己的理解：参数1 file_ops
                      参数2 属于哪个结构体
                      参数3 参数2中的结构体当中哪个成员
                      返回值：返回某个结构体变量的在内存中的首地址]]></description><category></category></item><item><title><![CDATA[signal_pending与返回-ERESTARTSYS]]></title><link>https://blog.youkuaiyun.com/wangdaobadao/article/details/9003304</link><guid>https://blog.youkuaiyun.com/wangdaobadao/article/details/9003304</guid><author>wangdaobadao</author><pubDate>Sat, 01 Jun 2013 02:27:08 +0800</pubDate><description><![CDATA[经常我们在睡眠的代码中 会看到这样的例子：

if (signal_pending(current)) {

ret = -ERESTARTSYS;

return ret;

}

关于 -ERESTARTSYS
到底是什么意思? 



 
-ERESTARTSYS表示信号函数处理完毕后重新执行信号函数前的某个系统调用.


也就是说，如果信号函数前有发生]]></description><category></category></item><item><title><![CDATA[信号量/互斥的理解]]></title><link>https://blog.youkuaiyun.com/wangdaobadao/article/details/8879364</link><guid>https://blog.youkuaiyun.com/wangdaobadao/article/details/8879364</guid><author>wangdaobadao</author><pubDate>Fri, 03 May 2013 11:22:25 +0800</pubDate><description><![CDATA[信号量实现的机制
信号量是一种睡眠锁。它是实现同步操作，防止竟态的方式之一。任何进程在对共享数据进行读写操作之前必须获得用来保护共享数据的信号量，否则不能供访问权限，信号量会把这个访问进程放进一个等待队列中（这个等待队列是在信号量初始化过程中被初始化的），然后让其进入睡眠状态。这是处理器重新调度，去执行其他进程的操作。保护共享数据的信号量被释放，被这个信号量放进等待队列的进程会被激活，获得该信号]]></description><category></category></item><item><title><![CDATA[等待队列头init_waitqueue_head]]></title><link>https://blog.youkuaiyun.com/wangdaobadao/article/details/8879264</link><guid>https://blog.youkuaiyun.com/wangdaobadao/article/details/8879264</guid><author>wangdaobadao</author><pubDate>Fri, 03 May 2013 11:07:45 +0800</pubDate><description><![CDATA[等待队列头 |wait_queue_head_t | init_waitqueue_head() | DECLARE_WAIT_QUEUE_HEAD
多个线程在等待同一件事件的发生时会进入睡眠状态，等待事件发生时，它们又会被唤醒从而结束休眠。在被唤醒的过程中，首先需要能够找到这些进程，而这些等待的进程由一个称为等待队列的数据结构维护着。


等待队列就是一个进程链表，其中包含了所有等待某个]]></description><category></category></item><item><title><![CDATA[register_chrdev_region()参数意义以及动态分配设备号]]></title><link>https://blog.youkuaiyun.com/wangdaobadao/article/details/8871156</link><guid>https://blog.youkuaiyun.com/wangdaobadao/article/details/8871156</guid><author>wangdaobadao</author><pubDate>Wed, 01 May 2013 00:31:17 +0800</pubDate><description><![CDATA[1. 字符设备结构体

  内核中所有已分配的字符设备编号都记录在一个名为 chrdevs 散列表里。该散列表中的每一个元素是一个 char_device_struct 结构，它的定义如下：

   static struct char_device_struct {
       struct char_device_struct *next;    // 指向散列冲突链表中的下一个元]]></description><category></category></item><item><title><![CDATA[register_chrdev_region()注册的问题]]></title><link>https://blog.youkuaiyun.com/wangdaobadao/article/details/8871138</link><guid>https://blog.youkuaiyun.com/wangdaobadao/article/details/8871138</guid><author>wangdaobadao</author><pubDate>Wed, 01 May 2013 00:23:41 +0800</pubDate><description><![CDATA[2013年5月1日0:27:48
register_chrdev_region()


主设备号、次设备号
2008年03月23日 星期日 21:40分配并注册主次设备号
    设备号是在驱动module中分配并注册的，也就是说，驱动module拥有这个设备号(我的理解)，而/dev目录下的设备文件是根据这个设备号创建的，因此，当访问/dev目录下的设备文件时，驱动module就知道]]></description><category></category></item><item><title><![CDATA[Linux设备驱动--简单字符设备驱动程序]]></title><link>https://blog.youkuaiyun.com/wangdaobadao/article/details/8848979</link><guid>https://blog.youkuaiyun.com/wangdaobadao/article/details/8848979</guid><author>wangdaobadao</author><pubDate>Thu, 25 Apr 2013 12:47:32 +0800</pubDate><description><![CDATA[Linux设备驱动程序——简单字符设备驱动程序 
 
一、重要知识点

1. 主次设备号
dev_t
         dev_t是内核中用来表示设备编号的数据类型;
int MAJOR(dev_t dev)
int MINOR(dev_t dev)
         这两个宏抽取主次设备号。
dev­_t MKDEV(unsigned int major, unsignedi]]></description><category></category></item><item><title><![CDATA[mini2440 led驱动]]></title><link>https://blog.youkuaiyun.com/wangdaobadao/article/details/8842360</link><guid>https://blog.youkuaiyun.com/wangdaobadao/article/details/8842360</guid><author>wangdaobadao</author><pubDate>Tue, 23 Apr 2013 23:16:15 +0800</pubDate><description><![CDATA[mini2440 led驱动 

2009-09-27 18:36:12|  分类：

C++学习 |  标签：
|字号大中小
订阅 






整理一下思路，刚刚看的mini2440 led驱动。

mini2440的led接了4个GPIO，分别是GPB5-8
关于这几个GPIO的寄存器描述可以看三星的文档，主要是GPBCON,GPBDAT和GPBUP,GPBC]]></description><category></category></item></channel></rss>