嵌入式系统就业前景

2022-12-27 版权声明 我要投稿

第1篇:嵌入式系统就业前景

嵌入式系统应用综述

【摘要】在通过一学期的深入对嵌入式系统原理与开发学习和实践,结合身边现有的各式各样的设备的观察和对其系统设计的研究,发现传统的产业结构升级已经处于一个加速过程,在物联网技术下,对设备的应用需求越来越高,软硬件各方面在嵌入式系统中需要不断地开发,。入式系统包括嵌入式软件系统和嵌入式硬件系统两大部分,而软件系统之核心是嵌入式操作系统,也成为各个领域技术创新的重要部分,因此这门技术也被重视起来。本文主要围绕嵌入式系统在各行业的应用情况,综述了嵌入式系统应用开发的发展历史、趋势、国家政策、应用前景,具体应用等。

【关键词】嵌入式系统;应用领域;发展前景;嵌入式技术

引言

今年来嵌入式系统在各行各业都有着重要的创新,例如使用了大量相关技术的天通一号卫星,标志着商用卫星系统时代的开启;例如在农业上,研制出了以嵌入式系统为核心的农作物病虫监测与预防研究。2010 年刘凯等研制的木材无损检测系统,2010 年徐正刚研制的白蚁无线电子检测系统,012 年程城远等研究的农业虫害自动监测的数据采集与远程控制系统,这些早期出现的实际应用叶大大的启发了嵌入式系统的开发与应用。当下物流行业兴盛,嵌入式系统也不甘落后,相继出现了针对嵌入式系统的智能在线分拣系统,大大的减少了劳动量,也是嵌入式系统的一种应用。由此可见,嵌入式有着更加广阔的未来。

1发展历史:

嵌入式系统在早期是为了控制和监管机器的运行,大部分运用在工业计算机上,实现工业自动化,生产线自动化,全面化,搭配嵌入式系统来实现自动化的效果。随着时代的进步发展,在日常生活中也慢慢的渗透了含有嵌入式系统的元素。各种不同的人群行业需要所对应的操作系统功能大不一样,因此派生了众多的嵌入式系统。使用场合的不同独具特色的嵌入式系统就会产生嵌入式通用型操作系统与嵌入式实时操作系统最大的差别是对于时序有不同的要求。嵌入式通用型操作系统在系统的响应时间上要求没那么严格。当前嵌入式通用型操作系统大多用在信息家电领域和消费性电子产品等领域。目前市场上的嵌入式通用型操作系统产品很多,Palm05及Embedded Linux,除了這两个大类还有分为,使用在小型设备中的单个微处理器,不带计时功能的微处理器,待机时的组件,也有在制作或者过程中使用的计算机系统。

2嵌入式系统具体应用:

嵌入式操作系统应用领域广泛,在工业控制上比较早,慢慢的发展到智能家电,交通控制,网络中间件的搭建,随着智能化的推进下家居智能化也充斥着家居智能化,新型领域智能机器人应用着嵌入式系统,在卫星通信上,低成本的Linux操作系统,具有文件系统和独立服务器,实时性的vxWorks操作系统都可完成嵌入式系统的开发,并是卫星通信系统中重要的组成模块。人工分拣已经不能满足市场需求,智能在线分选系统的研制具有重要的工程意义和广阔的应用前景在各大电商仓库中,智能分拣日益成熟,高精度高速度的分拣机器人,加上设计可视化的,可管理,可移动的人机交互界面,以及实时在线分拣。机器的大量添加优化速度。在其基础上增加在线实时管理系统是将现今流行的“互联网 +”的管理模式运用到企业生产线上。

时代在进步,我们的日常起居也有了日新月异的变化,当然嵌入式系统在这方面也没有缺席。在交互式的智能家电系统设计中,可以通过传感器以及远程控制系统的利用,提高温度、声音以及动作的控制效率。例如,在环境控制中,通过远程空调的自动化设计,人们可以在远程操作中控制空调的温度,提高空调操作及控制的效率,满足人们对智能设备的使用需求。

3应用前景

3.1人机交互以及微型化

从以前的大脑袋电脑到现在的笔记本电脑,微型化已经是一个必然的趋势,嵌入式操作系统也不例外,芯片技术和硬件技术的发展促使了嵌入式系统的微型化,这也使得嵌入式系统入了更多的领域,充分的利用了嵌入式系统的低耗性和简单性,以及自动化的特点。时代的进步也对嵌入式系统提出了更高的要求,所以微型化是必然的。

身边的智能机器人,和人对弈的阿尔法,智能语音音响,银行的引导机器人这些普通的应用得到了相当大的关注,人机交互时为了获得更好的体验,让机器人可以给人们提供更高质量的服务,因此就对嵌入式系统在应用期间的人机交互提出了更高要求。而其中的难点不是一星半点,首先降低能耗是对嵌入式系统提出的一大难题。

3.2网络精简

微处理器的复杂化和嵌入式系统的的网络连接化,促使嵌入式系统简单易操作,安全性可靠,自身特性也要得到扩展,例如自适应,高可信性,组件结构化,以及开发环境自动化,人性化。要易于开发,才能面向广大人群。互联网的加入使嵌入式操作系统在实际应用期间的到了更多的选择,新词嵌入式系统可以提供网络通信接口是未来嵌入式系统的必然道路,同时这样极大的促进了物联网的发展。此外,因为未来人们对嵌入式系统的需求量不断增多,嵌入式系统被合理地应用到了不同领域中,因此,芯片的精简性及专业性也是未来也能够在不同领域应用,而且可以满足机器应用的具体需求。

4国家形式

国产的操作系统的影响力颇大,特别是RT-Thread产品对物联网和嵌入式开发影响巨大,是非常棒的一个软件,在诸多领域取得了明显成效,华为的LiteOS也是一个在物联网领域颇具影响力的嵌入式操作系统,可穿戴的HUAWEI WatchGT,已经日渐成熟,但是更多的东西需要大力的投入和开发研究,是我们需要加大力度的培养和专注。嵌入式操作系统内核百花齐放,各个不同的架构技术优势不同,对实际的应用更是提出了更多的要求,比如可扩展的内核技术、功能安全和信息安全、边缘计算架构的支持和应用 App 的便捷布置和管理。

5结语

可以预见,嵌入式系统将向微型化,智能化发展,包含安全可靠性,低功耗性,复杂可配置性,以此来适应物联网时代和人工智能时代,计算架构和应用软件发展的新需求。硬件的推新将迎来一个大时,或将导致时代的进步。科技的发展使嵌入式系统得到了的显著进步,这也使嵌入式系统应用变得更加广泛,这对于我国科技水平的发展也起到了一定的促进作用。嵌入式系统的应用使人们的工作和生活都变得更加便利。可见,嵌入式系统具有不错的发展前景。嵌人式系统的应用领域众多,而且需求各不相同,嵌人式应用软件的开发将会受到极大的重视,而嵌人式操作系统作为软件系统的核心在各个领域都将成为富有光明前景的新技术

参考文献:

[1]马晓娟.嵌入式操作系统的应用及其发展前景[J].电子制作,2014(10):101-102.

[2]张恒.嵌入式软件目标平台硬件与行为可视化建模技术[J].计算机产品与流通,2020(05):22.

[3]张静.面向计算机专业的嵌入式系统课程体系设计探讨[J].计算机时代,2020(05):103-104+108.

[4]许光明,吴昭,宋秀芬,沈军民.嵌入式技术在虫害测报系统中的应用研究[J].工业控制计算机,2015,28(05):33-34.

[5]孙建恒.嵌入式系统应用研究及实例[J].微计算机信息,2004(06):65-66.

(作者单位:河南工学院)

作者:华雯耀

第2篇:操作系统与嵌入式系统实验教学的融合探索

(南开大学 计算机与控制工程学院,天津 300350)

摘 要:分析目前操作系统和嵌入式系统课程的实验教学过程中的问题与挑战,阐述两个课程各自特点以及知识的综合运用,提出以开源平台为基础同时结合配套设施资源的新型教学模式,说明具体教学改革方法。

关键词:操作系统;嵌入式系统;实验教学;开源平台;Tizen

