基于ARM技术的远程机器人控制通信系统设计毕业论文(DOC 46页)

上传人:无*** 文档编号:206504629 上传时间:2023-05-04 格式:DOC 页数:55 大小:2.30MB
收藏 版权申诉 举报 下载
基于ARM技术的远程机器人控制通信系统设计毕业论文(DOC 46页)_第1页
第1页 / 共55页
基于ARM技术的远程机器人控制通信系统设计毕业论文(DOC 46页)_第2页
第2页 / 共55页
基于ARM技术的远程机器人控制通信系统设计毕业论文(DOC 46页)_第3页
第3页 / 共55页
资源描述:

《基于ARM技术的远程机器人控制通信系统设计毕业论文(DOC 46页)》由会员分享,可在线阅读,更多相关《基于ARM技术的远程机器人控制通信系统设计毕业论文(DOC 46页)(55页珍藏版)》请在装配图网上搜索。

1、本科毕业论文论文题目 基于ARM技术的远程机器人控制通信系统设计 V摘要 随着现代信息技术的发展,远程机器人在实际生活和科研中都发挥着越来越重要的作用。而对远程机器人来说,一个安全可靠的控制通信协议,是保证远程机器人能正常和安全地被操作的重要因素之一。本文以ARM硬件平台和嵌入式Linux操作系统为基础,设计了一个可以在无线网络中实现远程操控的机器人控制系统。首先阐述了机器人的软硬件设计和手持控制终端软件的设计,重点提出并设计了一个基于TCP网络传输协议的新型控制和通信系统,增强了机器人在远程控制方面的安全性。关键词 机器人;控制;通信;LinuxABSTRACT Along with the

2、 development of the modern information technology, remote robot plays a more and more important role in real life and scientific research. And for the remote robot, a safe and reliable protocol of control and communication, was one of the important factors which is to ensure that the remote robot ca

3、n be operated normally and safety. Based on the ARM hardware platform and embedded Linux operating system, a remote robot control system which can operate by remote control in the wireless network is designed. The paper first elaborates the design of the software and hardware system of robot and han

4、d-held terminal control software, focusing on this design proposed and designed a new control and communication system based on TCP network transmission agreement, enhance the way of security in the remote control .KEY WORDS Robot; Control; Communication; Linux目 录1 前 言11.1 研究背景和意义11.2 机器人发展历史11.3 当前

5、国内外研究动态21.4 本论文的主要研究内容32 机器人总体设计42.1 嵌入式系统概述42.2 ARM微处理器42.2.1 ARM微处理器概述42.2.2 ARM微处理器的特点52.2.3 ARM微处理器系列52.3 嵌入式操作系统52.3.1 嵌入式系统软件结构体系52.3.2 嵌入式操作系统简介62.3.3 嵌入式Linux操作系统简介62.4 机器人总体设计方案63 机器人嵌入式硬件平台设计83.1 嵌入式系统硬件结构83.2 三星S3C2440A微处理器93.3 Mini2440开发板93.4 机器人嵌入式硬件系统设计方案103.4.1 机器人嵌入式硬件系统设计总述103.4.2 传

6、感器系统电路设计113.4.3 动力系统电路设计123.4.4 无线通信系统电路设计124 机器人嵌入式系统平台搭建144.1 构建交叉编译工具链144.1.1 交叉编译工具链简介144.1.2 用Crosstool-ng构建交叉编译工具链144.2 Bootloader移植154.2.1 Bootloader简介154.2.2 Uboot移植154.3 Linux Kernel移植174.3.1 获取内核源码174.3.2 配置内核174.3.3 编译184.4 文件系统构建194.4.1 Yaffs2文件系统简介194.4.2 Yaffs2文件系统移植195 机器人嵌入式中控系统软件和手持

7、控制终端软件设计205.1 机器人中控系统软件设计205.1.1 机器人中控系统软件设计总述205.1.2 机器人中控系统软件整体程序设计205.1.3 传感器驱动软件模块设计215.1.3.1 USB摄像头驱动和图像采集功能实现215.1.3.2 GPS数据采集225.1.3.3 电子罗盘数据采集225.1.4 机器人运动控制模块设计225.1.5 机器人网络通信模块设计235.1.5.1 TCP协议简介235.1.5.2 Socket编程简介235.1.5.3 机器人网络编程模块程序设计245.2 机器人手持控制终端软件设计255.2.1 机器人手持控制终端软件设计总述255.2.2 机器

8、人手持控制终端软件设计程序整体设计255.2.3 基于QT for Android的UI模块设计265.2.4 控制通信模块设计276 机器人控制通信系统协议及其实现分析286.1 机器人控制通信系统总述286.2 机器人控制通信系统通信机制296.2.1 网络通信线程296.2.2 消息包定义296.2.3 数据封包和解包机制296.2.4 消息包序列化机制306.2.5 登陆和退出机制306.2.6 通信应答机制316.2.7 数据加密机制316.2.8 心跳检测机制326.3 机器人控制通信系统控制机制336.3.1 消息注册机制336.3.2 消息接收机制346.3.3 消息派发机制3

