嵌入式总结报告

2024-05-05

嵌入式总结报告(共6篇)

篇1:嵌入式总结报告

嵌入式实验报告

期末论文

学生姓名: 杨佳洁 学 号: 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:嵌入式总结报告

一、嵌入式工程师个人基本情况

在“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、未来职业人生的规划

篇3:2008年度嵌入式应用调查报告

嵌入式系统应用:工程师的世界

这次调查通过电子产品世界网站(www.eepw.com.cn)和“嵌入式技术和应用论坛上海和深圳站”两种方式发放调查问卷,在2008年8月22日~10月31日期间,我们总共收集了627份有效回函。从整体看,开发、设计工程师和项目经理占88%,他们是本刊的主流读者,也是嵌入式系统应用的主力军。从地域分布看,以北京(35%)、上海(26%)、深圳(33%)为中心的三大电子设计地域基本保持平衡,以成都为中心的西南地域(6%)正在崛起,成为电子设计和嵌入式应用的新热点。

MCU和MPU:ARM领先、FPGA崛起、百花齐放

在以微控制器(MCU)和微处理器(MPU)为核心的嵌入式系统中,ARMSoC的各种MCU/MPU占了半壁江山(图1)。ARM在嵌入式系统市场的领先地位,还可用从开发工具的调查结果上得到印证,图4显示ARM和Keil(ARM的子公司)的市场份额加起来有77%,比其他工具使用率要高得多。

值得注意的是,在处理器架构选择的调查中发现,基于CPU核的FPGA嵌入式应用大大增加,达到13%,这也说明,由于嵌入式系统应用的复杂性、安全性正在增加,产品的更新和设计周期缩短等要求,使得FPGA的优势得以体现,应用领域越来越宽广(见图1)。

具体MCU/MPU芯片厂家产品调查结果呈现百花齐放的态势,图2超过100个读者投票的处理器(第一梯队)只有Atmel8051、TI 320DSP和SAMSUNG(三星)ARM,超过80个投票的第二梯队有TI 430,Microchip 8bitPIC和NXPLPCARM。虽然已经剔除了22种投票数少于20个的MCU/MPU种类,但是余下的18个种类的确难分胜负。这也再次验证了嵌入式系统多样性的现状没有改变,即使ARM SoC已经统治了主流的32bitMCU市场,但是分到8家ARM授权半导体公司后,结果是在被分化,除了三星外,其他厂家并无特殊表现,这个现象值得深思。比较2007年的数据,前6名的名单中,Intel X86落榜,NXP LPCARM进入,三星的名次从2007年第6上升到2008年第2名(见图2)。

开发工具和操作系统的选择:注重价格和大众化

关于嵌入式开发工具、操作系统、语言和测试工具,调查结果显示工程师对于开发软件和工具的了解和使用已趋成熟,开源的嵌入式Linux、gC/OS-II和微软WinCE三种嵌入式操作系统占了近90%的市场份额,其中Linux仍然位居榜首。gC/OS-II紧跟其后,这表示了中国市场对于开源软件的认可和对于价格敏感,gC/OS-II和WinCE因为使用简单和大众熟悉受到特别青睐,而价格昂贵的商用RTOS产品VxWork、QNX则得票较少(见图3)。在开发工具方面,ARM公司(含其子公司Keil)占了77%的市场份额,独立工具厂商IAR保住了10%的份额,飞思卡尔的CodeWarror只有6%的市场,这和该公司在MCU/MPU市场份额基本匹配,7%其他选择主要来自日系MCU厂家,他们的用户多数是使用自己的开发工具(见图4)。

C语言的使用率继续增加,较2007年的60%,2008年达到了70%,汇编语言则从31%下降到18%。见图5。

泰克和安捷伦两大巨头依然把持着传统测试工具的市场,值得注意的是NI在经过大力宣传后,正在树立在嵌入式系统的影响和地位,此次调查获得了10%的投票,也说明了面向模型的设计方法和工具在嵌入式系统中正在得到广泛的关注(见图6)。

选择半导体厂家:习惯第一,服务至上

