纯软件程序员向嵌入式系统工程师转型时需注意的问题

   在中国,PC(主要是Windows-Intel体系)软件开发程序员,也就是“纯软件程序员”的“黄金年龄段”较短是一个不争的事实,一般纯软件程序员到了30—35岁就必须考虑转型问题,否则在中国程序员工作强度普遍较大这一现实情况下,无论是体力还是新知识的接收速度都无法与20出头的年轻程序员相比。转型的方式有多种:转向系统分析师,离开程序设计第一线;转向IT职业培训讲师;转向市场、管理等职位,放弃技术工作;自行创业等,这些转型方式都是不错的选择。

        但很多长年从事技术工作的程序员,如果从事技术之外的工作,可能存在适应问题,市场、管理、自行创业等转型方式自己未必觉得适合。如果在30—35岁之后仍然决定从事技术工作,也可以选择转向嵌入式系统开发,也就是纯软件程序员转型成为嵌入式系统工程师。

        业界公认:嵌入式系统工程师,包括硬件工程师和嵌入式软件程序员,生命周期要比纯软件程序员长得多,待遇相对也高一些。主要原因是嵌入式系统多用于工业等领域,在这些领域中,嵌入式系统应用面千变万化,技术成熟程度、可靠性、成本等是决定系统选型的核心问题,华而不实的东西比较少,像Microsoft和Intel那样垄断PC市场软硬件,联合起来从用户口袋里掏钱这种行为难以存在,新技术往往不是被追逐的对象,成熟技术是更容易被接受的,例如8051系列单片机已经使用了20多年,现在仍然被大量使用。

        笔者正处在这种转型即将完成之时,总结经验教训,笔者提出自己的几点看法,谈一下纯软件程序员向嵌入式系统工程师转型时需注意的一些问题:

        1、澄清一个误区——WinCE和嵌入式Linux并不完全等于嵌入式系统开发

        目前,一谈到嵌入式系统,就容易谈到WinCE和嵌入式Linux,还有.NET Compact Framework和J2ME等,许多纯软件程序员,学会了WinCE开发,学会了嵌入式Linux开发,就认为自己已经入门或者精通了嵌入式系统开发。其实WinCE和嵌入式Linux本身只是嵌入式操作系统(eOS),它们均来自相应的PC操作系统——Windows和Linux,.NET Compact Framework和J2ME也来自相应的PC虚拟机平台——.NET Framework和J2SE,这类eOS和虚拟机平台只能用于高档嵌入式系统硬件,例如手机或者PDA,软件开发使用的硬件本身是一个成熟的硬件平台,例如一部成品手机/PDA,或者一块带有TFT LCD和触摸屏的实验板,这种嵌入式软件开发和相应的PC软件开发极其相似,甚至是趋同的,很少直接和硬件打交道。这类嵌入式系统开发只是嵌入式系统开发中的很小一部分而已,主要用于消费类电子产品的开发,很少用于工业领域。

        2、硬件能力的提升十分关键

        嵌入式系统开发涉及的知识面比纯软件开发更大,嵌入式系统工程师的付出可能数倍于纯软件程序员。这一方面是因为嵌入式系统是“嵌入”的,也就是用于大系统或者产品内部的广义计算机软硬件系统,非常容易涉及到交叉学科和领域,例如:一个智能电力仪表内部使用的嵌入式系统,开发时工程师就必须懂得电力方面的相关知识;一个智能化工仪表内部使用的嵌入式系统,开发时工程师就同样必须懂得化工方面的相关知识,否则不仅不能很好地完成开发,还可能出现产品无法适应电力、化工等行业特殊环境的问题,甚至可能因为错误开发而引发电力、化工等方面的严重事故。另一方面就是因为嵌入式系统开发包括了硬件开发,即使软件开发也很容易直接涉及到硬件,因此提高自身的硬件能力也就成为纯软件程序员向嵌入式系统工程师转型的关键问题了。

        对于缺乏硬件和电路基础的纯软件程序员,向嵌入式系统工程师转型时,提高硬件和电路能力非常重要。在这方面没什么捷径可走,一方面是基础知识的学习,重点是大学里学过的《模拟电子技术》、《数字电子技术》、《计算机组成原理》等课程的内容;另一方面就是动手,这是最重要的,没听说过哪个电子高手是看书背书练成的,都是电烙铁和万用表下练出来的,自己购买元器件、电烙铁、万用表、编程器等必须的材料和工具,自己查资料设计电路,自行动手焊接制作实验板和电路,不要依靠成品实验板,是提高嵌入式系统硬件能力的有效方法,在这方面不要怕“出血”——学成之后的收入会对得起你,但是,学习之时必须坐得住冷板凳——学技术都应该是这个态度。

        3、不可盲目怀旧

        某些嵌入式软件开发与DOS软件开发有一定的相似之处,例如硬件完全透明,大量使用C语言甚至汇编语言等,很多DOS时代过来的纯软件程序员容易在嵌入式软件开发上怀旧,认为DOS软件开发又回来了。适当怀旧也无不可,但如果认为嵌入式系统开发是DOS开发的翻版,那就大错特错了。前面说过,嵌入式系统是一个涉及面更大的领域,硬件从低档的8051一直到高档的ARM9、MIPS64等,软件从汇编语言一直到.NET Compact Framework和J2ME,现代软件开发思想——面向对象、设计模式、体系结构、软件工程等仍然指导着嵌入式软件开发,而且有逐渐深入的趋势。盲目怀旧会影响自己对新技术、新知识和新思想的学习,须知就算是嵌入式系统开发新技术更新较慢,但新技术仍然是大量涌现的,10年前十几块芯片组成的电路可能现在只需要一块SoC MCU就能实现,10年前几百行几千行汇编语言程序的软件开发规模,现在8051的软件开发规模都可能达到几千行甚至上万行C语言程序,不引入现代软件开发思想是行不通的。

        柏杨先生在他的著作《丑陋的中国人》中曾经辛辣地讽刺了我们这个民族的某些劣根性,其中有一个就是“向后看”、“向古看”以及“古时什么都好”。例如今天有人看到上学贵、看病贵和住房贵,就说“70年代最好,上大学不要钱,看病免费,福利分房,还不如回到70年代”,殊不知70年代上大学确实不要钱,还有补助(一直延续到80年代初),可是高考升学率不到10%;70年代看病免费,可是当时一家生好几个孩子有几个养不活是常事;70年代福利分房,可是一家三代人挤十几平方米的房子也是常事,笔者敢说一句话,把适应了今天的生活,却拼命说70年代多好的人,让他们真正过一段时间70年代的生活,不消一个月,十个里面有九个又都会拼命说吃不消的。现在某些报刊、杂志和网站经常盯着所谓的“80后”和“90后”年轻人说事,拿个例当常例,把一些缺点无限放大,说“80后”和“90后”是“垮掉的一代”,这些话听着玩可以,但作为老程序员,我们应该扪心自问:为什么我们会被20出头甚至十七八岁的“80后”和“90后”程序员所淘汰?是什么逼得我们转型的?

        “长江后浪推前浪,前浪死在沙滩上”,“沉舟侧畔千帆过,病树前头万木春”,盲目怀旧,放弃学习,只会让自己更快地被淘汰,纯软件开发如此,嵌入式系统开发同样如此。嵌入式系统虽然没有太多华而不实的更新和升级,更加依靠工程师的经验,适合基础牢固和经验丰富的老一代程序员转型,但这只能说是更适合老一代程序员的实际情况一些,绝不是意味着转型后可以放弃对新技术、新知识和新思想的学习。

        纯软件程序员选择向嵌入式系统工程师转型,这是一条充满艰难险阻的道路,但一旦选择了这条道路,坚持走下去,可能会获得意想不到的成功。愿中国嵌入式系统开发产业的熊熊烈火早日被点燃!

