打印

写好设备驱动程序--献给还在裸奔的菜鸟们

[复制链接]
2355|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zyboy|  楼主 | 2009-5-22 11:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在我们大家耳闻的无论是vxworks还是linux的,设备驱动程序(或者是所说的BSP)的编写都是很重要,它是介于底层硬件和上层软件之间的底层软件开发包。

对于一个公司来说,最重要的是产品,时间绝对是个重要因素。很多公司往往产品还有很多问题,就推出了,为什么?抢占市场,你产品再好,晚了,也就毫无价值。这就是为什么很多大公司选择vxworks的原因,不用花费大量时间研究内核,内核的可靠性都是需要大量时间去验证。对不起,商场如战场,这就是为什么老板只关心你的程序能不能用,有没有bug,他才不管你程序写的多好多烂。所以一般公司只会重点招两类人:一种写驱动,一种写应用。内核,bootload,对不起,不会让你写,这些都是一些公司前辈高手长时间完成的,也是公司的宝贵财富。

知道驱动的重要了吧?那我们裸奔也要写好设备驱动。没听过?不会,你天天都在写,只是你不知道,你的系统有要控制的外围芯片吗?如果有,对它控制的编写就是驱动编写,当然了我们裸奔的驱动程序要比操作系统的驱动要好些多了。

比如在你的系统用到某个芯片,那就给它编写个设备驱动吧。一个头文件和一个C文件就可以了

头文件主要干什么:
(1)定义芯片的控制引脚     例如 sbit NAME = P*^*;
 (2) 定义芯片的内部的寄存器 例如 #define REG = 0x0001 (不要在程序出现莫名其妙的常量)
C文件主要干什么
 (3) 写好功能函数,给上层调用(就是你的主函数或其他子函数)

值得注意的,就是驱动程序的延时要注意,最好注意延时时间和当前CPU频率的关系,这特别是别人如果改变CPU频率,说不定由于延时问题,你的驱动程序就会有问题!

好处:
 (1) 模块的独立性,程序既便于检测,结构清晰
 (2) 便于移植。当别人再用到这个芯片,直接copy驱动程序,就可以了,不用又要重新看datasheet,重复劳动。
 (3) 这也是种资源的积累。

最后建议写程序写规范,推荐书籍《高质量C++编程指南》,如果你没看到,真的建议你看看。

下面是在程序中最好不要干的事情
1. 不在头文件定义变量  --基础知识
2. 不要在文件出现莫名其妙的常量(除了循环长度和寄存器赋值等)
3. 不要用到int变量,用short int或者 short代替   ---在51和ARM中check in check out问题就出来了int 51(2)  ARM(4)
4. 不要不写注释 ----最基础!!!

要注意的事情
1. 程序每个条件走到,即使没用到,也要留出空着
2. 程序边界考虑
3. 程序异常考虑,例如擦写flash如果突然掉电会怎么,你的程序上电后还能正常工作吗
4. 中断和主程序的共享资源的问题
。。。。。。。。。。。。。。。太多了说不完

相关帖子

沙发
icecut| | 2009-5-22 11:23 | 只看该作者

现在天气比较热.还可以裸奔

赚钱是硬道理.管他老板想什么呢.
民工是大问题.听话就是好员工

使用特权

评论回复
板凳
inter_zhou| | 2009-5-22 11:24 | 只看该作者

不错,值得顶一下

使用特权

评论回复
地板
machunshui| | 2009-5-22 14:48 | 只看该作者

往往程序的复杂性就体现在这里

"3. 程序异常考虑"

往往程序的复杂性就体现在这里.

使用特权

评论回复
5
古道热肠| | 2009-5-22 15:45 | 只看该作者

short int是个好建议,现在形成习惯,便于过度到ARM平台

使用特权

评论回复
6
aceice| | 2009-5-22 16:39 | 只看该作者

有些问题还真没考量过

short int这个................
程序异常一般都是主程序里去检查吧,驱动层只要提交错误信息就行。

使用特权

评论回复
7
ch2003_23| | 2009-5-22 16:55 | 只看该作者

不错

顶起

使用特权

评论回复
8
lag3631| | 2009-5-22 18:29 | 只看该作者

说得很好!

使用特权

评论回复
9
highgear| | 2009-5-22 20:53 | 只看该作者

使用特权

评论回复
10
呆板书生| | 2009-5-23 08:10 | 只看该作者

总结得真好,

使用特权

评论回复
11
ayb_ice| | 2009-5-23 12:16 | 只看该作者

裸奔 != 菜鸟

使用特权

评论回复
12
sz_kd| | 2009-5-23 12:43 | 只看该作者

呵呵.路过学习

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

101

主题

356

帖子

0

粉丝