读者选择半导体公司的时候,近半数人选择是:过去曾经使用过这家公司的产品。这样的结果说明嵌入式系统的产品研发和生命周期比较长,设计者在考虑新的设计时要更多地考虑过去的经验、产品的更新换代和配套研发费用支出。使用过去已经使用过的芯片和工具有助于帮助企业降低风险、缩短研发时间和降低额外的工具支出。这个现象也让我们联想起许多半导体公司近年来纷纷推出32-16-8bit兼容的MCU产品,意在希望用户在升级32bit MCU的时候,外设和寄存器尽量和以前8-16 bit保持兼容。另外非常值得注意的是读者技术服务的要求(总体回复是25%),在上海和深圳论坛的问卷反馈中,这个选择基本和“过去使用过这家公司的产品”反馈保持接近。这说明了虽然产品和价格是决定性因素,但是辅助于更加周到的技术服务,设计方案等软因素也能够打动设计人员的心(见图7)。

金融海啸:催生电子创新

美国金融海啸造成的实体经济形势恶化已经影响到包括中国在内的全球地域,电子和信息产业也难独善其身,电子和信息产业历来有在竞争中生存和创新的基因,谁将在严寒中生存下来,谁将创新出新的技术和产品,谁一定会在春暖花开时收获丰硕果实。但现实毕竟是残酷的,如何在金融海啸中把握电子创新的要点,克服困难,设计和生产出有竞争性的电子产品是大家特别关心的题目,嵌入式系统是电子产品的灵魂也是电子创新的引擎。2008年嵌入式应用调查中,本刊增加了两个全新的项目:“未来嵌入式应用的难度”和“您认为电子产品创新的方法”。

差异化产品设计的读者选择获得接近5成的投票,反映出目前电子产品同质化现象非常严重,寻求蓝海是电子设计和嵌入式应用创新的出路。除了降低成本增加功能外,采用先进的半导体器件、嵌入式软件、设计工具和生产方式进行创新的观点也得到了许多读者的认可。产品外观和uI(人机界面)的重要性在本次调查没有特殊的表现(3%),略和业界的普遍观点有点出入,本刊明年将继续关注(见图8)。

电源(功耗管理)、多核设计是此次应用设计难点调查的主要回复,这个结果说明了电子产品向便携化、消费化、节能化方向发展的大趋势。近年来,摩尔定律推动下的集成电路设计正在面临着制造、功耗、设计诸多因素的挑战。半导体多核技术衍出的多核芯片已经开始出现在嵌入式系统中,先是高密度计算需求的应用,比如网络、汽车电子系统和多媒体应用,然后会逐渐渗透到各个领域,多核设计在嵌入式应用中由于在方法、工具和操作系统等方面和单核有着很大不同而备受关注。嵌入式操作系统移植和开发的难点回复获得了19%的读者选择,这个结果多少也和本刊预期的有点差异。一个方面说明嵌入式操作系统的普及程度大幅提高,另一方面,也说明基于它的开发工作依然还是一个比较困难的项目,嵌入式操作系统种类繁多、移植和开发工作量大,这是嵌入式操作系统广泛应用的障碍,业界应该对此有所思考。

篇4:嵌入式报告

班级:学号:姓名:

1.嵌入式的发展 A.简单操作系统阶段

20世纪80年代,随着微电子工艺水平的提高,IC制造商开始把嵌入式应用中所需要的微处理器、I/O接口、串行接口以及RAM、ROM等部件统统集成到一片VLSI中,制造出面向I/O设计的微控制器,并一举成为嵌入式系统领域中异军突起的新秀。与此同时,嵌入式系统的程序员也开始基于一些简单的“操作系统”开发嵌入式应用软件,大大缩短了开发周期、提高了开发效率。

这一阶段嵌入式系统的主要特点是:出现了大量高可靠、低功耗的嵌入式CPU(如Power PC等),各种简单的嵌入式操作系统开始出现并得到迅速发展。此时的嵌入式操作系统虽然还比较简单,但已经初步具有了一定的兼容性和扩展性,内核精巧且效率高,主要用来控制系统负载以及监控应用程序的运行。

B.实时操作系统阶段

20世纪90年代,在分布控制、柔性制造、数字化通信和信息家电等巨大需求的牵引下,嵌入式系统进一步飞速发展,而面向实时信号处理算法的DSP产品则向着高速度、高精度、低功耗的方向发展。随着硬件实时性要求的提高,嵌入式系统的软件规模也不断扩大,逐渐形成了实时多任务操作系统(RTOS),并开始成为嵌入式系统的主流。

