嵌入式软件设计课程研究与探索

2014-05-30 15:40王小妮
中国电力教育 2014年8期
关键词:课程研究嵌入式软件体系结构

摘要:对于处于高速发展时期的嵌入式技术及物联网技术时代,嵌入式软件方向课程的教学也在各大院校中开展起来。介绍了嵌入式软件设计概念、体系结构及发展方向。设置了嵌入式软件设计课程内容,包括嵌入式驱动程序设计、ARM体系结构与编程及嵌入式Linux设计三部分内容,对培养适应社会需求的嵌入式技术人才有着重要意义。

关键词:嵌入式软件;体系结构;课程研究

作者简介:王小妮(1977-),女,山东威海人,北京信息科技大学理学院,讲师。(北京 100192)

基金项目:本文系北京信息科技大学“嵌入式系统及应用”课程建设项目的研究成果。

中图分类号:G642.3 文献标识码:A 文章编号:1007-0079(2014)08-0104-02

中国拥有世界最大的嵌入式技术市场,在手持仪器设备、信息家电、城市建设、工业控制、军事应用等领域,嵌入式技术无处不在。[1]数字化、智能化、网络化的趋势将使传统设备逐渐转变为嵌入式设备,因此嵌入式软件对改造和提升传统产业有重大作用。我国嵌入式软件应用规模为世界第三,在中国软件前10家企业中,嵌入式软件产品生产企业占了6家。企业对嵌入式人才需求,如软硬件設计人才、应用开发人才、综合性人才的需求也逐年增加,企业同时增加了大量嵌入式软件方面培训项目,员工工资待遇逐渐上升。华为、中兴的成功可以提供一种模式,就是发展嵌入式软件,将传统的纯硬件制造业提升为软硬件一体化的嵌入式设备制造业,这样就可以使IT制造业有较高的增加值,更强的竞争力。据有关数据表明,2006年与嵌入式软件对应的设备市场全球出货量达到14亿台,2009年达到22亿台。与之相对应的是,2006年中国嵌入式软件的市场价值是220亿元,到2010年达到550亿元。移动嵌入式产品将是未来消费电子类产品增长最快的领域之一。嵌入式技术发展趋势要求从8位单片机应用向16位、32位的嵌入式微处理器转变,并实时操作系统管理软硬件,而嵌入式操作系统则是驱动硬件系统的灵魂。因此,通过嵌入式软件增加产品的附加值无疑是最好的选择,嵌入式软件对改造和提升传统产业有着重大作用。中国工程院院士倪光南强调,我国IT行业应大力发展嵌入式软件,提升我国IT产业的核心竞争力。

对于处于高速发展时期的嵌入式技术及物联网技术时代,嵌入式软件方向课程的教学也在各大院校中开展起来。要培养适应社会需求的嵌入式技术人才,在设置嵌入式软件方向课程时,要结合市场需求,制订相应的嵌入式软件设计这门课程内容。

一、嵌入式软件概述

嵌入式软件实现嵌入式计算机系统功能的软件。嵌入式软件总体上可以划分为:嵌入式系统软件和嵌入式应用软件。嵌入式系统软件涉及操作系统的移植、裁减、驱动程序开发,和入式应用软件涉及视频图像、语音、网络等。从运行平台来分,嵌入式软件可以分为运行在开发平台上的软件和运行在嵌入式系统上的软件。运行在开发平台上的软件包括设计、开发、测试工具等。运行在嵌入式系统上的软件包括嵌入式操作系统、应用程序、驱动程序及部分开发工具。[2]从使用工具角度来分,嵌入式软件可以分为系统软件、支撑软件和应用软件,如图1所示。

其中:系统软件:控制、管理计算机系统的资源;支撑软件:辅助软件开发的工具;应用软件:面向应用领域。嵌入式软件系统的体系结构如图2所示:

