随着internet技术与信息家电、工业控制技术等的结合日益紧密,嵌入式设备与internet的结合已成为大势所趋。此时期新的微处理器层出不穷,要求嵌入式操作系统的设计更加便于移植,支持更多的微处理器。 嵌入式系统的开发需要强大的硬件开发工具和软件支持包。通用计算机上使用的新技术、新观念开始逐步移植到嵌入式系统中,如嵌入式数据库、移动代理、实时corba等。各类嵌入式linux操作系统在全球数以百万计爱好者的合力开发下迅速发展,由于具有源代码开放、系统内核小、执行效率高、网络功能强,多媒体人机交互界面友好等特点,很适合信息家电等嵌入式系统的需要。
一、嵌入式系统的技术特点
早期的嵌入式系统设计方法,通常采用“硬件优先”原则,即在只粗略估计软件任务需求的情况下,首先进行硬件设计与实现。然后,在此硬件平台上再进行软件设计。因而很难达到充分利用软硬件资源,取得最佳性能的效果。同时,一旦需要对设计进行修改时,整个设计流程将重新进行,这对成本和设计周期的影响很大。这种传统的设计方法只能改善软件/硬件各自的性能,在有限的设计空间不可能对系统做出较好的性能综合优化,在很大程度上依赖于设计者的经验和反复实验。
上世纪90年代以来,随着电子系统功能的日益强大和微型化,硬件和软件也不再是截然分开的两个概念,而是紧密结合、相互影响的。因而出现了软硬件协同(codesign)设计方法,即使用统一的方法和工具对软件和硬件进行描述、综合和验证。在系统目标要求的指导下,通过综合分析系统软硬件功能及现有资源,协同设计软硬件体系结构,以最大限度地挖掘系统软硬件能力,避免由于独立设计软硬件体系结构而带来的种种弊病,得到高性能低代价的优化设计方案。
二、嵌入式系统的发展趋势
在网络、通信、微电子发展的基础上,以及势不可挡的数字化信息产品的强大需求推动下,嵌入式技术具有广阔的发展创新空间。
(1)低功耗、高性能、高可靠性的系统需求对我国芯片设计是一个机遇。以嵌入式处理 器为领头的国产cpu、片上系统(soc)、片上网络系统(noc)将有很大的发展。
(2)linux正逐渐成为嵌入式操作系统的主流;j2me技术也将对嵌入式软件的发展产生深远影响。目前自由软件技术备受青睐,并对软件技术的发展产生了巨大的推动作用。嵌入式操作系统内核不仅需要具有微型化、高实时性等基本特征,还将向高可信性、自适应性、构件组件化方向发展;支撑开发环境将更加集成化、自动化、人性化;系统软件对无线通信和能源管理的功能支持将日益重要。近几年来,为使嵌入式设备更有效地支持web服务而开发的操作系统不断推出。这种操作系统在体系结构上采用面向构件、中间件技术,为应用软件乃至硬件的动态加载提供支持,即所谓的“即插即用”,在克服以往的嵌入式操作系统的局限性方面显示出明显的优势。
(3)java虚拟机与嵌入式java将成为开发嵌入式系统的有力工具。嵌入式系统的多媒体化将变成现实。它在网络环境中的应用已是不可抗拒的潮流,并将占领网络接入设备的主导地位。
(4)嵌入式系统与人工智能、模式识别技术的结合,将开发出各种更具人性化、智能化的实际系统。智能手机、数字电视,以及汽车电子的嵌入式应用,是这次机遇中的切入点。伴随网络技术、网格计算的发展,以嵌入式移动设备为中心的“无所不在的计算”将成为现实。
三、嵌入式系统在机器人技术中的应用
不论是在工业控制中,还是在商业领域里,机器人技术都得到了广泛的应用。从用于生产加工的传统工业机器人到丰富大众生活的现代娱乐机器人,都与嵌入式系统密不可分。现有的大多数机器人,都采用单片机作为控制单元,以8位和16位最为常见,其处理速度较低,没有操作系统,无法实现丰富的多任务功能,系统的潜力没有得到充分的发掘和应用。
基于arm9的机器人视觉系统的目标是在选定好的s3c2410平台上移植并配置linux操作系统,针对平台和应用的特点,制作合适的文件系统,为机器人视觉系统构建稳定的软硬件开发环境。其次编写应用程序,通过s3c2410平台,从usb摄像头实时采集图像,并利用这款嵌入式处理器的强大运算能力,对图像进行后期的处理,完成目标识别与定位,作为机器人动作单元的输入。最后针对机器人关节所使用的电机,编写特定的设备驱动程序,保证操作系统可准确地控制机器人动作,响应视觉处理的结果,开发一套完整的“机器人视觉系统”。
1. 硬件平台的选型和搭建
机器人系统如图1所示。全身由24个舵机组成,控制24个关节。通过对舵机的控制,可实现机器人的动作。
(1)视觉系统
采用usb摄像头作为视觉采集器件。其优点是接口通用,驱动丰富,传输速率快。同时,linux操作系统对于usb设备的支持较好,方便了应用程序的编写和调试。网眼(webeye)v2000摄像头,采用了ov511芯片(linux源代码中有相应的驱动程序),适合用于开发。
这里采用高端的32位嵌入式微处理器:基于arm体系结构的s3c2410芯片(由三星公司生产),其主频为200mhz。它提供了丰富的内部设备:分开的16kb指令cache和16kb数据cache、mmu虚拟存储器管理、lcd控制器、支持nand flash系统引导、系统管理器、3通道uart、4通道dma、4通道pwm定时器、i/o端口、rtc、8通道10位adc和触摸屏接口、iic-bus接口、usb主机、usb设备、sd主卡和mmc卡接口、2通道的spi以及内部pll时钟倍频器。s3c2410采用了arm920t内核,0.18μm工艺的cmos标准宏单元和存储器单元。
(2)硬件平台组成
见图2,一块核心母板,配备cpu、16mb的nor flash、64mb的nand flash、32mb的sdram,并设置系统从nand flash启动;一块外设电路板.html‘ onmouseover=“javascript:showpos(event,this)” onmouseout=“javascript:cleartimer()” target=“_blank” style=“color:#00a2ca”》电路板,负责系统和外设器件的连接,布设有2个usb接口、1个uart口、24个3针插座(用于控制机器人的关节)以及电源接口等。核心母板与外设电路板通过内存插槽进行连接。
分开设计的好处有:升级核心母板可实现系统处理能力的提高;而更换外设电路则可适应不同的应用。这样就大大节约了硬件成本,对于开发和调试也是非常有利的。同时,核心母板本身就是一个最小系统,在嵌入式系统设计中,保证最小系统的可靠性是开发的第一步。
调试核心母板以及外设电路至工作正常。确保开发板与pc机通信(利用windows下的超级终端工具,通过串口线连接开发板与pc机)。
2. 软件平台的构建和配置
目前,越来越多的嵌入式系统采用了linux作为操作系统。linux功能强大,运行稳定,驱动齐全,配置灵活,内核紧凑,从来就与嵌入式系统有密不可分的关系。linux内核版本众多,其中2.4系列比较成熟,在嵌入式平台中应用广泛,资料齐全。这里使用linux- 2.4.18-rmk7-pxa1版本。
a. 配置开发板软件环境
将系统引导程序(俗称bootloader,其功能相当于pc机中的bios)烧写进入s3c2410核心母板。这里采用了三星公司推荐的vivi程序。通过对vivi中参数的设置,完成对flash的分区。
b. 配置、编译、下载内核
(1)下载源代码,在pc端建立交叉编译环境;armv4l-unknown-linux-gcc可以将linux内核编译为适用于arm体系结构的二进制代码;