时间:2024-07-28
张晶
(同济大学软件学院,上海 201804)
当今社会正处在新一轮科技进步和产业变革时期,信息技术领域发展呈现数字化、网络化和智能化的特点,进入万物互联的时代,软件和硬件之间协同工作更加紧密,嵌入式开发成为信息产业中发展最快的领域之一。资料显示,2020年中国软件业务收入81616亿元,其中嵌入式系统软件收入为7492亿元,占比9.2%,并保持高速增长[1]。
嵌入式系统要求开发人员能够统筹考虑产品功能、成本、功耗、可靠性等多方面因素。目前人才市场招聘嵌入式开发人员,要求熟悉编程语言、操作系统、驱动开发、硬件调试等多方面技术,符合要求的人才存在一些缺口,尤其是高校应届毕业生更为紧缺[2]。分析其主要原因,是目前大多数高校信息学科课程设置与市场对人才的需求存在一定的偏差。因此,培养一大批具备软硬件协同开发能力的专业技术人才是高校教学改革的当务之急。本文围绕软硬件协同开发的实验教学模式及相关配套机制展开一些思考,旨在更好地培养工程型、应用型和创新型人才。
实验是掌握科学知识和技能的重要手段,实验教学是理论教学的有效延伸。高校信息学科相关专业学习的实践性都很强,各种软件和硬件实验更是课程体系中不可缺少的环节,是培养专业技能的必修课。
国内高校计算机相关专业的本科培养方案中,软件类课程体系建设都比较完善,涵盖了编程语言、算法、操作系统、数据库、网络等,软件类课程的实践环节通常是采用课程项目设计的形式。经过多年的积累和发展,高校的实验室计算机配备普遍充足,学生上机进行软件开发实践的机会能够得到充分保障。
相对于软件类课程而言,各校硬件课程设置差别较大。学生普遍反映硬件类课程学习内容较为抽象,比如计算机各部件的运行原理、数据信号的调试过程等等,必须有合适的实践环节支持以保证学习效果。硬件类实践环节主要采用实验教学的形式,有专门的实验设备,在专门的实验教学场地进行,开设的实验课程包括数字逻辑、组成原理、接口技术、单片机等。但很多实验设备对综合性、设计性实验支持度不够,难以满足教学需要。有些学校采用Matlab、Multi-SIM等软件仿真平台进行辅助教学,一般也只是对物理层面的实验结果进行验证和比较,这只是一种教学方式的结合,而不能认为是真正意义上的软硬件协同开发[3,4]。
综上,高校信息类专业的课程体系中软硬件课程基本上还是“分而治之”,课程设置“偏软”和“偏硬”之间的分水岭仍比较明显,专业理论和工程实践之间缺乏必要的联系和相互支持,传统方式培养的学生很难同时具备软硬件开发两手都硬的本领。
在“新工科”建设、工程教育、创新创业教育的改革背景下,对学生的工程实践能力、解决复杂问题能力和服务行业能力提出新的要求。各高校针对软硬件融合教学开展广泛的探索和研究,这些举措包括:基于复杂工程问题的实验案例设计、出版软硬件协同开发的教材专著、开设创客专题慕课讲座等等,确实取得一定效果。但总体而言,所面向的学生受众群体还不够广泛,课程中的软硬件协同教学内容偏于简单,人才培养仍不能很好适应现阶段社会对软硬件开发兼才的迫切需求。我们需要探索一种可推广的软硬件协同实验教学模式,让信息学科相关专业更多的学生都能有所获益[5]。
计算机技术发展到今天,硬件和软件之间的界限日趋模糊,硬件和软件系统的协同更加密切。软硬件融合最显著的例子就是物联网系统,从智慧城市等大规模系统,到智能家居这样的小型单元,在整个系统中,软件不仅仅是“运行程序”,硬件也不只是“提供驱动”,由此带来的开发工作比以往更为复杂。
现阶段高校开展软硬件协同开发实验教学模式,应当围绕物联网相关技术进行教学设计。实施过程中需要注意以下几点:
(1)学生应当进行必要的基础课程学习,先修课程包括:程序设计(C语言为主)、操作系统(Linux为主)、计算机网络、数字逻辑、计算机组成原理、传感器原理、单片机原理等。软硬件协同教学内容可以安排在本科第三学年进行。
(2)单片机入门学习建议从51系列开始。51单片机是经典的8位单片机,指令系统丰富,还有丰富的增强或兼容型号。51单片机编程语言可以是汇编或C语言。C语言编程效率高,可读性和可移植性远超汇编语言,高校C语言教学更为普及,因此C语言是单片机编程语言学习首选。
(3)软硬件协同开发实验教学与传统单片机课程的主要区别在于,对硬件开发板不仅限于通讯调试,也不只是执行诸如点亮LED、马达运转的简单实验操作,而是需要通过软件设计,对硬件获取的数据信息进行处理后形成特定的系统响应,构建具备一定复杂度的工程系统,以适应“新工科”教育的要求。
单片机架构和型号繁多,对教学实验用硬件平台的选型,要从配套资源、设备成本、接口配置、编程语言等多方面统筹考虑。经比较,适用于软硬件协同开发实验教学的硬件包括:STM32单片机开发板、Arduino开发平台和树莓派开发平台,以及相关通讯模块和传感器模块。
(1)STM32单片机开发板
STM32是基于ARMCortex-M内核的32位系列单片机,具有高性能、低成本、低功耗的特点。片上集成Flash存储器和SRAM存储器,支持串行调试(SWD)和JTAG接口。
STM32单片机的优势:STM32单片机各种片上外设操作简单,可以处理模数信号,有利于学生学习了解底层硬件。增强型系列时钟频率达到72MHz,属同类产品中性能最高,支持单周期乘法和硬件除法;基本型时钟频率为36MHz。市面上基于STM32的开发板,可选野火、正点原子等厂家产品,配套学习资源较齐全。
(2)Arduino开源硬件平台(基于AVR)
AVR是精简指令集8位单片机,基于哈佛结构,程序存储器和数据存储器分开。AVR指令大部分为单周期指令,常用时钟频率为4 MHz~8MHz。
Arduino是基于AVRATmega8核心的开源电子原型平台,包含硬件部分(Arduino开发板)和软件部分(ArduinoIDE开发环境),具有跨平台和开源的特点,采用类C语言开发。Arduino能通过各种类型的传感器来感知环境数据,并通过执行装置来反馈、影响环境。
相对传统单片机,Arduino的优势:开发人员不再需要关注寄存器等底层硬件内容,通过编写代码就能实现对外设的控制。Arduino简单的开发方式使得开发人员把更多的精力放在创意与实现上,通过快速原型法达到项目目标,有利于节约学习成本,缩短开发周期,非常适用于软硬件协同开发。Arduino还可以与Flash、Processing、Max/MSP等软件进行交互,从而实现更多的创意应用。
(3)树莓派开发平台
树莓派是基于ARM的微型电脑主板,操作系统基于Linux,以SD/MicroSD卡为存储器,配有USB和以太网接口,拥有视频模拟信号输出和HDMI高清视频输出接口,基本具备了PC的所有功能。树莓派以Python为主要编程语言,也支持Java、C等主流编程语言。
与单片机相比,树莓派可以完成更复杂的任务管理与调度,还可以连接丰富的开源硬件库,为开发人员提供了更广阔的应用开发空间,包括连接底层硬件与上层应用、实现物联网云管理、图像识别/视觉处理,以及复杂数据处理等。
(4)通讯模块
模块间的通讯是物联网系统的重要组成部分,常见的无线通信方式有:射频识别RFID、ZigBee、蓝牙、WiFi、3G/4G等,实验教学可选用CC2630作为ZigBee连接模块,CC2640作为蓝牙连接模块,ESP8266作为WiFi连接模块。
(1)C语言与汇编语言
C语言面向过程,具有处理内存分配的能力,执行效率高,可移植性好。大多数单片机都支持C语言进行开发,因此C语言是软硬件协同开发的首选。
汇编允许用户直接访问底层硬件,可以实现精确的计时应用。汇编还提供了一些C语言不支持的指令集,例如使用BIT指令进行位操作。但汇编课程在高校开设较少。
(2)MicroPython
Python是一种解释型语言,近年来改编产生了适用于单片机的轻量级开源MicroPython。MicroPython使用标准Python库的子集,可以控制底层硬件,但只能操作256K的空间和16K的RAM。MicroPython目前主要支持ARM系列单片机,也支持部分51系列逻辑部件。
(3)类C语言
Arduino是用经过封装的C语言进行开发的,Arduino核心库文件提供各种应用程序编程接口API,这些API是对底层单片机(通常是AVR)支持库进行二次封装所形成的。封装好的API屏蔽了单片机中繁杂的寄存器配置,可通过程序直观地控制Arduino,增强了程序的可读性,也提高了开发效率。
针对信息学科专业特点,对软硬件协同开发应用的实验教学内容和方法进行设计,主要教学模式如下:
(1)可以借鉴STEM的先进教育理念来开展软硬件协同开发实验教学。STEM教育将科学(S)、技术(T)、工程(E)和数学(M)内容进行整合,是一种运用所学综合知识解决真实情境问题的教育理念,强调学科交叉和知识融合,培养学生解决问题的能力、创新的能力、跨界的综合能力。信息学科的专业实践性强,与其他学科交叉应用广泛,非常符合STEM理念开展实践教学。
(2)采取基于案例的实验教学方式。通过对2~3个基础案例的讲解和演示,引导学生学会对实验所需的硬件设备及配件进行选型、配置和调试。为适应课时需要,每个基础案例架构不宜太复杂,模块数量控制在5~10个(包括传感器和通讯模块),比如:基于温湿度的自动浇灌系统、基于红外探测的避障小车、通过无线控制的机械臂等等,让学生接触到不同模块的工作原理和配置方法。
(3)在完成基础案例学习的基础上,注重对综合设计性实验内容的支持,培养学生的创新思维。由学生自行组队、自行讨论项目方案、自行完成硬件选型和软件设计,并调试运行,教师在此环节充当协助角色。
(4)采取项目答辩方式进行验收(PPT展示+系统演示),重点考查系统实际运行效果、学生对软硬件协同开发理念的理解和综合应用能力。软硬件协同系统设计要求达到一定的复杂度,复杂度的指标包含但不限于:所用硬件模块的数量、软件代码的有效行数、模块间的逻辑关系的合理性、系统的功耗和稳定性等。
(5)软硬件协同开发的实验教学平台不仅可以作为传统实验课程的延展,也可以为学生的专业实习、毕业设计、创新项目等环节提供支持,从而丰富本科实验教学的内容和形式,有利于培养学生的综合应用能力,激发学生的创新精神。
新时期物联网建设蓬勃发展,各行业之间相互融合,学科交叉已成常态,良好的软硬件协同开发能力是对技术开发人员的一项基本要求。国内高校应当大力在信息学科本科专业中推广软硬件协同开发教学,以满足物联网相关人才市场的需求,也为国家信息化战略储备人才。软硬件协同开发的实验教学模式以学生自主学习、自主设计、自主管理为主线,开发学生潜能,培养主动发现问题和解决问题的能力,旨在更好地培养工程型、应用型和创新型人才;同时,也引导学生关注国家和社会的重大战略问题,增强学生的责任感和整体意识。
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!