驱动程序层:是直接与硬件打交道的一层,它对操作系统和应用提供所需的驱动支持。操作系统层:是提高计算机利用率的程序代码,能协调管理计算机软件和硬件资源。汇编语言层:操作系统引导程序对硬件设备进行访问的代码要用汇编语言完成。汇编语言可用于系统的低层软件、加密解密软件、分析和防治计算机病毒等。高级语言层:用C/C++或JAVA语言进行编程实现应用功能,也可以直接使用中间件软件程实现应用功能。应用层:由多个任务组成,每个应用任务完成特定的工作,如I/O任务、计算的任务、通信任务等,由操作系统调度各个任务的运行。[3]

二、嵌入式软件设计课程研究

嵌入式软件设计这门课程可以设计为80课时,其中20课时讲解嵌入式驱动程序设计,20课时讲解ARM体系结构与编程,40课时讲解嵌入式Linux设计。

1.嵌入式驱动程序设计

设备驱动程序是介于硬件和OS内核之间的软件接口,是一种低级的、专用于某一硬件的软件组件。

(1)串行口驱动设计:要熟悉串口通讯原理(包括设置字符的格式、波特率、校验位),查阅ARM串口寄存器文档(包括控制、状态和数据寄存器),查阅电平转换芯片资料(max3232),设计串口硬件电路图,完成串口驱动程序的设计(包括串口寄存器初始化,发送接收函数等)。

(2)键盘驱动设计:学习键盘驱动原理(确定是否有键按下;确定是哪一个键或哪几个键被按下;确定被按键的输入代码;消除按键抖动干扰等),掌握通过CPU的I/O扩展键盘的方法,设计键盘接口电路图,实现4×4的键盘,编程实现键盘的驱动。

(3)A/D接口驱动程序设计:学习ARM 本身自带的A/D 控制器及相应寄存器;掌握A/D转换的基本原理(包括采样、保持、量化和编码);熟悉A/D转换器的类型(包括逐位比较型、积分型、计数型、并行比较型、电压-频率型等类型);编程实现ARM 系统的A/D 功能。

(4)LCD显示屏驱动设计:了解LCD 基本概念与原理;学习LCD驱动器相关的寄存器;理解LCD 的驱动控制;熟悉用ARM 内置的LCD 控制器驱动LCD;完成LCD驱动程序的设计(包括LCD寄存器初始化、字符显示刷新、格式化字符输出、图形刷新显示、清屏等函数)。

(5)触摸屏驱动设计:了解触摸屏基本概念与工作原理(包括表面声波屏、电容屏、红外屏和电阻屏);学习触摸屏相关的寄存器;分析ADS7843工作时序;理解触摸屏与LCD 的密切配合;编程实现对触摸屏的控制。

2.ARM体系结构与汇编语言编程

70%以上的系统软件是用汇编语言编写的。某些快速处理、位处理、访问硬件设备等高效程序是用汇编语言编写的。某些高级绘图程序、视频游戏程序是用汇编语言编写的。在嵌入式领域中,以ARM为架构设计芯片的占据整个芯片市场的80%以上。因此学习ARM体系结構与汇编语言编程尤其重要。

了解ARM公司情况以及基于ARM技术的嵌入式系统的应用情况,掌握ARM处理器的种类及其主要特点。掌握ARM编程模式的基本知识,包括ARM处理器模式、寄存器及其使用方式,掌握ARM体系中存储访问的基本知识。了解ARM处理器的体系结构、指令系统及开发工具的使用,掌握开发基于ARM的应用系统的各方面的知识。其中包括ARM体系介绍、ARM汇编语言程序设计、ARM C/C++语言程序设计、ARM集成开发环境的介绍。掌握ARM指令集和Thumb指令集的应用领域,掌握各指令的编码格式、语法格式、执行的操作以及应用方法。掌握ARM汇编语言程序设计的基本方法以及ARM汇编器的使用方法。掌握汇编语言格式和程序格式。掌握ARM体系存储系统的基本概念,掌握存储管理单元MMU、写缓冲以及Cache,了解有关存储系统的程序设计。理解ARM汇编程序以及C/C++程序之间互相调用的技术,了解C编译器中内嵌的汇编器的使用方法。了解嵌入式应用程序设计的基本知识,通过示例具体掌握嵌入式应用程序的设计方法。掌握ARM开发工具编译、连接程序的方法。并在此基础之上介绍一些典型的基于ARM体系的嵌入式应用系统设计时的基本技术。