9、47 系统分析和总结367.1 系统分析367.1.1 系统分析方法简述367.1.2 压力通信测试367.1.3 断网测试367.2 测试结论378 总 结38参考文献40附 录41致 谢421 前 言1.1 研究背景和意义根据联合国标准化组织采纳的美国机器人协会给机器人下的定义,机器人是一种可编程和多功能的,用来搬运材料、零件、工具的操作机;或是为了执行不同的任务而具有可改变和可编程动作的专门系统。机器人技术是一门综合了计算机、电子、通信、信息、传感器技术和人工智能等技术的体现一个国家现代工业自动化、国家现代科学技术水平和经济实力的重要标志的技术,是当今时代世界各国高度重视的研究技术,其应

10、用领域也日益广泛。而作为机器人学科重要组成部分的远程机器人,具备执行目前人类尚无法执行或者难以执行的诸如太空探索、探险、救灾、搜救和大规模工业自动化生产等方面的任务。在目前人工智能技术尚未成熟的情况下,借助于现代通信技术和传感器技术,远程机器人具备了感知外部世界和与外部交流的能力。并且在人类的远程操控下,远程机器人也同样变得越来越智能。在诸如2011年3月日本福岛发生的核辐射危机处理和火星探索等任务中,远程机器人都是重要的执行力量。开展远程机器人的研究,对国家在太空探索、探险、救灾、搜救和工业自动化生产等方面都有着重要的意义。1.2 机器人发展历史随着现代计算机技术和电子技术的迅速发展,人类科

11、学技术水平每一次的重大变革都意味着不断有新发明的机器代替人类从事某些工作。18世纪60年代开始的第一次工业革命,出现了诸如“蒸汽机”、“珍妮机”等机器取代人力,人类开始运用这些机器开始大规模地开展工业化并开始逐步取代手工劳动。此后在1946年2月14日,人类历史上第一台计算机ENIAC在美国宾夕法尼亚大学诞生,这标志着人类使用人工智能成为可能。机器与人工智能的结合使得机器人在人类历史上出现了。1920年,捷克斯洛伐克作家卡雷尔恰佩克在他的科幻小说罗萨姆的机器人万能公司中首次提出了“机器人”这一词语。1959年恩格尔伯格建立的Unimation公司研制出了世界上第一台工业机器人“护士助手”机器人

12、。机器人的第二个重大变革是与传感器的结合。由于传感器的应用提高了机器人的可操作性,人们试着在机器人上安装各种各样的传感器,包括1961年恩斯特采用的触觉传感器,托莫维奇和博尼1962年在世界上最早的“灵巧手”上用到了压力传感器,而麦卡锡1963年则开始在机器人中加入视觉传感系统,并在1965年,帮助MIT推出了世界上第一个带有视觉传感器,能识别并定位积木的机器人系统。此后,随着现代通信技术的出现,无线通信技术成为推动机器人发展的重要力量。1997年7月4日,美国火星车-索杰纳号机器人抵达火星代替人类进行考察,从而开启了人类利用远程机器人在火星探索的历史。随后的勇气号、好奇号等火星车也相应地抵达

13、火星,它们的出现给人类在太空探索方面带来了巨大的帮助。2011年3月,日本也利用了远程遥控机器人参与福岛核泄漏事件的救灾中。1.3 当前国内外研究动态在国内,20世纪90年代末,我国建立了9个机器人产业化基地和7个科研基地。产业化基地的建设,为发展我国机器人产业奠定了基础。目前,我国已经能够生产具有国际先进水平的平面关节型装配机器人、直角坐标机器人、弧焊机器人、点焊机器人、搬运码垛机器人等一系列产品,不少品种已经实现了小批量生产。尽管机器人产业化已呈星火燎原之势,但仍旧存在着诸多问题。除了众多历史原因造成制造业水平低下的原因外,更多的是对工业机器人产业的认识和定位上存在着不同的观点。为了推动机

14、器人技术的研究和发展,国内一直重视对学生开展机器人研究,为了培养青少年在尖端科学技术方面的兴趣,举办了诸如面向大学生的探索科技、创新思维与实际行动结合的全国范围的全国大学生机器人电视大赛、中国科学技术协会主办的包括机器人工程设计展评、机器人足球比赛、VEX机器人工程挑战赛、机器人单项竞技比赛、FLL机器人挑战赛、机器人擂台赛等比赛项目的中国青少年机器人竞赛。此外,在军事和民用方面,国内企业注重研究用于开展探险、救灾的机器人,其机器人产品已经广泛应用于玉树抗震救灾、广州亚运安保等任务。在国外,为了使机器人能更好的应用于工业,各工业发达国家的大学、研究机构和大工业企业对机器人系统开发投入了大量的人

15、力财力。在美国和加拿大,各主要大学都设有机器人研究室,麻省理工学院侧重于制造过程机器人系统的研究,卡耐基梅隆机器人研究所侧重于挖掘机器人系统的研究,而斯坦福大学则着重于系统应用软件的开发。德国正研究开发“MOVE AND PLAY”机器人系统,使机器人操作就像人们操作录像机、开汽车一样。1.4 本论文的主要研究内容本论文是以ARM9为硬件平台并搭载嵌入式Linux操作系统为基础的研究手持式可视化远程机器人控制系统的控制通信系统方面的问题。所做工作主要包括以下几个方面:(1)根据系统需求分析建立基于ARM9微处理器的远程机器人的硬件平台及基于嵌入式Linux操作系统的软件平台的远程机器人嵌入式系