这一阶段嵌入式系统的主要特点是:操作系统的实时性得到了很大改善,已经能够运行在各种不同类型的微处理器上,具有高度的模块化和扩展性。此时的嵌入式操作系统已经具备了文件和目录管理、设备管理、多任务、网络、图形用户界面(GUI)等功能,并提供了大量的应用程序接口(API),从而使得应用软件的开发变得更加简单。

C.面向Internet阶段

21世纪无疑将是一个网络的时代,将嵌入式系统应用到各种网络环境中去的呼声自然也越来越高。目前大多数嵌入式系统还孤立于Internet之外,随着Internet的进一步发展,以及Internet技术与信息家电、工业控制技术等的结合日益紧密,嵌入式设备与Internet的结合才是嵌入式技术的真正未来。

信息时代和数字时代的到来,为嵌入式系统的发展带来了巨大的机遇,同时也对嵌入式系统厂商提出了新的挑战。目前,嵌入式技术与Internet技术的结合正在推动着嵌入式技术的飞速发展,嵌入式系统的研究和应用产生了如下新的显著变化:

新的微处理器层出不穷,嵌入式操作系统自身结构的设计更加便于移植,能够在短时间内支持更多的微处理器。

嵌入式系统的开发成了一项系统工程,开发厂商不仅要提供嵌入式软硬件系统本身,同时还要提供强大的硬件开发工具和软件支持包。

通用计算机上使用的新技术、新观念开始逐步移植到嵌入式系统中,如嵌入式数据库、移动代理、实时CORBA等,嵌入式软件平台得到进一步完善。

各类嵌入式Linux操作系统迅速发展,由于具有源代码开放、系统内核小、执行效率高、网络结构完整等特点,很适合信息家电等嵌入式系统的需要,目前已经形成了能与Windows CE、Palm OS等嵌入式操作系统进行有力竞争的局面。网络化、信息化的要求随着Internet技术的成熟和带宽的提高而日益突出,以往功能单一的设备如电话、手机、冰箱、微波炉等功能不再单一,结构变得更加复杂,网络互联成为必然趋势。

2.嵌入式的应用

嵌入式系统主要用于各种信号处理与控制,目前已在国防、国民经济及社会生活各领域普遍采用,可用于企业、军队、办公室、实验室以及个人家庭等各种场所。同时,嵌入式系统作为数字化电子信息产品的核心,嵌入式计算机断层成像系统已出口日本。

军用

各种武器控制(火炮控制、导弹控制、智能炸弹制导引爆装置)、坦克、舰艇、轰炸机等陆海空各种军用电子装备,雷达、电子对抗军事通信装备,野战指挥作战用各种专用设备等。

家用

各种信息家电产品,如数字电视机,机顶盒,数码相机,VCD、DVD 音响设备,可视电话,家庭网络设备,洗衣机,电冰箱,智能玩具等。

工业用

各种智能测量仪表、数控装置、可编程控制器、控制机、分布式控制系统、现场总线仪表及控制系统、工业机器人、机电一体化机械设备、汽车电子设备等。商用

各类收款机、POS 系统、电子秤、条形码阅读机、商用终端、银行点钞机、IC 卡输入设备、取款机、自动柜员机、自动服务终端、防盗系统、各种银行专业外围设备。

办公用

复印机、打印机、传真机、扫描仪、激光照排系统、安全监控设备、手机、寻呼机、个人数字助理(PDA)、变频空调设备、通信终端、程控交换机、网络设备、录音录像及电视会议设备、数字音频广播系统等。

医用电子设备

各种医疗电子仪器,X 光机、超声诊断仪、计算机断层成像系统、心脏起搏器、监护仪、辅助诊断系统、专家系统等。

3.嵌入式的特点

嵌入式处理器的应用软件是实现嵌入式系统功能的关键,对嵌入式处理器系统软件和应用软件的要求也和通用计算机有所不同,主要有以下几点:

(1)软件要求固态化存储为了提高执行速度和系统可靠性,嵌入式系统中的软件一般都固化在存储器芯片或嵌入式微控制器本身中,而不是存贮于磁盘等载体中。

(2)软件代码要求高质量、高可靠性尽管半导体技术的发展使处理器速度不断提高、片上存储器容量不断增加,但在大多数应用中,存储空间仍然是宝贵的,还 存在实时性的要求。为此要求程序编写和编译工具的质量要高,以减小程序二进制代码长度、提高执行速度。

