热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

原文地址:http:blog.csdn.netcuijpusarticledetails44318151.开场白做手机开发进入第六个年头了,回头看看,有些正面和反面的应验总结一下,为新

原文地址:http://blog.csdn.net/cuijpus/article/details/4431815

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 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, 大家有空可以聊聊。

推荐书籍:

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


推荐阅读
  • 尽管深度学习带来了广泛的应用前景,其训练通常需要强大的计算资源。然而,并非所有开发者都能负担得起高性能服务器或专用硬件。本文探讨了如何在有限的硬件条件下(如ARM CPU)高效运行深度神经网络,特别是通过选择合适的工具和框架来加速模型推理。 ... [详细]
  • 本文详细介绍了C语言的起源、发展及其标准化过程,涵盖了从早期的BCPL和B语言到现代C语言的演变,并探讨了其在操作系统和跨平台编程中的重要地位。 ... [详细]
  • 深入探讨CPU虚拟化与KVM内存管理
    本文详细介绍了现代服务器架构中的CPU虚拟化技术,包括SMP、NUMA和MPP三种多处理器结构,并深入探讨了KVM的内存虚拟化机制。通过对比不同架构的特点和应用场景,帮助读者理解如何选择最适合的架构以优化性能。 ... [详细]
  • 本文详细介绍了Linux系统中init进程的作用及其启动过程,解释了运行级别的概念,并提供了调整服务启动顺序的具体步骤和实例。通过了解这些内容,用户可以更好地管理系统的启动流程和服务配置。 ... [详细]
  • 通过Web界面管理Linux日志的解决方案
    本指南介绍了一种利用rsyslog、MariaDB和LogAnalyzer搭建集中式日志管理平台的方法,使用户可以通过Web界面查看和分析Linux系统的日志记录。此方案不仅适用于服务器环境,还提供了详细的步骤来确保系统的稳定性和安全性。 ... [详细]
  • 本文详细介绍了网络存储技术的基本概念、分类及应用场景。通过分析直连式存储(DAS)、网络附加存储(NAS)和存储区域网络(SAN)的特点,帮助读者理解不同存储方式的优势与局限性。 ... [详细]
  • 解析SQL查询结果的排序问题及其解决方案
    本文探讨了为什么某些SQL查询返回的数据集未能按预期顺序排列,并提供了详细的解决方案,帮助开发者理解并解决这一常见问题。 ... [详细]
  • 本文详细介绍了Java中实现异步调用的多种方式,包括线程创建、Future接口、CompletableFuture类以及Spring框架的@Async注解。通过代码示例和深入解析,帮助读者理解并掌握这些技术。 ... [详细]
  • 基于KVM的SRIOV直通配置及性能测试
    SRIOV介绍、VF直通配置,以及包转发率性能测试小慢哥的原创文章,欢迎转载目录?1.SRIOV介绍?2.环境说明?3.开启SRIOV?4.生成VF?5.VF ... [详细]
  • 本文探讨了MariaDB在当前数据库市场中的地位和挑战,分析其可能面临的困境,并提出了对未来发展的几点看法。 ... [详细]
  • 深入解析 Apache Shiro 安全框架架构
    本文详细介绍了 Apache Shiro,一个强大且灵活的开源安全框架。Shiro 专注于简化身份验证、授权、会话管理和加密等复杂的安全操作,使开发者能够更轻松地保护应用程序。其核心目标是提供易于使用和理解的API,同时确保高度的安全性和灵活性。 ... [详细]
  • FinOps 与 Serverless 的结合:破解云成本难题
    本文探讨了如何通过 FinOps 实践优化 Serverless 应用的成本管理,提出了首个 Serverless 函数总成本估计模型,并分享了多种有效的成本优化策略。 ... [详细]
  • 选择适合生产环境的Docker存储驱动
    本文旨在探讨如何在生产环境中选择合适的Docker存储驱动,并详细介绍不同Linux发行版下的配置方法。通过参考官方文档和兼容性矩阵,提供实用的操作指南。 ... [详细]
  • 本文探讨了如何使用自增和自减运算符遍历二维数组中的元素。通过实例详细解释了指针与二维数组结合使用的正确方法,并解答了常见的错误用法。 ... [详细]
  • 主板IO用W83627THG,用VC如何取得CPU温度,系统温度,CPU风扇转速,VBat的电压. ... [详细]
author-avatar
小白吃丸子
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有