16、统平台。(2)构建了以ARM9为微处理器和机器人使用的传感器为硬件基础的机器人端硬件平台。(3)搭建了机器人端硬件平台的嵌入式Linux操作系统平台,在机器人端实现了Uboot、内核和文件系统的移植。(4)对机器人端的控制方式进行研究,实现了对外围器件的控制。(5)基于QT图形系统设计了一个手持控制终端程序,对机器人进行手持式可视化远程控制。(6)基于嵌入式Linux平台,设计了一个高效可靠的基于TCP传输协议的机器人控制和通信系统。92 机器人系统总体设计2.1 嵌入式系统概述根据IEEE的定义,嵌入式系统是“控制、监视或者辅助装置、机器和设备运行的装置”。而国内普遍认同的一种的说法是,嵌入

17、式系统是以应用为中心,以计算机技术为基础,软硬件可裁剪,适用于应用系统对功能,对可靠性、成本、体积、功耗有严格要求的专用计算机系统。嵌入式系统是把计算机直接嵌入到应用系统中,它融合了计算机软/硬件技术、通信技术和微电子技术。对嵌入式系统而言,它也是一个计算机系统,其构架与计算机系统相似,可以分成四个部分:处理器、存储器、输入输出(I/O)和软件系统。但与计算机系统不同的是,嵌入式系统具有系统内核小而精简、专用性强、高实时性或者分时性和高稳定性等特点。2.2 ARM微处理器2.2.1 ARM微处理器概述ARM(Advanced RISC Machines),既可认为是一个公司的名字,也可认为是对

18、一类微处理器的统称。ARM(Advanced RISC Machines)处理器是Acorn计算机有限公司面向低预算市场设计的RISC微处理器。更早称作Acorn RISC Machine。ARM处理器本身是32位设计,但也配备16位指令集。一般来讲比等价32位代码节省达35,却能保留32位系统的所有优势。基于ARM技术的微处理器应用约占据了32位RISC微处理器75以上的市场份额,ARM技术正在逐步渗入到人们生活的各个方面。到目前为止,ARM微处理器及技术已经广泛应用到各个领域,包括工业控制领域、网络应用、消费类电子产品、成像和安全产品等。2.2.2 ARM微处理器的特点ARM处理器的三大特

19、点是:耗电少功能强、16位/32位双指令集和合作伙伴众多。(1)体积小、低功耗、低成本、高性能。(2)支持Thumb(16位)/ARM(32位)双指令集,能很好的兼容8位/16位器件。(3)大量使用寄存器,指令执行速度更快。(4)大多数数据操作都在寄存器中完成。(5)寻址方式灵活简单,执行效率高。(6)指令长度固定。2.2.3 ARM微处理器系列目前,ARM推出的处理器内核主要包括:ARM7、ARM9、ARM9E、ARM10E、ARM11、Cortex和SecurCore等。其合作公司根据ARM公司的处理器内核设计出自己的处理器,例如:德州仪器的Omap和飞思卡尔的iMX等系列处理器。每个系列

20、都是针对不同的应用场合的,其拥有不同的特性。2.3 嵌入式操作系统2.3.1 嵌入式系统软件结构体系嵌入式系统软件结构主要可以分为设备驱动、操作系统、应用程序开发库和应用程序等四个层次,如图 2-1 嵌入式系统软件结构图所示。图 2-1 嵌入式系统软件结构图2.3.2 嵌入式操作系统简介嵌入式操作系统是一种用途广泛的系统软件,其主要负责嵌入系统的全部软、硬件资源的分配、调度工作,控制协调并发活动;它必须体现其所在系统的特征,能够通过装卸某些模块来达到系统所要求的功能。嵌入式操作系统在系统实时高效性、硬件的相关依赖性、软件固态化以及应用的专用性等方面具有较为突出的特点。嵌入式操作系统与普通的计算

21、机操作系统相比,除具备了一般操作系统最基本的功能,如任务调度、同步机制、中断处理、文件功能等,还有系统功能可裁剪、代码通常固化在ROM里面以及与嵌入式微处理器紧密集合等特点。常见的嵌入式操作系统有:Linux、uClinux、WinCE、Android、PalmOS、Symbian、eCos、uCOS-II、VxWorks和iOS等。2.3.3 嵌入式Linux操作系统简介嵌入式Linux是在Linux操作系统的基础上,为了能使其在嵌入式计算机系统上运行而进行裁剪修改的一种操作系统。由于Linux操作系统是一个开源的操作系统,其特点是免费,资源多,开发成本低。嵌入式Linux既继承了这一开源的

22、特性,又具有嵌入式操作系统的高效精简的特性。Linux应用领域非常广泛,主要的有信息家电、PDA、机顶盒、数据网络、远程通信、医疗电子、交通运输计算机外设、工业控制、航空航天领域等。2.4 机器人总体设计方案本文设计的远程机器人控制系统,是基于ARM9嵌入式微处理器和嵌入式Linux操作系统的嵌入式系统平台上实现的一个远程机器人控制系统设计方案,如图 2-2所示。该机器人依靠ARM微处理器和嵌入式Linux操作系统作为中控系统,同时结合摄像头、电子罗盘、GPS等传感器感知周围环境,通过对无线网卡的操作,实现对外界的信息交互,从而实现上位机对整个机器人的远程控制以及机器人对周围环境信息进行采集和

