当前位置:  开发笔记 > 运维 > 正文

Marvell-linux研究

Marvell-linux研究--Linux通用技术-Linux编程与内核信息,下面是详情阅读。
  作者:李先静
  尽管在和同事聊天时,我多次提到对驱动开发不感兴趣,不会去做驱动开发工作,不过考虑了几天之后,最终我还是决定写一个关于Marvell-linux的系列。呵,为了能够自圆其说,避免大家笑我出尔反尔,这里写个序,澄清一下我的想法。

  我一向认为做驱动开发不适合作为职业目标发展,原因有:

  1. 现在的芯片生产商会提供驱动程序的参考实现,在芯片生产商的公司里做驱动开发,那是有钱前途的,对技术能力要求也比较高,但是国内的芯片生产商很少,所以这种机会也很少。在国内,所谓的驱动开发,主要是移植和调试,这活儿比较单调,没有什么技术含量,而且总是处在关键路径上,可以说费力不讨好。

  2. 驱动开发并不难,如果想做很快可以上手。奇怪的是很多朋友都认为做驱动开发很难,认为做驱动的程序员都是高手。一些新手以为做驱动开发就是写汇编,心理上有些抗拒,这也可以理解的。其实这是一种误解,现在做驱动开发只需要写很少的汇编,甚至不用写汇编。如果真要说做驱动开发难,我觉得其难在于:调试内核代码不太方便,要熟悉内核和基本函数,要熟悉芯片对应的datasheet。其实这都不是什么大问题,只要你静下心来,去读代码,去读文档,去练习,我想不出5个月,你就可以成为驱动开发的熟手了。

  3. 未来(甚至现在)软件开发的核心在于复杂度控制,而非驱动开发。在前一家公司里,元老都是做驱动出身的,非常重视调试技能,而忽视架构设计,结果一个项目产生出超过10K的BUG,这种方法只适合传统的嵌入式开发,不适合现代大规模的软件开发。随着硬件能力的增强,用户期望的膨胀,软件的复杂度呈指数倍增长,而人的智力在原步踏步,所以控制软件的复杂度才是关键,而且软件架构设计是控制软件复杂度的主要方法之一,所以我觉得软件架构设计师比驱动开发人员更有前途。

  基于以上原因,加上自己一直很忙,所以我没有去研究驱动开发。而这次我准备花大力气去研基于Marvell芯片的linux平台,是否有违初衷呢?答案当然是不,原因是:

  1. 工作上的需要。我们团队在软件架构设计方面,在应用程序开发方面,在国内也算是比较出色的,由于驱动方面不是我们关注的重点,所以这方面比较欠缺,现在看来,这方面的工作量比较预想的要大得多。所以我打算多花点时间看看,到时候可以作为替补也好。

  2. 艺多不压身,多学习一些知识没有坏处。作为一个系统架构师,不能因为自己的偏见(如果我对驱动开发的观点是偏见的话)影响架构设计,最近发现对于依赖硬件平台的应用程序,它的架构设计与底层硬件和驱动有密切关系,数码相机就是一个典型的例子,我开始认为只要基于v4linux,可以做到硬件无关,同事最近验证那样会有严重性能问题,结果最初的架构可能要重新设计。

  3. 给写BLOG找点素材。最近主要是做code review,没有研究什么新东西,写BLOG没有什么好的题材,研究一下基于Marvell芯片的linux,可以为BLOG提供不少素材。呵,初步估计一下,写个几十篇问题不大。现在专门讲内核编程和驱动开发的书籍多如牛毛,而针对特定平台的开发资料很少,写点这方面BLOG相信也是有价值的。

  在linux驱动开发方面,我是标准的新手,所以在开始的几篇BLOG,可以会显得比较幼稚,希望大家多多指点。这样也有它的好外,因为从新手的观点来写,对于新手遇到的具有共性的问题阐述得更清楚,对新手更有参考价值。
推荐阅读
mylvfamily
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有