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

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

  1. Unity游戏开发程序员学习线路图及技能提升指南

    开发上线一款游戏,通常要经历以下几个阶段. 筹备阶段:也就是前期筹建团队,确定项目的基本方向.与此同时,投资人.制作人.核心团队.项目经理需要进行深入会谈. 原型阶段:这个阶段需要实现游戏原型,发布A ...

  2. 透过现象看本质,究竟为什么阿里巴巴爱招Java开发程序员?

    为什么阿里巴巴最爱招Java开发程序员? 因为java本身设计特性就是大规模工程语言.它有三个根本性的特征 1.适应各种业务,你目前知道的几乎所有的业务都可以用java写.有很多语言做不到这一点. 2 ...

  3. 重庆找Java开发工作_重庆【Java开发程序员】

    重庆[Java开发程序员],提倡一切为了学员就业的办学思想,教学过程中坚持以练习企业项目为主,让学员真正能学到技术,毕业就能适应工作岗位. 重庆[Java开发程序员], Java 编程开发.而且很多软 ...

  4. java开发 职业技能_java编程开发程序员需要具备哪些职业技能

    随着互联网的不断发展,java编程开发可以说是目前学习人数和应用范围非常多的一种编程语言了,而今天我们就一起来了解一下,java编程开发程序员需要具备哪些职业技能. 1.数据结构和算法分析 数据结构和 ...

  5. web开发程序员有几种_每个程序员都应该知道的10种流行的Web开发工具

    web开发程序员有几种 Are you planning to get into web development? Take a tool with you, it's scary out there ...

  6. 这款养蛙游戏火爆了朋友圈,游戏开发程序员已赚翻!

    最近我的朋友圈发生了变化 不晒猫.不晒狗.不晒老公 他们都在晒蛙?! "我家蛙蛙出去浪到现在都还没有回来,明信片也没寄--" "呀,我不小心把我家蛙的明信片删了怎么办怎么 ...

  7. 测试/开发程序员喜欢跳槽?跳了就能涨工资吗?

    目录:导读 前言 一.Python编程入门到精通 二.接口自动化项目实战 三.Web自动化项目实战 四.App自动化项目实战 五.一线大厂简历 六.测试开发DevOps体系 七.常用自动化测试工具 八 ...

  8. 测试/开发程序员值这么多钱么?“我“不会愿赌服输......

    目录:导读 前言 一.Python编程入门到精通 二.接口自动化项目实战 三.Web自动化项目实战 四.App自动化项目实战 五.一线大厂简历 六.测试开发DevOps体系 七.常用自动化测试工具 八 ...

  9. C/C++开发程序员应有的素养

    C/C++开发程序员应有的素养 文章来源说明 什么是好的程序员? 1.版权和版本 2.缩进.空格.换行.空行.对齐 3.程序注释 4.函数的[in][out]参数 5.对系统调用的返回进行判定 6.i ...

最新文章

  1. 使用XML记录数据的一些体会
  2. SP 短信开发-基础知识篇
  3. 计算机地质应用软件,中国地质大学《质软件应用》作业报告.doc
  4. 各地实时摄像头_智能摄像头——城市治安防控的“天眼”
  5. LintCode-A + B 问题
  6. abp vnext中swagger使用小结
  7. BIND 服务器修复多个高危漏洞
  8. 【论文笔记】分层强化学习鼻祖:Feudal Reinforcement Learning 1993
  9. mysql 数据库军规_用尽洪荒之力整理的Mysql数据库32条军规(转)
  10. Atitti 文本分类  以及 垃圾邮件 判断原理 以及贝叶斯算法的应用解决方案
  11. cuda安装及百度云链接
  12. 一个老工程师给年轻人的十大忠告【转帖】
  13. CentOS 7 断电分区表丢失解决方法
  14. 计算机专业课顺序,计算机专业课程安排顺序 计算机专业课程安排
  15. 一个有趣公众号的简介-网络灯下黑
  16. Python获取指定月份的所有天数
  17. 码码在线总结——java web开发
  18. python加密安装方法_安装Python加密错误
  19. 【附源码】计算机毕业设计java众筹平台设计与实现
  20. 如何选择羽毛球?(ZT)

热门文章

  1. 安装配置rabbitmq
  2. LVS-NAT工作模式的实现
  3. Java简单方法批量修改Windows文件夹下的文件名(简单IO使用)
  4. iOS tableview简单动画
  5. 主机连接虚拟机 web服务
  6. .net链接带密码的ACCESS数据库
  7. 使用维护Relationship
  8. HPU 1476: 括号括号
  9. 《Android深度探索》第一章心得体会
  10. hibernate缓存问题