23、处理的功能。图 2-2 机器人总体设计框架图在整个设计方案中,远程机器人硬件系统共分为两部分:机器人端和嵌入式手持控制终端(也可用PC终端替代)。对于机器人端,整个嵌入式中控系统负责控制所有的传感器和动力驱动器以及无线网络设备,其与外界通信的唯一通道为无线网络。对于嵌入式手持终端,本设计是采用了一台基于TI Omap3630嵌入式微处理器的Android平板电脑。在软件设计方面,嵌入式手持终端,只需开发一个上位机控制程序即可。而对机器人而言,需要为其构建一个嵌入式Linux操作系统,并在该系统平台上开发一个嵌入式中控系统软件来全面控制机器人。3 机器人嵌入式硬件平台设计3.1 嵌入式系统硬件结

24、构嵌入式系统的硬件部分可以分为三层:核心处理器、外围电路和外围设备,如图 3-1所示。图 3-1 嵌入式系统硬件结构图核心处理器是嵌入式系统的核心部件,负责控制整个嵌入式系统的运作。外围电路包括嵌入式系统的内存、I/O端口、复位和电源电路、对外设的接口电路等。随着微电子技术的发展,许多常用的接口电路已经被集成到核心处理器中。外部设备:嵌入式系统与真实环境交互的各种设备,包括存储设备(如SD CARD)、I/O设备(如键盘、鼠标、LCD等)和打印设备(打印机、扫描仪等)。实际中,嵌入式设备的硬件配置非常灵活。除了CPU和基本的外围电路,其余部分都可以根据不同应用进行裁剪。3.2 三星S3C244

25、0A微处理器S3C2440A是基于ARM920T核的16/32位RISC微处理器,运行频率高达400MHz,主要面向手持设备以及高性价比、低功耗的应用,适用于开发各类高端手持、小型终端以及网络应用产品,具有非常丰富的片上资源,比如LCD、SDRAM、NAND FLASH、DMA等接口。S3C2440A集成如下片上功能:(1)1.2V内核,1.8V/2.5V/3.3V储存器,3.3V扩展I/O,16KB指令Cache(I-Cache)/16KB数据Cache(D-Cache)(2)外部储存控制器(SDRAM控制盒片选逻辑)(3)集成LCD专用DMA的LCD控制器(支持最大4K色STN和256K色

26、TFT)(4)4路拥有外部请求引脚的DMA控制器(5)3路URAT(IrDA1.0,64-Byte Tx FIFO,64Byte Rx FIFO)(6)2路SPI(7)IIC总线接口(多主支持)(8)IIS音频编解码器接口(9)AC97编解码器接口(10)1.0版SD主接口,兼容2.11版MMC接口(11)2路USB主机控制/1路USB期间控制(ver1.1)(12)4路PWM定时器/1路内部定时器/看门狗定时器(13)8路10位ADC和触摸屏接口(14)具有日历功能的RTC(15)摄像头接口(支持最大4096x4096的输入,2048x2048缩放输入)(16)130个通用I/O,24个外部

27、中断源(17)电源控制:正常,慢速,空闲,睡眠模式(18)带PLL的片上时钟发生器3.3 Mini2440开发板为了使本设计更加专注于机器人控制通信系统部分的设计,本设计硬件系统主要采用了具备整个嵌入式硬件系统功能的Mini2440开发板。Mini2440开发板是由广州友善之臂计算机科技有限公司开发的一款基于三星S3C2440A微处理器的开发板。它具有最基本的系统配置如下:(1)CPU:Samsung S3C2440A,主频400MHz,最高533Mhz 。(2)SDRAM:板载数据总线为32bit的64M SDRAM,SDRAM 时钟频率高达100MHz。(3)Flash Memory:板载

28、256M Nand Flash,掉电非易失。板载2M Nor Flash,掉电非易失。(4)主要接口和资源:(A)板上集成4线电阻式触摸屏接口,可以直接连接四线电阻触摸屏。(B)1个主USB接口,1个从USB接口。(C)1路立体声音频输出接口(标准3.5mm接口),1路麦克风接口。(D)1个100M以太网RJ-45口(采用DM9000网卡)。(E)1个SD/MMC卡存储接口。(F)摄像头(Cemera) 引出CPU内部全部摄像头信号引脚。(G)3个串行口。COM0为RS232 DB9接口(亦引出TTL接口),COM2和COM3为2.0mm间距。(H)1个PWM控制蜂鸣器。(I)1个34pin

29、2.0mmGPIO接口。(J)1个40pin 2.0mm系统总线接口系统时钟源和RTC :12M无源晶振,内部实时时钟。3.4 机器人嵌入式硬件系统设计方案3.4.1 机器人嵌入式硬件系统设计总述整个机器人就是一个典型的嵌入式系统,其硬件的设计就是一个嵌入式硬件系统。在这个嵌入式硬件系统中,具备三个最重要的组成部分:电源及复位系统、最小系统和外设。而本设计采用了广州友善之臂计算机科技有限公司的Mini2440开发板,其具备了基础的电源及复位最小系统,同时也是本设计提出的嵌入式中控计算机硬件系统核心部分。本设计需要完善的电路设计就是适应机器人功能的外围电路。本设计的机器人,主要需要设计的外围电路

