电脑鼠是一种小型机器人车辆,英文名称Micromouse,是使用嵌入式微控制器、传感器和机电运动部件构成的一种智能行走装置[1]。电脑鼠是一种大学生竞赛项目产品,其主要功能是自动在规定的迷宫赛场中搜索最佳路径并以最快速度完成冲刺。该项目起源于美国,至今已有30多年历史,现在我国高校中是一种非常盛行的比赛。电脑鼠的软件程序是实现其功能和提高其性能的核心组成部分,电脑鼠程序采用专用的嵌入式软件开发环境进行开发和调试,本文以IAR公司的软件集成开发环境为例介绍电脑鼠软件开发调试环境配置及程序开发调试方法。
1软件开发环境介绍
1.1IAREWARM嵌入式软件集成开发环境
IAREWARM是一个针对ARM处理器的集成开发环境,包含项目管理器、编辑器、C/C++编译器和ARM汇编器、连接器XLINK和支持RTOS的调试工具C-SPY。在EWARM环境下可以使用C/C++和汇编语言方便地开发嵌入式应用程序。对比其他的ARM开发环境,IAREWARM具有入门容易、使用方便和代码紧凑等特点。本文以IAREWARM4.42a版本为例,微控制器采用基于ARMCotex-M3内核的LM3S615。
1.2LMLINK调试器
调试器是嵌入式软件程序下载到单片机并进行代码调试的工具。LMLINK是由广州致远电子有限公司开发的低成本高性能USBJTAG调试器,专门用于对流明诺瑞系列单片机程序的下载与调试。LMLINK采用USB接口与电脑连接,打破传统的用并口和串口下载程序的方式,无论是台式电脑还是笔记本电脑都易于应用。
2软件开发环境配置
2.1安装流明诺瑞驱动库
流明诺瑞驱动库是基于ARMCotex-M3微控制器芯片访问外设的底层驱动程序代码集合[2],电脑鼠控制程序需要连接驱动库才能控制电脑鼠运行。因此,在配置软件环境前需要安装流明诺瑞驱动库。流明诺瑞驱动库是一系列的系统文件,包括连接器命令文件(*.xcl),驱动库头文件,以及底层驱动函数库。最新的流明诺瑞驱动库可从官网()下载。安装驱动库的任务是把相应的驱动库文件拷贝到指定的目录,并在新建软件项目时进行配置。具体操作如下。(1)拷贝连接器命令文件。将连接器命令文件复制到IAREWARM的默认路径下面,即把文件“standalone.xcl”复制并粘贴到“$TOOLKIT_DIR$IARSystemsEmbeddedWorkbench4.0Kickstartarmconfig”目录下,并更改名称为“lnk_LM3.xcl”,便于识别此连接文件用于ARMCotex-M3内核单片机。(2)拷贝驱动库头文件。在软件安装目录“inc”文件夹下新建一个“Luminary”文件夹,把驱动库根目录中以及驱动库“src”文件夹和驱动库“inc”文件夹中的头文件(*.h)复制粘贴到文件夹“Luminary”下。这样避免每次编译连接时系统提示选择需要连接的文件目录。(3)拷贝底层驱动函数库。在驱动库根目录下打开“$TOOLKIT_DIR$DriverLibsrcewarmExe”,复制函数库文件“driverlib.r79”。在软件IAREWARM的安装目录“$TOOLKIT_DIR$IARSystemsEmbeddedWorkbench4.0Kickstartarmlib”下新建一个“Luminary”文件夹,把“driverlib.r79”粘贴到该文件夹下。通过以上操作即完成了流明诺瑞驱动库安装。
2.2IAREWARM创建项目和添加文件
首先创建一个基于ARM工具链的新项目,然后在新项目中创建3个文件组。文件组用于对项目文件分类放置,使项目结构清晰和便于管理,3个文件组分别是startup文件组,src文件组和lib文件组。startup文件组用于存放项目引导文件“startup.c”,src文件组用于存放项目代码文件,项目代码由开发项目的程序员编写,lib文件组用于存放底层驱动函数库文件。创建文件组后,把项目引导文件和底层驱动函数库文件分别加入相应的文件组。在src文件组中创建项目代码文件并编写代码。
2.3IAREWARM集成开发环境配置
2.3.1通用选件设置打开或新建一个项目后,在“Project”项下拉列表中选择“Option”选项,即可打开选件设置窗口。在“GeneralOption”的“Target”选项中选择单片机内核和单片机型号以及字符编码格式。此处选择内核Cotex-M3,选择单片机LuminaryLM3S615,字节顺序选择Little,即小端格式。堆栈对齐方式选择4bytes。2.3.2C/C++编译器选件设置在编译器选件设置中要添加流明诺瑞驱动库头文件,因此在附加include文件目录中写入“$TOOLKIT_DIR$INCLuminary”,以便编译器能够找到驱动库函数的声明,否则编译无法通过。2.3.3Assembler选件设置本项选用默认设置。2.3.4连接器选件设置连接器选件包括Output,Extraoutput,List和Config选项。Output选项允许用户选择输出文件是否带调试信息。Extraoutput选项可选是否产生附加的输出文件及其格式。List选项允许生成存储器分配MAP文件。Config选项定义连接器命令文件。连接器命令文件中包含连接器的各项命令行参数,主要用于控制程序各种代码段和数据段在存储器中如何分布。在连接器命令文件中,选择覆盖默认设置,选择连接器命令文件lnk_LM3.xcl。在程序复位入口点栏输入ResetISR,当系统上电时启动文件由ResetISR处开始执行。2.3.5Debugger选件设置调试器的选件设置包括调试工具选择和程序下载设置。用户可根据自己的需要进行配置。
3软件开发调试过程
电脑鼠程序是基于红外传感器的自动机器人车辆,传感器的校准和程序调试是同时进行的。当电脑鼠的速度较慢时,对传感器的信号强度要求较低,即传感器信号在一定距离范围内被检测到即可,但是在冲刺阶段,当电脑鼠速度较快时,传感器信号必须处于某一限定区间内,否则会出现撞壁或提前转弯现象,导致电脑鼠中途失控,无法完成走迷宫任务。电脑鼠程序功能包括搜索算法开发、极限速度值设定、加速度调节以及转弯角度调节等。搜索算法中有右手法则、左手法则、中右法则、中左法则、中心法则等[3]。以右手法则为例,程序首先判断右方是否有路,然后判断前方是否有路,最后判断左方是否有路,转弯优先方向依次是右、前、左,如果前3个方向均无路,电脑鼠将转弯180°后回到上一个记忆的路口。其他的算法类似。通过电脑鼠在迷宫中的表现,可更改极限速度值、加速度值以及转弯角度,优先保证电脑鼠完成迷宫搜索,然后调整程序参数和传感器值,逐步提高电脑鼠的速度,使其性能不断优化。
4结语
电脑鼠的程序开发与调试是学生学习电脑鼠的重要内容,本文对开发工具驱动库的安装、工具的配置、程序开发与调试方法进行了分析与介绍,特别是底层驱动库的安装和IAREWARM集成开发环境的配置,对于软件程序是否能够正常编译连接及下载调试至关重要。本文有助于学生了解开发环境,熟悉开发流程以及工作技巧,快速提高开发技能。