0 引 言

操作系统课程是计算机学科的核心专业课之一[1]。操作系统中知识的学习兼具理论理解与实践运用,也是进一步学习其他课程的基础,在计算机专业教学中占有举足轻重的地位[2]。由于操作系统的概念抽象,涉及的代码量巨大且难以理解;在教学时间上处于三年级上学期,学生的编程开发经验不足,增加了教学的难度。

嵌入式系统是一门集软硬件技术于一体,涉及集成电路、计算机技术、自动控制等多种知识的综合课程。自21世纪初进入我国高校的教学体系以来,随着产业界的不断发展课程内容日渐丰富,成为计算机相关专业的一门重要课程。由于嵌入式系统的设计强调以“应用”为中心和导向,注重与产业结合以及在工程实践中的应用,这使得教学过程中存在理论性不足的问题,在实践教学中更容易变成按部就班的验证性实验,或是某商业产品的展示与应用。

将两门课程的内容衔接,特别是在实验教学中进行内容的调整融合,能够提高教学过程的系统性和连贯性。嵌入式系统中涉及硬件原理、嵌入式操作系统、嵌入式应用软件等多个组成部分,教学环节中要完成每部分知识的原理分析和系统验证,课时相对紧张。将操作系统实验课程的内容与之融合关联,既为操作系统中的原理找到了实践验证环境,又为嵌入式系统的实验课程补充了原理分析环节。

为了达到良好的教学效果,让学生对各类概念的理解达到融会贯通,在教学过程中往往建立一套系统的课程体系,操作系统作为先导必修课,后续配套 Unix/Linux 操作系统、嵌入式系统原理等专业选修课,并且每门课程都配有相应的实验实践教学。

1 操作系统与嵌入式系统教学中的新挑战

嵌入式系统、移动云计算、物联网等新兴产业的发展和新技术的应用,拓展了操作系统的范围。学生日常生活中使用的智能设备增多,不再局限于普通 PC 机的使用。依据 PC机的使用方式建立的渐进式学习方法需要随之相应扩充。操作系统的形式发生变化的同时,其内涵也随之发生一些变化。现代操作系统中,对进程、调度算法等概念的探讨相对弱化,而增强了对于外设、交互、实时性、能耗管理等方面的设计要求,这些新特性需要给学生形成清晰的认识和直观的感受。计算机操作系统作为计算机相关专业的基础课程,应沿着计算机产业走向,紧密结合最新技术,充实其教学内容[3]。

商业化产品宣传中使用的概念与嵌入式系统教学存在偏差。智能手机、平板电脑等产品更新换代迅速。在商业化宣传中,处理器核心、硬件平台、操作系统、应用界面等概念往往被混淆使用。这些商业产品以及配套软件开发的盛行,也使一部分学生对于嵌入式系统的理解局限于智能手机,而对于嵌入式软件的理解也局限于移动应用软件。嵌入式系统需要设计与产业结合的教学案例,更需要透过现象看本质,从技术和机理层面进行分析,并且与所学的基础课程和理论知识相对应,因而能够加深理解。

人才需求转向对已有系统框架的理解、定制和二次开发。随着产业环境的完善,人才需求不断扩大。对操作系统和嵌入式系统的教学要求不再满足于对原理的认知和简单应用,但也不需要从零开始独立构建一个完整的系统,而是需要在现有项目的基础上进行产品化定制和二次开发,特别是在开源软件项目的基础上进行改进。这需要学生在实际动手能力方面能够了解开源软件的管理方法,掌握资源获取和使用的方法,在实践中学会主流开源系统的原理、开发和部署的基本方法等。

传统的操作系统实践教学偏重局部的理论分析和简单模拟,而嵌入式系统实践教学则侧重应用导向,缺少原理分析。传统的操作系统实验教学为了强化原理性验证,大多通过局部模拟的方式,在虚拟环境中进行操作,缺少与实际使用的结合,使得很多算法和流程虽然经过实践仍然只能停留在概念狀态,缺少与实际使用系统的直接联系,导致学生兴趣降低。嵌入式系统的实验教学中,往往又将操作系统作为黑盒处理,进行简单定制或是直接使用。学生可以完成部署和验证,但仍然“不知其所以然”,没有收到应有的教学效果。

2 教学平台选型

在综合考虑学时、课程设置和教具使用等多种因素的基础上,操作系统和嵌入式系统原有实践课程体系保留并适度压缩,并通过扩展实验进行衔接。其中,操作系统的基础知识环节借鉴美国麻省理工大学使用的原型操作系统 jos 的课程实验,并对其进行相应的简化,让学生完成对操作系统基本原理的理解与验证。嵌入式系统的实验使用基于uCLinux 操作系统的嵌入式开发板进行车载控制系统的模拟与开发,这里引入的扩展实验使用目前在部分智能移动产品中使用的Tizen操作系统平台,并在对该平台的移植部署过程中加入对操作系统各环节和运行状态的分析,通过直观感受提升学生的兴趣。

实验中使用Tizen开源系统为目标软件平台。Tizen是由 LiMo Foundation 和 Linux Foundation 两个开源 Linux 联盟联合发布,由三星电子、英特尔等产业巨头共同开发的一套完全开源的软件环境[4],能够提供对手机、平板电脑、车载电脑、智能家电等多种设备的支持。软件体系中包含引层、操作系统、文件系统、应用程序、开发工具等多种资源,可以获得平台的全部源代码,并配套有相应的开发文档的开发者社区,也有众多大学参与其中,提供了丰富的教学资源。Tizen 中选用的操作系统内核是 Linux,在操作系统的课程讲授中已进行了针对性的原理分析和代码解读;Tizen 的应用程序框架基本使用 C/C++编程语言实现,与学生所掌握的前继编程基础更加契合,这些都降低了学习的难度。

以Odroid-U3为实践教学的目标硬件平台。Odroid-U3是由Hardkernel公司设计的基于Samsung Exynos4412处理器的开发板,具有4个Cortex-A9架构的处理器核心,1.7GHz主 频,2G内存,并通过线缆外接的方式集成了显示屏、触摸屏、WiFi、蓝牙等外设,能够模拟主流的平板电脑、智能电视等设备。通过开发板的拆装使用,使学生了解日常使用的智能设备的模块组成和工作原理,并通过实验课程完成对该设备的启动、定制和后续开发。因为开发板的形式和功能与学生日常使用的智能设备类似,可以提高学生的学习兴趣并形成系统的认知,改善了单纯使用模拟器的抽象教学方法。作为实践操作的目标平台,目前教学小组已成功完成Tizen到 Odroid-U3 开发板移植工作,并准备了完整的移植过程分析资料和教学案例。

3 实践教学设计

实验在整个操作系统教学过程中举足轻重,也是加深学生概念、原理理解,反映学生学习效果的重要环节[2]。实验教学内容的设计,作为课堂教学和作业的补充,主要用于完成理论知识和抽象概念与开发应用实战的对接。在实验设计中,主要体现系统性较强的启动、进程管理、资源管理、文件系统等知识环节,并通过完成Tizen在目标开发板上的移植进行实践。通过对其中关键部分代码的阅读、分析、补全、重构等任务,加深知识理解和综合运用, 同时理解并掌握开源软件的开发管理模式。经过对实验内容的反复调整,与学生沟通反馈, 现在实验内容已基本稳定。

3.1 环境搭建和版本管理工具的使用

熟悉开发环境并完成实验环境中的工具安装部署,掌握其使用方法。本部分课程主要学习对开源软件管理和发布方法的学习,对版本管理的认识和对版本管理工具的使用。培养学生懂得如何获取开源软件成为参考资源,掌握阅读开源代码的方法,学会代码版本管理的方法和原则,这是软件工程开发中至关重要的规范化思想。Tizen 开源项目有多个子项目,多个版本分支共同管理和流转,并按照特定的结点发布与错误修正,是非常有代表性的软件工程项目管理的案例,可以加深学生的实践体验。

3.2 引导过程分析