30、主要是传感器系统电路设计、动力系统电路设计和无线通信系统电路设计。这三部分的电路设计与Mini2440的接口都是通过直接和三星S3C2440A的GPIO相连而实现的。整个机器人的硬件总体设计如图 3-2所示。图 3-2 机器人硬件设计总体设计图3.4.2 传感器系统电路设计传感器系统是机器人的感官系统,如人体的眼睛和耳朵等器官,具备感知外部世界的能力。在本设计的远程机器人中,操作人员无法直接感知机器人所在地方的环境信息,这对于机器人来说,必须要求其具备一个对周围环境信息采集的传感器系统。在本设计中,机器人的传感器系统实现的功能包括采集图像、所在经纬度和运动方向信息等功能。故该传感器系统包括以下

31、三个组件:摄像头、GPS和电子罗盘。由于摄像头是采用USB接口,GPS和电子罗盘都是采用串口接口,而Mini2440已经具备了USB和串口接口,故以上三个器件只需将其与Mini2440相应的接口连接起来就可以了。具体连接图如图 3-3所示。图 3-3 传感器系统电路设计图3.4.3 动力系统电路设计机器人的动力系统是机器人的最基本部件,是驱动机器人运动的重要保障。常见的机器人运动方式有轮式移动、仿人二足移动、仿人多足移动和飞行移动等方式。仿人二足移动、仿人多足移动和飞行移动等方式对成本、体积和稳定性要求都非常高,在电路设计和程序控制方面同样是非常复杂。在目前的实际应用中,相当多的机器人都是采用

32、轮式移动的方式,如火星车等机器人。对于本设计而言,整个机器人采用履带轮式移动的方式。整个动力系统电路设计包含三个部件:两个直流电机和一个L298N电机驱动器。L298N是ST公司生产的一种高电压、大电流电机驱动芯片。该芯片采用15脚封装。主要特点是:工作电压高,最高工作电压可达46V;输出电流大,瞬间峰值电流可达4A,持续工作电流为2A;额定功率25W。内含两个H桥的高电压大电流全桥式驱动器,可以用来驱动直流电动机和步进电动机、继电器线圈等感性负载;采用标准逻辑电平信号控制;具有两个使能控制端,在不受输入信号影响的情况下允许或禁止器件工作有一个逻辑电源输入端,使内部逻辑电路部分在低电压下工作;

33、可以外接检测电阻,将变化量反馈给控制电路。使用L298N芯片驱动电机,该芯片可以驱动一台两相步进电机或四相步进电机,也可以驱动两台直流电机。该动力系统与Mini2440的连接方式采用直接GPIO控制,如图 3-4所示。图 3-4 机器人动力系统电路设计图3.4.4 无线通信系统电路设计机器人要与外部世界通信,必须具备一个通信系统。随着现代通信技术的发展,WIFI、2G和3G等现代通信技术都非常成熟,已经广泛应用于各行各业。本设计采用了目前成本比较低的WIFI方案,该方案有效通信距离可达300米左右,并且可以频道无需付费使用,满足验证本设计的实验条件。由于Mini2440具备了USB接口,对于本

34、设计而已,只需要连接一个USB无线网卡即可。故机器人采用了TP-LINK WN721无线网卡,连接图如图 3-5所示。图 3-5 无线通信系统连接图494 机器人嵌入式系统平台搭建4.1 构建交叉编译工具链4.1.1 交叉编译工具链简介嵌入式开发一般都要使用交叉编译环境。所谓交叉编译就是在一台机器上编译软件,其生成的软件在另一台不同类型处理器的机器上运行。对于ARM处理器平台来说,其处理器性能一般不足以支撑编译适合自身架构运行的软件。这就需要在X86机器上编译生成适合ARM机器上运行的软件,在X86上编译的ARM架构代码的编译器就是交叉编译器。通常,对于不同的处理器,需要制作特定的交叉编译工具

35、链。4.1.2 用Crosstool-ng构建交叉编译工具链Crosstool是由美国人Dan Kegel开发的一套可以自动编译不同匹配版本的gcc和glibc,并作测试的脚本程序。它是一个开源项目,但由于其近年来停止更新,最高只支持gcc 4.1.1和glibc 2.3.6的版本,并且在编译超过Linux 2.6.9以上的内核时,会出现错误。而crosstool-ng则一直保持更新,现在最新能够建立gcc 4.5.3版本及glibc 2.9版本,在编译高版本的Linux内核时也不会产生错误,因此一般采用crosstool-ng来代替crosstool。使用crosstool-ng构建交叉编译

36、工具链的主要步骤如下:(1) 下载crosstool-ng源码:(A) 执行命令:# hg clone http:/crosstool-ng.org/hg/crosstool-ng(B)然后更新到最新的版本:# hg pull通过执行上述两个命令,已经得到了最新版本的crosstool-ng源码了。(2) 修改交叉编译器针对的构架:(A)解压源码后,使用图形化工具配置crosstool-ng:# make menuconfig(B)在出现的图形界面中修改交叉编译器选项以针对的ARM9构架:Target options - * Target optimisations * (armv4t) Ar

37、chitecture level (arm9tdmi) Emit assembly for CPU (arm920t) Tune for CPU(3) 编译工具链:配置完后,在crosstool-ng编译目录下执行命令:# ct-ng build.4。crosstool-ng就会自动从网上下载相应的源码包通过编译,制作出ARM9平台的交叉编译工具链。得到的交叉编译工具链将用来编译Bootload、Linux kernel、文件系统和应用程序。4.2 Bootloader移植4.2.1 Bootloader简介Bootloader类似PC的BIOS与硬盘MBR中的引导程序,是操作系统启动时第一个