(3)系统软件(OS)的高实时性是基本要求在多任务嵌入式系统中,对重要性各不

相同的任务进行统筹兼顾的合理调度是保证每个任务及时执行的关键,单纯通 过提高处理器速度是无法完成和没有效率的,这种任务调度只能由优化编写的系统软件来完成,因此系统软件的高实时性是基本要求。

(4)多任务操作系统是知识集成的平台和走向工业化标准化道路的基础,嵌入式系统开发需要开发工具和环境嵌入式系统本身不具备开发能力,即使设计完成 以后用户通常也是不能对其中的程序功能进行修改的,必须有一套开发工具和环境才能进行开发,这些工具和环境一般是基于通用计算机上的软硬件设备以及各种逻辑分析仪、混合信号示波器等。

(5)嵌入式系统软件需要实时多任务操作系统开发平台(RTOS)通用计算机具有完善的操作系统和应用程序接口,是计算机基本组成不可分离的一部分,应用程序的开发以及完成后的软件都在Os平台上面运行,但一般不是实时的。嵌入式系统则不同,应用程序可以没有操作系统直接在芯片上运行:但是为了合理地调度多任务、利用系统资源,用户必须自行选配RTOS开发平台,这样才能保证程序执行的实时性、可靠性,并减少开发时间,保障软件质量。

(6)在嵌入式系统的软件开发过程中,采用C语言将是最佳和最终的选择由于汇编语言是一种非结构化的语言,对于大型的结构化程序设计已经不能完全胜任了。这就要求我们采用更高级的C语言去完成这一工作。

4.实训内容简介

A.实训内容

1)嵌入式系统及AM软件介绍

2)Metrowerks CodeWarrior集成开发环境介绍

3)TESTI寄存器相加

4)GPIO 模 块

5)向量中断控制器(VIC)模块

6)定 时 器 s

7)L C D显示

8)实时操作系统简介

B.具体实例简介

a、b、实验内容:LCD 实验步骤:

1).启动ADS1.2,使用ARM7 Executable Image for lpc2210工程模板建立一个工程LCD_Disphoto;

2).建立源文件lcddrive.c、lcddrive.h,编写液晶模块的驱动程序,然后将lcddrive.c添加的工程的user组中;

3).建立源文件test.c,编写实验程序,然后添加到工程的user组中;

4).修改config.h,增加包含LCDDRIVE.H头文件;#include“LCDDRIVE.H”

5.心得体会

篇5:嵌入式实验报告

姓名:陈宥祎

班级:14级计算机01班 学号:1255010116 指导老师:黄卫红

按键输入实验

一.实验简介

在实验一的基础上,使用按键控制流水灯速度,及使用按键控制流水灯流水方向。

二.实验目的

熟练使用库函数操作GPIO,掌握中断配置和中断服务程序编写方法,掌握通过全局变量在中断服务程序和主程序间通信的方法。

三.实验内容

实现初始化GPIO,并配置中断,在中断服务程序中通过修改全局变量,达到控制流水灯速度及方向。

使用JLINK下载代码到目标板,查看运行结果,使用JLINK在线调试。

四.实验设备

硬件部分:PC计算机(宿主机)、亮点STM32实验板、JLINK、示波器。软件部分:PC机WINDOWS系统、MDK KEIL软件、ISP软件。

五.实验步骤

1在实验1代码的基础上,编写中断初始化代码

2在主程序中声明全局变量,用于和中断服务程序通信,编写完成主程序 3编写中断服务程序

4编译代码,使用JLINK下载到实验板 5.单步调试

6记录实验过程,撰写实验报告

六.实验结果及测试

源代码:

我们将通过MiniSTM32 板上载有的3个按钮,来控制板上的2个LED,其中KEY0控制LED0,按一次亮,再按一次,就灭。KEY1 控制LED1,效果同KEY0。KEY_2(KEY_UP),同时控制LED0 和LED1,按一次,他们的状态就翻转一次。

七.实验总结