截取引导程序片段,通过汇编语言编程实现对硬件的简易控制;通过对简易引导程序的分析和修改,实现对Tizen内核的引导;分析bootloader代码,学习操作系统的引导过程,并加深对内存空间管理、处理器模式转换、MMU等关键技术的理解。本部分实验内容需要先进行简单的ARM硬件知识和ARM汇编指令的学习,同时简单扩展关于可信计算与Trustzone硬件可信模块技术,开阔学生视野。

3.3 Tizen系统编译、分区管理与内容部署

介绍Tizen系统的整体编译管理框架,了解产品描述配置文件、多设备兼容代码管理、源代码间的依赖关系、脚本处理方法等产品级代码管理方法。通过对Tizen中涉及的各类程序和资源文件的分配,设计并完成对Tizen的系统存储分区和内容部署,学习不同文件系统之间的差异和操作系统中对不同文件系统的初始化和兼容加载方法,学习各类进程对存储的使用方法。由于Tizen平台源代码编译耗时约 4 小时,考虑到课程时间问题,仅对Tizen的平台管理和软件工具进行原理讲解和分析,并将编译结果供学生下载用于完成部署实验。

3.4 系统初始化流程分析

分析操作系统内核加载完成后,第一个进程的创建过程,并实现对配置文件的分析和修改。通过代码补全的方式完成对系统启动和进程运行环境创建过程的原理分析。通过对Tizen的分析,了解对现代智能设备复杂的初始化过程,分析配置脚本之间的依赖关系,系统的灵活性、兼容性设计等,并理解操作系统中的守护进程类服务的启动过程。

3.5 遥控键盘项目开发

通过蓝牙建立实验开发板与学生自己的智能手机之间的数据传输通道,通过在手机上点击相应的按钮在开发板端产生虚拟键盘事件。这一项目的开发,需要综合运用内核驱动、网络传输、系统调用、系统服务管理等多个模块的系统知识。该实验项目同时还扩展了移动应用开发、网络编程、应用协议设计、服务管理、界面优化等多方面内容,耗时约 8 周交由学生课下完成,并向学生提供部分参考代码。

这一系列的实验设计涵盖了操作系统中的引导、初始化、进程、存储、IO、中断等多个复杂知识点,并通过真机实践的方式,以学生日常生活所熟悉的系统完成教学,提高了学生的学习积极性。

4 教学实践效果与改进计划

教学实践改革分两次推行。第一次进行了小范围试点尝试,2015年1—6月,从已完成操作系统课程学习的学生中选出11名志愿者参加,由教师进行小班授课和指导,每位学生独立承担实验。经过一个学期的学习,有9名同学成功完成了所有实验环节,编程能力和解决系统问题的能力有了明显提升。

第二次实践改革尝试在2015 年9—12月进行,面向正在学习操作系统课程的学生。由于实验设备有限并且课程压力较重,改为5人一组承担实验任务,全班共分为9组,在完成jos移植的同时完成Tizen移植任务。学生对此实验表现了极大的热情,投入大量的课余时间,整个开发过程持续到2016年2月寒假结束才完成,有4组学生完成了移植工作。由于学生的时间精力不足且实验平台的版本变迁,实驗效果受到了一定的影响。

针对发现的问题,教学组进行了针对性修改:重新修正了课程资料中的错误;建立了校内资源镜像;调整实验任务的发放时间点,与操作系统的理论讲授课程相对应,并在课上进行针对性的案例教学;建立针对实验任务的在线问答系统,供学生进行讨论交流,并按照时间节点投放问题的正确答案。以上修改和系统建设已经完成,在 2016年9月开始的实践教学中收到了更好的效果。

5 教学实践问题分析

(1)开源软件版本差异,随时更新引起的变化。活跃的开源软件随时发生变化,不活跃的开源软件能从开源社区中消失,这使得教学过程中容易出现授课内容与代码不对应或者无法获取资源等问题。为了保证教学的连续性,需要建立教学中的开源代码镜像,随时更新维护,并在学生实验过程中明确版本和开发状态,以确保实验顺利进行。

(2)产品特征影响教学案例典型性。在产品化的过程中存在一些技术整合和混杂,随着开发的代码和模型逐渐复杂,使得难以在商业化系统中找到非常贴切的教学用模型。同时编程方法和兼容性的变化也使代码变得复杂,分析讲解时过于复杂。这需要选择合适的版本和资料进行教学,并需要教学人员随时跟进开源软件的进展,如果能够讲解代码更迭的过程,收到的教学效果会更好。

6 结 语

通过在课程体系的实验教学中加入大型开源项目和开源平台的分析,帮助学生加深对操作系统类课程概念的理解,并掌握嵌入式系统的原理和开发方法。通过在学生熟悉的平板电脑开发平台上进行定制开发,帮助学生理解操作系统的作用和在产业环境中的应用,提高了学生的积极性,收到了良好的教学效果。

基金项目:教育部高等学校博士学科点专项科研基金资助课题(20130031120028);天津市应用基础与前沿技术研究计划(14JCQNJC00700, 16JCYBJC15200);计算机体系结构国家重点实验室开放课题(CARCH201504, CARCH201604)。本次教学活动得到了天津三星电子有限公司的资助。

第一作者简介:宫晓利,男,讲师,研究方向为嵌入式系统、移动云计算、物联网,gongxiaoli@nankai.edu.cn。

參考文献:

[1]陆亿红, 黄德才. 操作系统教学方法的若干思考[J]. 计算机教育, 2011(5): 80-82.

[2]王宇英, 谷建华, 周兴社, 等. 操作系统教学探索及其在嵌入式教学中的实践[J]. 计算机教育, 2011(11): 98-101.

[3]张伟娜. 以云计算为导向的计算机操作系统教学研究[J]. 软件, 2014(7): 85-88.

[4]Linux Foundation. TizenProject[EB/OL]. [2016-11-09]. https://www.tizen.org/blogs/tsg/2013/tizen-2.2.1-platform-release.

[5]冯红伟, 王鹏. 操作系统教学与实验设计研究[J]. 实验室研究与探索, 2007(12): 251-253.

[6]潘登, 陈启军. 面向卓越人才培养的嵌入式系统教学改革[J]. 计算机教育, 2013(13): 1-5.

[7]李文生, 邓春健, 吕燚. 案例驱动的嵌入式系统教学改革探索[J]. 计算机教育, 2011(2): 22-25.

(编辑:郭田珍)

作者:宫晓利 徐浩聪 张金 卢冶 刘哲理

第3篇:《嵌入式系统》课程教学初探

【摘 要】嵌入式的应用已深入到国民经济的各个方面,在工业控制、家用电器、智能仪器仪表、消费类电子产品等领域,已不断展现出其独特魅力。社会对于嵌入式人才的需求量越来越大,一些高校也陆续开设了《嵌入式系统》的课程,针对该课程教学过程中所出现的问题,笔者提出自己的观点,以期可以提高嵌入式系统教学的效率,使希望从事嵌入式开发的学生能够进入到这个领域,成为嵌入式方面的人才。

【关键词】嵌入式系统;嵌入式技术;ARM微处理器;开发板;软件

一、目前嵌入式系统教学概况

嵌入式系统概念的提出已经有相当长的时间,其历史几乎和计算机的历史一样长。但在以前,它主要用于军事和工业控制领域,所以很少被人们关注和了解。随着数字技术、大规模及超大规模集成电路的发展和功能更强的操作系统的出现,它才被广泛应用于航天、航空、工业控制、智能手机、消费类电子产品、信息家电、安防监控、医疗仪器、汽车电子等领域。目前,嵌入式系统产品正不断渗透各个行业,并以其应用领域广、人才需求大等优势,获得更大的关注,特别是将来3G和物联网的普及与推广,应用前景非常好。基于此,我国一些高校的信息类专业相继开设了有关《嵌入式系统》的课程,但大多数是以选修课的形式开设的,课时量少,学校、教师和学生也没有对该课程的教学和学习给于足够的重视,导致教学效果不理想。尽管社会对嵌入式人才需求大,但因为我们的不重视,使得学生在激烈的就业竞争中失去了很多机会。

二、嵌入式系统教学现状分析及对策