38、运行的程序。其作用就是在操作系统加载内核运行之前,完成对硬件的初始化。Bootloader与交叉编译工具链一样,对于不同的处理器架构和硬件设计,其实现也是不相同。Bootloader的工作一般分为两个阶段:Stage1是使用汇编语言实现对硬件相关部分的支持,如硬件初始化,设置CPU时钟等。Stage2是用C语言实现的与硬件不相关的部分工作,包括检测系统内存映射,将Linux Kernel和文件系统映像从Flash加载到RAM空间中等工作。4.2.2 Uboot移植Uboot是一个著名常用的开源Bootloader程序,支持X86、ARM、MIPS和PowerPC等架构的处理器。由于移植Uboo

39、t到三星S3C2440A微处理器上的过程过于繁琐和复杂,本文仅对移植关键部分作出说明。(1) 获取Uboot源码:(A)克隆Uboot源码:# git clone git:/git.denx.de/u-boot.git(B)切换到2010.03版本:# git checkout v2010.03此时我们就得到了Uboot 2010.03版本的源码。(2) 建立自己的处理器平台的目标编译项:(A)在Uboot-2010.03的根目录下面的Makefile中为robot2440建立编译项,以sbc2410x为模板例子。在Makefile中加上对mini2440板子的支持,将这个编译项命名为robo

40、t2440:robot2440_config : unconfig$(MKCONFIG) $(:_config=) arm arm920t robot2440 NULL s3c24x0 各项的意思如下:arm:CPU的架构(ARCH)arm920t:CPU的类型(CPU),其对应于cpu/arm920t子目录。robot2440:开发板的型号(BOARD),对应于board/ robot2440目录。NULL:开发者/或经销商(vender),NULL为没有。s3c24x0:片上系统(SOC)。(B)设置交叉编译工具链,修改顶层Makefile的CROSS_COMPILE定义如下:CROSS_

41、COMPILE=arm-linux-(C)以sbc2410x为模板例子,在/board目录下建立robot2440文件夹,并在include/configs/中建立开发板的配置头文件,拷贝sbc2410x的文件到robot2440和include/configs/中,并将sbc2410x命名的文件和定义改为robot2440。(3) 修改cpu/arm920t/start.S,根据S3C2440A数据手册设置其时钟,修改其代码实现自动识别从NAND Flash启动或者从Nor flash启动。(4) 根据Mini2440开发的硬件设计手册,增加NAND Flash读写函数,实现NAND Fla

42、sh的读写操作,从而能加载Uboot、内核和文件系统硬件到NAND Flash中。(5) 增加对分区表的设置,该分区表需要与内核设置的一致。(6) 生成相应平台的uboot映像:# make robot2440_config # make 至此,适应S3C2440A微处理器的uboot已经成功编译出来,将其用Jlink烧写到NAND Flash中。4.3 Linux Kernel移植4.3.1 获取内核源码从Linux官网中下载2.6.32.2版本内核源码:# wget http:/www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.32.2.tar.

43、gz4.3.2 配置内核Linux kernel 2.6.32.2已经对Mini2440开发板提供了完善的支持,在配置内核的过程主要包括以下几个部分:(A)修改arch/arm/mach-s3c2440/mach-mini2440.c中的分区表信息为:static struct mtd_partition mini2440_default_nand_part = 0 = .name = Uboot, .size = 0x00060000, .offset = 0, , 1 = .name = Param, .offset = 0x00060000, .size = 0x00020000, ,

44、2 = .name = Kernel, .offset = 0x00080000, .size = 0x00500000, , 3 = .name = Root, .offset = 0x00580000, .size = SZ_256M - 0x00580000, ;(B)修改顶层Makefile文件中的编译器为交叉编译工具链:ARCH ?= armCROSS_COMPILE ?= arm-linux-(C)从网上获取yaffs源码,对内核打上补丁,增加对yaffs2文件系统的支持,进入yaffs解压文件的根目录,执行补丁命令:# ./patch-ker.sh ./linux-2.6.32.

45、2/在Linux kernel的配置选项中选中yaffs2文件系统的支持:File systems -* Miscellaneous filesystems -* JFFS2 write-buffering support4.3.3 编译配置好内核选项后,编译内核image:# make Mini2440_defconfig# make zImage至此,内核的移植已经完成,将arch/arm/boot/zImage文件下载到NAND Flash中。4.4 文件系统构建4.4.1 Yaffs2文件系统简介YAFFS,Yet Another Flash File System,是一种类似于JFF

46、S/JFFS2的专门为Flash设计的嵌入式文件系统。与JFFS相比,它减少了一些功能,因此速度更快、占用内存更少。YAFFS提供了写均衡,垃圾收集等底层操作。4.4.2 Yaffs2文件系统移植Mini2440厂家已经提供了一个比较强大的yaffs2文件系统,本设计对uboot和内核进行了移植,已经支持了yaffs2文件系统。故Mini2440自带的yaffs2文件系统完全具备在新uboot和内核上运行的基础。本设计将广州友善之臂计算机科技有限公司提供的Mini2440的yaffs2文件系统裁剪了QTOPIA 和QT EMBEDDED 4.6.3程序,重新配置启动脚本,使之适应本设计的运行要

