1. 开场白
做手机开发进入第六个年头了,回头看看,有些正面和反面的应验总结一下,为新入者或者应验还不是很多的网友提供参考,有益的东西可以参考,不对的地方,可以从反面借鉴。
04年从南航研究生毕业后,到杭州一家手机软件公司,期间主要是在Qualcomm的平台上开发。进入这家公司和一位谭博士很有关系,我和谭博士很能谈得来,他人很好,很健谈,而且他很帮我,一直到现在我还是非常感激他对我的帮助!
由于刚进,肯定从最基本的做起:开发calendar相关的程序,这些手机的附件程序,不大,但是通过这个,可以对Qualcomm的平台熟悉起来。这期间受训了不少的东西:Qualcomm的扫盲;平台的资料;MontaVista Linux; 培训的过程很好,能吸收多少东西就不清楚了,现在我有很好的体会:我经常做嵌入式Linux方面的培训,想把东西讲的很彻底,就需要平时总结的很好,有很深入的理解,这样才能讲的很好。
期间由于项目组人员的变动,又中途接手了一个模块:Camera. 这个在当时看来是比较复杂的东西,而且在QualComm平台上面写程序,上层的application完全是重写的,这是Qualcomm平台的开发周期比较长的一个重要原因,和现在MTK的交钥匙方式相比。后来做集成时做了些Brew的移植,主要是过北京测试机构的测试关。
05年初 由于杭州的房价太离谱和家人的原因,我又回到了南京,直到现在…, 杭州很美丽,尤其是西湖…
期间做过TTPCOM平台的程序,除了短消息外,几乎所有的application都修改过:像phonebook、MP3 player,File Manager,Camera, Setting, Callog什么的,由于不是做原型机,而是迅速推向市场的手机产品,大部分application都是继承过来的,开发就是修改这些applications的bug. 在修改bug的过程中,肯定需要把程序的流程都摸得很清楚,然后才能改。有个体会:带着bug去分析掌握流程是很有效率的。
后来有机会研究了兄弟部门的TD-SCDMA的Arena平台. 这是大唐的平台,芯片用的是ADI, GUI用的是MiniGUI. 这个MiniGUI对于后来在Linux下面开发很有帮助。
从06年开始转向Linux手机平台了,这时业内手机操作系统还不是很热闹。MTK也没有闹的多狠。到07年11月时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. 合作
做application与driver没有什么贵贱之分,不要认为driver比application好,做application是没有前途的。这都是误解。能把application做好很不容易,而且做application也很有前途(钱途)。
任何一个部分只要做到前列,都有市场。
另外,在公司中,很多项目都是合作完成的,合作是基础。你再牛,如果项目失败,你都无法成为牛人;你再“普通”,只要项目一个接着一个的成功,都会把你“捎带”成为牛人!
6. 看将来
现在高校毕业的学生越来越多,很多没有找到工作。其中有一部分是中国高等教育的问题,另外一方面也是靠学生自己了。
据教育部统计,截至7月1日全国611万高校毕业生中已有415万人落实去向,与去年同期相比就业人数增加44万人;高校毕业生就业率达到68%,同比基本持平。
这个就业率很低,和6、7年前的95%相比,差很多了。就是很多就业的学生,工资1、2千的很多,除去房租、伙食费,所剩无几。甚至连通讯费都要仔细算计:哪些电话可以接,哪些不要打。 想想上大学花了好几万块,到头来成为一个勉强就业的月光族! 是很心酸的!
不要悲观,要动态的看问题,每一年你的能力都得到提高,进而收入会水涨船高。嵌入式Linux开发,是个不错的选择,而且会随着经验的增长,一切都会好。好好做个规划,努力成为一个嵌入式开发的“高手”。
我的邮件是 cuijpus@yahoo.com, 大家有空可以聊聊。
相关推荐
嵌入式Linux系统开发是IT领域中的一个重要分支,它涉及到硬件、操作系统、驱动程序、应用程序等多个层面的集成与开发。华清远见是一家知名的嵌入式培训机构...记住,理论与实践相结合是成为嵌入式Linux开发高手的关键。
根据提供的文件内容,我们可以提炼出以下知识点: 1. I.MX6U嵌入式Linux驱动开发...同时,也提供了必要的硬件操作和文件管理技能,以及Linux内核驱动开发的入门教程,帮助开发者逐步成长为嵌入式Linux驱动开发的高手。
《嵌入式Linux内核及其驱动开发》这篇文章深入探讨了在Intel StrongArm SA110硬件环境下进行嵌入式Linux驱动程序开发的关键技术。作者张海峰以USB和GPIO驱动程序为例,阐述了如何在嵌入式Linux下开发字符设备驱动...
ARM嵌入式Linux开发是一项涉及硬件、软件和操作系统深度融合的技术,对于想要成为高手的开发者来说,需要遵循一定的学习路径和掌握关键知识点。以下是对标题和描述中提到的要点的详细阐述: 1. **软硬件资源准备**...
在成为嵌入式高手的道路上,你需要掌握一系列的技能和知识。以下是一个详细的路线图,涵盖了从基础到高级...通过以上各个阶段的学习和实践,你将逐步提升在嵌入式Linux领域的专业技能,最终成为一名真正的嵌入式高手。
在学习和实践嵌入式Linux操作系统开发的过程中,理解并掌握各个步骤至关重要。下面将详细阐述从建立交叉编译环境到优化和个性化系统的整个流程。...理解并熟练掌握这些步骤是成为高级嵌入式Linux开发者的必经之路。
### 一步步教你成为LINUX高手:菜鸟编译内核 #### 一、前言与准备工作 对于想要深入了解Linux操作系统,并且希望通过编译内核来掌握更深层次的技术细节的学习者而言,《一步步教你成为LINUX高手:菜鸟编译内核》这...
比如Huawei某些产品基于VC++仿真,另一些公司建立了命令行模式下vxWorks仿真平台,还有有一些小公司直接基于VxWork的集成开发环境中vxSim仿真,更多的有商业化的Linux嵌入式软件仿真平台。如果您手头有VxWorks的安装...
- 雅默的《构建嵌入式LINUX系统》和韦东山的《嵌入式Linux应用开发完全手册》专门针对嵌入式Linux的构建和应用开发提供指导。 读书报告的格式可以按照以下步骤进行: 1. **书名、作者和出版社**:首先列出所阅读的...
我在学习嵌入式linux的过程中很少问人,客观原因是身边的老师、同学师兄都没有这方面的高手,主观原因是我不喜欢问人,喜欢自己研究解决问题。这样做有个好处,就是可以提高自己解决问题的能力,因为做这些东西总有...
北航嵌入式ppt教程 本资源摘要信息来自北航嵌入式ppt教程,旨在介绍嵌入式系统的前沿技术和发展趋势,重点讲述基于ARM微处理器的嵌入式硬件平台、嵌入式操作系统...* 成为嵌入式系统设计高手(期望值:★★★★★)
总体而言,本讲义详细介绍了Linux嵌入式应用程序开发的各个方面,从基础的开发环境搭建,到具体的编程实践,再到系统的裁减优化,为学习者提供了一个全面的嵌入式Linux开发入门教程。通过学习本讲义,开发者不仅能够...
主要讲述和总结了本人在学习嵌入式linux中的每个步骤。一为总结经验,二希望能给想入门嵌入式Linux的朋友提供方便。如有错误之处,谢请指正。
在嵌入式系统和Linux开发中,理解和熟练运用指令是至关重要的。Linux作为一个开源操作系统,其强大的命令行工具为开发者提供了高效的工作环境。本资源主要关注的是Linux指令和与嵌入式开发相关的GCC编译器指令。 1....
史上最强悍-15本最佳的Linux从新手到高手速成培训书籍集合,让菜鸟新手迅速成为linux高手,15本最佳培训教材让你迅速掌握linux方方面面,从必备...嵌入式Linux应用程序开发详解(1-11).pdf 深入分析Linux内核源码.pdf
想要成为高手,内核必须深刻了解。 内核的学习需要掌握以下知识: 1. 调度机制:需要了解进程调度、线程调度、任务调度等。 2. 内存管理机制:需要了解内存分配、内存回收、内存保护等。 3. 文件管理机制:需要...
Linux 新手最全10多本培训书籍集-到高手必备 从构筑服务器到指令到系统服务到精通晋阶到网络到编程到安全到嵌入式开发到.... 让您从新手到高手到过程缩短,如虎添翼.
《嵌入式实时操作系统μC\OS-II》和《构建嵌入式LINUX系统》是学习嵌入式Linux开发的重要资料,涵盖了μC\OS-II实时操作系统和嵌入式Linux系统的构建过程。 最后,读书报告的格式提示了如何有效地总结和评价所阅读...
其次,理解计算机操作系统的基本原理,如进程、线程、任务调度、总线和I/O的工作原理,这些知识对于嵌入式Linux的学习至关重要。因为嵌入式系统通常运行在一个精简的Linux内核上,了解这些概念可以帮助开发者更好地...
通过这份详实的“Linux牛人笔记”,你可以逐步建立起对Linux操作系统的全面认识,掌握内核原理,熟悉嵌入式系统开发流程,提升编程技能,最终成为一名真正的Linux高手。记得理论结合实践,不断探索和尝试,Linux的...