《嵌入式系统》课程一般作为选修课开设且一般在大四开设,学生接触嵌入式技术时间较晚,对其没有基本的认识,在有限的课时内也只能对其有一个大致的了解,相比大三、大四学生们学习JAVA、C++的热情,嵌入式的学习气氛就显得很冷清。加之嵌入式系统课程要求的知识面广,涉及基础课程多(与电子类专业相关的基础课程有数字电子技术、电子设计自动化(EDA)、单片机原理、可编程逻辑器件、DSP原理及应用等,与计算机类专业相关的课程有C语言程序设计、计算机组成原理、计算机系统结构、微机原理、数据结构、操作系统等,如果要进行嵌入式应用软件开发的还应掌握计算机网络、网络编程、数据库原理及软件工程等课程),所以,学生学习嵌入式系统课程就存在一定的难度,学习热情也不高。对此,我们应该给与足够的重视,积极帮助学生能在嵌入式领域占有自己一席之地。首先,在对学生进行入学教育专业介绍时,要强调嵌入式方面的就业前景,目前国内外这方面的人都很稀缺,与应用软件开发的行业不同,嵌入式领域人才的工作强度通常低一些,但收入却高一些,利用这样的好的就业前景刺激同学们好好学习。再者,要强调嵌入式系统课程涉及的先行课程多,一定要打好基础;还有,学生在学校学习期间,老师们可以多开展期嵌入式技术的讲座及嵌入式产品的展示,比如无线点餐系统、车载GPS定位、智能家居等;最后,在学生大一、大二学习期间,各科任课教师要督促学生扎扎实实的学好每一门课程,以便为后续课程打好基础。在竞争如意激烈的今天,学生们也该从进入大学就逐步规划自己的职业生涯。

三、《嵌入式系统》课程教学的内容、教学方法的改进

嵌入式系统融合了电子、计算机、微电子等多种学科和技术。对于什么是嵌入式系统,还没有一个明确的定义。嵌入式系统一般定义为以应用为中心,以计算机技术为基础,软硬件可裁减,应用系统对功能、可靠性、成本、体积、功耗和应用环境有特殊要求的专用计算机系统。

1.《嵌入式系统》课程教学的内容

《嵌入式系统》的教学通常以32位微处理器为平台,32位的微处理器主要有ARM、MIPS、POWER PC,目前国内的大多数高校都是以介绍ARM微处理器为主,教学的内容主要包括ARM微处理器内核的介绍、ARM的汇编指令和汇编程序设计、嵌入式系统的C语言设计和嵌入式操作系统、嵌入式Linux开发环境及其在ARM上的移植、设备驱动程序和用户图形界面GUI等内容。在试验内容的安排上,通常包括ARM汇编语言的程序设计、BootLoader的移植、嵌入式操作系统内核的移植、UCOS II、LINUX、WINCE等嵌入式操作系统下的C语言驱动程序设计和应用程序设计等。

2.教学方法的改进

对于嵌入式课程的学习,很多同学都认为很难,除了前面提及到的它涉及的基础学科较多以外,一个很重要的原因是以传统的教学模式讲述的内容学生完全不理解,比如宿主机、目标板、交叉开发环境、GCC交叉编译器arm-Linux-gcc、引导装载程序BOOTLOADER、Linux内核裁减等。这就需要教师在上课时将嵌入式Linux开发流程给学生作演示,包括建立开发环境,下载相应的GCC交叉编译器进行安装(例如arm-Linux-gcc、arm-μclibc-gcc),或者安装产品厂家提供的交叉编译器;配置开发主机;建立引导装载程序BOOTLOADER;下载针对所使用的CPU的Linux操作系统内核、再添加自己的特定硬件的驱动程序;建立根文件系統;开发应用程序;烧写内核、根文件系统、应用程序;发布产品。学校还可聘请企业讲师讲述部分课程以使学生们可以了解到嵌入式的最新的技术。关于嵌入式系统的实验部分,需要有相应的开发板,有的学校实验条件还不成熟或实验设备不足,那么可以在主机上安装模拟器来模拟开发板,使学生了解将嵌入式的开发流程即可。

四、教学保障

前面已提及,嵌入式的教学过程及实验环节都离不开计算机及开发板,这就需要学校投入一定的资金来改善教学和实验条件。因为嵌入式这方面的人才较少,高校教师中也有很多人从未接触过嵌入式相关技术,所以,对于高校要积极寻求与嵌入式相关的企业的合作,以进行师资的培训,从企业吸收最新的嵌入式的技术和成果用于教学过程中。

五、就业及培训

嵌入式系统是一个软件与硬件紧密结合的学科,从事嵌入式开发的人员主要有两类。一类是电子工程、通信工程等偏硬件专业出身的人,他们主要是搞硬件设计,有时要开发一些与硬件关系密切的最底层软件,如BootLoader、Board Support Package,最初级的硬件驱动程序等。另一类是学软件、计算机专业出身的人,主要从事嵌入式操作系统和应用软件的开发。嵌入式设备的增值很大程度上取决于嵌入式软件,这占了嵌入式系统的最主要工作,越是智能设备越是复杂系统,软件越起关键作用,而且这是目前的趋势。

从事嵌入式开发的好处是:(1)目前国内外这方面的人都很稀缺。一方面,是因为这一领域入门门槛较高;另一方面,是因为这一领域较新,目前发展太快,掌握这些新技术的人当然很难找。嵌入式人才稀缺,身价自然就高,越有经验价格就越高。其实嵌入式人才稀少根本原因可能是大多数人无条件接触,这需要相应的嵌入式开发板和软件,另外需要有经验的人进行指导开发流程。(2)与应用软件开发领域不同,嵌入式领域人才的工作强度通常低一些,但收入却高于普通的应用软件开发人员。搞嵌入式系统的公司,所开发的产品通常是通用的,不会因客户的不同而修改。另外,从事嵌入式软件的每个人工作范围相对狭窄,所涉及的专业技术范围基本上固定,时间越长越有经验。

如果以后想从事嵌入式技术方面的工作,那就需要进行这方面的培训,因为教学计划中的很少的课时量只是让学生们对嵌入式系统有一个大致的认识,而自学的话又不知道该从哪里下手。现在很多培训机构都有脱产的嵌入式就业班,大概学习四五个月的时间就可推荐就业,对于想从事嵌入式开发的学生来说,无疑是一个比较好的途径。

六、总结

嵌入式是一个有很大发展潜力的学科,各个高校也相继开设了嵌入式系统的课程,笔者仅从自己多年的嵌入式教学的角度上提出自己的一些看法,希望能够抛砖引玉,听到同行们更精彩的见解。

参考文献:

[1]刘艺,许大琴,万福编著.嵌入式系统设计大学教程[M].人民邮电出版社,2008(11).

作者简介:相岁女(1981—),女,大学本科,讲师,现供职于西安外事学院工学院。

作者:相岁女

第4篇:嵌入式硬件工程师的就业要求和就业前景

嵌入式硬件工程师的就业前景:(调查信息显示)

1、我国嵌入式人才缺口每年50万人左右;

2、嵌入式软件开发是未来几年最受欢迎职业之一;

3、10年工作经验的高级嵌入式工程师年薪在30万左右,初级工程师平均月薪3000~5000元,中高级的工程师月薪超过10000元。

嵌入式硬件工程师的招聘要求:(网上部份公司要求)

一、

岗位职责:负责高精度模拟信号的调理,以及ARM、DSP高速数字电路的搭建。 任职要求:

1、精通模拟电子技术,能够使用电路设计仿真工具对电路进行仿真分析;

2、具有板级EMC及EMI防护设计能力,保证单板及整机抗干扰能力;

3、熟悉ADI等模拟器件以及ARM、DSP、CPLD等数字器件的使用和设计...等

二、

岗位职责:

1、具备一定的硬件功底,有扎实的模拟电路和数字电路基础,具有通讯技术基础;

2、精通嵌入式系统设计,熟悉多种微处理器,有AVR系列单片机;

3、熟练使用Protel,熟悉掌握多层PCB电路的设计和系统硬件电路的调试;

4、具备从事相关技术开发工作3年优先,有手持通讯设备开发经验的从优。