47、求。5 机器人嵌入式中控系统软件和手持控制终端软件设计5.1 机器人中控系统软件设计5.1.1 机器人中控系统软件设计总述机器人中控系统软件是机器人控制的核心软件,负责对整个机器人的运动控制、信息采集和远程控制处理工作。该中控系统是基于嵌入式Linux系统而设计的,应用了Linux驱动、网络编程和多线程编程等知识。根据机器人的功能要求,其软件控制部分共分为传感器软件模块、运动控制模块和网络通信模块,如图 5-1机器人中控软件系统框架图所示。图 5-1 机器人中控软件系统框架图5.1.2 机器人中控系统软件整体程序设计机器人中控系统软件在软件实现上,采用Linux的多线程编程技术和网络通信技术,

48、可以更好的满足对机器人各个部件控制和网络通信的实时要求。多线程程序采用多任务、并发的工作方式,可以提高应用程序响应时间并且改善程序结构。机器人中控系统软件主要通过四个线程来实现:主线程、网络消息服务器线程和网络消息处理线程以及心跳线程,如图 5-2所示。图 5-2 机器人中控系统软件整体程序设计说明图5.1.3 传感器驱动软件模块设计 1、USB摄像头驱动和图像采集功能实现本设计采用的基于中星微ZC301芯片的USB摄像头的驱动已经被Linux内核支持了,对于USB摄像头采集图像功能,只需利用Linux系统提供的V4L接口编程就可以实现。对V4L编程主要有以下几个步骤:(1) 打开设备;(2)

49、 设置设备的属性;(3) 设定传输格式和传输方式;(4) 开始传输数据;(5) 关闭设备。对于机器人中控系统而言,进行图像采集,只需调用底层实现的功能函数即可。对摄像头控制,先要调用libCam_OpenCamera功能函数打开该设备并对其进行初始化,设置采集图像的大小。在设置完成后,调用libCam_OpenCamera功能函数获取到格式为JPEG的图像数据。/*打开和初始化摄像头*/int libCam_OpenCamera(char *camera_dev, int w_size, int h_size)/*获取图像函数*/int libCam_GetImage(char* image_

50、data, int image_size) 2、GPS数据采集本设计采用的GPS设备是支持串口传输的,Linux 操作系统从一开始就对串口提供了很好的支持。GPS上电后会自动传输当前经纬度等数据到串口上,只需要往串口读取数据就可以了。串口编程主要有以下几个步骤:(1) 打开串口;(2) 设置串口属性,如设置波特率;(3) 读写串口;(4) 关闭串口。对于机器人中控系统而言,进行GPS数据采集,只需调用功能函数libGPS_ReadGPS,GPS数据就存储到gpsData结构体变量中。/*读GPS数据*/int libGPS_ReadGPS(int fd, struct gpsData *dat

51、a) 3、电子罗盘数据采集本设计采用的电子罗盘同样是支持串口数据传输的,机器人中控系统读取其数据只需调用功能函数libCom_ReadDegree往串口读数据即可,函数返回值即为当前地磁偏角的度数。/*读电子罗盘数据*/int libCom_ReadDegree()5.1.4 机器人运动控制模块设计机器人需要实现运动,必须要提供前进、后退、左转、右转和停止功能。对于这五个功能,是靠驱动两个直流电机来实现的。通过使能L298N电机驱动板上的M1EN和M2EN两个引脚,使电机处于受控状态。分别给M1+、M1-和M2+、M2-加上低电平或者高电平,就能实现以下五个功能。对机器人中控系统而言,这五个功

52、能就相当于五个状态,而要控制机器人只需调用libDriver_robot功能函数,传入相应的状态就可驱动机器人运动。 /* 机器人运动控制函数 */int libDriver_robot(unsigned int ctrlStatus)运动状态:#define ROBOT_STATUS_NONE 0x00#define ROBOT_STATUS_RUN 0x01#define ROBOT_STATUS_STOP 0x02#define ROBOT_STATUS_UP 0x03#define ROBOT_STATUS_DOWN 0x04#define ROBOT_STATUS_RIGHT 0x0

53、5#define ROBOT_STATUS_LEFT 0x065.1.5 机器人网络通信模块设计 1、TCP协议简介TCP是一种面向连接(连接导向)的、可靠的、基于字节流的运输层(Transport layer)通信协议。其具有的特点如下:(1)面向连接的传输;(2)端到端的通信;(3)高可靠性,确保传输数据的正确性,不出现丢失或乱序;(4)全双工方式传输;(5)采用字节流方式,即以字节为单位传输字节序列;(6)紧急数据传送功能。 2、Socket编程简介对于TCP协议数据通信,要先建立连接。服务器端要先调用socket()函数创建一个TCP套接字,函数bind()将本地IP地址绑定在一起,并

54、可指定服务器的端口号和接受的客户端的IP地址范围。然后调用函数listen()将套接字转化为倾听套接字。当有连接到来的时候,accept()返回一个新的套接字与客户端通信。当客户端通过connect()和服务器建立连接后就可以通过read()和write()传送数据。通信完成通过close()关闭套接字。 3、机器人网络编程模块程序设计本设计利用了TCP协议和Linux Socket编程,实现了基础的网络库,提供了非阻塞方式连接服务器、读写网络数据和创建服务器以及检测超时连接等功能函数。由于进行网络通信的时候,网络很有可能会遇到异常的情况。为了处理这种情况,本设计采用了非阻塞的方式来进行网络通

