自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 资源 (1)
  • 收藏
  • 关注

原创 [Linux driver] Mutex, semaphore, spinlock的深度解析

Mutex是一把钥匙,一个人拿了就可进入一个房间,出来的时候把钥匙交给队列的第一个。一般的用法是用于串行化对critical section代码的访问,保证这段代码不会被并行的运行。 Semaphore是一件可以容纳N人的房间,如果人不满就可以进去,如果人满了,就要等待有人出来。对于N=1的情况,称为binary semaphore。一般的用法是,用于限制对于某一资源的同时访问。

2011-12-01 11:20:04 3732 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 1456

原创 [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 1139

原创 [linux driver]驱动模型中为什么用一个虚拟的platform_bus/device?

虚拟总线在linux驱动模型中出现,目的很明确,为众多没有“实际领袖”bus的controller找个共同的虚拟的“精神领袖”,既然是虚拟的,当然就可以挂接很多controller了,比如SPI controller, I2C controller等等;那为什么驱动都要找个Bus挂接一下呢?---- 是为了管理大量的同类资源及其驱动而出现的一种管理方式,Bus-x负责所有X设备及其驱动的loa

2011-11-25 16:17:33 1182 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 1182

原创 面对无头绪的Bug,该怎么办?

软件或者驱动开发过程中,有些bug可以很容易的抓出来,但是有些隐藏的很深,只是在某些条件下才会触发产生,这种bug,真是 ugly pest !!简单的Bug,一般来说都是"single process"的,即只处理一个简单的事情,涉及的软件资源【函数】和硬件资源【buf,外设】不多,那么问题就比较容易定位;复杂的bug,一般来说Process是复杂的,用的资源也比较多,“复杂过程 + 多

2011-11-18 16:12:33 671

原创 驱动程序的开发经验:中断与中断

系统假设:单CPU,无操作系统单片机模式使用资源:UART作为调试输出,HDMI控制信号中断 (CEC)其他情况:UART也被main-loop使用uart打印函数:printf(char){ sbuf = char; while(!TI); }软件设计:     在CEC中断信号处理程序中,加入UART的打印信息,会有什么问题?问题: 系统经常会挂掉。原因:  陷入whi

2011-11-18 15:23:17 528

原创 linux驱动开发

最近看Linux的驱动开发,自觉内容不是一般的复杂!需要的知识很多

2011-11-14 15:25:19 542

原创 2009-2010年 中国嵌入式开发从业人员调查报告

<br />调查背景<br />  嵌入式(嵌入式培训嵌入式培训机构嵌入式职场嵌入式软件工程师嵌入式硬件工程师 )软件是嵌入式系统的核心技术之一。在2008年中国软件业收入的7570亿元中,嵌入式软件就占了14.8%,在软件出口中占了2/3左右;目前中国前10家最大的软件企业中,5家是嵌入式软件企业。可以说,嵌入式软件对于中国的重要性,相当于离岸外包对于印度的重要性。而随着城市信息化和行业信息化的持续深入,嵌入式技术已成为信息产业中发展最快、应用最广的计算机技术之一,并被广泛应用于网络通

2011-01-27 19:02:00 1749

原创 关于Linux内核学习的误区以及相关书籍介绍[zt]

关于Linux内核学习的误区以及相关书籍介绍写给Linux内核新手-关于Linux内核学习的误区  先说句正经的:其实我没资格写这篇文章,因为自己也就一两个月以来才开始有所领悟的。因此,这里与其说是关于Linux内核学习的经验,不如说是自己的教训吧,希望不要扔鸡蛋砸我^_^   常常有人问:我想学习内核,需要什么基础吗?Linus Torvalds本人是这样回答的:你必须使用过Linux。 这个……还是有点太泛了吧,我想下面几个基础可能还是需要的,尽管不一定必需:  1, 关于操作系统理论的最初级的知识

2011-01-22 20:04:00 1628

转载 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 12527

原创 宏函数-----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 1280 1

原创 嵌入式工程师的知识结构

     嵌入式开发,已经是一个风生水起的行业,很多的人加入到这个行业,不论是学习计算机的还是学习电子工程学的,不论是专科生还是研究生,为什么?因为行业容量大,对人才的需求量大,就业和跳槽的机会多,工资待遇从K级别到10K~几十K不等。     嵌入式知识领域非常的广泛,从CPU的结构、指令集到基于嵌入式OS的Application的开发,都是嵌入式工程的一部分,从汇编语言到C、C++、C#、Java,编程语言的要求也很宽泛。早期的嵌入式就是单片机,比如C51及16位单片机,这上面的开发相对比较简单,多是单

2011-01-19 21:25:00 1603

uboot使用说明.pdf

u-boot's user guid to guid you use u-boot source code

2011-11-14

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除