随想录(驱动开发程序员需要的一些技能)


【 声明:版权所有,欢迎转载,请勿用于商业用途。  联系信箱: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)说了这么多,就是想说,驱动开发其实不简单,要学习和总结的东西很多,没有什么可以埋怨的,当然也没有什么可以骄傲的。




评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入式-老费

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值