3.嵌入式Linux设计

(1)熟悉Linux引导程序bootloader:初始化硬件设备,建立内存空间的映射图。将操作系统内核映像从Flash内拷贝到RAM中,然后跳转到内核的入口点去运行,即启动操作系统。

(2)分析内核源码:包括初始化Cache、Mmu等设置;内核解压函数;非压缩内核启动汇编段;Linux内核移植NANDFLASH、

LCD、网卡、YAFFS FLASH的方法。

(3)文件系统建立:掌握 Flash的特性,建立在Flash上的文件系统(包括EXT2、Jffs2、yaffs、CRAMFS、proc)。

(4)设计图形界面:掌握QT开发工具及QT编程核心技术、QT程序设计方法。

三、嵌入式软件发展方向

嵌入式软件有广阔的创新空间:面向各种应用,硬件、软件平台多样化,不易被垄断;新需求不断发展,新技术层出不穷;投入不大,容易起步;中国巨大的制造业是最好的市场。

嵌入式Linux未来的前景看好,但是人才的缺乏已经成为当前制约嵌入式Linux发展的瓶颈。一方面,因为嵌入式人才领域门槛较高,从事嵌入式软件开发的工作人员不仅要熟练掌握c/c++、汇编语言等基础,而且对Linux底层驱动内核,甚至是硬件都要了然于心。另一方面,因为这一领域较新,目前发展太快,很多软硬件技术出现时间不长或正在如雨后春笋般地涌现(如ARM11处理器、嵌入式Linux操作系统、MPEG技术、无线通信协议、移动USB3.0高速传输等),目前国内乃至国际上能够掌握这些新技术的人才相当匮乏。

近几年包括未来几年,市场对嵌入式Linux人才的需求旺盛,而目前熟练的Linux应用人才只有几千名,这意味着各大跨国公司及国内消费类电子巨头企业都面临着人才严重短缺的挑战。嵌入式Linux的从业者薪酬比其他IT业同行大约高出50%,初入门的开发人员平均月薪一般都能达到8000元,有三年以上经验的人员年薪都在15万元以上,有10年工作经验的高级嵌入式软件工程师年薪在40万元左右。

四、总结

自主创新,发展嵌入式系统是提升中国信息产业竞争力的重要途径。中国必须掌握嵌入式系统的核心技术,包括芯片和软件,从中国制造发展到中国创造,成为一个信息强国。

参考文献:

[1]张玢,孟开元,田泽.嵌入式系统定义探讨[J].单片机与嵌入式系统应用,2011,(1).

[2]王小妮.基于嵌入式系列课程的教学改革与探索[J].教育理论与教学研究,2013,(5).

[3]何立民.嵌入式系统支柱学科的交叉与融合[J].单片机与嵌入式系统应用,2008,(5).

(责任编辑:王意琴)

猜你喜欢
课程研究嵌入式软件体系结构
实时嵌入式软件的测试技术
全景相机遥控器嵌入式软件V1.0 相关操作分析
中职学校光电专业现代班组长培养的课程研究
基于任务驱动的保险实训课程研究
基于粒计算的武器装备体系结构超网络模型
作战体系结构稳定性突变分析
应用型信管专业课程创新研究
基于DODAF的装备体系结构设计
基于云计算的航天器控制系统自组织体系结构
基于Eclipse的航天嵌入式软件集成开发环境设计与实现