三、

职位描述:

1、熟悉ARM平台的嵌入式系统开发过程,熟悉ARM开发及相关外围硬件电路设计;

2、熟练使用一些专业软件(如:protel、Orcad、Allegro、PADS、DXP等),具有多层PCB制版2年以上经验;

3、熟悉EMC、EMI问题,熟练掌握一到两种layout工具,如Pads等,懂得高速心哈走线应注意的问题,阻抗特性等;

4、熟练使用各种示波器,逻辑分析仪等捕捉关键点的信号,并找出问题原因。

第5篇:嵌入式系统

嵌入式系统 实验报告

闻悦 孙恩比 虞淦超 孙德一 滑冰 2010年1月5日

一. 选题

我们组的实验题目是:将配制过并且用Open64编译过的linux操作系统移植到ebox中。 这个实验是编译原理实验和嵌入式系统实验的结合。我们的小组成员有三位选了董渊老师的编译原理专题训练。当时董渊老师对大实验给出了一个提议,用open64编译器编译busybox,并且和嵌入式系统实验相结合。我们组员感觉这将是一个很好的尝试。另外,在ebox平台上运行linux,网上鲜有现成的案例。我们觉得,虽然ebox运行Embedded WinCE已经可以满足很多商业上的需求,但是linux有它的许多特点是WinCE不具备的。显然最重要的就是它的开源特性,使得功能的开发变得更加灵活,虽然可能没有WinCE容易上手,但是linux可以支持更多的CPU类型,应用的场合也较多。

新的创意往往可以激发我们的干劲。实验刚一开始,我们就为这个前所未有的挑战而激动万分,跃跃欲试。我们也很想通过实验,使得我们在学习嵌入式系统新知识的同时,尝试运用编译知识和巩固以前学过的操作系统知识,以达到使知识融会贯通、学以致用的目的。

在接下来的实验报告中,我们将主要体现嵌入式实验部分的工作。

二. 实验过程

嵌入式linux操作系统的三大要素是:bootloader, kernel image和根文件系统。我们也就按照这三点要素来总结我们的实验流程。

1. 初选bootloader

在查阅了一些嵌入式linux的资料后,我们把bootloader的备选集定位在了lilo、grub和syslinux上面。根据我们的实验设计,我们希望首先尝试用U盘引导,之后再尝试把U盘的内容写到ebox里面引导linux。明确了需求,我们就对这些bootloader的功能和适用性进行了比较。

Lilo是Grub的前身,grub在很多功能上加强了lilo,在实验设计做好之后,我们进一步询问业内人士并且得到了一些建议:GRUB不像LILO一样使用裸扇区,而是可以从ext2或ext3文件系统中加载Linux内核。这也就是说,如果用U盘做引导,lilo可能不能用,而grub是可以的。syslinux相对于grub是一个更轻量级的引导器,一般用于光盘和U盘。原本我们认为syslinux可能比grub更适合我们的实验,但是由于网上关于grub的参考更多一些,并且我们认为grub是可以胜任预期的工作。于是我们没有实验syslinux,用grub开始了我们的初期实验之旅。

2. 编译配制kernel

构建一个根文件系统首先需要的就是加载一个kernel。我们将busybox集成在内核中,这样kernel启动后,再加载initramfs,就可以直接进入带shell的linux环境中了。

kernel我们选择的是Linux2.6.31.6的最新版本。由于ebox使用的Vortex也是x86系统的,因此不需要交叉编译。在编译kernel的时候,我们指定的是自己的initramfs。我们的initramfs只是增加了一个init文件。init是一个hello.c文件,如下: hello.c:

#include #include int main(int argc,char argv[]) { printf("hello world, from initramfs. "); sleep(9999999); return 0; }

创建一个initramfs的源文件目录image,把hello程序拷入,并改名为init。在image下,创建一个dev/console的设备文件,否则无法输出helloworld。

mknod -m 600 dev/console c 5 1

在编译kernel时,在general setup配置目录下的initramfs sources配置项下输入image的路径名。 为我们的init程序是ELF格式的,所以内核需要支持ELF的可执行文件,否则启动这个init程序会失败。在内核的 Executable file formats配置目录下,选择 kernel support for ELF binaries,则可使内核支持ELF格式的可执行文件。

在编译kernel的时候,需要配置选项。kernel中有很多可选模块,makeallconfig是加载所有模块,这样做编译完kernel会很大。makenoconfig是最小化kernel。我们一开始使用的是makedefconfig,使用默认的配置。但是事实证明这是不可取的。在后来grub加载kernel中,出现了cmov问题。kernel无法加载,这是由于可能ebox的主机不支持kernel中的cmov指令。后来我们从网上查找了相关的资料。http://.tw/tech/os-xlinux/详细介绍了在Vortex86上的移植。我们下载了kernel,它的kernel非常小,只有2.1Mb,这个kernel是可以用的,但是缺少了硬盘驱动。我们认为可能是在配置的时候,在device一块少了写什么。我们详细试验了一下几个选项的配置:

Generic Driver Options,Block devices,SCSI device support,Serial ATA and Parallel ATA drivers,Multi-device support (RAID and LVM),Input device support,ATA/ATAPI/MFM/RLL support,经过反复的调试,但是硬盘识别的问题还是没有解决,在进入根目录后,没有找到hd0或是sda文件夹,我们也很困惑。不知道是不是将busybox集成带来的问题。

3. 内核中集成Busybox——构造根文件系统

一个简单的内核运行在ebox中是没有意义的,我们进而考虑了如何利用busybox构造基于linux的嵌入式根文件系统。Busybox是一种可以提供很多标准的Unix工具的开源软件,它是专门为linux量身打造的一个轻便的软件包,对于嵌入式系统来说是十分合适的。busybox的使用也是我们此次实验与编译原理专题训练相结合的地方,编译实验要求我们利用目前还不完善的Open64编译器对Busybox源码进行编译,这部分在这里不多说。

在构建根文件系统之前,我们并没有使用busybox,而是尝试构建一个最简单的根文件系统。经过查阅资料,我们发现在编译linux内核的过程中,可以将文件系统部分直接编译到内核当中,这样在内核加载到内存中的时候,文件系统也会相应的随之加载。于是仿照一般的linux的文件系统的目录结构,我们尝试构建自己的文件目录(dev, sys, bin等)。linux内核成功加载之后,会首先运行一个根目录中的名字为init程序,于是我们写了一个打印helloworld的程序,编译之后生成名字为init的可执行文件。然后在qemu模拟器中运行,可以看到在内核加载完毕之后在屏幕上打印helloworld,初期的尝试性工作完成。

关于Busybox使用的第二个步骤是尝试将Busybox编译到内核当中,其中涉及到得问题是如何编译与安装Busybox。在安装Busybox的过程中,程序会自动在选定的安装目录中建立linux的目录结构,并且在/bin中加入了linux的命令。这里需要说明一下,Busybox的功能主要体现在/bin目录中的可执行程序,在编译Busybox的过程中,可以选择让Busybox支持什么样的linux指令,这样在编译安装结束后就会在/bin中出现相应的命令,编译好的linux内核也会支持相应的命令。安装Busybox成功之后,按照初期尝试的编译内核方法,将busybox编译到内核中去。这里需要注意一个问题,如果想在新生成的linux中使用busybox命令,就必须在系统初始化的过程中启动busybox的功能,这是就需要修改init程序。我们以shell脚本的方式写了一个init程序,该程序最后会启动/bin/sh命令(进入新的系统的shell程序)。上述工作完成之后,在qemu中进行模拟,可以发现此时的linux已经支持了常用的linux命令。

尝试busybox的第三个过程是如何将rootfs与kernel分离,之前的工作都是将构建好的文件系统直接编译到内核中,这样如果文件系统过大的话会增加内核的负担,另外,如果嵌入在内核中的文件系统就要求我们每次调试过程都要重新编译一边内核,花费比较多的时间。在这个步骤之中我们通过linux中带的cpio命令,该命令可以对指定的目录中的所有文件进行压缩,生成一个initrd文件,恰好达到我们的要求。这样,最终在qemu中模拟时不仅要选择使用的内核,也要指定相应的initrd。

