嵌入式总结 第1篇
刚开始,我认为主要的问题在于你知道不知道,而不是理解不理解,某个子系统的实现采用了某种策略、方法,而你在学习中需要做的就是知道有这么一回事儿,然后才是理解所描述的策略或者方法。
根据自己的学习经验,刚开始学习内核的时候,我认为要做的是在自己的脑海中建立起内核的大体框架,理解各个子系统的设计理念和构建思想,这些理念和思想会从宏观上呈献给你清晰的脉络,就像一个去除了枝枝叶叶的大树的主干,一目了然;当然,肯定还会涉及到具体的实现方法、函数,但是此时接触到的函数或者方法位于内核实现的较高的层次,是主(要)函数,已经了解到这些函数,针对的是哪些设计思想,实现了什么样的功能,达成了什么样的目的,混个脸熟的说法在这儿也是成立的。至于该主函数所调用的其它的辅助性函数就等同于枝枝叶叶了,不必太早就去深究。此时,也就初步建立起了内核子系统框架和代码实现之间的关联,关联其实很简单,比如一看到某个函数名字,就想起这个函数是针对哪个子系统的,实现了什么功能。
我认为此时要看的就是LKD3,这本书算是泛泛而谈,主要就是从概念,设计,大的实现方法上描述各个子系统,而对于具体的相关的函数实现的代码讲解很少涉及(对比于ULK3,此书主要就是关于具体函数代码的具体实现的深入分析,当然,你也可以看,但是过早看这本书,会感觉很痛苦,很枯燥无味,基本上都是函数的实现),很少,但不是没有,这就很好,满足我们当前的需求,还避免我们过早深入到实际的代码中去。而且本书在一些重要的点上还给出了写程序时的注意事项,算是指导性建议。主要的子系统包括:内存管理,进程管理和调度,系统调用,中断和异常,内核同步,时间和定时器管理,虚拟文件系统,块I/O层,设备和模块。(这里的先后顺序其实就是LKD3的目录的顺序)。
我学习的时候是三本书交叉着看的,先看LKD3,专于一个子系统,主要就是了解设计的原理和思想,当然也会碰到对一些主要函数的介绍,但大多就是该函数基于前面介绍的思想和原理完成了什么样的功能,该书并没有就函数本身的实现进行深入剖析。然后再看ULK3和PLKA上看同样的子系统,但是并不仔细分析底层具体函数的代码,只是粗略地、不求甚解地看,甚至不看。因为,有些时候,在其中一本书的某个点上,卡壳了,不是很理解了,在另外的书上你可能就碰到对同一个问题的不同角度的描述,说不准哪句话就能让你豁然开朗,如醍醐灌顶。我经常碰到这种情况。
并不是说学习过程中对一些函数体的实现完全就忽略掉,只要自己想彻底了解其代码实现,没有谁会阻止你。我是在反复阅读过程中慢慢深入的。比如VFS中文件打开需要对路径进行分析,需要考虑的细节不少(…/./之类的),但是其代码实现是很好理解的。再比如,CFS调度中根据shedule latency、队列中进程个数及其nice值(使用的是动态优先级)计算出分配给进程的时间片,没理由不看的,这个太重要了,而且也很有意思。
ULK3也会有设计原理与思想之类的概括性介绍,基本上都位于某个主题的开篇段落。但是更多的是对支持该原理和思想的主要函数实现的具体分析,同样在首段,一句话综述函数的功能,然后对函数的实现以1、2、3,或者a、b、c步骤的形式进行讲解。我只是有选择性的看,有时候对照着用source insight打开的源码,确认一下代码大体上确实是按书中所描述的步骤实现的,就当是增加感性认识。由于步骤中掺杂着各种针对不同实现目的安全性、有效性检查,如果不理解就先跳过。这并不妨碍你对函数体功能实现的整体把握。
Intel V3,针对X86的CPU,本书自然是系统编程的权威。内核部分实现都可以在本书找到其根源。所以,在读以上三本书某个子系统的时候,不要忘记可以在V3中相应章节找到一些基础性支撑信息。
在读书过程中,会产生相当多的疑问,这一点是确信无疑的。大到搞不明白一个设计思想,xxx不理解某行代码的用途。各个方面,各种疑问,你完全可以把不理解的地方都记录下来(不过,我并没有这么做,没有把疑问全部记下来,只标记了很少一部分我认为很关键的几个问题),专门写到一张纸上,不对,一个本上,我确信会产生这么多的疑问,不然内核相关的论坛早就可以关闭了。其实,大部分的问题(其中很多问题都是你知道不知道有这么一回事的问题)都可以迎刃而解,只要你肯回头再看,书读百遍,xxx自现。多看几遍,前前后后的联系明白个七七八八是没有问题的。我也这么做了,针对某些子系统也看了好几遍,切身体会。
子系统进行管理工作需要大量的数据结构。子系统之间交互的一种方式就是各个子系统各自的主要数据结构通过指针成员相互引用。学习过程中,参考书上在讲解某个子系统的时候会对数据结构中主要成员的用途解释一下,但肯定不会覆盖全部(成员比较多的情况,例如task_struct),对其它子系统基于某个功能实现的引用可能解释了,也可能没做解释,还可能说这个变量在何处会做进一步说明。所以,不要纠结于一个不理解的点上,暂且放过,回头还可以看的。之间的联系可以在对各个子系统都有所了解之后再建立起来。其实,我仍然在强调先理解概念和框架的重要性。
嵌入式总结 第2篇
1嵌入式系统教学的现状
关于嵌入式系统教学过程中的课程定位、相关先导课程与基础知识的准备、教学内容(包括硬件平台和软件平台)的选择、实践教学与实践环节组织等问题,在目前,仍然存在争论和探索。本环节就以下几个方面进行分析:
1)嵌入式系统的课程定位
由于各个院校对于嵌入式系统的课程定位的不同,不同的院校对于本课程的应用方向也不同。有的院校更加侧重于底层硬件和系统文件的裁剪,偏向于基于单片机的应用;有的院校更加侧重于嵌入式系统的应用,偏向于软件开发与调试。
2)嵌入式系统教学的先导课程
基于上述不同院校之间课程定位的不同,嵌入式系统课程的先导课程也有所不同,针对偏硬件设计方向的,硬件电路设计作为重点。针对偏软件设计方向的,则是把程序设计语言作为重点。
3)嵌入式系统教学的学时分配
不同院校的不同专业对于嵌入式系统课程的要求不同,有的专业是作为专业核心类课程,有的专业是作为专业通识类课程,有的专业是作为专业选修类课程。因此,对于嵌入式系统教学的学时,有着很大的不同。
4)嵌入式系统教学内容的选择
嵌入式系统课程由于对前期课程的要求较高,同时现有教学内容中,理论偏多,各种概念和模型较难理解,学生动手去实践相对较少,学生学习起来非常抽象和枯燥,无法形成自己的知识体系结构,缺乏直观性,因此学生学习积极性会随着课程的深入,逐步降低。
同时嵌入式系统教学需结合教学平台设备来进行开展。在现有市场上,嵌入式系统教学平台种类繁多,并且配套的软件操作系统也有所不同,不同院校都根据自身的实际情况进行相应选择。
2嵌入式系统教学组织
嵌入式总结 第3篇
关键词:嵌入式;ARM;SOC;FPGA
中图分类号:G64文献标识码:B
文章编号:1672-5913(2007)17-0025-03
1引言
随着手机、PDA、高清电视(HDTV)、机顶盒、智能家电、汽车电子、路由器、医疗仪器、航天航空设备等嵌入式系统的广泛应用,中国嵌入式系统市场预计每年将直接创造亿元的效益,因此嵌入式将成为电子信息产业新的经济增长点,嵌入式系统无疑是当前最热门最有发展前途的应用领域之一。与巨大的市场潜力和产业需求相比,我国国民教育体系下嵌入式系统的教学知识较为陈旧,缺乏实践锻炼,无法适应企业的实际需要,嵌入式人才的缺乏是阻碍我国嵌入式系统发展的首要因素。本文首先分析我国目前嵌入式专业教学的现状,阐述了嵌入式课程体系的知识结构,接下来针对应用型本科院校计算机类嵌入式方向的课程设置与教学进行了探讨,最后对该教学模式实施的实际效果进行了总结。
2 嵌入式课程设置现状分析
2.1 现状及问题
目前,我国大部分高校的嵌入式系统教学仍然停留在20世纪80年代初发展起来的以8位51单片机为核心的教学水平上。教学内容、教学方法、教学手段、教材体系不能适应嵌入式技术发展的需要。学生学完这门课程后满足不了社会对嵌入式人才的需求。究其原因,一方面是因为从事该领域的研发人员常常需要不同专业背景,例如计算机、电子、通信、自动化与控制,等。另一方面更重要的原因是我国的嵌入式教学没有跟上嵌入式技术的发展,笔者认为我国嵌入式教学存在如下问题:
(1)定位不明确,课程体系设置不合理:一个嵌入式系统不但包括硬件部分还包括软件部分。电子类、通信类、计算机类专业都可以开设嵌入式方向,但培养目标是不相同的、课程设置和侧重点也不相同,而目前有些高校只是根据技术潮流笼统地开设一门课程,远远达不到系统地学习嵌入式技术的需要。因此,高校开设置嵌入式专业时必须找准定位,结合自身的特点和优势开设课程。
(2)缺少系列教材:嵌入式技术往往和行业背景结合紧密,由于新技术日新月异,很难找到一套普遍适用的系列教材。这也给嵌入式教学带来影响。
(3)课程教学内容陈旧:嵌入式课程是一门很新的技术,目前有些高校虽然开设了这方面的课程,但是师资往往没有同步跟上,很多都是从相关专业转型而来,在短期内无法跟上新技术变革,因此出现教学内容陈旧,而且广度有限,深度不够的现象。
(4)缺少实践锻炼:嵌入式是一门实践性很强的技术。目前有些高校缺少实验设备,没有与实际工程应用密切结合的课程设计,使得高校培养的人才创新意识薄弱,实践能力不强,与实际工程应用需求严重脱节,学生发展后劲不足。
要解决以上问题,必须对嵌入式专业所需要知识结构有所了解。
2.2 嵌入式专业的知识结构
从广义上说,以单片机,FPGA/CPLD,DSP,ARM等实现的产品都可以称之为嵌入式产品,基于FPGA的SOC、SOPC、ASIC设计都和嵌入式系统密切相关,如图1所示。
嵌入式工程人员应该具备什么样的知识结构呢?嵌入式工程人员既可从事嵌入式硬件设计,也可从事嵌入式软件设计,下面结合我国对嵌入式软件人才的培养要求,我们认为工程型嵌入式软件人才应具有如下的知识与能力:
(1)硬件知识
嵌入式系统是以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。因此,对于从事嵌入式软件开发的工程人员,必须清晰地掌握相关的硬件基础知识,如嵌入式微处理器、接口技术、软硬件一体化的开发工具,等。
(2)软件工程知识
嵌入式软件工程与通用软件工程具有共同之处,但又有很大的差异。因此,嵌入式软件工程人才必须首先具有软件工程技术的基本知识和工程技能,例如软件工程管理、软件质量、软件工程过程,等。同时,一个好的嵌入式开发工程师必须掌握一门开发语言、精通一种主流微处理器系统、掌握一套开发工具和一种嵌入式操作系统。
(3)行业领域知识
嵌入式系统是与特定行业应用密不可分的,嵌入式软件在移动设备、数字家电、汽车电子、数控机床、医疗电子、航天航空、工控等领域得到广泛应用。所以,嵌入式软件工程人才必须具有一定的行业领域知识,才能胜任工作。
(4)系统工程能力
由于嵌入式系统是面向某种特殊应用,所采用的硬件平台、开发工具和应用环境都有所不同,再加上市场对大多数产品要求开发周期短和成本低,我们无法为了某一种产品而从头开发。因此,如何选择合适的软硬件平台以高效地开发产品,如何有效管理开发团队中的各类人员,如应用专家、硬件工程师、软件工程师和其他相关工程人员,成为嵌入式系统产品开发的重点。这就需要嵌入式软件工程人才应具备解决工程问题的能力,自我知识学习与更新能力和良好的交流与组织协调能力。
对于嵌入式专业的教学,不可能把图1中罗列的所有技术全部学习一遍,这样做也得不偿失。一个比较好的方法是根据各个学校的特点实施嵌入式课程教学,电子类、通信类、计算机类专业都可以开设嵌入式方向,但是其侧重点和培养目标是不相同的。下面主要结合计算机类专业的嵌入式方向阐述其课程设置与教学。
3基于ARM架构的嵌入式课程设置与教学
3.1 课程体系
嵌入式总结 第4篇
北京工业大学作为以培养“应用型”人才为目标的“211工程”市属重点大学,对嵌入式系统领域的课程建设非常重视,2003年,计算机学院对专业的设置进行了相应的调整,设置了嵌入式系统专业培养方向,调整后的体系结构学科部将以嵌入式体系结构作为教学的重点,2004年在01级本科生专业选修课中开设了“嵌入式系统”课程。
嵌入式系统融合了计算机软、硬件技术、通讯技术和半导体微电子技术,针对实际应用系统需求,将相应的计算机直接嵌入到应用系统中。嵌入式系统设计需要设计者具有较强的综合理论知识和动手能力,是对设计者综合能力,特别是创新能力的考查。因此,“嵌入式系统”课程是本科生前三年基础课和专业课综合能力的延伸。
一、课程特色
北京工业大学计算机学院“嵌入式系统”课程通过近三年的建设已经形成了一定的特色,该课程将在2004级本科生中加大到2门课程,64学时的“嵌入式系统原理与技术”和60学时的“嵌入式系统”课程设计。
1.与国际知名企业联手,提升课程新技术含量
IT领域的新技术发展令人应接不暇,虽然大学生在校期间需要学习的都是一些基础知识,但他们毕业走向社会后,必然要面对这些新技术,如果我们的教学内容陈旧,就会加长学生毕业后的适应周期;如果我们能够提供给学生更多接触这些新知识、新技术的机会,就会使学生毕业后能够迅速地融入到社会实际中。为此,我们就要与这些国际知名的企业联合起来,为学生提供一个接触、学习新技术的环境,同时也能使我们的教学内容与这些新技术基本保持同步。
本课程在开设之初就得到了微软公司、微软亚洲研究院的大力支持,在技术上、开发工具上给予了我们大力的支持,因此,在课程内容上可以将微软最新的技术传授给学生,能够缩短学生毕业后角色转换的时间,尽快地投入到工作中。同时,本课程还得到了Intel公司在硬件实验平台上的支持,使得学生们可以结合硬件平台学习嵌入式系统设计的方法和手段,了解实际工程设计的流程。
本课程涉及目前嵌入式系统最为流行的两项新技术――Intel公司的XScale和Microsoft的Windows CE,本课程以Intel XScale应用处理机PXA255为硬件平台,讲述Windows CE操作系统定制、优化方法以及应用程序的开发手段、方法。
2.课堂教学搬到实验室
“嵌入式系统”是一门以应用开发为主的课程,在应用开发部分要涉及到开发环境、开发工具的介绍,如果按照以往先在课堂讲授,再到实验室做实验的教学方式,不仅使学生感觉到枯燥无味、不易掌握,而且在实验之前还要再花费时间复习。于是,我们在去年尝试了将课堂转移到实验室,主讲教师边讲,学生边做的教学方式,得到了同学们的认可,当同学们顺利地定制出第一个Windows CE操作系统时,脸上露出了灿烂的笑容。
3.课程考核来于实践
为了加强学生动手能力的培养,“嵌入式系统”课程的考核成绩全部来自于实践环节,实验占总成绩的40%,课程设计占总成绩的60%。学生在完成实验基础上,完成指定题目的课程设计。课程设计题目每年不断更新,学生可以根据自身掌握的程度选择不同难度的题目,分值依据题目难易程度而定。
4.科技竞赛激发学生创新精神
针对那些具有特点的学生进行重点培养,支持他们参加国内外与嵌入式系统相关的竞赛,并取得了优异的成绩。在2004年教育部、_举办的“全国大学生电子设计竞赛――嵌入式系统专题邀请赛(英特尔杯)”中提交的以开发的作品“无线智能心血管监测诊断系统”首次参赛即获得了全国三等奖。在“2005年微软嵌入式系统全球大学生挑战赛”,入围全球前30名,并参加了在美国西雅图微软总部举行的总决赛,获得“优胜奖”。由于在“微软嵌入式系统全球大学生挑战赛”中提交的作品“运动个人助理”得到了专家评委的一致好评,被微软公司推荐参加了IEEE(国际电子、电气工程师协会)举办的“第六届计算机学会国际设计大赛(CSIDC)”。该项赛事是国际计算机界大学生的顶级赛事,我校代表队经过激烈的角逐最终进入了在美国首都华盛顿举行的全球前10名(TOPTEN)总决赛,并获得优胜奖,这是中国大陆代表队首次进入该项国际计算机界顶级赛事的全球前10名总决赛,为国争了光。
学生们还参加了Altera公司举办的“Nios软核心嵌入式处理器设计大赛”,在2004年获得了优胜奖,2005年获得了“三 等奖”。
这些成绩表明北京工业大学计算机学院在国内外嵌入式系统教学方面,已具有比较明显的优势,这些成绩的取得同时也促进了其他学生对“嵌入式系统”课程的浓厚兴趣。
5.具有实践经验的教师参与教学
从事嵌入式系统理论课程及实践教学任务的教师总计8人,其中:具有正高职称1人,副高职称3人,中级职称4人,形成了老、中、青教学梯队。具有博士学位的3人,具有硕士学位的3人,知识结构合理。
在这支队伍中,多名教师从事过工业控制产品的开发工作,对于嵌入式系统这门强调与应用紧密结合的课程,他们可以将工程设计的理念传授给学生,可以更好地指导学生们的实践。
二、实施办法
1.教学科研并重,加强师资队伍的建设
“嵌入式系统”是一门强调工程实践的课程,因此,就要求教师要参与到相关科研项目中,从项目中积累经验,以达到更好地指导学生实践环节的效果,目前,课程组参与的科研项目主要涉及到医疗仪器、数字社区和汽车电子等领域。
2.不断更新教学内容
嵌入式领域的技术更新换代的速度十分迅猛,以微软公司的Windows CE操作系统为例,基本上每2年推出一个新版本,2004年课程开设之初使用的Windows CE ,2005年推出了Windows CE ;明年将推出Windows CE ,因此,要求我们教师要不断跟踪新技术,更新教学内容。
3.加强竞赛基地建设
由于我们在前两年的学生嵌入式系统科技竞赛中取得了比较优异的成绩,学校在今年的北京市政府专款建设项目中投资近60万元,建立了“嵌入式系统科技竞赛训练基地”。通过搭建一个学生参加科技竞赛、训练的基础平台,形成一个传、帮、带的梯队、达到“以点带面”的良性循环效果,增加学生学习理论课程的兴趣,加强学生创新能力的培养,力争在国内、国际比赛中再创佳绩,培养出社会急需的计算机“应用型”人才。
嵌入式总结 第5篇
“比起知道你所用技术的重要性,成为某一个特别领域的专家是不重要的。知道某一个具体API调用一点好处都没有,当你需要他的时候只要查询下就好了。”这句话源于我看到的一篇翻译过来的博客。我想强调的就是,这句话针应用型编程再合适不过,但是内核API就不完全如此。
内核相当复杂,学习起来很不容易,但是当你学习到一定程度,你会发现,如果自己打算写内核代码,到最后要关注的仍然是API接口,只不过这些API绝大部分是跨平台的,满足可移植性。内核黑客基本上已经标准化、文档化了这些接口,你所要做的只是调用而已。当然,在使用的时候,最好对可移植性这一话题在内核中的编码约定烂熟于心,这样才会写出可移植性的代码。就像应用程序一样,可以使用开发商提供的动态库API,或者使用开源API。同样是调用API,不同点在于使用内核API要比使用应用API了解的东西要多出许多。
当你了解了操作系统的实现—这些实现可都是对应用程序的基础性支撑啊—你再去写应用程序的时候,应用程序中用到的多线程,定时器,同步锁机制等等等等,使用共享库API的时候,联系到操作系统,从而把对该API的文档描述同自己所了解到的这些方面在内核中的相应支撑性实现结合起来进行考虑,这会指导你选择使用哪一个API接口,选出效率最高的实现方式。对系统编程颇有了解的话,对应用编程不无益处,甚至可以说是大有好处。