通过本次实验,我学会了如何使用STM32 的IO 口作为输入用。TM32 的IO 口做输入使用的时候,是通过读取IDR 的内容来读取IO 口的状态的。这里需要注意的是 KEY0 和KEY1 是低电平有效的,而WK_UP 是高电平有效的,而且要确认WK_UP 按钮与DS18B20 的连接是否已经断开,要先断开,否则DS18B20 会干扰WK_UP按键!并且KEY0 和KEY1 连接在与JTAG 相关的IO 口上,所以在软件编写的时候要先禁用JTAG 功能,才能把这两个IO 口当成普通IO 口使用。

串口通信

一.实验简介

编写代码实现串口发送和接收,将通过串口发送来的数据回送回去。

二.实验目的

掌握STM32基本串口编程,进一步学习中断处理。

三.实验内容

编写主程序,初始化串口1,设置波特率为9600,无校验,数据位8位,停止位1位。编写中断服务程序代码实现将发送过来的数据回送。

四.实验设备

硬件部分:PC计算机(宿主机)、亮点STM32实验板、JLINK、示波器。

软件部分:PC机WINDOWS系统、MDK KEIL软件、ISP软件、串口调试助手。

五.实验步骤

1编写串口初始化代码

2编写中断服务程序代码

3编译代码,使用JLINK或ISP下载到实验板 4记录实验过程,撰写实验报告

六.实验结果及测试

源代码:

把代码下载到 MiniSTM32 开发板,可以看到板子上的LED0 开始闪烁,说明程序已经在跑了。接着我们打开串口调试助手,看到如下信息:

证明串口数据发送没问题。接着,我们在发送区输入上面的文字,输入完后按回车键。然后单击发送,可以得到如下结果:

七.实验总结

通过本次实验,我进一步了解了串口的使用,学会了通过串口发送和接收数据,将通过串

口发送来的数据回送回去。该实验的硬件配置不同于前两个实验,串口 1 与USB 串口默认是分开的,并没有在PCB上连接在一起,需要通过跳线帽来连接一下。这里我们把P4 的RXD 和TXD 用跳线帽与P3 的PA9 和PA10 连接起来。

外部中断

一.实验简介

STM32 的 IO 口在本章第一节有详细介绍,而外部中断在第二章也有详细的阐述。这里我们将介绍如何将这两者结合起来,实现外部中断输入。

二.实验目的

进一步掌握串口编程,进一步学习外部中断编程,提高编程能力。

三.实验内容

初始化IO口的输入,开启复用时钟,设置IO与中断的映射关系,从而开启与IO口相对应的线上中断事件,设置触发条件。配置中断分组(NVIC),并使能中断,编写中断服务函数。

四.实验设备

硬件部分:PC计算机(宿主机)、亮点STM32实验板、JLINK、示波器。

软件部分:PC机WINDOWS系统、MDK KEIL软件、ISP软件、串口调试助手。

五.实验步骤

1.2.3.4.编写中断服务程序代码 使用ISP下载到实验板 测试运行结果

记录实验过程,撰写实验报告

六.实验结果及测试

源代码:

打开串口助手。

七.实验总结

首先需要将IO设置为中断输入口: 1)初始化 IO 口为输入。

2)开启 IO 口复用时钟,设置 IO 口与中断线的映射关系。

3)开启与该 IO口相对的线上中断/事件,设置触发条件。

4)配置中断分组(NVIC),并使能中断。

5)编写中断服务函数。

这一节,使用的是中断来检测按键,通过 WK_UP 按键实现按一次 LED0 和 LED 1 同时翻转,按 KEY0 翻转 LED0,按 KEY1 翻转 LED1。试验中外部中断函数不能进入的原因分析 : 1)GPIO或者AFIO的时钟没有开启。2)GPIO和配置的中断线路不匹配。3)中断触发方式和实际不相符合。

4)中断处理函数用库函数时,写错,经常可能出现数字和字母之间没有下划线。5)外部中断是沿触发,有可能不能检测到沿,比如 中断线是低电平(浮空输入),触发是下降沿触发,可能会出现一直是低电平,高电平的时候是一样的情况,电平持续为高电平。

6)没有用软件中断来触发外部中断,调用函数EXTI_GenerateSWInterrupt;,因为软件中断先于边沿中断处理。

独立看门狗实验

一. 实验简介

独立看门狗(IWDG)由专用的低速时钟(LSI)驱动,即使主时钟发生故障它也仍然有效。窗口看门狗由从APB1时钟分频后得到的时钟驱动,通过可配置的时间窗口来检测应用程序非正常的过迟或过早的操作。

