2015-07-25
1、什么是嵌入式 嵌入式根据字面的意思就会知道个大概,嵌入式就是将一个东西,嵌入到另一个中间,这就会有两层意思, 一个是硬件的嵌入式:将一个硬件嵌入到另一个中间,使得原本没有智能的产品变得智能; 一个是软件的嵌入式:将一个软件嵌入带另外一个软件里面,一般这个软件是一个应用软件,而对象是操作系统。 因此,很多东西都会被称为嵌入式,而不仅仅是ARM等32位平台,还包括DSP,FPGA,51,甚至4位机都是可以的。 2、操作系统 操作系统有很多,大家天天用的windows,认为很高深的linux,微小的uCos,可裁减的eCos,……世界是多彩的,操作系统也一样。 有人就会说了,……好用,……不好,……对……好不好!这个问题对于真正的行家来说,你就像一个孩童问大人电视剧里面的这个人是好人还是坏人。只有合适的没有什么是最好的!曾经看过ubuntu的wiki里面说过一句话:不要因为它和你的习惯不一样就说它不好。 3、硬件平台 目前世界上的芯片公司有很多,因此硬件平台可以选择的有很多,但是近些年来,国人将嵌入式=ARM,这是狭隘的,不利于学生的发展,应该告诉学生,除了ARM还有很多很多。不然会发现,学生的眼光会被限制。通过对比学习,他们将会有更多的是以一种批判的精神,吸收各家所长! 平台现在来说比较有前途的是作消费电子类的,因为国家强调扩大内需,内需如何扩大,现在大家基本都是衣食无忧了,剩下的那就是娱乐了。 4、学习芯片的选择 很多人问我,我们现在学习的是ARM11,你们的是多少,我会告诉他我们是ARM9,还有一些ARM7。其实这已经是足够的了,无论我们学习的哪个平台,学习的关键不是学会这个芯片怎么用,而是学习他的精髓:这类芯片的设计构架,开发流程,然后就是查字典一样的学习它数据手册了。无论在哪里,学习不一定要学习最先进的,因为你没有把握住它的发展历史,和内部原理,一个先进的庞杂的系统对于你来说是很难理解的。 如果想成为一个全面的嵌入式开发人员,我的建议是可以遵循这个步骤: 基础:嵌入式C 这里的C不是大家学习的那个谭浩强的C,而是嵌入式C,谭的C只是一些肤浅的应用,没有讲到根本,C的根本就是要把握住指针和一些将来编译的过程!作为一个嵌入式比较底层的工程师,需要了解更多的关于你的程序是如何运行的,你的程序是如何加载的,以及各种资源的调度和使用,而这一切很多时候都要拜托你的C完成,因为毕竟汇编的难度还是比较大,而且完成的功能有限。 第一步:熟悉硬件 首先学习单片机,关键是学习总线结构,扩展的一些问题,还有建立起来一些汇编的知识 第二步:熟悉高级芯片架构 8086(很古老的芯片)但是很有必要了解,可以说他是一切X86(电脑)和ARM体系的根本,当将这个根本拿捏住了,你就像武侠小说里面讲的,你掌握了一门功夫的总纲,万变不离其宗! 第三步: 如果时间容许,可以使用(上面是学习)一个16位单片机凌阳的SPCE061A,这是一个很有意思的芯片,他既有一些单片机的东西在里面,还有一些嵌入式32位的东西在里面,真正的使用它不是很难,因为资料还是比较多的,但是从中可以学习到一些基本的嵌入式理念。 第四步:嵌入式平台选择 开始使用嵌入式平台,目前平台很多,有的还很便宜,作为学生,也许会选择一些价格便宜的,不过建议大家要更注意一个问题:支持的问题。 目前基本来说平台的已经都是很多了,有些抄来的板子目前也是满天飞,由于没有研发成本和后期支持,造成成本比较低,同样的原因,让我们遇到问题,只能四处的提问,而往往得不到系统的答案。 所以选择平台很重要,有人说,网上全是资料了,但是说句实话,由于嵌入式是一个结合多学科的庞大系统,因此从网上找到很多资料,你会发现我们找到的是一张张拼图的小块,在拼这个大图的时候,很多人在这个过程中失去了信心,离开了嵌入式开发者的行列,那是很可惜的。最好找一个比较资料全面系统的开发平台。 当前我认为比较好的适合个人学习的有两个,(也许会有更多,但是我没有接触过,因此只能从这个方面推荐一下) 一个是ARM9的2410平台QQ的平台,这个的价格大约在1200元左右(包括屏),包括了比较全面的资料,这些资料比较详细的描述了一个下载程序,简单开发的过程。 另外一个是凌阳的S+core内核的嵌入式开发板SPCE3200,这个最近推出了一个比较适合学生的开发板,价格比QQ的贵一点,但是资料比较好,从他们推单片机开始我就比较关注,他们做的资料有一个特点就是比较规范,从注释到程序架构写的比较好,而且他们由于是做大学计划,主要支持高校,因此资料比较细,而且比较系统,唯一可能让大家感觉比较难以跨过的一个坎,就是他们不是ARM架构。不过学过这个学习其他的都是比较好接受的,10年前流行的是MIPS,现在是ARM,10年后会不会是S+Core,谁也说不上。关键是方法。 第五步: 看完基础,然后实实在在的开发一个或大或小的项目,在这个项目中不仅仅是写出程序,要学会项目的规划,还有程序编写的重构性等软件编写的问题。
评论0