嵌入式学习小组
直播中

王玉兰

7年用户 1311经验值
私信 关注

工程师眼中的“嵌入式系统”是什么样的?

工程师眼中的“嵌入式系统”是什么样的?

回帖(1)

李丽

2021-12-24 15:19:34
学习嵌入式,一个比较好的路径是先学好ARM接口知识,掌握ARM开发工具ads,学会使用仿真器,写些接口方面的代码。掌握好ARM接口知识后,接着再进行bootloader的学习,如uboot移植以及系统移植等,这时因为之前已经有了ARM接口方面的知识,所以uboot学习及移植就会很快了。接着我们可以再移植kernel、制作自己的文件系统。这些都做好后,嵌入式开发环境就搭好了。下面就可以学习Linux系统编程及Linux驱动开发了。接口的基础会帮你更容易的理解驱动原理。同时,可以选择一个kernel里已经支持的且比较熟悉的接口的驱动如RTC等,进行分析和学习,并尝试进行修改或照着自己编写。按照这样的流程下来可以少走少许弯路,迅速入门,并且以一个比较高效的流程进行学习。
工程师眼中的“嵌入式系统”

在工程师看来:着重理解“嵌入”的概念,主要从三个方面来理解:
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 中就实现了一个真正的“嵌入”。

以上的定义是我在6、7年前给嵌入式系统下自话侧重于理解型的定义,书上的定义也有很多,但在这个领域范围内,谁都不敢说自己的定义是十分确切的,包括那些专家学者们,因为毕竟嵌入式系统是计算机范畴下的一门综合性学科。
嵌入式系统的分层及对口专业要求

嵌入式系统分为4层,硬件层、驱动层、操作系统层和应用层。
1.硬件层

是整个嵌入式系统的根本。如果现在单片机及接口这块很熟悉,并且能用C 和汇编语言来编程的话,从嵌入式系统的硬件层走起来相对容易,硬件层也是驱动层的基础,一个优秀的驱动工程师是要能够看懂硬件的电路图和自行完成CPLD 的逻辑设计的,同时还要对操作系统内核及其调度有相当的熟悉。但硬件平台是基础,增值还要靠软件。
硬件层比较适合于电子、通信、自动化、机电一体、信息工程类专业的人来搞。需要掌握的专业基础知识有:单片机原理及接口技术、微机原理及接口技术、C 语言等。
2.驱动层

这部分相对而言比较难。驱动工程师不仅要能看懂电路图,还要能对操作系统内核十分的精通,以便其所写的驱动程序在系统调用时,不会独占操作系统时间片,而导致其它任务不能运行。若不懂操作系统内核架构和实时调度性,没有良好的驱动编写风格,按大多数书上所说添加的驱动的方式,这样可能连个初级的驱动工程师的水平都达不到,所写的驱动在应用调用时就如同windows 下我们打开一个程序运行后,再打开一个程序时,要不就是中断以前的程序,要不就是等上一会才能运行后来打开的程序。想做个好的驱动人员没有三、四年功底,操作系统内核不研究上几遍,不是太容易成功的,但其工资在嵌入式系统四层中是最高的。驱动层比较适合于电子、通信、自动化、机电一体、信息工程类专业尤其是计算机偏体系结构类专业的人来搞。当然除硬件层所具备的基础学科外,还要对数据结构与算法、操作系统原理、编译原理都要十分精通。
3.操作系统层

对于操作系统层而言目前可能只能说是简单的移植,而很少有人来自已写操作系统,或者写出缺胳膊少腿的操作系统来,这部分工作大都由驱动工程师来完成。操作系统是负责系统任务的调试、磁盘和文件的管理,而嵌入式系统的实时性十分重要。据说,XP 操作系统是微软投入300人用两年时间才搞定的,总时工时是 600人/年;中科院软件所自己的女娲Hopen 操作系统估计也得花几百人/年才能搞定。因此这部分工作相对来讲没有太大意义。
4.应用层

相对来讲较为容易。如果会在windows 下进行编程接口函数调用,到操作系统下只是编译和开发环境有相应的变化而已。如果涉及Java方面的编程也是如此。嵌入式系统中涉及算法的由专业算法的人来处理,不必归结到嵌入式系统范畴内。但如果涉及嵌入式系统下面的嵌入式数据库、基于嵌入式系统的网络编程和基于某些应用层面的协议应用开发(比如基于SIP、H.323、Astrisk)方面,又较为复杂,并且有度了。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分