第一篇:嵌入式行业调查总结报告
行业调查总结报告
一、嵌入式工程师个人基本情况
在“2012-2013年度中国嵌入式开发从业人员调查”活动中,针对行业内嵌入式工程师个人基本情况的调查,除了延续前四届调查问卷的专业角度和务实的关注点,对公众普遍关注的工作经验、学历、薪资范围等关键项着手进行数据的汇总和分析之外,我们还增加了嵌入式工程师地域分布的调查。同时也综合之前调查汇总的结果数据,通过纵向的对比和分析,力求更全面地呈现出一个直观的、在时间跨度上的变化趋势。
1、工作经验
来自华清远见2012-2013年度的行业调查数据的结果显示,目前从事嵌入式开发“不到1年”和“1-2年”的工程师所占的比例依然是最大的,分别是29%和25%,占总参与调研人数的54%,对比去年增加了4个百分点,而具备相对丰富开发经验的嵌入式工程师(2年以上工作经验)则占总调研人数的46%。对比2008至2012年这几年的调查数据,我们不难得出这样的结论:伴随着整个嵌入式行业的快速稳步发展,嵌入式专业领域内技术研发人才分布已经呈现出日趋合理的比例结构,过去的一年,有更多的一线研发工程师投身到嵌入式这一热门行业中,并且继续呈现出逐年增长的趋势。结合本报告后面关于“企业人才需求现状”的调查结果,我们也不难分析出,嵌入式企业的发展速度和专业人才的成长速度依然有一定的差距,行业内专业研发工程师供不应求的状态扔将会持续。嵌入式开发涉及领域极广,嵌入式产品在日趋智能的工作和生活中也无处不在,巨大的市场发展空间将为更多投身嵌入式领域的工程师提供更为广阔的职业发展平台,我们相信,伴随着未来几年更多的专业嵌入式人才的加盟,这个行业将在坚实的步伐中高昂挺进全盛期。
2、学历要求
来自2012-2013年度的调查统计数据显示,嵌入式开发从业人员的学历仍然以本科(60%)和硕士(23%)居多,占所有参与调查人员的 83%,和去年调查报告结果基本持平。从中可以看出:在整个嵌入式行业的从业人员中,本科生和研究生凭借其扎实的理论功底和良好的综合素质,依然是嵌入式开发从业者的主要群体,并且在未来一段时间内也将持续稳居此项调查的前两位。同时,我们也可以进一步得出结论:在社会生活压力不断增大、大学生就业率更低、难度更高的今天,高校专业学科建设和教学改革的步伐越来越快,嵌入式及相关专业在大学校园内的普及和发展也达到了前所未有的速度。在高校更加贴近用人企业真实需求的实训模式的引导下,越来越多的计算机、电子、自动化等相关专业及物理、数学、信息工程等基础专业的本科生和研究生开始将自己的职业规划定位到高薪诱人且发展前景极为广阔的专业嵌入式开发领域。而作为一个具有庞大基数的群体,本科生势必将成为未来解决嵌入式人才供不应求问题的一个巨大突破口,而对于这样一个蓬勃发展的专业领域来说,也势必将为更多大学生提供更高质量的就业机会,从而有效推动相关专业的大学毕业生与企业人才真实需求的无缝对接。
3、地域分布
嵌入式行业从业人员的地域分布为本年度调查活动的新增调研项目,调查统计数据显示,嵌入式开发从业人员主要集中在北京、深圳、上海、广州、成都等一线城市,分别占总调研人数的18%、13%、11%、9%、8%,总计占59%。这一调研数据显示,高新技术企业密集的大城市仍然是广大嵌入式开发者获取更多工作机会及长远职业发展空间的首选。随着国家中西部开发的不断加强以及更多创新产业园和国际知名企业的入驻落户,武汉、西安等中西部城市也将呈现越来越旺盛的嵌入式人才需求,相信这将为更多的嵌入式开发者提供更为广阔的地域发展空间及就业机会,任何城市经济的发展,都离不开众多专业人才的加入。
4、薪资水平
来自华清远见2012-2013年度的调查统计数据显示,嵌入式行业从业人员月薪为3000-8000元的比例占到69%,与去年保持一致,月薪3000以下的比例减少了一个百分点,8000元以上高薪部分的比例略有增加。结合本次调查在职工程师“工作经验”项目的统计结果可以看出,工作在 1-2年的工程师薪水基本会在3000-8000元的范围,而随着工作年限的增加,薪资水平也会有较明显的提高。对于嵌入式工程师来说,“经验”会显得尤为重要,相比其他IT从业人员,嵌入式工程师的开发经验将会使薪水增长更快。当然对于新入行的嵌入式工程师来说,也将面临巨大的机遇,从个人职业发展角度来看,未来将会有更大的发展空间。该项调查通过客观的数据分析结果,全面反映了嵌入式开发从业人员的一个整体薪资待遇情况,显然由于整个嵌入式行业正处于高速发展期,必然使得专业人才的薪资发展空间与其个人专业技术经验的积累直接相关。人才永远是企业发展的核心动力,而嵌入式工程师作为一个高薪诱人、极具成长空间及发展潜力的专业技术岗位,也必将成为推动整个嵌入式行业更加快速地向前迈进的中坚力量。
二、嵌入式行业公司的基本状况
接下来的调查是针对与技术工程师息息相关的嵌入式行业中众多产品研发企业的发展现状,以期能够帮助大家从另外一个角度,借助更广阔的视野来分析了解整个嵌入式行业的现状。结合嵌入式企业在研发产品应用及核心技术领域的特点,本部分调查内容主要从“所属行业分布情况、公司规模、软件开发平台、软件开发调试工具、软件开发语言、硬件开发平台、处理器芯片、软硬件人员安排、未来嵌入式操作系统首选”等方面展开,其中本年度调查中新增的项目包括:软件开发调试工具、处理器芯片、未来嵌入式操作系统首选等项目,以帮助大家更加全面而有针对性地了解嵌入式行业内,专业研发企业的整体状况及未来的技术发展趋势。
1、所属行业分布情况
作为智能设备及终端产品的核心基础,嵌入式技术的应用已经渗透到社会工作及生活的各个领域。由于嵌入式技术的成熟应用,也进一步加速了移动互联网、物联网及云计算的产业化进程。来自2012-2013年度的行业调查数据显示,目前嵌入式产品应用最多的三大领域依然是“消费电子、通信设备、工业控制”,所占比例分别是23%、17%和13%,三大领域所占比例之和占53%,其中消费电子所占比例将相较去年有明显增长,相信这与智能手机、平板电脑等移动设备的大面积普及有直接关系。而占据9%的“其他”一项选择中,参与调查者主要选择的是“电力设备、智能电网、物联网、仪器仪表、教育”等行业。我们有理由相信,这些都充分表明,未来嵌入式系统将会走进IT产业的各个领域,成为推动整个产业发展的核心中坚力量。
2、公司规模
从“公司规模”调查项的统计结果可以看出,100人以内的小型公司所占比例为49%,基本上接近一半,100-500人的中型公司所占比例为 29%,这和传统的IT企业规模构成差别还是比较大,这恰恰说明了嵌入式系统充分结合行业应用、具有灵活定制性的特点。嵌入式系统应用领域非常广泛,在每个典型的应用领域内都要求企业具备一定的专注性和专业性,这与传统的IT行业经常会在某个领域内出现垄断的大型企业的局面有所不同。
3、软件开发平台的选择
来自华清远见2012-2013年度的调查统计数据显示,在嵌入式产品研发的软件开发平台的选择上,嵌入式Linux仍以42%的市场份额遥遥领先于其他嵌入式开发软件平台,由此可见,Linux凭借其得天独厚的优势和广泛的应用领域,依然成为众多嵌入式企业研发团队的首选。而作为移动互联网的重要切入点,智能手机操作系统平台也吸引了越来越多的开发者加入,Android智能手机操作系统平台以绝对的优势(16%)成为手机操作系统平台首选,市场份额也在逐年提升,对比去年的调研数据,虽然iOS操作系统在过去的一年增长幅度高于Android,但与Android操作系统的市场占有率仍然有一定的差距,以5%的比例屈居手机操作系统平台第二。在对华清远见老学员的回访中,很多嵌入式linux就业班毕业的学员,目前也呈现出软硬件各方向的多元发展趋势,也有部分毕业学员直接进入Android移动开发领域,由此可见,嵌入式Linux的学习无疑给众多学员提供了更为广阔的职业发展空间,究其原因主要是在于Android手机操作系统是在Linux内核基础上开发的,尤其在底层部分,两个系统基本是一样的,对于之前一直从事Linux开发的工程师来说,转向Android平台开发是比较轻松的事。而在新兴物联网领域,嵌入式作为物联网产品的核心技术之一,也将为嵌入式系统提供更为广阔的产业发展空间。嵌入式Linux的长远发展空间、Android、iOS等平台智能设备的广泛应用、物联网的巨大产业发展空间,所有这些与嵌入式相关的行业新动向,无疑为更多迈入嵌入式开发的初学者提供更好的就业机会和职业发展前景。
4、软件开发调试工具的选择
软件开发调试工具的选择为本年度新增调研项目,调查统计的数据结果显示,keil和IAR分别以37%、24%的比例成为嵌入式开发者的主要调试工具,总计占所有参与调研人数的61%。合适的调试工具的选择使用,可以大大加快产品的开发进度。这也使得在调试工具层面的技术支持和发展成为研发过程中需要考虑的因素之一。同时,这个调查结果也为初学者如何选择开发工具提供有价值的参考。
5、硬件开发平台的选择
从2012-2013年度的调查统计数据中可以看到,ARM处理器(包括ARM7/9/
11、Cortex-M系列、Cortex-A系列)毫无疑问地占据了嵌入式处理器绝大部分的市场份额(74%),在ARM及其合作伙伴的市场推动下,ARM7/9/11较前一年的统计结果,出现了非常明显的下滑,市场份额下降了13个百分点,而最新ARMv7架构的Cortex系列处理器成功布局嵌入式移动计算领域并取得了快速的发展,其中定位低端的Cortex-M系列处理器和定位高端的Cortex-A处理器较一年前的统计结果,分布有两个百分点的增长,已毋庸置疑地成为ARM处理器应用的主流。随着物联网产业的快速发展,对低功耗微控制器的需求必然会更进一步地推动Cortex-M系列处理器的快速应用,而高性能智能手机、平板电脑及更多智能终端设备的开速普及则使得Cortex-A系列处理器获得了快速发展的机会。
6、处理器芯片的选择
处理器芯片的选择为本年度新增的调研项目,据调查统计数据的结果显示,TI(德州仪器)和SAMSUNG(三星),成为最受开发者欢迎的嵌入式处理器芯片提供商,占据了接近一半(47%)的市场份额,其他知名厂家处理器芯片所占市场份额分布为:Qualcomm(高通)10%、Intel(英特尔)8%、NXP(恩智浦)6%、Atmel(爱特梅尔)5%、Nvidia(英伟达)5%、Freescale(飞思卡尔)4%、Renesas(瑞萨)3%,除以上厂家之外的其他处理器则占总体市场份额的12%。
7、软件开发语言的使用
来自2012-2013年度华清远见的调查统计数据显示,在嵌入式产品研发的软件开发语言的使用上,C语言仍然是嵌入式开发过程中最普遍使用的语言,其市场份额继续保持领先(70%),这一统计结果再一次表明,无论是在传统的工业控制领域、通信领域,还是迅猛发展的消费电子,安防控制、信息家电等领域,C语言均是嵌入式开发语言的首选。对比去年的调研数据,Java语言和Objective-C的使用比例有所上升,究其原因不难看出,Android智能手机操作系统的开发需求推动了java语言的广泛使用,成为在嵌入式领域内最受欢迎的高级语言,而iOS智能手机操作系统的开发则拓展了Objective-C语言的开发人群。C++所占比例为10%,位居第三。汇编语言所占比例3%,与去年持平。
8、软硬件人员的安排
2012-2013年度的调查数据显示,有一半从事嵌入式产品研发的企业都是采用软硬件人员分工合作完成产品的开发方式(50%),与去年的调查数据(62%)横向对比看,这一选项所占的比例也呈现出下降的趋势(下降了12个百分点)。而“人员不分开,要求员工同时具备硬件和软件开发能力,可独立完成项目”的公司所占比例,由去年的22%上升到今年的29%(上升了7个百分点)。从这一转变,我们可以看到:嵌入式系统作为一个软硬件结合的系统,需要嵌入式开发工程师在软件和硬件两个方面都不断深化学习,同时具备软硬件开发能力的工程师,将在求职过程中拥有更多的选择机会以及更大的成长空间。同时,从各大招聘网站的最新搜索数据中也可以看出,目前嵌入式软件开发人才的需求量远远大于纯硬件开发人才,嵌入式系统项目研发差不多80%以上的工作量都是在软件部分,软件是嵌入式系统最核心的部分,也是体现嵌入式系统优势的最关键部分,企业对嵌入式软件开发人才的需求必将持续上涨。
9、未来嵌入式操作系统首选
在本年度新增调研项目中新增了对未来1-2年内嵌入式行业会占主导地位的嵌入式操作系统的调查,调查统计数据显示,嵌入式Linux仍然是未来几年内,嵌入式工程师认可的最具发展潜力的首选嵌入式操作系统,所占比例接近一半(47%),而Android智能手机操作系统,也受到了越来越多嵌入式工程师的关注,并对其在移动手机操作系统中广阔的发展空间及发展潜力充满了期待。由此可见,作为开源系列的两款优秀的嵌入式操作系统(嵌入式Linux及 Android),其开源的特性,无疑使其在市场竞争中,具备了最强大的竞争优势及用户基础,用户就是王道。
获取专业知识的途径
1、首选搜索引擎
在嵌入式工程师对搜索引擎使用习惯的调查中,百度和Google的使用率依然是平分秋色,这和这两个搜索引擎在国内市场份额的实际占有率有很大差别,也与正打得火热的国内搜索引擎市场的实际状况有很大的不同。究其原因,这与嵌入式工程师会经常搜索国外的最新技术资料有直接关系,Google在搜索国外网站技术资料的广度和深度上具有明显的优势。嵌入式技术更新非常快,对于开发人员来说,必须具备较强的学习能力,善于通过各种渠道更新自身的知识体系,关注最新技术发展热点,适应行业最新发展需求。
2、微博平台
由于微博在发布信息及信息传播上具备速度快的明显优势,目前已成为主流的媒体平台之一。以成为。通过2012-2013年度的调查数据,我们可以看出,嵌入式工程师对微博的热度虽然明显低于大众用户,但关注微博的嵌入式工程师也在慢慢增多。对比去年的调研数据,很少使用微博的用户,下降了18个百分点(由去年的65%下降到今年的47%)。使用新浪和腾讯微博的用户比例分别是35%和16%,也有更多的行业媒体与嵌入式企业通过微博手段发布行业资讯及企业动态,吸引更多的嵌入式工程师关注,相信这对于企业品牌及产品形象的传播将会提供更多的帮助。
四、嵌入式工程师对职业生涯的看法
作为一个正在高速发展的行业,许多技术工程师和准备进入行业的技术爱好者都非常关注嵌入式领域未来的职业规划和行业整体的发展状况。本部分调查则主要从“企业人才需求现状、对工作薪资的满意度、未来一年薪资涨幅、如何看待培训以及对未来职业人生的规划”等方面进行问题设置,希望能从各个角度上展现嵌入式工程师对目前工作状态的的满意程度和真实需求。
1、企业人才需求现状
来自2012-2013年度的调查数据显示,在整个行业发展的过程中,嵌入式人才需求目前仍然是供不应求,74%左右参与调查的一线工程师均表示,自己所属的公司目前都急缺嵌入式开发方面的专业技术人才。虽然人才缺口仍然很大,但连续4年的调查数据显示,这一比例已在持续下降(2011年比2010年低了5个百分点,2012年比 2011年低了3个百分点,2013年比2012年低了1个百分点),这也表明,随着国家政策的更加重视、市场的整体推动及多渠道的嵌入式人才培养体系的不断完善,嵌入式开发人才需求瓶颈的问题,在逐步得到缓解,整个嵌入式专业人才市场的供求关系正在向更健康的方向发展和迈进。但是企业对专业人才需求量的缺口依然非常大,整个嵌入式行业的发展也需要更多专业嵌入式人才的加盟,而且越早进入这个行业,优势越大。
2、对工作薪资的满意度
本年度薪资满意度的调查结果显示,有63%的工程师对目前的薪资水平表示非常满意或基本满意,比去年同期有4个百分点的增长。另外有37%的人对目前薪资表示了不满意。结合“薪资分布”调查项的结果,本年度的薪资水平与工程师的满意度基本保持了同等比例的增长,工程师对自身能力的提升充满了信心,对行业发展的整体趋势表现出非常积极的态度。
3、未来一年薪资涨幅
来自华清远见2012-2013年度的调查统计,针对“未来一年薪资涨幅”的调查结果显示,几乎所有在职工程师对未来一年薪资的增长都充满了信心,其中接近68%的人预测涨幅会在40%以内,16%的预测涨幅会在41-60%之间,比去年上升了5个百分点,13%的人预测涨幅会在61%以上,比去年上升了5个百分点,以上数据要高于整个IT行业的平均水平,这充分说明在嵌入式领域,开发人员对自身的发展有更高的要求和更大的信心,对行业未来的发展也表示出积极乐观的态度。嵌入式技术的成熟应用推动了很多产业的高速发展,例如物联网、移动互联网、云计算等,这也让嵌入式工程师看到了未来自身的更高价值。对于用人企业来说,开发人员对未来薪资有更加的期望会增加企业开发成本,企业必须通过不断推出有市场竞争力的产品,更高效的内部管理,才能留住更多的人才,保证企业利润的持续增长。
4、未来职业人生的规划
在2012-2013年度的调查统计结果中,“对未来职业人生的规划”一项,接近66%的工程师给予了肯定的评价,其中48%的工程师表示希望提升自己的层次,期待目前所在公司能给自己更大的成长空间。18%的工程师则表示喜欢自己现在的公司以及工作职位,短时间内应该不会有较大的改变。考虑跳槽的工程师所占比例为23%,比去年上升了4个百分点,打算自己创业的为7%,其他选项均占较小比例。对比去年同期的数据,我们不难看出,由于行业内专业人才的持续紧缺,嵌入式研发工程师在职业发展上拥有更多的主动选择权。
第二篇:嵌入式总结报告
嵌入式实验报告
期末论文
学生姓名: 杨佳洁 学 号: 11570118 班 级: 11计算机2班 指导教师: 黄 静
2014年5月20日
嵌入式程序设计与应用课程主要以理论与实验结合的方式讲授,包括设备驱动,信号转换I、II,帧缓冲设备驱动和触摸屏这五部分,通过学习,我逐渐加深了对linux的理解。
在模块驱动部分,通过老师的讲解,我了解了Linux驱动程序的结构,掌握了程序驱动的结构体和操作函数这些基本知识,尤其知道了驱动程序负责将应用程序如读、写等操作正确无误的传递给相关的硬件,并使硬件能够做出正确反应的代码。驱动程序隐藏了硬件的工作细节,应用程序只需要通过一组标准化的接口实现对硬件的操作。
S3C2410X 芯片内部集成了一个8 路10 位A/ D 转换器,其中第5、第6 通道可用于支持触摸屏接口,而AD转换器的功能是将输入的模拟信号转换成数字信号,驱动程序主要依赖于ADC控制寄存器、ADC数据寄存器等进行读写操作。而实验过程中涉及的驱动程序加载则是之前未曾接触的知识,所以在知道了编译方式分为动、静两种方式后,我掌握了如何对程序进行动态编译方式。
系统有多个显示卡时,Linux 下可支持多个帧缓冲设备,FrameBuffer是 Linux 为显示设备提供的一个接口,把显存抽象后的一种设备。课程中我主要理解了相关程序代码的分析,尤其对FB程序中内存的申请以及填充描点函数有了较为详细的理解。
在触摸屏驱动部分,理论方面我熟悉了解了触摸屏的原理,即检测触摸点被压下后的电压值来返回坐标。通过代码分析,掌握了触摸屏进行输出标定、与LED显示器配合的过程。课程的最后一部分是AD转换,与之前的转换不同之处在于本次目的是将采集的数据呈现在html网页中。所以在实验过程中,我在掌握boa服务器的编译和配置之外还掌握了制作网页的基本结构。
当然虽然基本理解了老师讲解的理论知识但是在实验中仍然遇到了很多问题。如在文件共享时由于忽略pc机与虚拟机必须在同一网段的条件导致无法使用提供的src;修改文件中涉及的路径与实际情况不相符使程序编译出现错误。还有一些尚未解决的为题,在触摸屏实验部分“消除默认路径”部分,有时会出现“没有此进程”的错误提示,通过重启linux可避免这个错误,但是出现错误的原因不是很清楚。
8周的课程结束了,它拓展了我对嵌入式应用涉及的领域的认识,掌握了很多之前没有接触过的知识,也在老师和同学的帮助下比较顺利地完成了实验,尤其是对在linux系统及xshell下操作的基本命令有了很大的扩展和更加熟练的使用。但是老师在讲解理论知识的时候主要关注的是程序代码的解析,所以在做实验时对比较复杂的实验步骤理解的不够透彻,希望自己日后可以在不断的锻炼中逐渐理解。相信无论是理论知识还是实验中的实践经验都对我日后深入学习嵌入式有很大的帮助。
第三篇:《嵌入式技术》学习总结报告
《嵌入式技术》学习总结报告
目录
一、嵌入式系统简介............................................................................................2
1.1 嵌入式系统的定义和特点....................................................................2 1.2 嵌入式系统的构成.................................................................................3 1.3 嵌入式系统的应用.................................................................................5 1.4 嵌入式系统的工具链.............................................................................6 1.5 嵌入式系统的发展趋势.........................................................................7
二、嵌入式系统的学习实践................................................................................8
三、实验内容........................................................................................................9
3.1ZedBoard-Zynq7000介绍........................................................................9 3.2 软件的安装设置...................................................................................10 3.3 main函数分析.......................................................................................10 3.4 任务管理...............................................................................................12
3.4.1 任务优先级.........................................................................................13 3.4.2 任务的堆栈.........................................................................................13 3.4.3 任务的状态.........................................................................................14
3.5 就绪任务的管理...................................................................................15 3.6 任务调度...............................................................................................17
3.6.1 任务抢占.............................................................................................17 3.6.2 轮转调度.............................................................................................18 3.6.3 调度时机.............................................................................................19 3.6.4 调度实现.............................................................................................19
3.7 上下文切换...........................................................................................20
四、工作总结......................................................................................................2
21/ 22
《嵌入式技术》学习总结报告
一、嵌入式系统简介 1.1嵌入式系统的定义和特点
嵌入式操作系统(Embedded Operation System,EOS)是一种“嵌入机械或电气系统内部、具有专属功能的计算机系统”,通常要求实时计算性能。被嵌入的系统通常是包含硬件和机械部件的完整设备。相反,通用计算机如个人计算机则设计灵活,以满足广大终端用户的需求。现在常见的很多设备都采用嵌入式系统控制。EOS负责嵌入系统的全部软、硬件资源的分配、任务调度,控制、协调并发活动。它必须体现其所在系统的特征,能够通过装卸某些模块来达到系统所要求的功能。嵌入式系统与对象系统密切相关,其主要技术发展方向是满足嵌入式应用要求,不断扩展对象系统要求的外围电路(如ADC、DAC、PWM、日历时钟、电源监测、程序运行监测电路等),形成满足对象系统要求的应用系统。因此,嵌入式系统作为一个专用计算机系统,要不断向计算机应用系统发展。因此,可以把定义中的专用计算机系统引伸成,满足对象系统要求的计算机应用系统。“嵌入性”、“专用性”与“计算机系统”是嵌入式系统的三个基本要素。对象系统则是指嵌入式系统所嵌入的宿主系统。另外,在理解嵌入式系统定义时,不要与嵌入式设备相混淆。嵌入式设备是指内部有嵌入式系统的产品、设备,例如,内含单片机的家用电器、仪器仪表、工控单元、机器人、手机、PDA等。
嵌入式系统的特点与定义不同,它是由定义中的三个基本要素衍生出来的。不同的嵌入式系统其特点会有所差异。与“嵌入性”的相关特点:由于是嵌入到对象系统中,必须满足对象系统的环境要求,如物理环境(小型)、电气/气氛环境(可靠)、成本(价廉)等要求的特点。与“专用性”的相关特点:软、硬件的裁剪性。满足对象要求的最小软、硬件配置等。与“计算机系统”的相关特点:嵌入式系统必须是能满足对象系统控制要求的计算机系统。与上两个特点相呼应,这样的计算机必须配置有与对象系统相适应的接口电路。
目前,已推出一些应用比较成功的EOS产品系列。随着Internet技术的发展、信息家电的普及应用及EOS的微型化和专业化,EOS开始从单一的弱功能向高专业化的强功能方向发展。嵌入式操作系统在系统实时高效性、硬件的相关依赖性、软件固化以及应用的专用性等方面具有较为突出的特点。EOS是相对于一般操作系统而言的,它除具备了一般操作系统最基本的功能,如任务调度、同步机制、中断处理、文件功能等外,还有以下特点:
(1)可装卸性。开放性、可伸缩性的体系结构。
(2)强实时性。EOS实时性一般较强,可用于各种设备控制当中。(3)统一的接口。提供各种设备驱动接口。
(4)操作方便、简单、提供友好的图形GUI,图形界面,追求易学易用。
2/ 22
《嵌入式技术》学习总结报告
(5)提供强大的网络功能,支持TCP/IP协议及其它协议,提供TCP/UDP/IP/PPP协议支持及统一的MAC访问层接口,为各种移动计算设备预留接口.(6)强稳定性,弱交互性。嵌入式系统一旦开始运行就不需要用户过多的干预,这就要负责系统管理的EOS具有较强的稳定性。嵌入式操作系统的用户接口一般不提供操作命令,它通过系统调用命令向用户程序提供服务。
(7)固化代码。在嵌入系统中,嵌入式操作系统和应用软件被固化在嵌入式系统计算机的ROM中。辅助存储器在嵌入式系统中很少使用,因此,嵌入式操作系统的文件管理功能应该能够很容易地拆卸,而用各种内存文件系统.(8)更好的硬件适应性,也就是良好的移植性.1.2嵌入式系统的构成
嵌入式系统按形态可分为设备级(工控机)、板级(单板、模块)、芯片级(MCU、SoC)。嵌入式系通常由嵌入式处理器、外围设备、嵌入式操作系统和应用软件等几大部分组成。嵌入式系统与对象系统密切相关,其主要技术发展方向是满足嵌入式应用要求,不断扩展对象系统要求的外围电路(如ADC、DAC、PWM、日历时钟、电源监测、程序运行监测电路等),形成满足对象系统要求的应用系统。因此,嵌入式系统作为一个专用计算机系统,要不断向计算机应用系统发展。
(1)嵌入式处理器
嵌入式处理器是嵌入式系统的核心部件。嵌入式处理器与通用处理器的最大不同点在于其大多工作在为特定用户群设计的系统中。它通常把通用计算机中许多由板卡完成的任务集成在芯片内部,从而有有利于嵌入式系统设计趋于小型化,并具有高效率、高可靠性等特征。嵌入式处理器大概可分为两类。一类是普通微处理器:使用独立的集成电路存储器和外设。另一类是单片机:具有片上外设,降低了功耗、尺寸和成本。嵌入式系统的软件是为某种应用定制的,而不是像个人计算机那样的由终端用户安装的商品,因此可以使用各种不同的基本CPU架构:既有范纽曼型架构也有不同程度的哈佛结构;既有RISC也有非精简指令集处理器;字长从4位到64位甚至更高,当然最典型的仍然是8/16位。多数架构由几家不同的公司生产,使用了大量不同的变量和类型。嵌入式系统也会使用通用型微处理器,但比单片机需要更多外围电路。大的硬件厂商会推出自己的嵌入式处理器,因而现今市面上有1000多种嵌入式处理器芯片,其中使用最为广泛的有ARM、MIPS、PowerPC、MC6800等。
SoC是一种常见的为超大批量嵌入式系统设计的可配置阵列。它在单个芯片内包含了多处理器、乘法器、缓存和接口,形成一个完整的系统;通过特定用途集成电路或现场可编程门阵列来实现。
(2)嵌入式主板
3/ 22
《嵌入式技术》学习总结报告
嵌入式主板一般理解为嵌入在设备里面做控制、数据处理使用的CPU板,也就是设备的“大脑”。嵌入式到设备里面,当然就会对主板的体积以及功耗(嵌入式主板的散热问题)有比较严格的要求。所以一般来讲嵌入式主板会具备尺寸小、高集成度、低功耗等特性。目前嵌入式主板比较常见的一般有两大类:基于X86的嵌入式主板(一般使用INTEL、威盛、AMD或其他产家的X86芯片如:台湾RDC、台湾ICOP等等);基于RISC的ARM 嵌入式主板(由ARM公司授权生产,每个芯片产家各有自己特殊的功能)。嵌入式的ARM板一般都是板载CPU,而基于x86 CPU的主板则不一定。基于RISC 的ARM板一般都是根据产品的要求做具体设计,所以主板在尺寸外观上面通常没有做定义。
PC/104和PC/104+是小型、小批量嵌入式强固系统的标准之一,大多基于x86架构;通常比标准PC要小,而比多数简单的8/16位嵌入式系统要大;使用MSDOS、Linux、NetBSD,或实时嵌入式操作系统如MicroC/OS-II、QNX、VxWorks。有时这些主板也会使用非x86处理器。在某些应用中,小巧、高效并非主要关注点,因而可以使用与x86型PC主板兼容的部件。VIA EPIA系列板卡则可以弥补这个空缺,它兼容PC但是高度集成、体积较小,或提供其他对嵌入式工程师很有吸引力的特性。这种方法的好处是低成本商品也可以使用通用的软件开发工具。用这种方法构建的系统仍然是嵌入式系统,因为它嵌入在较大的设备中、用于满足单一用途。例如ATM和电子游戏机,它们都包含了针对各自应用的代码。
多数嵌入式主板都不是围绕PC设计的,也不使用ISA或PCI总线。如果采用SoC处理器,用标准总线连接分立组件就不是上策,此外软硬件开发环境都可能会很不一样。一种常用的设计模式是采用小型系统模块——也许只有商务卡片大小,容纳高密度的BGA芯片如ARM处理器和外设、用于存储的外部闪存、作为内存的DRAM。模块厂商通常会提供引导软件和操作系统选项,一般包括Linux和一些实时操作系统。这些模块由熟悉专业测试方法的组织大批量生产,配合较小批量的、带特殊应用外设的定制主板使用。
(3)外围设备
外围设备是指在一个嵌入式系统中,除了嵌入式处理器以外用于完成存储、通信、调试、显示等辅助功能的其它部件。根据外围设备的功能可以分为存储器、接口和人机交互。嵌入式系统通过外设与外部通信串行,包括通信接口:RS-232、RS-
422、RS-485等;同步串行通信接口:I2C、SPI、ESSI等;USB;多媒体卡:SD卡、CF卡等;网络:以太网、LonWorks等;现场总线:CAN总线、LIN总线、PROFIBUS等;定时器:PLL、捕获比较模块和时间处理单元;分立IO:GPIO;模拟-数字/数字-模拟转换(ADC/DAC);调试接口:JTAG、ISP、ICSP、BDM端口、BITP、DP9端口等。
(4)嵌入式操作系统
4/ 22
《嵌入式技术》学习总结报告
在大型嵌入式应用系统中,为了使嵌入式开发更方便、快捷,需要具备一种稳定、安全的软件模块集合,用以管理存储器分配、中断处理、任务间通信和定时器响应,以及提供多任务处理等,即嵌入式操作系统。嵌入式操作系统的引入大大的提高了嵌入式系统的功能,方便了应用软件的设计,但同时占用了宝贵的嵌入式系统资源。一般在比较大型或需要多任务的应用场合才考虑使用嵌入式系统。嵌入式系统常常需要有实时要求,所以嵌入式操作系统往往又是“实时操作系统”。早期的嵌入式系统几乎都用于控制目的,从而或多或少都有些实时要求,所以从前“嵌入式操作系统”实际上是“实时操作系统”的代名词。今年来由于手持式计算机和掌上电脑等设备的出现,也有了不带实时要求的嵌入式系统。另外一方面,由于CPU速度的提高,一些原先认为是“实时”的反应速度现在已经很普遍了。这样,一些原先需要在“实时”操作系统上才能实现的应用,现在已不难在常的操作系统上实现。在这样的背景下,“嵌入式操作系统”和“实时操作系统”就成了不同的概念名词。
常见的嵌入式操作系统有: Android、Firefox OS、iPhone OS、uC/OS、uCLinux、VxWorks、pSOS、Nucleus、PalmOS、Windows CE、Windows XP Embedded、Windows Vista Embedded、嵌入式Linux、ECOS、QNX、Lynx、Symbian、Arm-Linux等。
(5)应用软件
嵌入式系统的应用软件是针对特定的实际专业领域,基于相应的嵌入式硬件平台,并能完成用户的预期任务的计算机软件。用户的任务可能有时间和精度的要求。有些应用软件需要嵌入操作系统的支持,但在简单的场合下不需要专门的操作系统。由于嵌入式应用软件对成本十分敏感,因此,为减少系统成本,除了精简每个硬件单元的成本外,应尽可能的减少应用软件的资源消耗,尽可能的优化。
1.3嵌入式系统的应用
嵌入式计算机在应用数量上远远超过了各种通用计算机,一台通用计算机的外部设备中就包含了5-10个嵌入式微处理器。嵌入式系统技术具有非常广阔的应用前景,其应用领域可以包括:工业控制:业过程控制、数字机床、电力系统、电网安全、电网设备监测、石油化工系统;交通管理:在车辆导航、流量控制、信息监测与汽车服务方面,嵌入式系统技术已经获得了广泛的应用,内嵌GPS模块,GSM模块的移动定位终端已经在各种运输行业获得了成功的使用;信息家电:这将称为嵌入式系统最大的应用领域,冰箱、空调等的网络化、智能化将引领人们的生活步入一个崭新的空间。即使你不在家里,也可以通过电话线、网络进行远程控制。在这些设备中,嵌入式系统将大有用武之地。家庭智能管理系统:水、电、煤气表的远程自动抄表,安全防火、防盗系统,其中嵌有的专用控
5/ 22
《嵌入式技术》学习总结报告
制芯片将代替传统的人工检查,并实现更高,更准确和更安全的性能;POS网络及电子商务:公共交通无接触智能卡(Contactless Smartcard, CSC)发行系统,公共电话卡发行系统,自动售货机,各种智能ATM终端将全面走入人们的生活,到时手持一卡就可以行遍天下。环境工程与自然:水文资料实时监测,防洪体系及水土质量监测、堤坝安全,地震监测网,实时气象信息网,水源和空气污染监测。在很多环境恶劣,地况复杂的地区,嵌入式系统将实现无人监测。军事领域:战机、火控系统、导弹、火箭。
1.4嵌入式系统的工具链
工具对工程师设计开发的成功所起的决定性因素也在提高。应用越来越复杂,工具的选择也越来越重要。现在市场上有些工具是免费的,也有很多商业工具。无论是免费的还是商业的,工具的好坏往往会影响整个工程的最终结果。现在的嵌入式系统开发工具非常多样化,市场分散。目前据不完全统计,全世界嵌入式处理器的品种数已经超过1000多种,流行体系结构有30多个系列,在其上运行的操作系统环境也非常多样化,包括VxWorks、QNX、Linux、Nuclears、WinCE等等。不仅各种操作系统有各自的开发工具,在同一系统下不同的开发阶段也有不同的开发工具。如在用户的目标板开发初期,需要硬件仿真器来调试硬件系统和基本的驱动程序,在调试应用程序阶段使用交互式的开发环境进行软件调试,在测试阶段需要专门的测试软件进行功能和性能的测试等等。对于设计人员来说,要掌握、驾驭这样庞大的开发体系是一件非常困难的事情,而且编程的复杂度相当大。
在选择工具时,主要需要注意以下几个方面:编译器的性能和稳定性、代码覆盖、仿真(不仅是对CPU的仿真,还有对其他硬件和设备的仿真)。工具链,一般由编译器、连接器、解释器和调试器组成,在嵌入式开发中一般指交叉工具链。在嵌入式开发中,往往在机器A中使用工具链生成可执行程序,而在机器B中执行程序。而机器A和机器B的指令系统往往不同,常见的是利用x86机器上的工具链开发基于ARM或MIPS的嵌入式系统。工具链的构成往往与目标对象和使用工具链的操作系统平台有关。通常构建交叉工具链有如下三种方法:(1)分步编译和安装交叉编译工具链所需要的库和源代码,最终生成交叉编译工具链。该方法相对比较困难,适合想深入学习构建交叉工具链的读者。如果只是想使用交叉工具链,建议使用下列的方法二构建交叉工具链。(2)通过诸如Crosstool等脚本工具来实现一次编译,生成交叉编译工具链。该方法相对要简单许多,并且出错的机会也非常少,建议大多数情况下使用该方法构建交叉编译工具链。(3)直接通过网上下载已经制作好的交叉编译工具链。该方法的优点不用多说,当然是简单省事,但该方法有一定的弊端就是局限性太大,因为毕竟是别人构建好的,也就是固定的,没有灵活性,所以构建所用的库以及编译器的版本也许并不适合6/ 22
《嵌入式技术》学习总结报告
你要编译的程序,同时也许会在使用时出现许多莫名其妙的错误,建议慎用此方法。
对于新手而言,直接下载一些厂商提供的集成开发环境(IDE),能够快速入手嵌入式开发。常用的IDE有Keil MDK、Xilinx ISE、Xilinx EDK、TKStudioIDE、Atmel的AVR Studio(for AVR以及AVR32)、Microchip的MPLab(for PIC、PIC18与dsPIC等)、Aiji的EDS(for ARM),南京万利的MedWin(for 8051)、IAR Embedded Workbench等。“整体解决方案是毒药”,我们使用IDE但是不要迷信整体解决方案。
嵌入式系统开发工具的发展已经有二十多年的历史,目前开放性和开放源码成为一股强大的潮流,推动嵌入式系统设计技术向前发展,传统的嵌入式系统开发工具已不能适应这一潮流。最新的发展趋势是,使用Eclipse开放源码集成化开发环境(IDE)平台,采用插件技术,在这样的平台基础上扩展许多开发工具套件。越来越多的嵌入式系统软件供应商将Eclipse平台作为自身工具的基础,推出个性化的开发工具套件,除提供标准的编译器、编辑器、调试器,还提供增强的操作系统内核级调试手段和高级的系统分析工具,如内存泄漏检测、系统性能监控等。总之,嵌入式开发工具将向高度集成、编译优化、具有系统设计、可视化建模、仿真和验证功能方向发展。
1.5嵌入式系统的发展趋势
在嵌入式系统开发领域,技术发展的最新趋势可以从企业层面、平台层面和部件层面分别观察,其核心是以尽可能快的速度、尽可能低的成本来满足迅速变化的市场需求。(1)以往,嵌入式软件开发的技术问题主要是在工程师和开发团队的层面来解决。不同的工程师和开发项目之间可以共享的资源并没有得到足够的重视和利用,这是业界经常说的一个问题—制造每辆汽车都必须从轮子开始。共享资源、提高软件部件的可重用性,这是整个软件业界几十年来的普遍趋势,只是这个趋势在嵌入式软件领域的步伐比企业软件慢了不少。随着DSO(Device Software Optimization,设备软件优化)概念的提出,嵌入式软件的可重用性将会得到快速提高。这就是嵌入式软件在企业层面的主流趋势。(2)从开发平台层面来看,开放已经成为一种主流思想,对于开放系统首先会让人想到的就是Linux。不过,开放本身不是一种技术,而是一种包容先进技术的思路和方法。新技术往往是从封闭开始,通过走向开放而发挥更大的价值。(3)从部件层面来看,最主流的趋势是多核技术的兴起。这个趋势从处理器芯片巨头的动向可以一目了然。对于嵌入式软件工程师来讲,采用开放、高效并且能够让自己不断积累开发成果的开发平台与工具,让自己能够专注于产品功能特性的开发,而不是花费太多精力去做维护工具和基础性、重复性的功能开发。
7/ 22
《嵌入式技术》学习总结报告
二、嵌入式系统的学习实践
目前从事嵌入式开发的主要有两类人。一类是学电子工程、通信工程等偏硬件专业出身的人,他们主要是搞硬件设计,需要开发一些与硬件关系最密切的最底层软件:BootLoader、Board SupportPackage(像PC的BIOS一样,往下驱动硬件,往上支持操作系统),最初级的硬件驱动程序等。他们的优势是对硬件原理非常清楚,不足是他们更擅长定义各种硬件接口,但对复杂软件系统往往力不从心(例如嵌入式操作系统原理和复杂应用软件等)。另一类是学软件、计算机专业出身的人,主要从事嵌入式操作系统和应用软件的开发。如果我们学软件的人对硬件原理和接口有较好的掌握,我们完全也可写BSP和硬件驱动程序。嵌入式硬件设计完后,各种功能就全靠软件来实现了,嵌入式设备的增值很大程度上取决于嵌入式软件,这占了嵌入式系统的最主要工作。目前有很多公司将硬件设计包给了专门的硬件公司,稍复杂的硬件都交给台湾或国外公司设计,国内的硬件设计力量很弱,很多嵌入式公司自己只负责开发软件,因为公司都知道,嵌入式产品的差异很大程度在软件上,在软件方面是最有“花头”可做的,所以搞软件的人完全不用担心我们在嵌入式市场上的用武之地,越是智能设备越是复杂系统,软件越起关键作用,而且这是目前的趋势。
中国的学生能够在大学相关课程中充分对MCU基础知识进行学习,这已经走在了很多国家(甚至包括日本)的前面。但中国新一代工程师面对的主要问题是如何去积累经验。嵌入式系统的开发通常是硬件和软件同时进行的,其在开发过程中出现不良状况的原因有可能是硬件或是软件,有时甚至可能是两者同时发生故障。在这样的状况下,就要求从事硬件的技术人员要相当程度的懂得软件,从事软件的技术开发人员也要在一定程度上懂得硬件。另外,目前该行业存在最终产品的寿命较短的情况,这就意味着每年都有必要开发新的产品。但是从初级阶段进行开发,需要花费大量的开发成本及开发时间。因此,有效地归纳总结现有的开发成果,并有效地投入新开发中加以利用是十分重要的。
很多工程师在设计嵌入式系统的时候往往选择最底层的工具,把绝大部分的时间都花在了底层的细节,而往往忽视了创新性和系统级的把握。工程师无论是为了自身的发展还是为了所设计产品的竞争力,这两点其实都是至关重要的。
首先是“工欲善其事,必先利其器”,若有条件要尽可能采用更快更强的工具进行开发。其次是“磨刀不误砍柴工”,要尽可能挖掘集成开发软件中的资源,如花些时间去了解许多实用辅助软件,如DMA、Cache和片内带宽分析工具等。同时,在至少一个领域中具有深入的技术知识。工程师能够分析问题或是编写程序是远远不够的,他们还要能够利用自己的知识完成独特创新的设计。所以,工程师要体现自身价值,必须有系统性的眼光,能够进行有创新性的设计。在这种情况下,工程师们更多的应该从底层的编程细节中脱身,让工具去处理那些“常
8/ 22
《嵌入式技术》学习总结报告
规”事务,而工程师本身就可以专注于自己的设计或研究领域,从更高的角度来看待自己在设计的系统,而不是只见树木,不见森林。
三、实验内容
我所在的小组的实验任务,基于ZedBoard-Zynq7000的μC/OS-III代码的分析和调试,重点分析μC/OS-III操作系统的任务调度机制。
3.1ZedBoard-Zynq7000介绍
ZedBoard是一款基于赛灵思Zynq-7000可扩展处理平台(EPP)的低成本开发板,也是行业首款面向广大开源小区的Zynq-7000 EP可扩展处理平台开发工具包。开发板为基于Linux、安卓、Windows或其它操作系统/实时操作系统的设计开发提供了所需的一切。另外,该平台提供数款扩展连接器,便于用户访问处理系统和可编程逻辑。Zynq-7000 EPP紧密集成了ARM®处理系统和7系列可编程逻辑,充分利用它们的优势,并结合ZedBoard可以开发出独树一帜且功能强大的设计。
图一:ZedBoard-Zynq7000 Zynq7000系列是基于Xilinx的可编程SOC架构,集成了一个双核的ARM® Cortex™-A9 处理器,一个Xilinx可编程逻辑(PL)。Zynq7000集成有仿真芯片,提供了板载USB-JTAG编程、USB-UART,方便开发者进行调试。
9/ 22
《嵌入式技术》学习总结报告
图二:Zynq-7000 AP SoC系统框架
3.2软件的安装设置
(1)安装UART驱动。目前只有32位版本的,在windows 7以下可安装。在windows 8安装失败。
(2)安装Vivado Design Suite.选择默认安装即可。
(3)uCOS-III项目的构建。Micrium-ZC702-uCOS-III源码压缩包中有“Micrium ZC702 uCOS-III Readme.pdf”说明书。打开Xilinx SDK,安装说明书里面的步骤一步一步进行配置即可完成uCOS-III 项目的构建。
3.3main函数分析
结合《Micrium-uCOS-III-UserManual》对代码进行静态分析,最好的方法是找到程序入口函数main(ZC702_uCOSIIIApplicationapp.c),然后在main函数内逐行代码分析从而对程序的流程有一个大体的了解。在分析过程中碰到关键或感兴趣的函数或结构可以进一步跟入分析。
intmain(void){ OS_ERR os_err;
10/ 22
《嵌入式技术》学习总结报告
Xil_DCacheDisable();//关数据cache
Xil_ICacheDisable();//关 instruction cache
Reset_Handler();/* Scatter loading is complete.*/ /* Now the caches can be activated.*/
BSP_BranchPredictorEn();/* Enable branch prediction.*/
BSP_L2C310Config();/* Configure the L2 cache controller.*/
BSP_CachesEn();/* Enable L1 I&D caches + L2 unified cache.*/
CPU_Init();/* Initialize the uC/CPU services */
BSP_Init();
OSInit(&os_err);/* Initialize uC/OS-III.*/
OSTaskCreate((OS_TCB *)&AppTaskStartTCB,//任务控制块 /* Create the start task */(CPU_CHAR *)“Startup Task”,(OS_TASK_PTR)AppTaskStart,//任务地址(void *)0,(OS_PRIO)APP_CFG_TASK_START_PRIO,(CPU_STK *)&AppTaskStartStk[0],(CPU_STK_SIZE)APP_CFG_TASK_START_STK_SIZE / 10u,(CPU_STK_SIZE)APP_CFG_TASK_START_STK_SIZE,(OS_MSG_QTY)0u,(OS_TICK)0u,(void *)0,(OS_OPT)(OS_OPT_TASK_STK_CHK | OS_OPT_TASK_STK_CLR),(OS_ERR *)&os_err);
OSStart(&os_err);/* Start multitasking(i.e.give control to uC/OS-III).*/
for(;;){
11/ 22
《嵌入式技术》学习总结报告
} } 对main函数内调用的一些函数和结构做进一步分析,可知OS_TCB(ZC702_uCOSIIIuCOS-IIISourceos.h)是系统用于表示一个任务的结构,是系统的核心数据结构之一。OSInit(ZC702_uCOSIIIuCOS-IIISourceos_core.c)函数是值得重点看的函数。main->OSInit->OS_IdleTaskInit,通过调用OS_IdleTaskInit的调用创建了系统的一个名叫“uC/OS-III Idle Task”的任务,其优先级值为31。这个任务相应执行的函数,基本没有做任何操作,简单对OSIdleTaskCtr、OSStatTaskCtr两个系统计数进行增加。OSIdleTaskHook()是用户可以自定义的函数,uCOS-III代码中有大量这种Hook函数,方便用户进行功能扩展。当然用户也可直接对任意代码进行修改,但是对系统Hook函数进行重写能够很好地保持原有uCOS-III系统的完整性。
void OS_IdleTask(void *p_arg){ „„
while(DEF_ON){
CPU_CRITICAL_ENTER();
OSIdleTaskCtr++;#if OS_CFG_STAT_TASK_EN > 0u
OSStatTaskCtr++;#endif
CPU_CRITICAL_EXIT();
OSIdleTaskHook();/* Call user definable HOOK */
} } main->OSInit->OS_TickTaskInit创建了一个名叫“uC/OS-III Tick Task”的任务(优先级为10),任务的创建都得通过OSTaskCreate来创建,main函数中又创建“Startup Task”任务。这三个任务对应的运行函数内都包含了while死循环,因此系统运行起来后至少有三个任务,分别是Idle任务、Tick任务、Startup任务。
3.4任务管理
12/ 22
《嵌入式技术》学习总结报告
μC/OS-III支持多任务,理论上可以支持任意多个任务,但实际通常受限于系统内存的多少。所有任务管理都是基于OS_TCB结构来进行的,接下来我们详细分析OS_TCB的定义(uCOS-IIISourceos.h),可知一个任务有优先级、状态、堆栈,下面分别予以介绍。
3.4.1 任务优先级
μC/OS-III的优先级共有32个(0-31),数值越小优先级越高,一般地优先级0和31保留给系统使用。中断处理任务的优先级最高,空闲任务的优先级最低。
图三:μC/OS-III任务优先级
3.4.2 任务的堆栈
在利用OSTaskCreate创建新任务前,必须先创建好任务堆栈,如Startup任务就用如下代码来分配堆栈:
13/ 22
《嵌入式技术》学习总结报告
static CPU_STK
AppTaskStartStk[APP_CFG_TASK_START_STK_SIZE]; 堆栈主要的大小是可以由用户自己定义(需考虑任务里函数的嵌套层数和局部变量占用空间多少。另外在嵌入式开发中,应尽可能避免递归的调用),堆栈是向下增长的。堆栈溢出(这里的溢出是指堆栈空间不够用)是操作系统必须考虑的问题,μC/OS-III有三种解决方法:(1)利用内存管理单元(MMU)或内存保护单位(MPU);(2)利用某些CPU提供的堆栈溢出检测功能;(3)基于软件实现的堆栈溢出检测。前两者都依赖于硬件提供该功能。
图四:μC/OS-III堆栈结构
3.4.3 任务的状态
OS_TCB结构中的TaskState表示任务的状态。在μC/OS-III中,从用户的角度来看任务有五个状态:静止(Dormant)、就绪(Ready)、运行(Running)、挂起(Pending)、中断(Inrerrupted)。任务的状态是动态转换的,构造好OS_TCB结构后,此时任务处于静止状态,OSTaskCreate函数中调用OS_TaskInitTCB函数将任务状态设为OS_TASK_STATE_RDY并调用OS_RdyListInsertTail将任务插入相应优先级的就绪队列中。
14/ 22
《嵌入式技术》学习总结报告
图五:任务状态的转换
3.5就绪任务的管理
任务在运行前都处于就绪状态或中断状态,CPU的调度基本上就是以某种策略从所有就绪任务中挑选一个任务运行。μC/OS-III利用一个就绪优先级位图和一个就绪队列表来管理就绪任务。
OSInit->OS_PrioInit()中对任务优先级位图表进行了初始化。μC/OS-III 有OS_CFG_PRIO_MAX优先级(见os_cfg.h),优先级值越小表示优先级越高。优先级0表示最高级别,优先级OS_CFG_PRIO_MAX-1最低(在本实验中OS_CFG_PRIO_MAX=32).如果某个优先级上存在就绪的任务,那么就在位图表中相应的位设置为1,否则设置为0.位图宽度可以是8bit、16bit、32bit,这样依赖于CPU_DATA的值即依赖所用CPU的特性(本实验中是32bit,优先级总数为
15/ 22
《嵌入式技术》学习总结报告
32,因此位图大小为32*1)。查找最高就绪的优先级,只需在优先级位图中找第一不为0的bit。
OS_PRIO OS_PrioGetHighest(void){ CPU_DATA *p_tbl;OS_PRIO prio;prio =(OS_PRIO)0;p_tbl = &OSPrioTbl[0];while(*p_tbl ==(CPU_DATA)0){
prio += DEF_INT_CPU_NBR_BITS;)p_tbl++;} prio +=(OS_PRIO)CPU_CntLeadZeros(*p_tbl);return(prio);}
图六:就绪优先级位图
就绪列表实际上是一包含OS_CFG_PRIO_MAX个OS_RDY_LIST(见os.h)类型实体的数组(OSRdyList[])。OS_RDY_LIST实体包含三个成员:Entries、TailPtr、HeadPtr。Entries表示该优先级别上任务个数,TailPtr和HeadPt用于创建包含该所有优先级别上的就绪任务的双向链表。代码中包含了OS_RdyListInit()、16/ 22
《嵌入式技术》学习总结报告
OS_RdyListInsert()、OS_RdyListInsertHead()、OS_RdyListInsertTail()、OS_RdyListMoveHeadToTail()、OS_RdyListRemove()等函数用于操作就绪列表。
图七:任务创建后加入就绪列表
3.6 任务调度
3.6.1 任务抢占
在μC/OS-III中,任务调度器(scheduler)即分发器(dispatcher)负责任务的调度。μC/OS-III使用基于优先级、抢占式的调度策略。抢占是指当由于某种原因使更高优先级任务变成就绪状态(较当前任务),那么调度器立即将CPU分别给该更高优先级任务,而当前任务变成挂起状态。类似地,当中断服务程序(ISR)将一个处于挂起状态的更高优先级任务唤醒时,当前被中断的任务保持挂起状态,被唤醒的那个更高优先级任务得到执行。如图八,是一种直接的抢占方式,μC/OS-III还支持一种较Post Defferd即延时的抢占方式(图九)。延时抢占方式,多一步ISR Handler(在操作系统中被称为中断软处理,主要目的是减少关中断的时间)用于处理在ISR(中断硬处理)中来不及处理事情。
17/ 22
《嵌入式技术》学习总结报告
图八:任务抢占
图九:带延迟处理的任务抢占
3.6.2轮转调度
如果未开启轮转策略,正在执行的任务除非主动放弃执行(包括等待某些时间、或者调用睡眠函数)或者被抢占,那么同级别的任务得等到该任务执行完采用机会执行。当同一个优先级上有两个以上就绪任务时,μC/OS-III 采用时间片策略使得该优先级上所有任务得到依次轮转执行。当然如果一个任务的时间片未
18/ 22
《嵌入式技术》学习总结报告
用完,也可主动放弃CPU使得下个任务得到执行。轮转调度策略不是必须的,μC/OS-III允许用户开启或关闭该策略。
图九:时间片调度
3.6.3 调度时机
调度可能发生时机包括:(1)一个任务给其他任务发送(send)消息或信号时;(2)任务OSTimeDly()或者OSTimeDlyHMSM();(3)任务调用等待函数OS???Pend()等待尚未发生的任务;(4)任务放弃挂起:其它任务调用OS???PendAbort()改变该任务状态;(5)任务创建时:创建的任务可能拥有比当前任务较高优先级;(6)任务被删除时:如果该任务就是当前任务;(7)内核对象被删除时;(7)任务优先级发生改变时;(8)任务调用OSTaskSuspend()挂起自己;(9)任务调用OSTaskResume()唤醒了其它任务;(10)所有嵌套的ISR退出时:调度由OSIntExit()发起而不是OSSched();(11)调度器被解锁;(12)任务调用OSSchedRoundRobinYield()主动放弃时间片;(12)用户调用了OSSched();(13)任务时间片用完了。
3.6.4 调度实现
调度器的实现在函数OSSched()和OSIntExit()中。其中,OSSched()由任务级别代码发起而OSIntExit()是有中断服务程序发起。任务的调度是基于前面提及的就绪任务的相关数据结构:就绪优先级位图和就绪队列。
19/ 22
《嵌入式技术》学习总结报告
图十:调度时主要用到的数据结构
3.7 上下文切换
上下文切换:当μC/OS-III要执行另一任务时,需要将当前任务使用的那些CPU寄存器值保存当前任务堆栈中,同时加载要执行的任务的上下文给CPU的寄存器进而开始另一任务的执行。上下文切换存在一些开销,通常CPU寄存器越多(任务用到的寄存器越多),开销就会越大。上下文切换的时间开销取决于有多少个CPU寄存器需要被存储和载入。
图十一:上下文在堆栈中的存储
20/ 22
《嵌入式技术》学习总结报告
存在两种上下文的切换:普通任务的上下文切换、中断服务程序的上下文切换。前者在函数OSCtxSw()中实现(其实是由宏OS_TASK_SW()调用,后者在函数OSIntCtxSw()中实现。这两个函数都是采用汇编语言实现,因此是CPU相关的(见uCOS-IIIPortsARM-Cortex-AGenericGNU os_cpu_a_vfp-d32.S)。这里只介绍OSCtxSw()的实现。
OSIntCtxSw:
BL OSTaskSwHook@ OSTaskSwHook()@
MOVW R0, #:lower16:OSPrioCur@ OSPrioCur = OSPrioHighRdy@ MOVT R0, #:upper16:OSPrioCur MOVW R1, #:lower16:OSPrioHighRdy MOVT R1, #:upper16:OSPrioHighRdy LDRB R2, [R1] STRB R2, [R0]
MOVW R0, #:lower16:OSTCBCurPtr@ OSTCBCurPtr = OSTCBHighRdyPtr@ MOVT R0, #:upper16:OSTCBCurPtr MOVW R1, #:lower16:OSTCBHighRdyPtr MOVT R1, #:upper16:OSTCBHighRdyPtr LDR R2, [R1] STR R2, [R0] LDR SP, [R2] @ SP = OSTCBHighRdyPtr->OSTCBStkPtr@
OS_CPU_ARM_FP_REG_POP R0 @ RESTORE NEW TASK'S CONTEXT: LDMFD SP!, {R0} @ Pop new task's CPSR, MSR SPSR_cxsf, R0 LDMFD SP!, {R0-R12, LR, PC}^ @ Pop new task's context.如图,当有更高优先级就绪任务需要被执行,任务调度器就会调用OSCtxSW()。主要有以下步骤:
(1)OSTCBCurPtr指向当前正运行的任务对应的OS_TCB,然后任务级调度器调用OSSched().(2通过OSTCBHighRdyPt指针,可以找到即将要运行的任务的OS_TCB;(3)OSTCBHighRdyPtr->StkPtr指向将要被执行的任务的堆栈的顶部;(4)执行任务上下文切换,将CPU的相关寄存器存储到当前任务(即将被调出CPU的任务)的堆栈。由于保存了上下文(以栈帧形式存储),将来该任务可以被恢复现场,以便继续运行。
(5)调用OSSched()后,CPU堆栈指针TSP会指向任务的堆栈。
21/ 22
《嵌入式技术》学习总结报告
图十二:OSCtxSw()所执行操作
四、工作总结
学习嵌入式,显然应偏重于嵌入式软件,特别是嵌入式操作系统方面。对于搞嵌入式软件的人,最重要的技术显然是:(1)掌握主流嵌入式微处理器的结构与原理。(2)必须掌握一个嵌入式操作系统。(3)必须熟悉嵌入式软件开发流程并至少做过一个嵌入式软件项目。
通过本门课程的学习,我对嵌入式系统有了较直观的理解,并加深了操作系统一些概念的理解。但毕竟时间有限,希望可以在后续的进一步学习中加强实践,希望早日能在嵌入式领域做一些开发工作。
22/ 22
第四篇:IT行业总结报告
总结报告
尊敬的领导: 转眼即将告别2016,进入----不知不觉已过3个月,从陌生到熟悉公司项目,在这短短的几个月中,从伊始的看回家秀秀代码,到上手编写艺设区和回家秀秀改造,实践中证明自己,锻炼自己,提升自己的职业技能,这一段时间有工作上的收获,知识的积累和经验的增长,同时也暴露出自己的不足.总结经验,吸取教训,在此对过去的工作做一个总结和对未来的展望: 工作总结:
在这几个月中我主要参与了回家秀秀便利店二级分类和购物车改造,艺设区便利店和购物车编写.按时完成任务;在这过程中遇到一些技术难点,得到领导和同事们的帮助,让我认识到这个优秀的团队,良好的工作氛围;在完成工作之余,我还学习了React-Native的相关知识,学习同事们的更优方法,以适应公司对新技术的要求.在项目过程中吸取教训,积累经验,具体从以下几点: 1.实践中得到锻炼:.在项目进行中,遇到这样那样的问题,出其不意的BUG,有过苦恼,通过自己学习,和他人的帮助,集思广益,相信没有解决不了的问题.2.借鉴他人的代码: 良好的代码质量,对于后期程序维护的作用不可言语,可能一个功能很好实现,但是这完成之后我们该回过头来想想,看看有没有更好的方法解决,~!多看别人代码,这是我常常干的事,浏览如cocoachina.这类网站,从别人身上看到自己的不足,看了同事们回家秀秀封装的方法,很值得我学习,还有自己薄弱的Block的使用,并且在之后的工作为己所用.2.少说话,代码说话,总结经验: 程序员只有不断的敲代码,才能得到锻炼,工作中每次遇到的技术难点,我都会用简书的方式写下自己的心得,不用怀疑写简书的重要性,看过一句话,判断一件事值不值得做有一个方法:在一张白纸的左边写不值做的原因,然后右边写值得做的原因,写完对比,一权衡,自然结果就出来~!在积累自己的知识点时候,无行中提升自己对错误的认识,思维罗能力的提升.记录自己的成长,何乐不为~!
通过今年的实践和学习,明年又是一个新的开始,立足当前优缺,肩负一个iOS开发工程师应用的工作和性质,希望为公司明年的发展尽最大的努力,也希望自己有更大的收获,明年计划在一下方面有所建树: 1.编程能力,自知自己的代码还有很多更需要改进的地方,提升自己重构代码能力
2.工作质量上,现在编程我是属于会编写和局部效率,还有很多全局性的没考虑到,明年一定要做到,编写一个高效的代码.3.确定自己的学习目标,不仅仅局限iOS知识,根据市场需求充电自己,如RN技术,想把之前学习的swift技术重新学起.多读,多练,提升自己职业技术~!
技术研发中心
---
2016年12月7日
第五篇:IT行业调查 文档
13和饿咯13HELLO 北大青鸟
IT无所不在在现代社会不断发展的今天IT已经是无孔不入,无所不在。人们已经离不开信息、手机、互联网
足以说明现代社会已经离不开IT了,什么是IT呢?
information technology;IT。中文名:信息技术。是有关数据与信息的应用技术和应用计算机科学
及通信技术来设计、开发、安装和实施信息系统及应用软件。其内容包括:数据与信息的采集、表示、处理、安全、传输、交换、显现、管理、组织、存储、检索等。也是利用电子计算机、遥感技术、现代通信技术、智能控制技术等获取、传递、存储、显示和应用信息的技术。
IT按表现形态分类,可分为硬技术(物化技术)与软技术(非物化技术)。前者指各种信息
设备及其功能,如显微镜、电话机、通信卫星、多媒体电脑。后者指有关信息获取与处理的各种知识、方法与技能,如语言文字技术、数据统计分析技术、规划决策技术、计算机软件技术等。
按工作流程中基本环节的不同,信息技术可分为信息获取技术、信息传递技术、信息存储
技术、信息加工技术及信息标准化技术。信息获取技术包括信息的搜索、感知、接收、过滤等。如显微镜、望远镜、气象卫星、温度计、钟表、Internet搜索器中的技术等。信息传递技术指跨越空间共享信息的技术,又可分为不同类型。如单向传递与双向传递技术,单通道传递、多通道传递与广播传递技术。信息存储技术指跨越时间保存信息的技术,如印刷术、照相术、录音术、录像术、缩微术、磁盘术、光盘术等。信息加工技术是对信息进行描述、分类、排序、转换、浓缩、扩充、创新等的技术。信息加工技术的发展已有两次突破:从人脑信息加工到使用机械设备(如算盘,标尺等)进行信息加工,再发展为使用电子计算机与网络进行信息加工。信息标准化技术是指使信息的获取、传递、存储,加工各环节有机衔接,与提高信息交换共享能力的技术。如信息管理标准、字符编码标准、语言文字的规范化等。
日常用法中,有人按使用的信息设备不同,把信息技术分为电话技术、电报技术、广播技
术、电视技术、复印技术、缩微技术、卫星技术、计算机技术、网络技术等。也有人从信息的传播模式分,将信息技术分为传者信息处理技术、信息通道技术、受者信息处理技术、信息抗干扰技术等。
按技术的功能层次不同,可将信息技术体系分为基础层次的信息技术(如新材料技术、新
能源技术),支撑层次的信息技术(如机械技术、电子技术、激光技术、生物技术、空间技术等),主体层次的信息技术(如感测技术、通信技术、计算机技术、控制技术),应用层次的信息技术(如文化教育、商业贸易、工农业生产、社会管理中用以提高效率和效益的各种自动化、智能化、信息化应用软件与设备)。
由以上可知IT的重要性,如果没有IT行业的话人们几乎还处于旧社会状态,也不会有现
代社会日新月异的变化了。放在当代,一个人不接触IT已经是不可能的了,不接触IT就相当于是退化到封建社会了。只是没有察觉到,很多人都没有察觉到IT已经和人们融入到一体,但它就是悄无声息的走进了我们的生活。
生活处处不IT,现在是如此,不信可以闭眼想想如果从此刻开始身边没有手机,没有电视,没有电脑,没有网络,没有时间(钟表),也没有什么高科技技术。比如显微镜、望远镜、气象卫星、温度计;更没有印刷术、照相术、录音术、录像术、缩微术、磁盘术、光盘术。生活会是什么样子。即便是没有任何想象力的人都会知道世界几乎会变成一片黑暗,真像2012世界末日一样。当下如此,那未来呢,未来IT会发展称什么样子呢?
欢迎访问北大青鸟
未来是从典型的技术驱动发展模式向技术驱动与应用驱动相结合的模式转变。现在每个芯片上包含上亿个元件,构成了“单片上的系统”(SOC),模糊了整机与元器件的界限,极大地提高了信息设备的功能,并促使整机向轻、小、薄和低功耗方向发展。软件技术已经从以计算机为中心向以网络为中心转变。软件与集成电路设计的相互渗透使得芯片变成“固化的软件”,进一步巩固了软件的核心地位。软件技术的快速发展使得越来越多的功能通过软件来实现,“硬件软化”成为趋势,出现了“软件无线电”“软交换”等技术领域。嵌入式软件的发展使软件走出了传统的计算机领域,促使多种工业产品和民用产品的智能化。软件技术已成为推进信息化的核心技术。网融合和宽带化是网络技术发展的大方向。电话网、有线电视网和计算机网的三网融合是指它们都在数字化的基础上在网络技术上走向一致,在业务内容上相互覆盖。电话网和电视网在技术上都要向互联网技术看齐,其基本特征是采用IP协议和分组交换技术;在业务上要从现在的话音为主或单向传输发展成交互式的多媒体数据业务为主。三网融合不能简单地理解为把三个网合成一个网,但它的确打破了原有的行业界限,将引起产业的重组与政策的调整。随着互联网上数据流量的迅猛增加,特别是多媒体信息的增加,对网络带宽的要求日益提高。增大带宽,是相当长时期内网络技术发展的主题。在广域网和城域网上,以密集波分复用技术(DWDM)为代表的全光网络技术引人注目,带动了光信息技术的发展。宽带接入网技术多种方案展开了激烈的竞争,鹿死谁手尚难见分晓。无线宽带接入技术和建立在第三代移动通信技术之上的移动互联网技术,正向信息个人化的目标前进。
互联网的应用开发也是一个持续的热点。一方面电视机、手机、个人数字助理(PDA)等家用电器和个人信息设备都向网络终端设备的方向发展,形成了网络终端设备的多样性和个性化,打破了计算机上网一统天下的局面;另一方面,电子商务、电子政务、远程教育、电子媒体、网上娱乐技术日趋成熟,不断降低对使用者的专业知识要求和经济投入要求;互联网数据中心(IDC),网门服务等技术的提出和服务体系的形成,构成了对使用互联网日益完善的社会化服务体系,使信息技术日益广泛地进入社会生产、生活各个领域,从而促进了网络经济的形成。
是IT(信息产业)成为带动经济增长的引擎,推动传统行业的技术升级,使劳动力结构正出现巨变,并促进了人类文明的进步。
在过去的10年中,全世界信息设备制造业和服务业的增长率是相应的国民生产总值(GNP)增长率的两倍,成为带动经济增长的关键产业。其中美国经济在近10年的持续快速增长中,年均GDP增长3.6%,而电子信息产业对GDP增长的贡献为1.4个百分点。可以毫不夸张地说美国经济的持续增长得益于信息技术的支撑和信息产业的带动是不为过的。信息产业本身经过多年的高速增长,已成为全球最大的产业之一。在二十世纪九十年代中期,一些发达国家信息经济领域的增长超过了GNP的50%,美国则超过了75%,2000年全球信息产品制造业产值高达15000亿美元,成为世界经济的重要支柱产业。
“九五”期间,中国的信息产业以三倍于国民经济的速度发展,主要产品销量迅速增加,结构调整初见成效,部份关键技术有所突破,产业规模已居世界第四位。2000年底信息产品制造业总产值达10000亿元,销售收入5800亿元,成为国民经济第一支柱产业。信息产业欢迎访问北大青鸟的增加值占全国GDP的4%,电子产品出口额约占全国出口总额的1/5,信息产业对国民经济的贡献率显著提高。
看看IT行业职位的需求吧,未来是信息产业的时世界,需要有大量的IT人才让生活概更完美,让各个体质更完善。
伴随着互联网的发展。IT人才的短缺现象将会越来越严重。据保守估计,中国市场对IT人才的需求每年超过20万人。而国内目前的IT教育主要是高等学校计算机、电子、电信、信息技术等相关专业的学历教育,每年培养的大学毕业生约为5万,远远不能满足市场的需要。IT技术人员的极度短缺,迫使许多公司不得不提供高薪才能聘请到符合要求的专业人员,而这些职位优厚的待遇吸引了很多非IT人员。于是许多人设法通过各种培训来获得这些职位
不是所有人都能做IT的,也不是哪一个人能胜任IT 行业里面所有的职位,必须要有明确的分工,而且要求从业人员要不断的学习,一个人学习的技术越先进,掌握的技术越全面,那么这个人的事业发展前景就越广阔,工作选择的机会就越大。此外,由于互联网技术的飞速发展,很多掌握过时技术的人员也不得不重新进行培训,以使自己能够与最新的技术同步。随着中国经济的不断发展,信息化程度不断提高,各个企业对信息化投入的比例逐步加大,因此要求在职人员必须要学会操作微机。跟上知识更新的节奏。
才
欢迎访问北大青鸟