面向应用的智能专业嵌入式系统教学
2016-12-19付东翔陈玮蒋念平傅迎华胡春燕
付东翔+陈玮+蒋念平+傅迎华+胡春燕
摘要:为了使智能本科专业的学生更好地掌握嵌入式系统硬件功能和结构、操作系统和程序设计,针对本专业的应用现状,从教学内容、理论与实验内容的安排、后续课程的衔接以及本科创新与创业项目申请、参加全国性大学生实践大赛等几个方面进行分析和讨论,以期通过本课程和后续衔接课程的设计学习,学生能够顺利申请和完成本科创新与创业项目,为参加全国性大学生实践大赛奠定坚实的基础。
关键词:智能科学与技术;嵌入式系统;课程设计
0引言
嵌入式系统是计算机、自动化、电气等本科专业的核心专业课程之一,其内容是在电工技术、模拟电子、数字电子、单片机技术和c语言程序设计等课程基础上的更高层次的专业知识。当前信息技术飞速发展,智能化的系统和设备不断普及,从工业机器人到智能穿戴设备,所有这些技术的背后都有着嵌入式系统技术的支撑。
如何提高嵌入式系统的教学效果,使得学生能够不但掌握基本原理,而且具备实践动手能力;课程教学内容如何与当前嵌入式系统技术的发展与应用水平保持一致等,是我们需要探讨的问题。
1教学目标定位
智能科学与技术专业作为计算机类下的专业之一,专业培养目标定位于:注重智能科学与技术在智能检测、智能识别、智能控制、智能管理、智能化仪表等方面的应用技能,强化学生实验、验证、自主设计的能力Ⅲ。因此,教学内容和实验安排应该围绕掌握一个智能系统的硬件结构、功能、系统软件组成和原理以及应用软件设计展开。
2理论教学内容
理论教学安排见表1。
2.1硬件系统。
以STM32的32位的ARM Cortex-M3内核控制器为例讲述嵌入式芯片的更新和发展。在2004年以后,ARM体系结构发展到了ARMv7t,推出了全新的CortexTM系列,该系列有3个类型:Cortex-A、Cortex-R、Cortex-M。A系列为应用处理器,面向丰富的操作系统平台的设备和用户应用,主要为智能手机、移动计算平台、数字电视、机顶盒和企业网络和服务器等;R系列为嵌入式实时处理器,具有严格实时响应,目标应用包括医疗、工业和汽车等行业的可靠系统的嵌入式应用;M系列为低成本低功耗的微控制器,面向智能测量、人机接口、大型家用电器等的应用。因此CortexTM系列内核芯片是目前的实际应用主流。
基于当前ARM的发展和应用水平,选择ARM Cortex-M3内核的控制器为对象作为教学内容,符合当前最新的嵌入式硬件发展和应用水平,ARM Cortex-M处理器是全球微控制器标准,NXP(恩智浦)、STMIcroelectronics(意法半导体)、Texas Instruments(德州仪器)等著名半导体公司都推出相应的产品,产品线丰富,目前市场上在售产品很多,价格便宜,实验板和开发板等市场上很普遍。
通过Cortex-M3内核的控制器学习,学生更加清晰地认识了ARM体系结构。掌握了Cortex-M3就完全熟悉了Cortex-M系列,有了Cortex-M的基础,学生以后转向Cortex-R和Cortex-A系列处理器的应用和开发就变得容易了。
在介绍ARM体系结构之后,着重介绍CortexTM系列,以ARM Cortex-M3内核控制器为重点,以STM32的STM32F103为对象,对Cortex-M3内核控制器的硬件片内资源和功能予以介绍,STM32F103的片内资源包括GPIO、A/D模数转换、串口、USB、中断、定时器等,这里以GPIO、A/D模数转换、中断和定时器的控制为主要内容展开,STM32控制器的所有片内外设控制和操作都以库函数调用方法实现。具体如下:
(1)GPIO和通用I/O口。常用的操作函数有GPIO_Init()、GPIO ReadlnputDataBit()、GPIO ReadInputData()、GPIO-SetBits()等。
(2)ADC模拟量输入和读取。常用的函数有:ADC_Init()、ADC_RegularChannelConfig()、ADC_GetConversionValue()等。
(3)通用定时器TIM。由一组库函数来设置和控制,包括TIM TimeBaseInit0、TIM_ETRClockMode 1 Config()、TIM SelectlnputTrigger()、TIM SelectInputTrigger()。
(4)外部中断/事件控制器EXTI。由一组库函数设置和控制,包括EXTI Initf)、EXTIGenerateSWInterrupt()、EXTI_ClearFlag()、EXTI_GetFlagStatus()。
由于学时有限,所有硬件的库函数不可能在课堂上一一讲解,以上述内容为重点,详细阐述和介绍这些常用硬件资源配置和控制功能的库函数的定义和使用,同时强调所有的硬件配置和功能调用都是相同的形式,通过查询库函数手册,能够掌握所有硬件资源的配置和功能调用,触类旁通。
2.2软件系统
2.2.1嵌入式操作系统
μC/OS-Ⅱ操作系统的源代码开放,内核小、实时性好,能够被移植到绝大多数的8位、16位、32位和64位微处理器/控制器上,基于μC/OS-Ⅱ的产品包括从自动控制到手持设备等各个应用领域。教学内容主要包括:①μC/OS-Ⅱ嵌入式实时系统内核结构:多任务、任务调度、中断与时间管理、μC/OS-Ⅱ的初始化和用户创建;②μC/OS-Ⅱ的任务同步和通信:任务互斥与同步、任务间的通信、μC/OS-Ⅱ的任务通信机制。
1)μC/OS-Ⅱ系统任务与调度的主要内容。
多任务与任务创建:μC/OS-Ⅱ采用多任务机制,最多可以运行64个任务,每个任务对应一个唯一的优先级。与任务有关的系统服务函数有:创建任务OSTaskCreate()、OSTaskCreateExt();删除一个任务OSTaskDel();改变优先级OSTaskChangePrio();挂起一个任务OSTaskSuspend();恢复一个任务OSTaskResume()等。
对于gC/OS-Ⅱ系统中的任务,共存在5种状态:睡眠状态(DORMANT)、就绪状态(READY)、运行状态(RUNNING)、等待状态(WAITING)和中断服务状态(ISR)。不同状态之间的转换关系如图1所示。
任务控制块OS_TCB是描述一个任务的核心数据结构,存放它的各种管理信息,包括任务堆栈指针,任务的状态、优先级,任务链表指针等。
各任务之间具有相互关联性,需要通信机制来实现消息的传递。任务间的通信使用信号量、邮箱(消息邮箱)和消息队列等方式来实现,这些通信方式也称为事件。
μC/OS-Ⅱ中与对信号量操作有关的函数共有5个:①OSSemCreate(),创建信号量;②OSSemPost(),发送信号量;③OSSemPend(),等待信号量;④OSSemAccept(),无等待的请求信号量;⑤ossemQuery(),查询一个信号量当前状态。
2.2.2嵌入式应用程序。
主要讲述IAE软件的C程序设计。IAR软件是目前主流的嵌入式系统开发工具之一,支持几乎所有的嵌入式处理界面功能和操作与其他主流软件工具很
3实验教学内容
嵌入式系统课程实验与单片机实验的不同在于:①硬件功能的配置和控制通过寄存器编程实现,硬件配置和控制库函数数量众多;②以μC/OS-Ⅱ系统下的应用程序设计为主,强调操作系统多任务的创建、运行和任务间的通信等。因此,本课程实验主要基于上述两点展开,分为3部分内容:
1)基本实验,包括LED、LCD、ADC采样等控制器基本功能。
重点实践通过库函数调用,在IAR环境下的对GPIO、ADC、定时器、中断等功能寄存器的设置,实现这些硬件控制,让学生熟悉和掌握常用的库函数的功能和调用,同时能够通过查询手册掌握每个库函数的定义和使用方法。
2)uC/OS-Ⅱ系统下的多任务系统实验。
实验板上3个LED灯:LED1、LED2、LED3,分别由3个GPIO口控制,通过程序中向该端口写“1”或“O”让其熄灭和点亮或者闪烁。要求分别创建3个任务,任务1控制LED1,任务2控制LED2,任务3控制LED3。虽然是一个简单的GPIO端口实验,但是可以实现规模最小的一个多任务嵌入式系统。学生通过该实验可以掌握μC/OS-Ⅱ系统的嵌入式系统应用程序的开发和设计。实验程序流程和结构图如图2所示。
3)uC/OS-Ⅱ系统下的任务间通信实验。
在主程序main()中,首先通过系统函数OSTaskCreate0创建一个初始化任务TaskStart(),然后在Task_Start()中,初始化液晶屏LCD,再调用系统函数OSTaskCreate()创建2个应用程序任务Task LCD1()和Task LCD20,每个任务函数的内容为创建各自的一个邮箱,并等待邮箱消息,如有消息,就从邮箱中取出,并在LCD上以字符信息显示。实验展示了一个μC/OS-Ⅱ系统下2个任务的通信。实验程序流程和结构如图3所示。
学生通过程序设计和下载运行,根据LCD液晶屏的显示信息,验证任务间的通信。
实验内容安排见表2。
4课程设计
在嵌入式系统内容的学习中,学生已经能够熟练掌握STM32控制器的GPIO、ADC、定时器和中断控制等库函数调用和IAR编程环境,同时能够在μC/OS-Ⅱ系统上进行多任务应用程序的设计。智能专业课程设计主要内容是设计一个以μC/OS-Ⅱ为平台的智能仪表测量系统。开发测量仪表人机界面,包括有主界面和菜单选项,其中测量界面能显示模拟量采样输入,设定界面能够设定采样周期和信号滤波参数等。
5结语
学生通过课程学习,理解小型智能系统的硬件组成和功能原理,能够充分理解、熟悉和掌握嵌入式软件的系统组成和应用功能的开发与设计。智能专业学生近3年参加多项大学生创新项目,如Android云编译器的设计和实现(SH2015023)、基于Arduino的多功能智能车研发(SH2015041)、智慧家居远程监测控制系统(SH2015047)等,取得了较好的成绩。
课程内容安排与后续课程设计、创新实践和大学生教学实践比赛环环相扣,从基础到应用,培养学生构建一个小型智能系统,很好地提升了学生的专业能力。
(编辑:彭远红)