在我们大家耳闻的无论是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. 中断和主程序的共享资源的问题 。。。。。。。。。。。。。。。太多了说不完 |