4. 第一次尝试

我们把编译完成的kernel image,initrd文件连同grub一起考到U盘里面,进入ebox,在MBR处选择U盘启动,运行grub,定位kernel和initrd,最后boot,但是boot失败,错误在initrd里面,系统意外中止了。随即我们更换了kernel的版本,重新设置kernel选项,尝试了无数种选项的组合,但是每次boot的时候,这个问题始终存在。

5. 第二次尝试

在第一次尝试失败后,我们一度有些摸不清问题的所在,有些灰心丧气。元旦之前集体到陶老师处询问,并且也发邮件给ICOP的工作人员询问了关于kernel无法被引导的问题。看着网上众口不一的解决方案,我们也总结出了一些可能有效的办法。既然实验就是上面的几个部分组成,我们不妨试验一下换一换bootloader,或者换一换kernel。

换kernel是一件比较麻烦的事情,因为这个实验的kernel部分和编译的关系最密切。一旦换kernel,光编译就需要很久,编译部分的实验也要返工。我们大胆决定先换一个bootloader试试看,很幸运,我们成功了。

Grub4dos,一位活跃在某国际嵌入式爱好者论坛的外国朋友曾经向我们提到了这个引导工具,在我们最困难的时候,隔壁宿舍的周以苏同学也提议让我们试一试这个。它是一款主要由中国人维护的grub工具,对原始的grub做了许多改进。我们想既然外国朋友都向我们推荐我们自己的准国产工具,那我们不妨试试。

在用grub4dos替换掉了原先的grub之后,我们再次启动ebox,显示成功。

6. 告别U盘

U盘引导完成之后, 我们就很容易告别U盘了。在ebox自带的WinCE里,我们把U盘里面的linux目录拷贝到ebox的硬盘根目录下。再次启动ebox,通过原始默认的MBR进入DOS,运行刚刚拷贝到硬盘根目录下linux文件夹里面的grub4dos,进入grub4dos,设置好kernel和initrd的位置,boot。linux便可以在没有U盘的情况下,直接运行在ebox上了。

7. 用grub4dos做MBR

我们现在完成的linux boot过程可以简要概括为: 利用ebox原有的MBR(Master Boot Record)进入DOS,在DOS中找到ebox硬盘里面的grub4dos,利用grub4dos定位kernel和initrd,完成boot。可是在每次boot之前,都需要做一些引导设置的操作。实际grub4dos是可以省略这个二次引导的。它可以被直接装入MBR里面引导kernel和文件系统。我们尝试了这个装入。通过grub4dos提供的grub> fdisk /mbr命令。装入之后启动ebox,出现error 16并无法继续启动。由于原先的MBR已经被替换,ebox也没办法进入dos下,实验到此结束。

三. 进一步工作的设想

1. 用grub4dos做MBR

在一些情况下,用grub做二次引导的bootloader会更方便,而另一些情况是,把grub装入MBR内会更方便。我们上面已经提到,在实验的最后,装入MBR的过程没有成功。可能是因为误删除了一些grub的文件所致。这一步工作还可以继续尝试。 2. 尝试使用syslinux作为bootloader完成实验

这只是一个尝试。因为我们在实验中并没有实测syslinux这个bootloader是否可以很好地工作。实际上grub4dos已经很好了。 3. 使用支持更多linux功能的kernel

我们编译的kernel只是一个功能简单到不能再简单的kernel。一个实用的kernel必须做得更好,支持更多的功能,新添更多支持ebox的驱动。

四. 实验心得体会

我们这次实验完成将配制过并且用Open64编译器编译过的linux操作系统移植到ebox中。工作大致可以分为编译部分和ebox引导部分。编译部分我们完成了用open64编译kernel以及根文件系统。ebox引导部分我们将编译好的linux操作系统移植到了ebox上。在实验中涉及到许多学科的知识,我们将编译原理、嵌入式系统乃至操作系统等课程的知识结合在一起进行实际使用,是嵌入式系统课之前所没有同学尝试过的一次创新性的实验。当然,有创新,就会有很多不确定的因素,这对我们来说是一次风险性的挑战。实验没有现成的文档可以参考,而且有关ebox上移植linux系统的资料也并不多。在我们遇到问题的时候,我们想了很多方法去解决,在一次次失败中磨练了我们,也使我们对我们的实验越来越深入,越来越了解。在一步一步克服困难的努力中,我们都学到了很多。现在我们做到了这个程度,可以说我们基本上赢了。很感谢老师提供的文档帮助我们解决了一些问题,也很感谢隔壁宿舍的张伟达同学和周以苏同学的帮助,更是有网络上很多国内外的嵌入式爱好者们耐心地解答我们用邮件咨询的种种问题。如此的参与规模,可以说这个实验是大学期间最难以忘怀的实验之一。在实验中,我们真切地体会了团队合作精神,大家一起想办法,同时在团队讨论中,我们每个人都学到了很多。我们觉得,这个实验其实是可以做为一个基础实验来给之后的同学做的。相比于基础实验中在ebox上安装WinCE,我们这个linux实验与底层更贴近。整个boot的过程都在实验的每个环节中充分地体现出来。做完实验,我们可以对MBR、bootloader以至加载kernel和文件系统的整体流程更加清晰。实验还残留着上面提到的一些问题,希望以后会有同学可以继续探索这个实验,也希望这个实验可以继续对以后同学有所帮助吧。

第6篇:嵌入式系统实验

南京信息工程大学 实验(实习)报告

实验(实习)名称

电机转动控制及中断实验 实验(实习)日期

2016.5 得分

指导教师 谢胜东

学院 计算机与软件 专业 计算机科学与技术 年级

2013 班次 3 姓名

叶正舟 学号

20131308072

1 实验名称

电机转动控制及中断实验

2 实验目的

(1)熟悉ARM本身自带的六路即三对PWM,掌握相应寄存器的配置

(2)编程实现 ARM系统的PWM 输出和I/O 输出,前者用于控制直流电机,后者用于控制步进电机。

(3)了解直流电机和步进电机的工作原理,学会用软件的方法实现步进电机的脉冲分配,即用软件的方法代替硬件的脉冲分配器。

(4)掌握带有PWM 和I/O 的CPU 编程实现其相应功能的主要方法。

3 实验环境

(1)ADS1.2开发环境 (2)PC (3)串口线

4 实验内容及要求

学习步进电机和直流电机的工作原理,了解实现两个电机转动对于系统的软件和硬件要求。学习ARM知识,掌握PWM 的生成方法,同时也要掌握I/O 的控制方法。

(1)编程实现ARM芯片的一对PWM 输出用于控制直流电机的转动,通过A/D 旋钮控制其正反转及转速

(2)编程实现ARM的四路I/O 通道实现环形脉冲分配用于控制步进电机的转动,通过A/D 旋钮转角控制步进电机的转角。

(3)通过超级终端来控制直流电机与步进电机的切换。

5 实验设计与实验步骤

(1)新建工程,将“电机转动控制实验”中的文件添加到工程 (2)编写直流电机初始化数(MotorCtrl.c) (3)控制直流电机与步进电机

6 实验过程与分析

(1)通过把从串口中得到控制信息的代码修改成从zlg7289芯片中读取小键盘信息,从而利用试验台的小键盘来控制步进电机和直流电机的切换

(2)A/D转换可以把电信号转换成数字信号来控制电机的转速。 for(;;)

{ loop:

//if((rUTRSTAT0 & 0x1)) //有输入,则返回

if(rPDATG&ZLG7289_KEY)//17键小键盘控制电机

{

*Revdata=RdURXH0();

goto begin;

}

Delay(10); ADData=GetADresult(0);

if(abs(lastADData-ADData)<20)

goto loop; Delay(10); count=-(ADData-lastADData)*3;

//(ADData-lastADData)*270/1024为ad旋钮转过的角度,360/512为步距角,

//由于接了1/8减速器,两者之商再乘以8为步进电机相应转过的角度

if(count>=0)

{//转角大于零

for(j=0;j

{

for(i=0;i<=7;i++)

{

SETEXIOBITMASK(stepdata[i], 0xf0);

Delay(200);

}

}

}

lastADData=ADData;

} }