二.实验目的

通过编程,编写一个独立看门狗驱动程序

三.实验内容

启动 STM32 的独立看门狗,从而使能看门狗,在程序里面必须间隔一定时间喂狗,否则将导致程序复位。利用这一点,我们本章将通过一个 LED 灯来指示程序是否重启,来验证 STM32 的独立看门狗。

四.实验设备

硬件部分:PC计算机(宿主机)、亮点STM32实验板、JLINK。

软件部分:PC机WINDOWS系统、MDK KEIL软件、ISP软件、串口调试助手。

五.实验步骤

1.2.3.4.参考教材独立看门狗部分,编写独立看门狗驱动程序。建立和配置工程 编写代码

使用ISP下载到实验板

记录实验过程,撰写实验报告

六.实验结果及测试

源代码:

在配置看门狗后,看到LED0 不停的闪烁,如果WK_UP 按键按下,就喂狗,只要WK_UP 不停的按,看门狗就一直不会产生复位,保持LED0 的常亮,一旦超过看门狗定溢出时间(Tout)还没按,那么将会导致程序重启,这将导致LED0 熄灭一次。

七.实验总结

通过本次实验,我掌握了启动独立看门狗的步骤: 1)向 IWDG_KR 写入 0X5555。2)向 IWDG_KR 写入 0XAAAA。3)向 IWDG_KR 写入 0XCCCC。

篇6:嵌入式实验报告

嵌入式处理器及应用实验报告书

学院名称学生姓名专业名称班

: : : :

实验一

ADS 1.2 集成开发环境练习

一、实验目的:

了解ADS 1.2 集成开发环境的使用方法。

二、实验内容:

1.建立一个新的工程。

2.建立一个C源文件,并添加到工程中。3.设置文本编辑器支持中文。4.编译链接工程。5.调试工程。

三、实验步骤:

1.启动ADS 1.2 IDE集成开发环境,选择File—New,使用ARM Executable Image工程模板建立一个工程,工程名称为ADS。

2.选择File—New建立一个新的文件TEST1.S,设置直接添加到项目中,输入程序代码。3.由于ADS安装后默认字体是Courier New,对于中文支持不完善,因此建议修改字体。选择Edit—Perferences,在Font选项设置字体为Fixedsys,Script为CHINESE_GB2312。建议在Tab Inserts Spaces前打勾,使Tab键插入的是多个空格。

4.选择Edit—DebugRel Settings,在DebugRel Settings对话框的左边选择ARM Linker项,然后在Output页设置连接地址ROBase 为0x40000000,RW Base 为0x40003000,在Options页设置调试入口地址Image entry point 为 0x40000000。5.选择Project—Make,将编译链接整个工程。

6.选择Project—Debug,或单击快捷键F5,IDE环境就会启动AXD调试软件。

四、程序清单:

AREA

Example1,CODE,READONLY

;声明代码段Example1

ENTRY

;标识程序入口

CODE32

;声明32 位ARM 指令

START

MOV

R0,#15

;设置参数

MOV

R1,#8

ADDS

R0,R0,R1

;R0 = R0 + R1

B

START

END

五、心得体会:

通过本次实验,我熟悉了ADS 1.2 集成开发环境,学会了怎样建立工程,在工程里面建立文件和进行最基本的运行操作。我感触最深的是每次软件的开始使用是最关键的,想要掌握一个软件的使用必须进行多次的练习,多练几遍自然而然的会熟练的操作。

实验二

存储器访问指令练习实验

一、实验目的:

1.了解ADS 1.2 集成开发环境及ARMulator软件仿真。

2.掌握ARM7TDMI汇编指令的用法,并能编写简单的汇编程序。3.掌握指令的条件执行以及使用LDR/STR指令完成存储器的访问。

二、实验内容:

1.使用LDR指令读取0x40003100上的数据,将数据加1,若结果小于10,则使用STR指令把结果回写原地址;若结果大于或等于10,则把0写回原地址。

2.使用ADS 1.2软件仿真,单步、全速运行程序,设置断点,打开寄存器窗口(Processor Registers)监视R0和R1的值,打开存储器观察窗口(Memory)监视0x40003100上的值。

三、实验步骤:

