
技术学习
文章平均质量分 64
embedded_man2011
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
宏函数-----do while(0)的妙用
<br />下面2个宏函数<br />A:<br /> #define ASSERT(val) {if(!val) return -1;}<br />B:<br /> #define ASSERT(val) do{if(!val) return -1;}while(0)<br /> <br />两者有何区别,难道do while在此简直是多此一举?<br />其实不是的,看下面的应用<br /> <br /> if(cond)<br /> ASSERT(val);<br />原创 2011-01-20 18:10:00 · 1352 阅读 · 1 评论 -
[Linux driver]揭秘platform_driver, platform_device
Platform的出现,如同PCI总线一样,把没有“领导层”的设备全部纳入麾下,是个收养所,专门收养如SPI I2C等连接多slave设备的微型总线,这样一来,linux的sysfs以及kobj内核管理数据结构就可以很好的管理这些微总线,把他们出现在fs下面供用户查看其状态,也便于统一的进行电源管理工作;下面是platform的原文介绍: Platform Devices an原创 2011-11-29 15:57:41 · 1535 阅读 · 0 评论 -
[Linux driver]解密module_init
在Linux底下写过driver模块的对这个宏一定不会陌生。module_init宏在MODULE宏有没有定义的情况下展开的内容是不同的,如果这个宏没有定义,基本上表明阁下的模块是要编译进内核的(obj-y)。1.在MODULE没有定义这种情况下,module_init定义如下:#define module_init(x) __initcall(x);因为#def原创 2011-11-29 10:36:17 · 1226 阅读 · 0 评论 -
[linux driver]驱动模型中为什么用一个虚拟的platform_bus/device?
虚拟总线在linux驱动模型中出现,目的很明确,为众多没有“实际领袖”bus的controller找个共同的虚拟的“精神领袖”,既然是虚拟的,当然就可以挂接很多controller了,比如SPI controller, I2C controller等等;那为什么驱动都要找个Bus挂接一下呢?---- 是为了管理大量的同类资源及其驱动而出现的一种管理方式,Bus-x负责所有X设备及其驱动的loa原创 2011-11-25 16:17:33 · 1272 阅读 · 1 评论 -
[Linux driver] Hello world编译过程解析
虽然系统提供的makefile很智能地将hello.c最终编译成了hello.ko,但是我还是想知道系统的makefile到底干了些什么。 首先看编译驱动的目录,编译后多个四个文件:hello.ko, hello.mod.c, hello.mod.o, hello.o hello.mod.c是一个C程序的源文件,查看其内容,似乎仅仅只是定义了两个全局的结构体变量。原创 2011-11-25 11:33:20 · 1249 阅读 · 0 评论 -
面对无头绪的Bug,该怎么办?
软件或者驱动开发过程中,有些bug可以很容易的抓出来,但是有些隐藏的很深,只是在某些条件下才会触发产生,这种bug,真是 ugly pest !!简单的Bug,一般来说都是"single process"的,即只处理一个简单的事情,涉及的软件资源【函数】和硬件资源【buf,外设】不多,那么问题就比较容易定位;复杂的bug,一般来说Process是复杂的,用的资源也比较多,“复杂过程 + 多原创 2011-11-18 16:12:33 · 716 阅读 · 0 评论 -
驱动程序的开发经验:中断与中断
系统假设:单CPU,无操作系统单片机模式使用资源:UART作为调试输出,HDMI控制信号中断 (CEC)其他情况:UART也被main-loop使用uart打印函数:printf(char){ sbuf = char; while(!TI); }软件设计: 在CEC中断信号处理程序中,加入UART的打印信息,会有什么问题?问题: 系统经常会挂掉。原因: 陷入whi原创 2011-11-18 15:23:17 · 567 阅读 · 0 评论 -
linux驱动开发
最近看Linux的驱动开发,自觉内容不是一般的复杂!需要的知识很多原创 2011-11-14 15:25:19 · 583 阅读 · 0 评论 -
关于Linux内核学习的误区以及相关书籍介绍[zt]
关于Linux内核学习的误区以及相关书籍介绍写给Linux内核新手-关于Linux内核学习的误区 先说句正经的:其实我没资格写这篇文章,因为自己也就一两个月以来才开始有所领悟的。因此,这里与其说是关于Linux内核学习的经验,不如说是自己的教训吧,希望不要扔鸡蛋砸我^_^ 常常有人问:我想学习内核,需要什么基础吗?Linus Torvalds本人是这样回答的:你必须使用过Linux。 这个……还是有点太泛了吧,我想下面几个基础可能还是需要的,尽管不一定必需: 1, 关于操作系统理论的最初级的知识原创 2011-01-22 20:04:00 · 1729 阅读 · 0 评论 -
ARM MIPS PowerPC比较
<br />ARM, MIPS, Power PC的比较 <br />“ARM面向的低端消费类市场,拼的是功耗;PowerPC面向的是中高端市场,比的是性能,好像还没看到谁的手机是PowerPC的,也没有看到谁家企业级以上的交换机是用ARM做的。如果说ARM跟MIPS有得比拼倒还现实些。”<br />“ARM跟MIPS有相同的定位,MIPS也有很多用于消费电子的处理器。”<br />“MIPS的主要立足点是性能,而ARM好象更多是偏向于低功耗。”转载 2011-01-22 19:02:00 · 12704 阅读 · 0 评论 -
[Linux driver] Mutex, semaphore, spinlock的深度解析
Mutex是一把钥匙,一个人拿了就可进入一个房间,出来的时候把钥匙交给队列的第一个。一般的用法是用于串行化对critical section代码的访问,保证这段代码不会被并行的运行。 Semaphore是一件可以容纳N人的房间,如果人不满就可以进去,如果人满了,就要等待有人出来。对于N=1的情况,称为binary semaphore。一般的用法是,用于限制对于某一资源的同时访问。原创 2011-12-01 11:20:04 · 3874 阅读 · 1 评论