7 实验结果总结

利用A/D转换器实现了对直流电机和步进电机的控制,利用实验设备上自带的小键盘实现了A/D转换器对两个电机控制的切换。

8 心得体会

通过本次实验,熟悉了ARM自带的六路(三对)PWM,并对直流电机和步进电机的工作原理有了进一步的了解。

第7篇:嵌入式系统发展趋势

未来嵌入式系统的发展趋势 在网络、通信、微电子发展的基础上,以及势不可挡的数字化信息产品的强大需求推动下,嵌入式技术具有广阔的发展创新空间。

(1)低功耗、高性能、高可靠性的系统需求对我国芯片设计是一个机遇。以嵌入式处理 器为领头的国产CPU、片上系统(SoC)、片上网络系统(NoC)将有很大的发展。

(2)Linux正逐渐成为嵌入式操作系统的主流;J2ME技术也将对嵌入式软件的发展产生深远影响。目前自由软件技术备受青睐,并对软件技术的发展产生了巨大的推动作用。嵌入式操作系统内核不仅需要具有微型化、高实时性等基本特征,还将向高可信性、自适应性、构件组件化方向发展;支撑开发环境将更加集成化、自动化、人性化;系统软件对无线通信和能源管理的功能支持将日益重要。近几年来,为使嵌入式设备更有效地支持Web服务而开发的操作系统不断推出。这种操作系统在体系结构上采用面向构件、中间件技术,为应用软件乃至硬件的动态加载提供支持,即所谓的"即插即用",在克服以往的嵌入式操作系统的局限性方面显示出明显的优势。

(3)Java虚拟机与嵌入式Java将成为开发嵌入式系统的有力工具。嵌入式系统的多媒体化将变成现实。它在网络环境中的应用已是不可抗拒的潮流,并将占领网络接入设备的主导地位。

(4)嵌入式系统与人工智能、模式识别技术的结合,将开发出各种更具人性化、智能化的实际系统。智能手机、数字电视,以及汽车电子的嵌入式应用,是这次机遇中的切入点。伴随网络技术、网格计算的发展,以嵌入式移动设备为中心的"无所不在的计算"将成为现实。

第8篇:嵌入式系统课程设计

《嵌入式系统概论》综合设计报告书

设计题目:用键盘控制LED显示不同图形

中央民族大学 二零零八年十月三十一日

一、 设计目的

了解LED点阵和矩阵键盘的工作原理。

二、 设计内容

编写程序控制用矩阵键盘控制LED点亮,产生不同的图形。

三、 设计方案

功能概述:

本设计要实现的功能是通过键盘控制LED点阵图形显示,如果键盘输入0-9十个数字时显示相应的数字,如果输入其他的键,则显示“+”号。

1、程序设计思路

本设计要实现键盘控制LED点阵图形显示,就必须要编写键盘和LED点阵的程序。先通过扫描矩阵键盘,得到键盘值,然后再调用点阵显示子函数,根据扫描的键盘值,在LED点阵上显示不同的图形。

2、主程序设计

主程序要实现的功能是矩阵键盘扫描,得到键盘值,然后把值传给LED显示函数。

程序流程图如下:

3、LED点阵显示函数设计

本函数要实现的功能是根据键盘的值,在LED点阵上显示不同的图形。 如果键盘的输入值为0-9则显示相应的数字,如果输入的是其他值,则显示“+”。本程序采用二维数组存放要显示的图形的字模,然后再通过逐行扫描LED点阵,把要显示的图形分8次显示,一次显示一行,利用人眼的视觉暂留效应,是人看到的是一个图形一次显示出来,通过一个循环控制图形显示的时间。 程序流程图如下:

4、点阵图形设计

根据8*8 LED点阵的原理,8X8 点阵共需要64 个发光二极管组成,且每个发光二极管是放置在行线和列线的交叉点上,当对应的某一列置1 电平,某一行置0 电平,则相应的二极管就亮;

先绘制出要显示的图形如下:

根据图形中点亮的LED灯的位置,得到相应图形的16进制数,存放在二维数组Buf1[11][8]中。

所以要显示的图形的字模如下:

buf1[11][8]={ {0x3c,0x24,0x24,0x24,0x24,0x24,0x3c,0x00},

//0

{0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08},

//1

{0x3c,0x20,0x20,0x3c,0x04,0x04,0x3c,0x00},

//2

{0x3c,0x20,0x20,0x3c,0x20,0x20,0x3c,0x00},

//3

{0x24,0x24,0x24,0x3c,0x20,0x20,0x20,0x00},

//4

{0x3c,0x04,0x04,0x3c,0x20,0x20,0x3c,0x00},

//5

{0x3c,0x04,0x04,0x3c,0x24,0x24,0x3c,0x00},

//6

{0x3c,0x20,0x20,0x20,0x20,0x20,0x20,0x00},

//7

{0x3c,0x24,0x24,0x3c,0x24,0x24,0x3c,0x00},

//8

{0x3c,0x24,0x24,0x3c,0x20,0x20,0x3c,0x00},

//9

{0x08,0x08,0x08,0x3e,0x08,0x08,0x08,0x00}

//+

};

四、 程序源代码

//*************************************************************** #include #include #include #include // open() close() #include // read() write() #include

#define DEVICE_NAME "/dev/led_ary_ctl" #define DEVICE_NAME1 "/dev/keypad"

void Key(unsigned char b[]);

//------ main ---- int main(void) {

int fd;

int ret;

unsigned char buf[2] ;

double x;

char pre_scancode = 0xff;

printf(" start keypad_driver test ");

fd = open(DEVICE_NAME1, O_RDWR);

printf("fd = %d ",fd);

if (fd == -1) {

printf("open device %s error ",DEVICE_NAME1); }

else {

buf[0]=0x22;

while (1)

{

read (fd,buf,1);

if(buf[0]!= pre_scancode)

{

if(buf[0]!=0xff)

{

printf("key =%x ",buf[0]);

Key(buf);

}

}

pre_scancode = buf[0];

usleep(50000);

}

// close

ret = close(fd);

printf ("ret=%d ",ret);

printf ("close keypad_driver test "); }

return 0; }// end main //***************************************************************************** //--------------- void Key(unsigned char b[]) { int fd;

int ret;

int i,j,k;

unsigned char buf[2] ;

unsigned char buf2[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; unsigned char buf1[11][8]={{0x3c,0x24,0x24,0x24,0x24,0x24,0x3c,0x00},

//0

{0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08},

//1

{0x3c,0x20,0x20,0x3c,0x04,0x04,0x3c,0x00},

//2

{0x3c,0x20,0x20,0x3c,0x20,0x20,0x3c,0x00},

//3

{0x24,0x24,0x24,0x3c,0x20,0x20,0x20,0x00},

//4

{0x3c,0x04,0x04,0x3c,0x20,0x20,0x3c,0x00},

//5

{0x3c,0x04,0x04,0x3c,0x24,0x24,0x3c,0x00},

//6

{0x3c,0x20,0x20,0x20,0x20,0x20,0x20,0x00},

//7

{0x3c,0x24,0x24,0x3c,0x24,0x24,0x3c,0x00},

//8

{0x3c,0x24,0x24,0x3c,0x20,0x20,0x3c,0x00},

//9

{0x08,0x08,0x08,0x3e,0x08,0x08,0x08,0x00}

//+

};

// begin of led ary

buf[0]= 1;

buf[1]= 0;

if(b[0]<=9) i=b[0]; else

i=10;

fd = open(DEVICE_NAME, O_RDWR);

printf("fd = %d ",fd);

if (fd == -1)

printf("open device %s error ",DEVICE_NAME);

else {

for(j=0;j<=5;j++)

{

for(k=0;k<8;k++)

{

buf[0]=buf1[i][k];buf[1]=buf2[k];

write(fd,buf,2);

}

usleep(1);

}

// close

ret = close(fd);

printf ("ret=%d ",ret);

printf ("close led_driver test "); } } //-

五、 设计结果