1.启动ADS 1.2,使用ARM Executable Image工程模板建立一个工程Instruction2。2.建立汇编源文件TEST2.S,编写实验程序,然后添加到工程中。

3.设置工程链接地址ROBase 为0x40000000,RW Base 为0x40003000。设置调试入口地址Image entry point 为 0x40000000。

4.编译链接工程,选择Project —Debug,启动AXD进行软件仿真调试。

5.打开寄存器窗口(Processor Registers),选择Current 项监视R0和R1的值。打开存储器观察窗口(Memory)设置观察地址为0x40003100,显示方式Size为32Bit,监视0x40003100地址上的值。

四、程序清单:

COUNT

EQU

0x40003100

;定义一个变量,地址为0x40003100

AREA

Example2,CODE,READONLY;声明代码段Example2

ENTRY

;标识程序入口

CODE32

;声明32 位ARM 指令

START

LDR

R1,=COUNT

;R1 <= COUNT

MOV

R0,#0

;R0 <= 0

STR

R0,[R1]

;[R1] <= R0,即设置COUNT 为0

LOOP

LDR

R1,=COUNT

LDR

R0,[R1]

;R0 <= [R1]

ADD

R0,R0,#1

;R0 <= R0 + 1

CMP

R0,#10

;R0 与 10 比较,影响条件码标志

MOVHS

R0,#0

;若R0 大于等于 10,则此指令执行,R0 <= 0

STR

R0,[R1]

;[R1] <= R0,即保存COUNT

B

LOOP

END

五、心得体会:通过本次实验,让我更深一步的了解了ADS 1.2 集成开发环境及ARMulator软件仿真。通过对程序的解读,我掌握一些汇编指令的写法,同时也提高了我的读程序的能力。本次实验中我遇到了一个问题,在工程里加载文件的时候,没注意文件的后缀应为“。S”,结果造成文件加载失败。

实验三

数据处理指令练习实验

一、实验目的:

1.掌握ARM数据处理指令的使用方法。2.了解ARM指令灵活的第2个操作数。

二、实验内容:

1.使用MOV和MVN指令访问ARM通用寄存器。

2.使用ADD、SUB、AND、ORR、CMP和TST等指令完成数据加减运算及逻辑运算。

三、实验步骤:

1)启动ADS1.2,使用ARM Executable Image 工程模板建立一个工程Instruction3。2)建立汇编源文件TEST3.S ,编写实验程序,然后添加到工程中。

3)设置工程链接地址RO Base为0x40000000,RW Base为0x40003000。设置调试入口地址Image entry point 为 0x40000000。

4)编译链接工程,选择Project —Debug,启动AXD进行软件仿真调试。5)打开寄存器窗口(Processor Registers),选择Current 项监视各寄存器的值。6)单步运行程序,观察寄存器值的变化。

四、程序清单:

X

EQU

;定义X 的值为11

Y

EQU

;定义Y 的值为8

BIT23

EQU

(1<<23)

;定义BIT23 的值为0x00800000

AREA

Example3,CODE,READONLY

;声明代码段Example3

ENTRY

;标识程序入口

CODE32

;声明32 位ARM 指令

START

;使用MOV、ADD 指令实现:R8 = R3 = X + Y

MOV

R0,#X

;R0 <= X,X 的值必须是8 位图数据

MOV

R1,#Y

;R1 <= Y,Y 的值必须是8 位图数据

ADD

R3,R0,R1

;即是R3 = X + Y

MOV

R8,R3

;R8 <= R3

;使用MOV、MVN、SUB 指令实现:R5 = 0x5FFFFFF8y;

;

break;

;

case

7: x = key * y;

;

break;

;

default: x = 168;

SWITCH

CASE_0

CASE_2

CASE_3

CASE_5

CASE_7

;

break;;};设x 为R0,y 为R1,key 为R2(x、y、key 均为无符号整数)MOV

R1,#3

;初始化y 的值

MOV

R2,#2

;初始化key 的值

AND

R2,R2,#0x0F

;switch(key&0x0F)

CMP

R2,#0

;case 0:

CMPNE

R2,#2

;case 2:

MPNE

R2,#3

;case 3:

BNE

CASE_5

ADD

R0,R2,R1

;

x = key + y

B

SWITCH_END

;

break

CMP

R2,#5

;case 5:

BNE

