在进入正题之前,需要先理解“嵌入”的概念,在工程师来看主要从以下3个方面入手。

wKiom1cXPuDTj1rFAAM_Cu7BOd8719.gif

1.从硬件上,将基于CPU的处围器件整合到CPU芯片内部,比如早期基于X86体系结构下的计算机,CPU只是有运算器和累加器的功能,一切芯片要靠外部桥路来扩展实现,像串口之类的都是靠外部的16C550/2的串口控制器芯片实现。目前的这种串口控制器芯片早已集成到CPU内部,还有PC机的显卡,而多数嵌入式处理器都带有LCD控制器,从某种意义上就相当于显卡。比较高端的ARM类Intel Xscale架构下的IXP网络处理器CPU内部集成PCI控制器(可配成支持4个PCI从设备或配成自身为CPI从设备);还集成3个NPE网络处理器引擎,其中两个对应于两个MAC地址,可用于网关交换,而另外一个NPE网络处理器引擎支持DSL,只要外面再加个PHY芯片即可以实现DSL上网功能。IXP系列最高主频可以达到1.8G,支持2G内存,1G×10或10G×1的以太网口或Febre channel的光通道。


IXP系列应该是目标基于ARM体系统结构下,由Intel进行整合后成Xscale内核的最高处理器了。


2、从软件上,就是在定制操作系统内核里将应用一并选入,编译后将内核下载到ROM中,而在定制操作系统内核时所选择的应用程序组件就是完成了软件的“嵌入”,比如WinCE在内核定制时,会有相应选择,其中就是wordpad,PDF,MediaPlay等,如果我们选择了,在CE启动后,就可以在界面中找到这些东西,如果是以前PC上的windows操作系统,多半东西都需要我们重新安装。


3、把软件内核或应用文件系统等东西烧到嵌入式系统硬件平台中的ROM中就实现了一个真正的“嵌入”。


但在这个领域范围内,谁都不敢说自己的定义是十分确切的,包括那些专家学者们,因为毕竟嵌入式系统是计算机范畴下的一门综合性学科。


关于定义的深究,交给专家们去讨论吧,工程师们更关心实际应用问题,今天我们就来说说嵌入式工程师如何来选择合适的开发系统。


很多ARM初学者都希望有一套自己能用的系统,但他们住住会产生一种错误认识就是认为处理器版本越高、性能越高越好,就象很多人认为ARM9与ARM7好,我想对于初学者在此方面还应该理智,开发系统的选择最终要看自己往嵌入式系统的哪个方向上走,是做驱动开发还是应用,还是做嵌入式系统硬件层设计与板级测试。如果想从操作系统层面或应用层面上走,不管是驱动还是应用,那当然处理器性能越高越好了,但这个东西自学,有十分大的困难,不是几个月或半年或是一年二年能搞定的事。


在某种意义上讲,ARM7与ARM9的差别就是在某些功能指令集上丰富了些,主频提高一些而已,就好比286和386。对于用户来讲可能觉查不到什么,只是感觉速度有些快而已。


ARM7比较适合于那些想从硬件层面上走的人,因为ARM7系列处理器内部带MMU的很少,而且比较好控制。就比如S3C44B0来讲,可以很容易将Cache关了,而且内部接口寄存器很容易看明白,各种接口对于用硬件程序控制或AXD单步命令行指令都可以控制起来。基于51单片机的思想很容易能把它搞懂,就当成个32位的单片机,从而消除很多51工程师想转为嵌入式系统硬件ARM开发工程师的困惑,从而不会被业界某些不是真正懂嵌入式的公司带到操作系统层面上去,让他们望而失畏,让业界更加缺少这方面的人才。


嵌入式系统不管硬件设计还是软件驱动,都是十分注重接口这部分的,所以选择平台还要考察一个处理器的外部资源,你接触外部资源越多、越熟悉他们,那你以后就业成功的机率就越高,这就是招聘时所说的有无“相关技能”,因为一个人不可能在短短几年内把所有的处理器都接触一遍,而招聘单位所用的处理器就可能是我们完全没有见过的,就拿台湾数十家小公司(市价几千万)的公司生产的ARM类处理器,也很好用,但这些东西通用性太差,用这些处理器的公司就只能招有相关工作经验的人了,那什么是相关工作经验?在硬件上讲的是外围接口设计,在软件上讲是操作系统方面相关接口驱动及应用开发经验。


三星的S3C44b0对初学者来说比较合适,为什么这么说哪?因为它的接口资源比较丰富、技术成熟、资料较多,十分适合于初学者。


有问题也很容易找人帮忙解决,因为大多数人都很熟悉,就如同51类的单片机,有N多位专家级的人物可以给你帮忙,相关问题也可以很快解答,虽然业界认为这款芯片都用得烂了,但对于初学者来,却是件好事。


总的来说,开发系统的选择,要看自己的未来发展方向、要看开发板接口资源、还要看业界的通用性。