55、信。对套接字sock设置为O_NONBLOCK后,通过函数fcntl(sock, F_SETFL, O_NONBLOCK)设置便可实现非阻塞通信。另外,本设计通过异步连接的方式设计了一个超时connect功能函数实现对网络异常的检测。对于正常情况下调用connect,因为TCP三次握手,连接需要一段时间进行处理,而非阻塞调用只要不能立即完成就会返回错误,所以这里会返回EINPROGRESS,表示在建立连接但还没有完成。可以根据这一特性,通过使用多路复用select来处理。Select可以设置超时连接等待的时间。对套接字sock进行设置select(sock + 1, NULL, &writef

56、ds, NULL, &tv),tv为等待的超时时间,但内核的超时时间为75秒,故tv可以设置为少于75秒的时间,返回0表示connect超时。若超时,则可以根据具体的情况来进行网络异常处理。除此之外,由于使用TCP传输协议,若一次发送的数据较大的时候,根据网络负载和网卡缓冲区的大小问题,底层进行数据发送的时候有可能会将其分几次发送。另外底层也有可能一次发送数据完毕,但由于网络负载严重,对于网络另一端,数据同样也有可能会进行多次的接收。为了解决这样的问题,本设计对网络接收函数recv进行了处理,通过在非阻塞的网络连接中,使用多路复用select(fd_in + 1, &tmp_inset, NU

57、LL, NULL, &tv)来对套接字fd_in进行处理,若FD_ISSET(fd_in , &tmp_inset) 0的时候,此时便有数据到达。利用此方法接收数据,直到接收到约定的一次接收数据的大小的即为完成一次数据接收。5.2 机器人手持控制终端软件设计5.2.1 机器人手持控制终端软件设计总述机器人手持控制终端软件是运行在Android操作系统上的用来控制机器人的手持端软件。该软件使用QT设计界面,使用Linux网络和多线程等编程实现控制和通信功能。整个机器人手持控制终端共分为UI模块和控制通信模块,其框架如图 5-3所示。图 5-3 机器人手持终端软件框架图5.2.2 机器人手持控制终

58、端软件设计程序整体设计机器人手持控制终端软件共建立了用于显示界面和与操作人员进行交互的主线程、用于处理机器人客户端连接信息的网络消息服务器线程和用于处理客户端发送过来的消息的网络消息处理线程等三条线程,如图5-4所示。图 5-4 机器人手持终端软件的三个线程5.2.3 基于QT for Android的UI模块设计QT for Android是罗马尼亚的一名开发者开发的一款基于QT开发工具、用于编写运行在Android操作系统上的软件的开发工具。QT功能非常强大,但本设计仅用其编写简单的手持终端控制UI模块,如图 5-所示。其UI主要功能包括:(1) 具备前进、后退、左转、右转和停止等机器人运

59、动控制以及GPS、电子罗盘和图像采集等按钮的UI运动控制模块和UI设备控制模块界面。(2) 可以显示图像、经纬度和运动方向等信息的UI图像显示模块和UI状态信息模块。(3) 可以显示各类控制连接信息的UI通知消息模块。图 5-5 机器人手持终端UI界面图5.2.4 控制通信模块设计QT提供了基于C+的网络编程,通常进行QT开发网络程序时,都会使用QT自带的网络API。但本设计的机器人手持控制端网络部分并没有采用QT的网络API,而是调用了底层的Linux网络API,共用机器人中控系统软件的网络通信和控制模块,其设计原理与机器人中控软件的网络通信和控制模块一致。6 机器人控制通信系统协议及其实现

60、分析6.1 机器人控制通信系统总述机器人控制通信系统是整个机器人的核心部分,同时也是机器人和手持控制终端进行信息交互的重要实现部分。机器人控制通信系统主要是基于Linux API实现的,手持控制终端和机器人中控系统软件均使用其作为自身的网络和控制的实现模块。手持控制终端在远程控制机器人或者机器人向其发送数据时,需要经过该系统进行处理,其处理流程如图 6-1所示。发送方执行控制动作时会进行消息封包、消息包加密、消息包序列化、发送数据包等四个工作流程。接收方需要执行接收消息包、解除消息包序列化、消息包解密、消息包解包、查找消息动作、派发消息动作和执行消息动作以及应答发送方等八个工作流程。该系统共分

61、为两部分:通信系统和控制系统。通信系统主要负责传输网络数据,控制系统主要负责执行消息动作。图 6-1 机器人控制通信系统工作模式图6.2 机器人控制通信系统通信机制6.2.1 网络通信线程在网络通信方面,机器人中控系统软件要创建三个网络线程:一是网络消息服务器线程,用于建立与发送方的网络通信连接;二是网络消息处理线程,用于处理客户端发送过来的消息;三是心跳线程,用于检测网络状态。而手持控制终端只需要创建网络消息服务器线程和网络消息处理线程。6.2.2 消息包定义机器人控制通信系统使用了消息机制,手持控制终端和机器人之间进行通信,需要发送消息包。消息包定义struct DATAPACKET_st如表6-1所示。表 6-1 消息定义 发送方动作数据包(struct PACKETDATA_st)数据包大小数据包内容 char szFrom8char szAction16unsigned int sizechar *data消息包中的数据包存储不定长动态消息数据,该数据指针data指向数

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!