CASE_7

SUB

R0,R2,R1

;

x = key1)*4 SvcStackSpace +(SVC_STACK_LEGTH1)*4 FiqStackSpace +(FIQ_STACK_LEGTH1)*4

UndtStackSpace +(UND_STACK_LEGTH-1)*4

;分配堆栈空间

AREA

MyStacks, DATA, NOINIT, ALIGN=2

UsrStackSpace

SPACE

USR_STACK_LEGTH * 4

;用户(系统)模式堆栈空间

SvcStackSpace

SPACE

SVC_STACK_LEGTH * 4

;管理模式堆栈空间

IrqStackSpace

SPACE

IRQ_STACK_LEGTH * 4

;中断模式堆栈空间

FiqStackSpace

SPACE

FIQ_STACK_LEGTH * 4

;快速中断模式堆栈空间

AbtStackSpace

SPACE

ABT_STACK_LEGTH * 4

;中止义模式堆栈空间

UndtStackSpace

SPACE

UND_STACK_LEGTH * 4

;未定义模式堆栈

END

五、心得体会:通过本次实验,我较好的掌握了如何使用MRS/MSR指令实现ARM微控制器工作模式的切换。较好的了解了在各个工作模式下的寄存器。

实验六

C语言程序实验

一、实验目的:

通过实验了解使用ADS 1.2编写C语言程序,并进行调试。

二、实验内容:

编写一个汇编程序文件和一个C程序文件。汇编程序的功能是初始化堆栈指针和初始化C程序的运行环境,然后跳转到C程序运行,这就是一个简单的启动程序。C程序使用加法运算来计算1+2+3+…+(N-1)+N的值(N为0时,结果为0;N为1时,结果为1)。

三、实验步骤:

1.启动ADS1.2,使用ARM Executable Image 工程模板建立一个工程ProgramC。2.建立汇编源文件Startup.s和Test.c,编写实验程序,然后添加到工程中。

3.设置工程链接地址RO Base为0x40000000,RW Base为0x40003000。设置调试入口地址Image entry point 为 0x40000000。

4.设置位于开始位置的起始代码段:选择Edit—DebugRel Settings,在DebugRel Settings对话框的左边选择ARM Linker项,然后在Layout页设置Object/Symbol为Startup.o,Section为Start。

5.编译链接工程,选择Project—Debug,启动AXD进行软件仿真调试。6.在Startup.s的“B Main”处设置断点,然后全速运行程序。

7.程序在断点处停止。单步运行程序,判断程序是否跳转到C程序中运行。

选择Processor Views—Variables打开变量观察窗口,观察全局变量的值,然后单步/全速运行程序,判断程序的运算结果是否正确。

四、程序清单:

#define uint8

unsigned char

#define uint32

unsigned int

#define N

uint32 sum;

// 使用加法运算来计算 1+2+3+...+(N-1)+N 的值。(N>0)

void Main(void)

{ uint32 i;

sum = 0;

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

{ sum += i;

}

while(1);

}

程序清单3.9

简单的起动代码

;起动文件。初始化 C 程序的运行环境,然后进入C 程序代码。

IMPORT

|Image$$RO$$Limit|

IMPORT

|Image$$RW$$Base|

IMPORT

|Image$$ZI$$Base|

IMPORT

|Image$$ZI$$Limit|

IMPORT

Main

;声明C 程序中的Main()函数

AREA

Start,CODE,READONLY

;声明代码段Start

ENTRY

;标识程序入口

CODE32

;声明32 位ARM 指令

Reset

LDR

SP,=0x40003F00

;初始化C 程序的运行环境

LDR

R0,=|Image$$RO$$Limit|

LDR

R1,=|Image$$RW$$Base|

LDR

R3,=|Image$$ZI$$Base|

CMP

R0,R1

BEQ

LOOP1

LOOP0

CMP

R1,R3

LDRCC

R2,[R0],#4

STRCC

R2,[R1],#4

BCC

LOOP0

LOOP1

LDR

R1,=|Image$$ZI$$Limit|

MOV

R2,#0

LOOP2

CMP

R3,R1

STRCC

R2,[R3],#4

BCC

LOOP2

B

Main

;跳转到 C 程序代码Main()函数

END

上一篇:小羊过桥400字作文下一篇:体能拓展训练心得-体育生训练心得