Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3122682
  • 博文数量: 685
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 5303
  • 用 户 组: 普通用户
  • 注册时间: 2014-04-19 14:17
个人简介

文章分类

全部博文(685)

文章存档

2015年(116)

2014年(569)

分类: 嵌入式

2014-04-27 01:09:44

原文地址:http://blog.csdn.net/feixiaoxing/article/details/9208307

【 声明:版权所有,欢迎转载,请勿用于商业用途。  联系信箱:feixiaoxing @163.com】


    驱动程序员因为和底层设备打交道的地方比较多,所以很多人认为开发驱动程序是一门非常高级的活儿。但是很多已经做驱动开发的程序员却不这么认为,在他们眼里,开发驱动程序只是拿着芯片公司给出的demo code,修修改改,本身没什么太大的难度,也没有技术含量可言。事实上真的是这样吗?下面我就谈一下个人的一些意见,仅供大家参考。


    (01)驱动程序员需要较好的C语言功底和汇编功底,因为操作的是controller寄存器或者总线,所以编写代码的时候必须想好每一行code带来的结果是什么;


    (02)驱动往往是和具体的os绑定在一起的,无论是linux、windows、vxworks,都需要开发者了解相关的os 驱动框架。本质上说,这些都是套路,熟能生巧就好了;


    (03)驱动程序员很多时候需要承担额外的责任,firmware的同事要找他,app开发的同事也要找他,所以驱动程序员需要在最短时间内shoot问题的本质;


    (04)对于刚立项的project,很多时候软、硬件的错误是无法判断的,所以驱动程序员还需要自己利用示波器、逻辑分析仪、协议分析仪等工具来定位故障,撇清责任;


    (05)开发驱动程序所依赖的文档大部分都是英文的,所以提高自己英文阅读能力也是必不可少的;


    (06)最简单的驱动代码是GPIO、UART之类的程序,最复杂的就是sata、pci、usb总线类的驱动代码,host、device、协议、控制器本身,这些都要了解一些;


    (07)编写驱动程序不是容易的事情,又要看cpu厂商提供的控制器手册,还要看芯片厂商提供的命令手册,这样才能将两者绑定在一起,工作不好做;


    (08)驱动程序员涉及到调度、互斥、延时、中断、dma等内容,所以本身需要对os的内容很了解;


    (09)不同类型的cpu差别还是很大的,对于虚拟地址、cache、字节对齐、字节序、多核这些概念,驱动程序员理解得要更加深刻;


    (10)驱动程序调试不容易,printk和点灯是常用的方法,除此之外就是工作经验的积累了。


    (11)目前android是很火,驱动开发也很吃香,但是android驱动开发本质上还是linux开发,套路还是一致的,这点没有改变,培养自己的内功很重要。


    (12)说了这么多,就是想说,驱动开发其实不简单,要学习和总结的东西很多,没有什么可以埋怨的,当然也没有什么可以骄傲的。

阅读(1531) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~