基于ARM Cortex平台的嵌入式系统课程虚拟实验平台设计
2014-03-26杨继森郑方燕
杨继森,张 静,朱 革,郑方燕
(重庆理工大学 机械检测技术与装备教育部工程研究中心,重庆 400050)
信息时代、数字时代使嵌入式技术得到了巨大的发展机遇,国内很多高校的电子、计算机、信息技术专业相继开设了嵌入式系统课程[1-3]。重庆理工大学在原有C51单片机课程的基础之上,开设了以NXP公司的ARM7微控制器LPC21XX系列为基础的嵌入式系统应用相关课程,每学年都有超过10个班的学生选择嵌入式系统课程,课程教学效果显著。
1 现状分析
随着嵌入式技术的飞速发展,嵌入式微控制器的行业领先者ARM(Advanced RISC Machines)公司陆续推出了ARM7系列、ARM9系列、ARM9E系列、ARM10E系列和ARM11系列嵌入式微控制器[4]。许多高校的嵌入式系统课程都以这几个系列的微控制器作为讲授对象。ARM公司于2005年推出ARMv7架构的Cortex-M系列微控制器产品采用了Thumb-2技术,它是在ARM原有Thumb代码压缩技术的基础上发展起来的,并且保持了对现存ARM解决方案的完整的代码兼容性。Thumb-2技术比纯32位代码少使用31%的内存,但能够提供比基于Thumb技术的解决方案高出38%的性能[5-6]。
目前,基于全新ARMv7架构的Cortex-M系列微控制器已经成为行业的主流选择[7-10]。为了更好地跟随市场变化,培养出满足社会需要的优秀嵌入式技术人才,重庆理工大学已经开始将嵌入式系统课程从旧的ARM7平台迁移到全新的Cortex-M平台,并设计开发了一套虚拟实验平台。该平台既方便教师将实验项目带入课堂,在课堂上利用虚拟实验平台进行现场操作和演示,使理论知识更加形象、生动,也解决了实验学时不能满足学生实验的难题,使嵌入式系统课程的学习不再局限于理论课堂和实验室,在教学时间与教学空间上拓展了学生对嵌入式系统课程的学习范围。
2 虚拟实验平台设计
仿真软件Proteus非常适合ARM嵌入式技术的设计、仿真与开发[11-12],因此虚拟实验平台采用Proteus作为主要开发平台,微控制器采用美国TI(Texas Instruments)公司的基于Cortex-M3的LM3S300系列微控制器。结合我校嵌入式系统课程教学大纲的要求,为了让学生掌握嵌入式系统的基本知识和设计方法,加强工程实践能力的培养,实验平台采用分层次的结构、递进式的教学方式,由浅入深、循序渐进,以适合不同知识基础的学生。它体现简单易用、前后连贯的总体设计思路,真正引导学生进入嵌入式系统设计、开发的大门。虚拟实验平台分为基础型平台、综合型平台和设计型平台。
2.1 基础型虚拟实验平台
基础型实验平台主要注重于基础知识的深入理解与掌握。秉承“少而精”的原则,该平台只开展了4个基础型实验项目,其中只包含3个最基础而常用的片上外部设备实验(GPIO、UART、TIMER)。
(1) 虚拟实验平台最小系统设计实验。主要侧重于对虚拟仿真平台软件和操作步骤的熟悉,以及与编程软件平台的连接。
(2) GPIO基本输入与输出实验。采用端口引脚PA2作为输出,驱动一个LED发光二极管,PA3作为端口输入,外接按键输入。实验目的是让学生仔细体会并熟练掌握GPIO模块输入与输出功能的配置以及库函数的调用方法。
(3) UART配置与数据传送实验。针对标准的串行接口,将PA0复用为串行接口的接收端口Rx0,将PA1复用为串行接口的发送端口Tx0,采用虚拟仿真平台的虚拟终端作为控制台,可以接收并显示串行接口的输出数据,同时具有通过键盘输入数据的功能。通过该实验,学生可以体会标准串行接口的配置方式以及参数对数据传输过程的影响。
(4) 基于定时器的方波信号输出实验。采用PC5作为定时器Timer0的信号输出引脚,引脚外接一个四通道虚拟示波器,可以定时改变引脚的输出状态,利用示波器观察信号波形,可以准确判断定时器的定时效果。
基础型虚拟实验平台如图1所示。
图1 基础型虚拟实验平台
2.2 综合型虚拟实验平台
在学生已经熟练掌握基础知识的基础之上,综合型虚拟实验平台可以进一步拓展学生的知识面,加强对学生工程实践能力的培养。平台涵盖了LM3S300系列的所有外设,共包含了8个实验项目。某些外设是在基础型实验平台的基础之上的进一步拓展,以增加工程的实践性。
(1) 4×4行列式键盘设计实验。该实验是对GPIO的输入与输出功能进行扩展,采用PB端口构建4×4的行列式键盘,PB0—PB3作为行扫描线,PB4—PB7作为列扫描线,主要培养学生对GPIO功能的综合应用能力。经过扫描获得的按键值可采用格式化的字符串,通过基础型实验平台的串行接口数据输出功能在虚拟终端上输出显示。
(2) 基于外部中断的行列式键盘设计实验。该实验是在“4×4行列式键盘设计”实验的基础之上,利用GPIO端口的外部中断功能,将4×4行列式键盘的行扫描线PB0—PB3通过74LS08的2个二输入与门相“与”之后,作为按键中断信号KEY_INT连接到端口PC0。当有按键按下时,产生下降沿的中断信号,可以在中断服务程序中调用按键扫描程序获得键值,避免了普通行列式键盘需要不断进行按键扫描而浪费处理器资源的问题。
(3) UART的数据输入与输出实验。该实验是在基础型实验“UART配置与数据传送”的基础之上,加入了虚拟串行接口器件COMPIM,可以将仿真平台的数据通过计算机的物理串行接口向外输出到其他的实验平台进行联合仿真实验,也可以通过专用的虚拟串行接口软件,将仿真平台的数据传输到其他虚拟仿真平台(Matlab、LabVIEW、VC++等),进行跨平台联合虚拟仿真。
(4) 基于SPI接口的数码显示实验。该实验是SPI接口实验,为了增加实验的实用性,采用具有SPI接口的数码管驱动芯片MAX7219。MAX7219驱动一个6位的八段数码管,LM3S328通过SSI接口与MAX7219连接,将PA2复用为SPI接口的时钟信号CLK,PA5复用为SPI接口的数据输入信号DIN,PA3作为SPI的片选信号CS。该实验项目可以作为整个实验平台的数字化显示窗口。
(5) 基于I2C接口存储系统设计实验。该实验基于I2C接口的存储器系统设计,存储单元选择常用的具有I2C接口的存储器芯片24C02C。微控制器的PB2复用为I2C接口的串行时钟信号线SCL,PB3复用为I2C接口的串行数据信号线SDA。芯片存储容量为256字节,可以存储开机密码、网络端口号等非易失性数据信息。
(6) 高速ADC数据采集设计实验。微控制器的ADC具有8个数据采集通道,将输入信号ADC0连接到通道0,输入信号的幅值可以通过可调电阻RV1进行调整。这里选用虚拟仿真平台自带的虚拟信号发生器,可以产生正弦信号、音频信号、调制信号等,ADC采集的数据可以通过虚拟串行接口传输到其他仿真平台,实现联合仿真。
(7) PWM波形控制与驱动设计实验。利用微控制器的脉冲宽度调制功能(PWM),设计了2路PWM信号输出:第一路连接端口PB5,第二路连接端口PC5,2路PWM信号各自与一路LED驱动电路相连接。另外配备了2个单独的按键电路:一个按键连接到PWM_KEY1,另外一个连接到PWM_KEY2。实验时,第一路PWM输出占空比为100%的方波信号,通过按键“UP”和“DOWN”调整第二路PWM驱动信号的占空比。不同的占空比将导致2个LED的明暗程度显著不同,可以更加形象地理解PWM的功能与作用。
(8) 定时器捕获与比较设计实验。该实验是在基础型实验的基础之上,进一步理解定时器比较与捕获功能。通过电阻R6连接了一路虚拟波形发生器,向系统提供各种占空比的方波信号,可以利用定时器的捕获功能测量输入方波信号的周期或者频率。另外还提供了一个单独的按键,可以通过对按键计数实现定时器比较功能。
综合型虚拟实验平台见图2。
2.3 设计型虚拟实验平台
设计型实验平台主要培养学生对所学知识的综合应用能力,采用项目驱动的方式,以项目为主线。学生可以根据自己的兴趣和特长,以组合项目小组的形式完成实验项目[13-15]。整个实验平台提供了6个设计型综合实验项目,实验项目如表1所示。部分项目来源于教师的科研项目,具有一定的工程应用价值。每个实验项目不再提供具体的实验电路,教师可以提供一定的技术指导,学生需自行查阅资料,提出科学、合理的系统设计方案,并在虚拟开发平台上完成。
表1 设计型虚拟实验平台项目
图2 综合型虚拟实验平台
3 软件平台设计
软件开发采用Keil MDK(版本4.23)平台和ARM公司研发的编译器,编译速度快、效率高,平台工作界面友好、简单易用、程序调试方便、仿真功能强。
美国TI公司为LM3S300系列微控制器的开发设计提供了2种方式,即直接访问寄存器的开发方式和采用芯片制造商提供的库函数访问方式。采用库函数访问的开发方式能够提高代码的复用率,大大提高工作效率,是今后嵌入式系统设计、开发的一个趋势。本文以常用的串行接口为例,演示一个完整的实验项目工程的建立过程。
(1) 新建工程。打开Keil MDK,新建一个工程,微控制器选择TI公司的LM3S328,并允许加入系统提供的汇编启动代码文件Startup.s。
(2) 加入TI公司提供的系统库函数。可以在TI公司的主页下载最新库函数版本,也可以使用Keil MDK平台自带的LM3S系列库函数。自带的库函数存放在Keil MDK开发软件的默认安装目录C:KeilARMRV31LIBLuminary下。该目录下的Driverlib.lib文件是已经编译好的系统库函数的静态库文件,文件夹Driverlib下是系统库函数的原始实现文件与头文件,包含了所有库函数的实现过程。在初学阶段,建议直接使用库函数原始文件,便于深入学习与理解系统库函数的实现过程。可以将Driverlib文件夹整体拷贝到已经建立的工程文件夹下面,然后在项目工程中加入所需要的库函数文件。
(3) 建立用户文件。新建用户文件main.c,并将其加入到项目工程中,新建串行接口功能函数实现文件Uart0.c及头文件Uart0.h,并将其加入项目工程。
(4) 编译工程。对工程进行编译,生成二进制结果文件,将二进制文件加载到综合型虚拟实验平台的微控制器LM3S328。利用虚拟串行接口工具,配置一对虚拟串行接口COM3与COM4:配置虚拟实验平台的串行接口部件使用物理端口COM3,串口调试助手软件打开物理端口COM4。可以将虚拟实验平台的数据发送到串口调试助手等其他平台进行跨平台联合仿真,运行效果如图3所示。
图3 串行接口数据发送
4 结束语
嵌入式系统技术更新速度快,只有紧跟行业的发展才能真正体现它的价值。Cortex-M平台已逐渐成为嵌入式微控制器行业的主流,在实验教学中将嵌入式系统课程迁移到Cortex-M3平台是非常有必要的。作为一个全新的平台、一门全新讲授对象的课程,课程建设是艰难的,需要学校和教师在工作中敢于实践,实时吸收新思想,不断完善教学方法和手段,为国家和社会培养出更多工程实践能力强、富有创新意识的嵌入式系统优秀人才。
[1] 潘登,陈启军.面向卓越人才培养的嵌入式系统教学改革[J].计算机教育,2013(13):1-5.
[2] 扶慧娟,辛勇.推行“卓越工程师计划”培养实践型工程人才[J].实验技术与管理,2011,28(11):155-158.
[3] 于延,王建华,王明华.嵌入式系统专业培养模式的实践与探索[J].计算机教育,2013(6):42-45.
[4] 何立民.嵌入式系统的定义与发展历史[M].北京:北京航空航天大学出版社,2005.
[5] 马忠梅.ARM Cortex微控制器教程[M].北京:北京航空航天大学出版社,2010.
[6] 周媛,苗耀锋,孙姜燕.基于企业岗位需求的“嵌入式”课程教学改革[J].教育与职业,2013(14):128-129.
[7] 白艳茹,王旭,王小宁.卓越计划背景下创新人才培养模式的改革[J].实验技术与管理,2012,29(3):222-224.
[8] 许童羽,陈春玲,孙国凯.面向卓越工程师培养目标的嵌入式系统课程实践教学改革[J].高等农业教育,2013(4):74-76.
[9] 陈佳闻.嵌入式实验教学系统开发与应用[J].山东农业大学学报:自然科学版,2011,42(3):448-450.
[10] 郑世珏,卢强.基于嵌入式的移动学习教学实验箱设计与实现[J].实验技术与管理,2012,29(12):51-54.
[11] 周润景,张丽娜,刘印群.PROTEUS入门实用教程[M].北京:机械工业出版社,2007.
[12] 高强,倪维晨,谷海青.基于Proteus设计电子台历的单片机教学[J].实验技术与管理,2011,28(7):88-90.
[13] 赵国安,郁斌.以学生团队学习和课题开发模式改革嵌入式课程[J].现代教育技术,2009,19(6):136-138.
[14] 权宁一,权晓林.嵌入式系统专业实验教学改革的探索与实践[J].实验技术与管理,2011,28(3):146-147.
[15] 王琼,盛德策,陈雪梅.项目驱动下的大学生创新创业教育[J].实验技术与管理,2013,30(6):99-101.