基于ARM的三轴伺服控制系统人机界面设计
1前言
机械手控制系统是伴随着机械手(机器人)的发展而进步的。机械手是在早期出现的古代机器人基础上发展起来的,机械手研究始于20世纪中期,随着计算机和自动化技术的发展,特别是1946年第一台数字电子计算机问世以来,计算机取得了惊人的进步,向高速度、大容量、低价格的方向发展。同时,大批量生产的迫切需求推动了自动化技术的进展,又为机器人和机械手控制系统的开发奠定了基础。另一方面,核能技术的研究要求某些操作机械代替人处理放射性物质。在这一需求背景下,美国于1947年开发了遥控机械手控制系统和遥控机械手,1948年又开发了机械式的主从机械手控制系统和机械手。
机械手控制系统首先是从美国开始研制的。1954年美国戴沃尔最早提出了工业机器人的概念,并申请了专利。该专利的要点是借助伺服技术控制机器人的关节,利用人手对机器人进行动作示教,机器人能实现动作的记录和再现。这就是所谓的示教再现机器人控制系统。现有的机器人控制系统差不多都采用这种控制方式。1958年美国联合控制公司研制出第一台机械手铆接机器人控制系统。作为机器人产品最早的实用机型(示教再现)是1962年美国AMF公司推出的“VERSTRAN”和UNIMATION公司推出的“UNIMATE”。这些工业机器人和相关控制系统主要由类似人的手和臂组成它可代替人的繁重劳动以实现生产的机械化和自动化,能在有害环境下操作以保护人身安全,因而广泛应用于机械制造、冶金、电子、轻工和原子能等部门。
机械手控制系统经历了以下几个阶段:机械手完成放射源转运年代、化工产品垛机械手年代、工业用机械手兴起和发展年代。
2arm及其体系结构
ARM(AdvancedRISCMachines)是微处理器行业的一家知名企业,设计了大量高性能、廉价、耗能低的RISC处理器、相关技术及软件。技术具有性能高、成本低和能耗省的特点。适用于多种领域,比如嵌入控制、消费/教育类多媒体、DSP和移动式应用等。基于ARM技术的微处理器应用约占据了32位RISC微处理器75%以上的市场份额,ARM技术正在逐步渗入到我们生活的各个方面。ARM公司是专门从事基于RISC技术芯片设计开发的公司,作为知识产权供应商,本身不直接从事芯片生产,靠转让设计许可由合作公司生产各具特色的芯片,世界各大半导体生产商从ARM公司购买其设计的ARM微处理器核,根据各自不同的应用领域,加入适当的外围电路,从而形成自己的arm微处理器芯片进入市场。
2.1arm的结构和特性
arm处理器共同特点
(1)、体积小、低功耗、低成本、高性能;
(2)、支持Thumb(16位)/arm(32位)双指令集,能很好的兼容8位/16位器件;
(3)、大量使用寄存器,指令执行速度更快;
(4)、大多数数据操作都在寄存器中完成;
(5)、寻址方式灵活简单,执行效率高;
(6)、指令长度固定。
2.2arm处理器的结构
2.2.1RISC体系结构
传统的CISC(ComplexInstructionSetComputer,复杂指令集计算机)结构有其固有的缺点,即随着计算机技术的发展而不断引入新的复杂的指令集,为支持这些新增的指令,计算机的体系结构会越来越复杂,然而,在CISC指令集的各种指令中,其使用频率却相差悬殊,大约有20%的指令会被反复使用,占整个程序代码的80%。而余下的80%的指令却不经常使用,在程序设计中只占20%,显然,这种结构是不太合理的。,1979年美国加州大学伯克利分校提出了RISC(ReducedInstructionSetComputer,精简指令集计算机)的概念,当然,和CISC架构相比较,尽管RISC架构有上述的优点,但决不能认为RISC架构就可以取代CISC架构,事实上,RISC和CISC各有优势,而且界限并不那么明显。
2.2.2arm微处理器的寄存器结构
ARM处理器共有37个寄存器,被分为若干个组(BANK),这些寄存器包括:31个通用寄存器,包括程序计数器(PC指针),均为32位的寄存器。6个状态寄存器,用以标识CPU的工作状态及程序的运行状态,均为32位,目前只使用了其中的一部分。同时,arm处理器又有7种不同的处理器模式,在每一种处理器模式下均有一组相应的寄存器与之对应。即在任意一种处理器模式下,可访问的寄存器包括15个通用寄存器(R0~R14)、一至二个状态寄存器和程序计数器。在所有的寄存器中,有些是在7种处理器模式下共用的同一个物理寄存器,而有些寄存器则是在不同的处理器模式下有不同的物理寄存器。
2.2.3系统的工作频率
系统的工作频率在很大程度上决定了ARM微处理器的处理能力。ARM7系列微处理器的典型处理速度为0.9MIPS/MHz,常见的ARM7芯片系统主时钟为20MHz-133MHz,ARM9系列微处理器的典型处理速度为1.1MIPS/MHz,常见的ARM9的系统主时钟频率为100MHz-233MHz,ARM10最高可以达到700MHz。不同芯片对时钟的处理不同,有的芯片只需要一个主时钟频率,有的芯片内部时钟控制器可以分别为arm核和USB、UART、DSP、音频等功能部件提供不同频率的时钟。
3嵌入式系统
arm处理器开发嵌入式系统时,选择合适的开发工具可以加快开发进度,节省开发成本。因此一套含有编辑软件、编译软件、汇编软件、链接软件、调试软件、工程管理及函数库的集成开发环境一般来说是必不可少的,至于嵌入式实时操作系统、评估板等其他开发工具则可以根据应用软件规模和开发计划选用。
3.1μC/OS-II
μC/OS-II是一种基于优先级的抢占式多任务实时操作系统,包含了实时内核、任务管理、时间管理、任务间通信同步(信号量,邮箱,消息、队列)和内存管理等功能。它可以使各个任务独立工作,互不干涉,很容易实现准时而且无误执行,使实时应用程序的设计和扩展变得容易,使应用程序的设计过程大为减化。
3.2pSOS
pSOSystem是美国系统集成公司(IntegratedSystems,Inc.简称ISI公司,现已与美国WindRiver系统公司合并)根据几十年从事嵌入式实时系统理论研究与实践活动而设计开发的实时嵌入式操作系统。pSOSystem集成了一整套嵌入式软件模块、工具和服务。作为嵌入式系统微内核设计的先驱者之一,ISI公司将pSOSystem构造成适于嵌入式应用系统开发、在嵌入式实时领域具有领导地位的实时操作系统。pSOSystem从ISI公司和许多第三厂家得到大量的支持。
3.3各种操作系统的对比及选用linux的原因
嵌入式操作系统是ARMCPU重要的软件基础从8位/16位单片机发展到以armCPU核为代表的32位嵌入式处理器,嵌入式操作系统将替代传统的由手工编制的监控程序或调度程序,成为重要的基础组件。
第一是应用如果你想开发的嵌入式设备是一个和网络应用密切相关或者就是一个网络设备,那么你应该选择用嵌入式Linux或者μCLinux,而不是μC/OS-II,因为Linux不仅为你集成了TCP/IP协议,还有很丰富的其它网络协议,如DHCPServer,PPPoe,webserver等等。
第二是实时性没有一个绝对的数字可以告诉你什么是硬实时,什么是软实时,它们之间的界限也是十分模糊的,这与你选择什么样的armCPU,它的主频,内存等参数有一定的关系,象IntelXscale这样的处理器,即使配合普通Linux的内核,内核的抢占延时最坏情况也只有1.743毫秒,而99.9%的情况是1.42毫秒,而如果你使用加入实时补丁等技术的嵌入式Linux如MontaVistaLinux(2.4.17版本内核),最坏的情况只有436微秒,而99.9%的情况是195微秒,上面的数字以及考虑到最新的Linux在实时性方面的改进(如低延时O(1)调试器,微秒级的高分辨率POSIX定时器),嵌入式Linux可以适合于90~95%的各种嵌入式系统应用。当然,你如果希望更高数量级的实时响应,如高速的A/D转换需要几个微秒以内的中断延时,要求一个毫秒级没有DMA方式的异步串行实时处理器等类似的应用,可能是采用μC/OS-II是合适的。当然,你采用象Vxworks这样传统的嵌入式操作系统也可以满足这样的强实时性要求。
第三是开发工具坦言说,目前μC/OS-II、μCLinux和嵌入式Linux的开发工具与商业嵌入式操作系统工具还有一些差距,目前在ARMCPU上广泛流行和使用的是ARM公司SDT/ADS工具链,产品无论在功能、稳定性和众多的第三方厂商支持方面,都很好,唯一不足的是缺少对嵌入式操作系统的支持,SDT/ADS的升级产品RealView计划支持GCC和嵌入式Linux,但目前还没有看到,μC/OS-II可以使用armSDT/ADS,但没有OS调试功能。如果希望支持OS调试,可以使用IAR或Nohan调试器,μCLinux的调试除GDB外还有第三方调试器,并配合Cygwin形成Windows环境下μCLinux开发环境,象Aiji的Spider和Micetek的Hitool。第四是你所选择的ARMCPU和参考板,象ARM7TDMI和ARM940T(如S3C2500/2510)核是不能使用嵌入式Linux(MMU),如果你想用Linux,只能用μCLinux,如果你想用Vxworks,你需要了解一下提供评估板的公司是否有BSP(板支持包),Vxworks自己只有少数arm公司评估板的支持。
4人机交互界面
随着嵌入式系统的发展,用户对嵌入式系统的要求越来越高,因此用于实现与用户交流功能的嵌入式GUI重要性越来越大。Linux环境下的GUI作为源代码开放的图形系统,提供了丰富的二维绘图库、多字体即可扩充字符集、位图显示、多级RGB及灰度调整、动画优化显示、具有Windows风格的对话框和预定义空间,以及对键盘、鼠标、触摸屏等输入设备和LCD输出的支持。
目前可供选择的GUI图形开发界面主要有:紧缩的XWindow系统、MicroWindows、OpenGUI、Qt/Embedded、MiniGUI、PicoGUI。
GUI的设计要求:(1)占用的存储空间及运行时占用资源少;(2)运行速度及响应速度快可靠性高;(3)便于移植和定制
Qt是一个跨平台的C++图形用户界面应用程序框架。它提供给应用程序开发者建立艺术级的图形用户界面所需的所用功能。Qt是完全面向对象的,很容易扩展,并且允许真正地组件编程。Qt/E是用于嵌入式Linux的Qt版本,以下是应用程序的操作步骤。
4.1人机交互界面开发所需准备
VMware8.0.2Ubuntu10.10EABI-4.3.3_EmbedSky_20100610.tar
qt-embedded-linux-opensource-src-4.5.0_20100601.tar
4.2Ubuntu下交叉编译环境的配置及QT库的编译
安装标准的C开发环境,由于Ubuntu10.10Linux安装默认是不安装的,所以需要先安装一下(如果已经安装好的话,就可以免去这一步了):
$sudoapt-getinstallgccg++libgcc1libg++makegdb
如果上面这个安装不行,可以试试$sudoapt-getinstallbuild-essential
将已下载的EABI-4.3.3_EmbedSky_20100610.tar存放于新建的文件夹(必须是字母或数字)ubuntu下然后用sudotarxvfjEABI-4.3.3_EmbedSky_20100610.tar命令,回车,自动解压。
- Linux嵌入式系统开发平台选型探讨(11-09)
- 基于ARM体系的嵌入式系统BSP的程序设计方案(04-11)
- 在Ubuntu上建立Arm Linux 开发环境(04-23)
- 达芬奇数字媒体片上系统的架构和Linux启动过程(06-02)
- SQLite嵌入式数据库系统的研究与实现(02-20)
- 革新2410D开发板试用手记(04-21)