实现键盘控制LED点阵显示,输入0-9十个数字时显示相应的数字,如果输入其他的键,则显示“+”号。

六、 心得体会

通过本次实验,我们对linux下的实验更加熟悉了,对LED点阵显示和矩阵键盘的原理有了深入的了解,掌握了点阵图形的设计方法和键盘的输入的读取,并把二者结合起来,实现了键盘控制点阵图形现实。

在实验过程中,我们也出现了问题,最开始时,由于不清楚点阵的C,R的高低位的对应情况,经过试验,才确定。然后就是点阵的显示是一闪即过的,然后我们通过循环控制了点阵的显示时间。总之,通过这次设计,我们都学到了很多东西。

第9篇:嵌入式系统 课程感想

《嵌入式系统设计》课程感想 班级:电气99姓名:王正杰学号:09095018 虽然上完了整门课,但是还是对嵌入式和嵌入式系统等最基本的概念不是很了解。于是自己动手查阅了一些资料,其中IEEE(国际电气和电子工程师协会)对嵌入式系统的定义:“用于控制、监视或者辅助操作机器和设备的装置” (Devices Used to Control,Monitor or Assist the Operation of Equipment,Machinery or Plants)。国内比较认可的定义是:嵌入式系统是以应用为中心,以计算机技术为基础,软硬件可裁剪,适用于应用系统,对功能、对可靠性、成本、体积、功耗有严格要求的专用计算机系统。

“嵌入式”反映了这些系统通常是更大系统中的一个完整的部分,称为嵌入的系统。而且,嵌入的系统中可以共存多个嵌入式系统。

一个简单的嵌入式系统一般包含以下几部分:嵌入式微处理器外围硬件设备、嵌入式操作系统、特定的应用程序。可见,其实嵌入式系统就是含有微处理器和硬件接口的一个根据应用可裁剪的非标准计算机系统。

嵌入式系统的发展历史:

嵌入式系统的出现最初是基于单片机的。

70年代单片机的出现,使得汽车、家电、工业机器、通信装置以及成千上万种产品可以通过内嵌电子装置来获得更佳的使用性能:更容易使用、更快、更便宜。

80年代早期开始,嵌入式系统的程序员开始用商业级的“操作系统”编写嵌入

式应用软件,这使得可以获取更短的开发周期,更低的开发资金和更高的开发效率,“嵌入式系统”真正出现了。

目前,嵌入式系统在很多产业中得到了广泛的应用并逐步改变着这些产业,包

括工业自动化、国防、运输和航天领域。例如:神州飞船和长征火箭中肯定有很多嵌入式系统,导弹的制导系统也是嵌入式系统,高档汽车中也有多达几十个嵌入式系统。在日常生活中,人们使用各种嵌入式系统,但未必知道它们。事实上,几乎所有带有一点“智能”的家电(全自动洗衣机、电脑、电饭煲„)都是嵌入式系统。嵌入式系统广泛的适应能力和多样性,使得视听、工作场所甚至健身设备中都有嵌入式系统的身影。

嵌入式系统的特点:

专用性:嵌入式系统面向用户、面向产品、面向应用,它必须与具体应用相结合才会具有生命力、才更具有优势。也正是这个原因,必须结合实际系统需求进行合理的裁减。

嵌入性:也就是说系统和被控制的对象是紧密连接的,一般不需要人为干预,从这点上讲,也就对嵌入式系统的环境适应性、稳定性、可靠性等提出了一些要求,在进行软件和硬件设计时必须考虑这些要求。

智能性:1.嵌入式系统需要有一个中央处理器单元(CPU),来实现对对象的智能控制。

2.嵌入式系统首先是计算机系统,其次是专用的计算机系统,这种系统有别于通用的个人电脑(PC),最后由于其专用的特点决定了其软硬件必须能够进行定制,必须能够进行裁减。

3.单片机也是属于嵌入式系统的范畴。但是由于历史的原因,单片机和嵌入式系统被许多人区分开来对待,嵌入式系统更多地被理解为使用ARM等32位嵌入式微处理器的计算机系统。4.单片机系统一般采用单任务程序或简单的多任务内核,如uC/OS-II操作系统,一般应用于一些小型应用系统中;而ARM嵌入式系统还能很轻松的运行Linux、Windows CE、VxWorks等复杂的操作系统,比较适合于设计大型应用系统。

嵌入式系统开发的分工:

1. 芯片制造商:负责制造包括CPU、网卡、RAM、

及Flash等芯片的厂商。

2. 设备制造商:负责制造硬件开发板和产品板。3. 操作系统提供者:负责提供嵌入式操作系统。4. 软件开发商:负责在操作系统之上开发具有独

立功能的应用程序。

5. 系统集成商:负责向最终用户提供产品解决方

案。

嵌入式开发的一般方法:

嵌入式系统的软件开发通常采用 “宿主机/目标机”方式 :

首先,利用宿主机上的丰富的资 源及良好的开发环境开发和仿真调试 目标机上的软件。

然后,通过串行口或网络将交叉 编译生成的目标代码传输并装载到目 标机上。

最后,目标机在特定的环境下运行。

几种常见的嵌入式系统:

试目标机上的

软件

生成的目标代码传输并装载到目标机上

目标机在特定的环境下运行

嵌入式Linux:

uClinux是一个完全符合GNU/GPL公约的操作系统,完全开放代码。uClinux从Linux 2.0/2.4内核派生而来,沿袭了主流Linux的绝大部分特性。它是专门针对没有MMU的CPU,并且为嵌入式系统做了许多小型化的工作。

适用于没有虚拟内存或内存管理单元(MMU)的处理器,例如ARM7TDMI。它通常用于具有很少内存或Flash的嵌入式系统。

它保留了Linux的大部分优点:稳定、良好的移植性、优秀的网络功能、完备的对各种文件系统的支持、以及标准丰富的API等。

Win CE:

Windows CE是微软开发的一个开放的、可升级的32位嵌入式操作系统,是基于掌上型电脑类的电子设备操作,它是精简的

Windows 95。Windows CE的图形用户界面相当出色。Win CE具有模块化、结构化和基于Win32应用程序接口以及与处理器无关等特点。

VxWorks :

VxWorks操作系统是美国公司于1983年设计开发的一种嵌入式实时操作系统(RTOS),是嵌入式开发环境的关键组成部分。良好的持续发展能力、高性能的内核以及友好的用户开发环境,在嵌入式实时操作系统领域占据一席之地。它以其良好的可靠性和卓越的实时性被广泛地应用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域中,如卫星通讯、军事演习、弹道制导、飞机导航等。

Nucleus:

Nucleus PLUS是为实时嵌入式应用而设计的一个抢先式多任务操作系统内核,其95%的代码是用ANSIC写成的,因此非常便于移植并能够支持大多数类型的处理器。 Nucleus PLUS采用了软件组件的方法。每个组件具有单一而明确的目的,通常由几个C及汇编语言模块构成,提供清晰的外部接口,对组件的引用就是通过这些接口完成的。由于采用了软件组件的方法,使Nucleus PLUS 的各个组件非常易于替换和复用

嵌入式系统发展趋势:

我们有理由相信计算机还将继续快速发展并进一步改变我们的生活,让计算变得“无所不能”、“无处不在”。 其中“无所不能”将是人工智能技术和超级计算机的结合,而“无所不在”则是嵌入式技术应用的广阔天地,现在普通消费者已经可以从市场中买到数码相机、移动电话、打印机等众多的数码产品、航空设备、ATM机、计算机网络设备等电子产品中都用到了嵌入式技术。

通用计算机的发展变为功能电脑,普遍进入社会,嵌入式计算机发展的目标是专用电脑,实现“普遍化计算”,因此可以称嵌入式智能芯片是构成未来世界的“数字基因”。正如我国资深嵌入式系统专家——沈绪榜院士的预言,“未来十年将会产生同大小、具有超过一亿次运算能力的嵌入式智能芯片,将为我们提供无限的创造空间“。

总之,“嵌入式微控制器或者说单片机好象是一个黑洞,会把当今很多技术和成果吸引进来”。

上一篇:人民警察廉政承诺书下一篇:安全生产协会工作计划