转自http://www.mcuol.com//Edu/222/28330.htm

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 单片机软件开发中,通常使用交叉编译器将高级语言代码转换成机器语言,然后将机器语言烧录到目标芯片中。因此,单片机软件开发的交叉编译器选择和配置至关重要。 对于单片机软件开发中的转行嵌入式开发,需要掌握底层硬件知识,如芯片体系结构、外设寄存器编程等。此外,还需要掌握常用的编程语言,如C、C++等,并了解常见的嵌入式操作系统,如FreeRTOS、uC/OS等。 对于单片机软件开发中的代码调试,可以通过硬件调试器(如JTAG、SWD等)或软件仿真器(如Simulink、Keil MDK等)进行。在调试过程中,可以使用printf()函数输出调试信息,或使用调试器提供的断点、单步执行等功能进行调试。 总之,在单片机软件开发中,需要掌握底层硬件知识、编程语言和开发工具的使用,以及调试技巧。这样才能开发出高质量、稳定可靠的嵌入式系统。 ### 回答2: 单片机软件开发是嵌入式系统开发的一种应用领域,对于想要转行嵌入式的人来说,需要进行一些相关的学习和准备。 首先,需要熟悉嵌入式系统的概念和基本原理,了解嵌入式系统的硬件平台和软件开发环境。可以通过学习相关的教材、参加培训课程或者自学来掌握这些知识。 其次,需要学习嵌入式系统的编程语言和开发工具。常用的嵌入式系统编程语言包括C语言和汇编语言,而常用的开发工具包括编译器、调试器和仿真器等。可以通过实际的编程练习和项目实践来提高自己的嵌入式开发能力。 此外,还应该了解常用的嵌入式操作系统和相关的驱动程序开发。许多嵌入式系统都使用实操作系统(RTOS)来管理任务和资源,而驱动程序的开发涉及到与硬件的交互。对于转行嵌入式的人来说,掌握一种或多种常用的嵌入式操作系统,并熟悉驱动程序的开发流程和技术是非常重要的。 最后,需要进行一些实际的项目练习和实践,以提升自己的实际操作能力。可以通过参与开源项目、自己动手设计和开发一些小型的嵌入式系统,或者找到一些相关的实习或工作机会来积累经验。 总之,想要从单片机软件开发转行嵌入式,需要通过学习嵌入式基础知识、掌握嵌入式编程语言和开发工具、了解嵌入式操作系统和驱动程序开发,并进行实际的项目练习和实践。通过不断地学习和实践,逐步提高自己的嵌入式开发能力,从而实现转行嵌入式的目标。 ### 回答3: 单片机软件开发转行嵌入式可以考虑以下几个方面的工作: 1. 学习嵌入式系统原理和体系结构:首先需要了解嵌入式系统的基本原理和体系结构,包括处理器、内存、外设等组成部分,以及其与外部环境的交互方式。 2. 学习嵌入式编程语言和开发工具:嵌入式系统常用的编程语言包括C、C++和汇编语言等,掌握这些语言以及常用的开发工具(如开发板、仿真器等)将有助于进行嵌入式软件的开发。 3. 学习硬件电路设计知识:因为嵌入式系统需要与硬件进行交互,对硬件电路设计有一定的了解可以更好地理解硬件与软件的配合工作。 4. 掌握实系统和实操作系统:嵌入式系统一般需要满足实响应的需求,因此了解实系统和实操作系统的原理和开发方法十分重要。 5. 积累项目经验和实践能力:通过参与实际嵌入式开发项目,积累相应的项目经验和实践能力,包括软件调试、性能优化、软硬件调试等方面,以提高自身的能力和竞争力。 总之,单片机软件开发转行嵌入式需要学习嵌入式系统的原理、编程语言和开发工具,了解硬件电路设计知识,掌握实系统和实操作系统,并通过实践项目来提高自己的能力和经验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值