关于嵌入式驱动编写的小感悟

2019-07-13 09:19发布

学了那么长时间嵌入式,总算是入门了哈,最近在看两本书《linux程序设计》和《ARM嵌入式linux系统构建与驱动开发范例》,之前学了有一学期的51单片机和AVR,这些芯片的控制,主要是将驱动和应用程序写在一起,这个最大的坏处就是不利于排查错误,通常要硬件单步调试才行,搞的人很蛋疼!现在越来越觉得操作系统是个天才的产物!它巧妙的将应用层和硬件层分开,真的太牛了!其中一个最重要的部分就是驱动,没有驱动硬件就不存在,软件就是空中楼阁,所以,咱立志做一名嵌入式驱动工程师。先谈谈最近学写驱动的一些感悟吧。驱动设备分为字符设备和块设备,我现在学的是字符设备,有GPIO,PWM,A/D,SPI,IIC这几个字符设备。总的感觉有以下几点(1)在linux 下一切东西都可以看作文件,也就是说,驱动设备也是文件,那么,文件就有打开与关闭,读与写,这样几点要素构成。在编写驱动程序的时候,脑子里就要时刻有着这个概念。按部就班的去写。(2)协议!协议一定要融汇贯通!我觉得至少要写过每种协议的芯片程序,幸亏我在学单片机的时候有经常写,所以这方面是没有问题的。(3)识图!因为驱动是搭建在软件和硬件之间的桥梁,所以,一定要懂硬件!才能编写软件,其实,个人认为ARM也不过如此,也就是多了些管脚,多了些寄存器,数据总线,地址总线是32位的而已。那么重点还是在寄存器的控制上,用的好,那些ioctl函数就好些,位操作熟练运用,就没有太大问题。(4)时序,时序这玩意是最容易出问题的地方,因为你在写程序的时候只有逻辑顺序,没有时间顺序,所以逻辑正确,时间错误的实在是太多了!注意啊!额,写到这里,我手机开始卡了…不写了,有些东西还要将来慢慢领悟!