`
isiqi
  • 浏览: 16027025 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

努力成为嵌入式Linux开发的高手

阅读更多

1. 开场白

做手机开发进入第六个年头了,回头看看,有些正面和反面的应验总结一下,为新入者或者应验还不是很多的网友提供参考,有益的东西可以参考,不对的地方,可以从反面借鉴。

04年从南航研究生毕业后,到杭州一家手机软件公司,期间主要是在Qualcomm的平台上开发。进入这家公司和一位谭博士很有关系,我和谭博士很能谈得来,他人很好,很健谈,而且他很帮我,一直到现在我还是非常感激他对我的帮助!

由于刚进,肯定从最基本的做起:开发calendar相关的程序,这些手机的附件程序,不大,但是通过这个,可以对Qualcomm的平台熟悉起来。这期间受训了不少的东西:Qualcomm的扫盲;平台的资料;MontaVista Linux; 培训的过程很好,能吸收多少东西就不清楚了,现在我有很好的体会:我经常做嵌入式Linux方面的培训,想把东西讲的很彻底,就需要平时总结的很好,有很深入的理解,这样才能讲的很好。

期间由于项目组人员的变动,又中途接手了一个模块:Camera. 这个在当时看来是比较复杂的东西,而且在QualComm平台上面写程序,上层的application完全是重写的,这是Qualcomm平台的开发周期比较长的一个重要原因,和现在MTK的交钥匙方式相比。后来做集成时做了些Brew的移植,主要是过北京测试机构的测试关。

05年初 由于杭州的房价太离谱和家人的原因,我又回到了南京,直到现在…, 杭州很美丽,尤其是西湖…

期间做过TTPCOM平台的程序,除了短消息外,几乎所有的application都修改过:像phonebookMP3 playerFile ManagerCamera, Setting, Callog什么的,由于不是做原型机,而是迅速推向市场的手机产品,大部分application都是继承过来的,开发就是修改这些applicationsbug. 在修改bug的过程中,肯定需要把程序的流程都摸得很清楚,然后才能改。有个体会:带着bug去分析掌握流程是很有效率的。

后来有机会研究了兄弟部门的TD-SCDMAArena平台. 这是大唐的平台,芯片用的是ADI, GUI用的是MiniGUI. 这个MiniGUI对于后来在Linux下面开发很有帮助。

06年开始转向Linux手机平台了,这时业内手机操作系统还不是很热闹。MTK也没有闹的多狠。到0711月时Android出来后,就比较热闹了。而且07年也是MTK取得长足进展的一年…

回头看看这几年的开发,不论哪个平台,基础都是最重要的。把平台的外衣脱掉,然后把平台肢解到最底层,发现都是谭浩强的C语言堆砌起来的东西。从在学校做课题时的软件水平,到企业里面正规的开发,中间有不少体会。下面写写,希望对新入者有帮助。

目前各个公司中大部分平台是商业化的东西,一般人得不到,对于想学嵌入式开发的,选择Linux是比较好的。

2. 树立一个能看见的目标

刚入门时很懵懂,也不去考虑几年后是什么样子。有个目标是很好的。下面是我从一个网站上看到的一个可以参考的目标:

n 软件系统架构高级工程师
任职要求:
1
7年以上该方面专心致志的经验;
2
、带队开发过成功大量上市的LINUX高端智能手机或者高端MP4,并且自己还在一线从事编码工作,能够从事技术指导工作;
3
、熟悉高端手机的整个研发流程,精通代码的规范、管理与控制,软件版本控制;
4
、精通LINUX系统内核,对裁剪、编译环境建立、更新、调试等方面要有系统认识与方法;
5
、精通C/C++/JAVE语言,对程序系统架构有极深的理解;

简单的几条要求,涵盖了很多的东西!要为此付出很多,积累很多!

3. 及早搭建自己的工作室

Why:前途(钱途)

嵌入式 Linux未来的前景看好,但是人才的缺乏已经成为当前制约嵌入式Linux发展的瓶颈。一方面,因为嵌入式人才领域门槛较高,从事嵌入式软件开发的工作人员不仅要熟练掌握c/c++,汇编语言等基础,而且对Linux底层驱动内核,甚至是硬件都要了熟于心。

另一方面,因为这一领域较新,目前发展太快,很多软硬件技术出现时间不长或正在如雨后春笋般的涌现(ARM11处理器、嵌入式Linux操作系统、MPEG技术、无线通信协议、移动USB2.0高速传输等),目前国内乃至国际上能购掌握这些新技术的人才相当匮乏。

未来几年,市场对嵌入式Linux人才的需求旺盛。而目前熟练的Linux应用人才只有几千名。这意味着各大跨国公司及国内消费类电子巨头企业都面临着人才严重短缺的挑战。

由于嵌入式Linux开发人才的缺乏也带来了这个行业可观的薪酬待遇,嵌入式Linux的从业者薪酬比其他IT业同行大约高出50%,初入门的开发人员平均月薪一般都能达到5000元,有三年以上经验的人员年薪都在10万元以上,有10年工作经验的高级嵌入式软件工程师年薪在30万元左右。尽管待遇可观,可是相关企业还是很难招到合适的员工。

3.1 准备开发版

对于在嵌入式Linux下面开发,如果你手头不准备一个开发板,很多东西你不能验证、掌握。

在公司里面,大部分时间在开发:coding+doc. 很少会给你留整块的时间去系统的掌握嵌入式Linux开发的上上下下的东西。所以及早给自己准备一套开发环境还是比较值得,虽然可能会花掉2000¥多块钱,但是与未来挣的相比,是很值得的。

培训:有经济能力就参加。自己摸索很费事,如果有高手指点非常的好,进步快。

不培训,自己啃也有乐趣。我基本上是自己啃,公司的外派培训,我也会去参加一两次,回来给新入者培训。

市场上比较常见的是三星的S3C44B0(ARM7), S3C2440(ARM9).

推荐的开发板子:见后。

3.2 准备PC:

在家里也要有台PC, 开发用的PC现在的价格4000,甚至3000千块就基本上可以了。这一点投资对于对于能力的提高是很有帮助的,能为你带来很多。很多人在学校就有电脑了,虽然旧点,做开发足够了。

3.3:书籍

学习嵌入式Linux开发,我推荐大家从简单入手。不要一上来就啃Linux内核。04年我在杭州时,一时冲动买了本毛德操的<<Linux内核情景分析>>上册,开始啃Linux内核,每天下班后,到小饭馆吃过饭后,看看新闻,然后开始啃Linux kernel,很痛苦:当时没有明确的目标,就像迷失在大森林里的人,在找出去的路。啃了半年没有肯出个所以然。

推荐的书籍:

4. 文档的功夫

文档的能力是一个工程师的名片。很多人不注意文档质量,认为只要把代码写好就好了,管什么文档呢?这绝对是个误解。文档是为了传承和理清楚思路。

拿到一个项目,首先要看文档、设计文档,如果文档都搞得一塌糊涂,后面的代码你可能就是天天修补了,很痛苦的。

能写很规范、专业文档的工程师,肯定是很牛的人,因为一般人写不出来。但是一般人都能coding.所以文档能力也要有个规划,提高。

5. 合作

applicationdriver没有什么贵贱之分,不要认为driverapplication好,做application是没有前途的。这都是误解。能把application做好很不容易,而且做application也很有前途(钱途)

任何一个部分只要做到前列,都有市场。

另外,在公司中,很多项目都是合作完成的,合作是基础。你再牛,如果项目失败,你都无法成为牛人;你再“普通”,只要项目一个接着一个的成功,都会把你“捎带”成为牛人!

6. 看将来

现在高校毕业的学生越来越多,很多没有找到工作。其中有一部分是中国高等教育的问题,另外一方面也是靠学生自己了。

据教育部统计,截至71日全国611万高校毕业生中已有415万人落实去向,与去年同期相比就业人数增加44万人;高校毕业生就业率达到68%,同比基本持平。

这个就业率很低,和67年前的95%相比,差很多了。就是很多就业的学生,工资12千的很多,除去房租、伙食费,所剩无几。甚至连通讯费都要仔细算计:哪些电话可以接,哪些不要打。 想想上大学花了好几万块,到头来成为一个勉强就业的月光族! 是很心酸的!

不要悲观,要动态的看问题,每一年你的能力都得到提高,进而收入会水涨船高。嵌入式Linux开发,是个不错的选择,而且会随着经验的增长,一切都会好。好好做个规划,努力成为一个嵌入式开发的“高手”。

我的邮件是 cuijpus@yahoo.com, 大家有空可以聊聊。

推荐书籍:

ARM嵌入式Linux系统开发从入门到精通

http://www.amazon.cn/mn/detailApp?qid=1249910263&ref=SR&sr=13-1&uid=476-9729326-1133757&prodid=bkbk750230

嵌入式设计及Linux驱动开发指南(基于ARM9处理器)

http://www.amazon.cn/mn/detailApp?qid=1249910422&ref=SR&sr=13-28&uid=476-9729326-1133757&prodid=zjbk209513

LINUX内核源代码情景分析(上册)

http://www.amazon.cn/mn/detailApp?ref=DT_TS&uid=476-9729326-1133757&prodid=bkbk839390

Linux内核完全注释

http://www.amazon.cn/mn/detailApp?ref=DT_TS&uid=476-9729326-1133757&prodid=zjbk446409

Android(Linux手机系统)开发入门与实战

http://www.amazon.cn/mn/detailApp?qid=1249910827&ref=SR&sr=13-1&uid=476-9729326-1133757&prodid=bkbk961360

分享到:
评论

相关推荐

    MinGW嵌入式软件仿真平台

    比如Huawei某些产品基于VC++仿真,另一些公司建立了命令行模式下vxWorks仿真平台,还有有一些小公司直接基于VxWork的集成开发环境中vxSim仿真,更多的有商业化的Linux嵌入式软件仿真平台。如果您手头有VxWorks的安装...

    嵌入式linux与ARM开发板的入门建议

    我在学习嵌入式linux的过程中很少问人,客观原因是身边的老师、同学师兄都没有这方面的高手,主观原因是我不喜欢问人,喜欢自己研究解决问题。这样做有个好处,就是可以提高自己解决问题的能力,因为做这些东西总有...

    Linux高手必经之路

    主要讲述和总结了本人在学习嵌入式linux中的每个步骤。一为总结经验,二希望能给想入门嵌入式Linux的朋友提供方便。如有错误之处,谢请指正。

    史上最强悍-15本最佳的Linux从新手到高手速成培训书籍集合

    史上最强悍-15本最佳的Linux从新手到高手速成培训书籍集合,让菜鸟新手迅速成为linux高手,15本最佳培训教材让你迅速掌握linux方方面面,从必备...嵌入式Linux应用程序开发详解(1-11).pdf 深入分析Linux内核源码.pdf

    Linux 新手最全10多本培训书籍集-到高手必备

    Linux 新手最全10多本培训书籍集-到高手必备 从构筑服务器到指令到系统服务到精通晋阶到网络到编程到安全到嵌入式开发到.... 让您从新手到高手到过程缩短,如虎添翼.

    中文注释内核源码,适用于嵌入式linux软件工程师,中文注释只是部分,中文注释将保持更新,更新进度取决于我的学习进度

    Linux内核由无数开源社区的“大神们”精心维护,这些人都可以称得上一顶一的代码高手。透过阅读Linux内核代码的方式,我们学习到的不光是内核相关的知识,在我看来更具价值的是学习和体会它们的编程技巧以及对计算机...

    单片机入门指南 初学者必看内容

    但是可以从软件方面和嵌入式系统开发模式上下功夫,提醒大家一点,嵌入式系统开发设计的内容知识很多,所以大家不要乱,在了解嵌入式系统开发的体系结构后,一步一步的下手,最容易上手的是linux下的C,比如ucos(有...

    Linux 新手最全10本培训书籍集-到高手必备

    Linux 新手最全10多本培训书籍集-到高手必备 从构筑服务器到指令到系统服务到精通晋阶到网络到编程到安全到嵌入式开发到.... 让您从新手到高手到过程缩短,如虎添翼.

    嵌入式方向指导,学习经验分享,高手指导

    大家说 linux 内核情景分析不错,我就买了上下册,后来又买了《深入理解linux内核》,最后也买了毛德操的《嵌入式系统》也是分析 linux 内核代码的,主要讲 arm 相关的。.....看内核期间是个非常痛苦的过程,看情景分析有...

    Python开发从小白到高手536讲系统教学

    00606-不同领域的主流操作系统-03-嵌入式操作系统.mp4 00707-虚拟机简介.mp4 00808-操作系统发展简史.mp4 00909-Linux的内核版和发行版.mp4 01010-Linux系统下的文件目录结构.mp4 01111-Ubuntu系统目录结构演示和...

    python开发从小白到高手536集系统教学

    00606-不同领域的主流操作系统-03-嵌入式操作系统.mp4 00707-虚拟机简介.mp4 00808-操作系统发展简史.mp4 00909-Linux的内核版和发行版.mp4 01010-Linux系统下的文件目录结构.mp4 01111-Ubuntu系统目录结构演示和...

    BLueZ蓝牙驱动在优龙FSATRM9200上的移植

    让嵌入式Linux系统支持蓝牙,是近年来炙手可热的嵌入式移植话题之一。在2.4内核时代,由于内核没有内置对蓝牙,且那时候懂得修改、编译Linux的人远不及当前,蓝牙只是少数高手的专利。现在,能找到的资料多是在PC...

    LinuxC编程一站式学习

    这本书最初是为北京亚嵌教育研究中心的嵌入式Linux系统工程师就业班课程量身定做的教材之一,作者宋劲松。 这是一本从零基础开始学习编程的书,不要求读者有任何编程经验,但读者应勤于思考。本书尽最大努力理清...

    IO空间查看器

    该工具是linux下的查看内存的工具,特别适用于linux、嵌入式linux设备驱动程序的开发,善加利用,可使设备的当前工作状态一目了然,该工具还可以手动改变设备的工作状态,是设备驱动程序调试的一大利器。...

    一个LINUX学习高手写给初学者的话

    教你怎么玩转LINUX

    PHP程序开发范例宝典III

    让你短时间内由一名菜鸟到高手绝对没问题! 由于权限有限,分3部份下载 PHP程序开发范例宝典 内容提要 《PHP程序开发范例宝典》全面介绍了应用PHP进行网站开发的各种技术和技巧。《PHP程序开发范例宝典》分为20章...

    3C2440 ARM裸机 MMU代码(有bug)

    我通过修改 韦东山《嵌入式LINUX应用开发完全手册》关于MMU那一张的代码,想在ADS环境下,裸跑MMU虚拟地址点灯,但没有成功,不知道错在哪,请高手指点。。。 思路是这样: 在韦东山书中: 1. 原来在书中用的是...

    c语言编写单片机技巧

    因此,使用C语言进行程序设计已成为软件开发的一个主流。用C语言来编写目标系统软件,会大大缩短开发周期,且明显地增加软件的可读性,便于改进和扩充,从而研制出规模更大、性能更完备的系统。 综上所述,用...

Global site tag (gtag.js) - Google Analytics