关于嵌入式软件开发的一些思考

    今天是第一次开始写技术博客, a dear dairy moment. 首先感谢这个论坛上那些   It will be my pleasure if I can help.

   为什么要学嵌入式

    初次接触计算机与软件编程的人都憧憬那种“艺高人胆大,潇洒走天下”的境界,然而由于方法不当或目标不明确,很多人热情不能持久,碰壁若干次后就中途放弃,空留遗憾和感慨:”软件编程太难!”力的技术,或者说要审时度势地在技术潮流的不断变化中找准有利位置。目前的软件行业,桌面和嵌入式系统开发者之间,对于基本原理的理解以及技巧方面的差距越来越大,很多人经过短期培训就可以在PC上用工具熟练地堆砌软件,但由于上手快,难度低,这类程序员势必逐渐平庸大众化,价值也会随之降低。物以稀为贵,只有门槛更高的嵌入式开发才是面向未来的选择,具有更长远的价值。

    目前的嵌入式热潮为那些半路出家的程序员提供了难得的加固基础,回炉改造的转化捷径。嵌入式开发常把人逼到一种境地:原来可以回避,工具自动完成的过程如果不能手动完成,工作就没法继续。其实这是难得的突破机会,当碰到无法回避的问题时,离跨越它也就为时不远。将来嵌入式软件也会变得越来越复杂,逐步接近桌面系统,那时切入的机会就越来越少了,现在学习嵌入式正是好时机。

    怎样学习

      1. 理论结合实践

    人们常说,读万卷书,行万里路。于是我们每个人的成长基本都是先读万卷书,再行万里路。传统教育被认为只需要纯粹读万卷书,行万里路是毕业后的事。然而几千年前子曾曰:学而“”习之,不亦乐乎。学与习从来都不能分割,否则只会事倍功半。缺少实践的教育使很多学生嘴高手低,企业面试时听到最多的话或许就是“这个听说过,那个也知道,只是没实际做过”,这就是有学无习的教育方式导致的必然结果,教学远离实践原因很多,比如:

    a)教育者自身知识多来自书本,没有实际工作经验,缺乏对外交流的能力和信心,而教学体制也没有这种要求,照本宣科自然就成为常态。学校所学与社会所需严重脱节,使教和学很大程度上成了老师和学生的自娱自乐。

    b)重视各种基金背景的纵向课题,轻视面向企业实际问题的横向课题。纵向课题容易发论文,评职称,而横向课题没有唬人的标题和元素,总结不出“理论成果”。基金课题只要提个想法,发几篇论文很容易交差,而与企业合作拿钱就要担责,压力大,风险高。换言之,“科学允许失败”,企业投了钱却不允许失败。最终名目繁多的基金变相发了补贴,大量资金投入带来了高产量的垃圾论文和所谓科研成果(永远不可能转化成生产力)。而听话的好学生们在参与这种空对空课题后得到了什么概只有捏造数据和拼凑论文的技巧吧。至于那些得自书本而缺乏实践淬火的知识,其价值基本为零。毕业时,毫无技能地被抛向社会,表面“一肚子墨水”实际两手空空,战战兢兢,还要由企业承担再教育的成本。

    个人不能改变制度,但却可以审时度势修正自己。目前社会越来越看重人的技能而不是纸面知识,只有学以致用,才能赢在进入社会的起跑线上。我的一位“另类”导师曾说:大学里每门都考高分的学生既愚蠢又可怜,他们还把大学当高中读。分数保证毕业就足够,为多余分数付出时间和精力,不如参与实践、锤炼技能来得实惠。买个开发板,移植一些开源程序;做做专业相关的兼职;选择一些有企业应用背景的课题。只有这样“学,很多书上都这样写,抄来抄去实际上也找不到源头)

    嵌入式系统的定义:

    1)定义:以应用为中心,以计算机技术基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。

    2)嵌入式系统发展的4个阶段:无操作系统阶段、简单操作系统阶段、实时操作系统阶段、面向Internet阶段。

    3知识产权核(IP核):具有知识产权的、功能具体、接口规范、可在多个集成电路设计中重复使用的功能模块,是实现系统芯片(SOC)的基本构件。

    4)IP核模块有行为、结构和物理3级不同程度的设计,对应描述功能行为的不同可以分为三类:软核、固核、硬核。

    点评动机决定行为方式,编教科书的人只求用词语法显得专业,读者是否能懂就不是他们关心的了,反正他们是皇帝的女儿不愁嫁。而且教辅书多数还需要和各种形式的考试相互依存,狼狈获利,于是这种固化、僵化,方便考试出题的表达方式就成了各种教育出版社图书的专用语法。可想而知,那些虔诚的求学者,看了这正统的滴水不漏的却如同天书般的描述是否能有所收获许他们会觉得自己太笨,没有学习计算机的天分吧。可怜以前我很长时间也这么认为。

    前新东方的王强一次演讲中提到了汉语和英语体现的文化差异:中国人(汉语)解释一个概念,习惯把一堆形容词放在前面,直到这堆臭裹脚布拆完,最后概念的核心才千呼万唤始出来。这个习惯本质就是摆架子弄玄虚,很多写书的人乐此不疲:多堆砌难懂的学术名词可以体现专业性;形容词多了滴水不漏;生造出一堆概念,说不定碰上哪个流行,自己就成了鼻祖。只是结果却害惨了广大读者,想学点东西要拿出十倍的耐心。真正想学习知识的人还要披沙拣金,排除这一类以正统教材自居的教科书的影响,真是绝大的讽刺。反过来看看英文定义:

    An embedded system is a special-purpose computer system designed to perform one or a few dedicated functions, often with real-time computing constraints.It is usually embedded as part of a complete device including hardware and mechanical parts. In contrast, a general-purpose computer, such as a personal computer, can do many different tasks depending on programming. Embedded systems control many of the common devices in use today

    Since the embedded system is dedicated to specific tasks, design engineers can optimize it, reducing the size and cost of the product, or increasing the reliability and performance.

    读完心情舒畅!embeded system中心是“一种特殊的计算机系统”。本人给个“下里巴人”版:“嵌入式系统就是嵌入到各种电子设备中特殊专用的计算机系统。比如日常用的空调,洗衣机,电视等家用电器,以及MP3,MP4等消费电子产品,它们内部都有一个或多个CPU芯片,运行专用软件完成某种特定功能,这些就属于嵌入式系统。与此对应的是通用计算机系统,比如个人的PC机”

   这种表述不    a)高手针对某专题的浅显阐述,要自己上网搜集整理,书店找不到,比如CSDN的博客:)。真正高手在民间而不是官方演讲台。

    b);而且相比起来,老外在技术上也更纯粹和虔诚。

    d)优秀源代码的解析。这种书纯粹围绕代码解析,废话少,实践性强。

3.       掌握关键技术和节点,以点带面

    社会快速发展,知识大爆炸时代已来临,长期进化使人类发展到今天这个高度,但每个人在出生的那一刹那,实际上与其他动物站在几乎同样的起点(李笑来《把时间当做朋友》),人的生命有限,知识扩展的脚步却从未停止。面对高垒的书籍和海量信息,活到老学到老是每个人必须的选择,即便如此,人力有时穷,必须有重点和取舍。人们对未知事物有本能地探究欲望,从小又被念叨也就是说,对于眼前各种复杂技术,可以回头看看它们的出现是为了解决什么问题,利用了怎样的思路,经历了怎样从原始粗糙到精细专业的发展过程。幼年时期没有包装过的技术方案往往能更清楚的展示其本质思想。了解演化过程,掌握前因后果会大大加深对某项技术的理解,提升眼界和高度,况且历史故事一般比单纯的理论更有趣味。

来源:ipmux

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2013年11月5日
下一篇 2013年11月6日

相关推荐