嵌入式系统原理与接口技术作业2013_第1页
嵌入式系统原理与接口技术作业2013_第2页
嵌入式系统原理与接口技术作业2013_第3页
免费预览已结束,剩余20页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

.专业整理.专业整理.嵌入式系统设计与应用复习题辽宁科技大学1什么是嵌入式系统?嵌入式系统是以应用为中心,以计算机技术为基础,软、硬件可裁减,功能可靠,成本、体积、功耗要求严格的专用计算机系统。在嵌入式系统中,操作系统具有怎样主要功能和特点?方便用户使用,操作系统应该使计算机系统使用起来十分方便。扩展机器功能,操作系统应该对系统硬件功能进行充分融合利用,扩充机器功能。管理系统资源,操作系统应该管理好系统中的所有硬件软、件资源。提高系统效率,操作系统应该充分利用计算机系统的资源,提高计算机系统的效率。构筑开放环境,操作系统应该构筑出一个开放环境。支持体系结构的可伸缩性和可扩展性,支持应用程序在不同平台上的可移植性。在设计嵌入式系统时,在选择嵌入式处理器和实时操作系统时,分别考虑哪些主要因素?在嵌入式系统设计时,以满足系统要求为依据。在选择处理器时,主要考虑功能、功耗、体积、可靠性等因素,在选择操作系统时,主要考虑操作系统的实时性,可靠性,可裁剪性等。常见微处理器有哪些类型,各有什么特点。微控制器:微控制器的最大特点是单片化,体积大大减小,从而使功耗和成本下降、可靠性提高。微控制器的片上外设资源一般比较丰富,适合于控制。快速傅里叶变换FF、谱分析等各种仪器上获得了大规模的应用。嵌入式微处理器:以最低的功耗和资源实现嵌入式应用的特殊要求。和工业控制计算机相比嵌入式微处理器具有体积小、重量轻、成本低、低功耗、可靠性高的优点。片上系统是基于FPGA技术的系统。嵌入式系统通常是面向特定应用的;嵌入式系统是将计算机技术,半导体技术和电子技术与各行各业的具体应用相结合的产物,是一门综合技术学科;嵌入式系统和具体应用有机的结合在一起,它的升级换代也是和具体产品同步进行的,因此嵌入式产品一旦进入市场,就有较长的生命周期;而不是存储于磁盘等载体中;嵌入式系统本身不具有自主开发能力,即使设计完成以后用户通常也不能对其中的程序功能进行修改,必须有一套开发工具和环境才能进行开发。嵌入式系统与传统的单片机系统在软件和硬件上有哪些主要的不同?在硬件上,嵌入式系统至少拥有一个高性能处理器作为硬件平台,而单片机系统一般为8位处16件。常见的实时操作系统有哪些?Vxworks操作系统、WinCE操作系统、Symbian操作系统、Linux操作系统、μC/OS操作系统。2ARM ARM、、、IESJ16ThumbD表示支持在线Debug;M表示内嵌乘法器Multiplier;I表示嵌入式ICE,支持在线断点和调试;E表示DSP指令,支持DSP的特定指令,主要是16bit;S表示具有可综合功能,提供VHDL或者Verilog语言设计,可以实现自己特定的硬件;J表示支持新的JAVA功能。常用的CPU冯诺依曼结构:采用冯诺依曼结构的微处理器的程序空间和数据是合在一起的,即取指令和取操作数都是在同一条总线上,通过时分复用的方式进行的。哈佛结构:采用哈佛总线结构的芯片内部程序空间和地址空间是分开的,这就允许同时取指令(来自程序空间)和同时取操作数(来自数据空间。通用计算机与嵌入式处理器各采用哪种指令集,这两类指令集有哪些不同?通用计算机一般采用复杂指令系统(CISC)包含一个丰富的微代码系统,简化了处理器上运行能够运行。绝大多数嵌入式处理器采用精简指令系统RIS外部程序,也就是把在处理器层没有完成的工作放到了上层进行,而处理器层少的这些成本可以用RISC1、8/2原则:80%的程序只使用20%的指令;2、采用Load/store指令模式,凡数据由外存到内存、内存到寄存器方向的流动统一用Load指令,而对于反方向的操作,都用store;3、用小指令集、多寄存器、指令执行简单快速;4、统一用单周期指令,从根本上克服了CISC的缺点。ARM7ARM9ARM7TDMIARM9TDMI采用5级流水线结构,分别为取指令、译码、执行、存储、写操作五级。从内部结构来看ARM9ARM9TDMI处理器内核采用ARMV4T16Thumb32位ARM32RISC试列举ARM用户模式Use。绝大部分的任务执行都在这种操作模式下,此为正常的程序执行模式。快速中断模式(FI据传输和通道处理,由FIQ普通中断模式(IR中断处理,由IRQ管理模式Superviso作系统使用的保护模式。中止模式(Abor保护,可由ABORT未定义模式(Unde理器时。试列举ARM1个寄存器用作PC即程序寄存器,指向程序执行位置。1个寄存器用作CPSR即当前状态寄存器,保存当前CPU状态。5个寄存器用作SPSR,备份不同模式下CPSR的值。30个寄存器作为通用寄存器,存储数据使用。试说明CPSRN位结果为负数标志位。N=1表示运算的结果为负数;N=0表示运算的结果为正数或零。Z位结果为零标志位。Z=1表示运算的结果为零;Z=0表示运算的结果为非零。C位为进位标志位。C=1表示有进位,C=0表示没有进位。V溢出标志位。V=1表示符号位溢出,V=0表示结果没有溢出。Q位DSP指令溢出标志位。在ARMvTE/J架构支持,指示DSP指令是否溢出。J位为Jazelle支持标志位。仅ARM5TE/JJ=1表示处理器处于JazelleI位为IRQI=1IRQ,I=0IRQF位为FIQF=1表示禁止FIQ,F=0表示允许FIQT为为Thumb状态标志位。仅ARMxT0表示处理器处于ARMT=1器处于Thumb试列出ARM快速中断FI:当处理器的快速中断请求引脚有效,且CPSR中的F位为0时,产生FIQ中断请求信号IRQ:当处理器的外部中断请求引脚有效,且CPSR中的I位为0时,产生异常中止异常:当外部的ABORT输入产生时,发生此异常。软件中断SWI:该异常由执行SWI可使用该异常机制实现系统功能调用。复位:当处理器的复位电平有效时,产生复位异常,程序跳转到复位异常处理程序处执行。未定义异常:当ARM该异常机制进行软件仿真。为什么说ARM32数据线32位,寄存器32位,编码32位。ARM9FIQIRQFIQ异常模式下有足够的私有寄存器,且支持数据传输和通道处理方式,从而避免了对寄存器保护的要求,提高响应速度。FIQ异常处于所有异常向量的之后,这样FIQ中断处理程序可以直接的放在中断向量处,而不必安排一条跳转指令。FIQ的优先级高于IRQ的优先级。3ARM16类指令条件域所对应的CPSR助记符标志含义EQZ置位相等NEZ清零不相等CSC置位无符号数大于或等于CCC清零无符号数小于MIN置位负数PLN清零正数或零VSV置位溢出VCV清零未溢出HIC置位Z清零无符号数大于LSC清零Z置位无符号数小于或等于GEN等于V带符号数大于或等于LTN不等于V带符号数小于GTZ清零且(N等于V)带符号数大于LEZ置位或(N不等于V)带符号数小于或等于AL忽略无条件执行ARM立即寻址:操作数在指令中直接给出。寄存器寻址:操作数存储在寄存器中。基地址变址寻址:操作数的地址为基地址与变址的和。寄存器间接寻址:操作数的地址存储在寄存器中的一种寻址方式。多寄存器寻址:操作数存储在多个寄存器中的一种寻址方式。4什么是伪指令和伪操作?在ARM在ARM汇编语言程序中有些特殊助记符,这些助记符与一般指令的助记符的不同之处在于没有相对应的操作码或者机器码,通常称这些特殊指令助记符为伪指令,他们所完成的操称为伪操作。ARM(1)符号定义伪指令;(2(3(4(5)宏指令及其他伪指令。熟悉常用伪指令的含义。(详见课堂PPT)宏定义的格式为:MACRO[$标号]宏名[$参数1,$参数2…..]指令序列MENDMACROMEND码定义为一个整体,又称宏,然后在程序中就可以在程序中通过宏的名称及参数调用该段代码。宏与子程序的区别:利用跳转表实现具有下述功能的汇编程序:当r01时,调用子程序CASE1,完成r1加r2把结果放入r3当r02时,调用子程序CASE2,完成r1减r2把结果放入r3当r03时,调用子程序CASE3,完成r1与r2把结果放入r3否则,完成r1r2把结果放入r3参考程序AREAJumpTest,CODE,READONLY;定义代码段CODE32;设置为arm指令集ENTRY;程序入口startMOVr0,#1MOVr1,#3MOVr2,#2ADRr4,JumpTable;将跳转表地址送给r4CMPr0,#1;ifr0==1thenCALLCASE1MOVEQr3,#0LDREQpc,[r4,r3,LSL#2]CMPr0,#2; ifr0==2thenCALLMOVEQr3,#1LDREQpc,[r4,r3,LSL#2]CMPr0,#3; ifr0==3thenCALLMOVEQr3,#2LDREQpc,[r4,r3,LSL#2]DEFAULT ;otherwiseCALLORRr0,r1,r2SWITCHENDMOVr0,#0x18;调用软中断返回操作系统LDRr1,=0x20026SWI0x123456JumpTable DCDCASE1DCDDCDCASE1 ADDr3,r1,r2BSWITCHENDCASE2 SUBr3,r1,r2BSWITCHENDCASE3 ANDr3,r1,r2BSWITCHENDENDr4作为计数器,r1参考程序:AREASort,CODE,READONLYENTRYStart:MOVr4,#0;LDRr6,=Src;ADDr6,r6,#Len-4;Outer:LDRr1,Inner:LDRr2,LDRr3,[r1,#4];CMPr2,r3;STRGTr3,STRGTr2,[r1,ADDr1,r1,#4;CMPr1,r6;BLTInner;ADDr4,r4,#4;CMPr4,#len-4;SUBLTr6,r6,BLTOuter;Stop:MOVr0,#0x18;LDRr1,=0x20026;SWI0x123456;AREAArray,DATA,READWRITESrcDCD2,4,10,8,14,1,12LenEQU76*4ENDAREAThumbsub,CODE,READONLYENTRYCODE32StartADRr0,Thumb_code+1BXr0CODE16Thumb_codeMOVr0,#10MOVr1,#3BLdoaddStopMOVr0,#0x18LDRr1,=0x20026SWI0xABDoaddADDr0.r0,r1MOVpc,lrEND试写出ADRr0,Thumb_code+1;BXr0;指令的作用是什么?试写出上述程序中实现子程序调用及子程序调用返回的指令。试说明指示符或伪指令AREA、ENTRY、CODE16CODE32参考答案:1、实现由ARM指令集向Thumb指令集的转换2、子程序调用BLdoadd子程序返回MOVpc,lr3、AREA段定义ENTRY程序入口CODE16Thumb指令集CODE32ARM指令集intgcd(inta,intb){while(a!=b)do{if(a>b)a=a-b;elseb=b-a;}returna;}试将上面的程序用ARM汇编语言实现。参考程序gcdCMPr0,SUBGTr0,r0,SUBLTr1,r1,BNEgcdMOVpc,18+8R7参考程序AREAadder,CODE,READONLYENTRYStartMOVr7,#18;MOVr6,#8;ADDr7,r7,r6;StopMOVr0,#0x18;LDRr1,=0x20026;SWI0xABENDsrc20dst888参考程序AREABlock,CODE,READONLY;namethisblockofcodenum EQU 20 ;Setnumberofwordstobecopiedstart

ENTRY ;markthefirstinstructiontocallLDR r0,=src ;r0=pointertosourceblockLDR r1,=dst ;r1=pointertodestinationMOV r2,#num ;r2=numberofwordstocopyMOV sp,#0x400 ;setupstackpointer(r13)MOVSr3,r2,LSR#3MOVSr3,r2,LSR#3;numberofeightwordmultiplesBEQcopywords;lessthaneightwordstomove?STMFDsp!,{r4-r11};savesomeworkingregistersLDMIAr0!,{r4-r11};load8wordsfromthesourceSTMIAr1!,{r4-r11};andputthematthedestinationSUBSr3,r3,#1;decrementthecounterBNEoctcopy;...copymoreoctcopyLDMFD sp!,{r4-r11} ;don'tneedthesenow-restoreoriginalscopywordsANDSr2,r2,#7;numberofoddwordstocopyBEQstop;Nowordslefttocopy?wordcopyLDRr3,[r0],#4;awordfromthesourceSTRr3,[r1],#4;storeawordtothedestinationSUBSr2,r2,#1;decrementthecounterstop

BNE wordcopy ;...copymoreMOV r0,#0x18 ;angel_SWIreason_ReportExceptionLDRr1,=0x20026;ADP_Stopped_ApplicationExitSWI0x123456;ARMsemihostingSWIAREABlockData,DATA,READWRITEsrc DCD 1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8,1,2,3,4dst DCD END使用ADS1.2intmain(void){chari;intintdata[0]=1;data[1]=2;data[2]=3;data[3]=4;for(i=0;i<4;i++){sum=sum+data[i];}returnsum;}经过汇编后,对应的汇编程序如下:main *stmfd r13!,{r0-r3,r14};按照满递减方式将r14r3-r0入000080ac mov r0,#0;sum=0;000080b0 mov r1,#1000080b4 str r1,[r13,#0]; r13数组起始地000080b8 mov r1,#2000080bc str 000080c0 mov r1,#3000080c4 str 000080c8 mov r1,#4000080cc str 000080d0 mov i=0000080d4 cmp r1,#4; comparei,4000080d8 bcs 0x80f0; (main+0x48);ifi>4goto80f0000080dcldrr2,[r13,r1,lsl#2]: r2=data[i]000080e0addr0,r2,r0; sum=sum+data[i]000080e4addr1,r1,#1; i++000080e8andr1,r1,#0xff; i转化为char000080ecb0x80d4; (main+0x2c)000080f0addr13,r13,#0x10000080f4ldrreturn阅读该程序并回答以下问题i、在ADS1.2中所使用的堆栈是什么类型的?ii、在ADS1.2中如何保证数据类型为无符号8位整型的?iii、上述程序中将数组保存在哪里?iv、入栈指令stmfd r13!,的入栈顺序是什么?使用ADS1.2{unsignedinti;shortsum=0;for(i=0;i<64;i++){sum=(short)(sum+data[i]);}returnsum;}经过反汇编后,获得如下的汇编程序:0x00000000MOVr2,r0;r2=data0x00000004MOVr0,#0;sum=0(短整型16bit)0x00000008MOVr1,#0;i=00x0000000cADDr3,r2,r1,LSL#1;r3=&0x00000010LDRHr3,[r3,#0]; r3=data[i]0x00000014ADDr0,r3,r0; sum=sum+data[i]0x00000018MOVr0,r0,LSL#16;转换r0为短整型0x0000001cMOVr0,r0,ASR#160x00000020ADDr1,r1,#1; i++0x00000024CMPr1,#0x40; comparei,640x00000028BCC0xc; if(i<64)goto0xc0x0000002c.MOVpc,r14; returnsum阅读程序并回答如下问题。请为获得的反汇编语言加上注释。在ADS在ADS在ADSLDRH若子程序中的中间变量无特殊要求,是选择为短整型还是选择为整型好,为什么?0x10001r1r2、r3MOVr0,#0x1000;40x1010LDMIBr0!,{r1,r2,r3}30x100c20x100810x100400x10000x10001r1r2、r3MOVr0,#0x1000;LDMIAr0!,

0x101043432100x10040x1000第十一章存储系统机制及存储接口试画出带有存储器管理单元7微微处理器MMU页表主存储器辅助存储器1MMU单元微处理器管理主存框图CPU从指令中获得逻辑地址通过MMU单元查找页表,将逻辑地址转换为物理地址,从而实现了主存的访问。存储器管理单元是ARMMMU的程序代码。提示:将使用到CP15C1参考程序MRCP15,0,r0,c1,0,0; ORRr0,#0x1; 使能MMUMCRP15,0,r0,c1,0,0; 时钟模块FLASH模块时钟模块FLASH模块复位模块ARM处理器JTAG接口SDRAM模块UART接口1最小嵌入式系统方框图、试画出复杂嵌入式系统的存储器结构方框图,并简要说明各部分的作用。寄存器寄存器Cache主存储器图答案寄存器:位于微处理器内部,可以为微处理器直接使用。Cache:高速缓存,读写速度高于主存。主存储器:用户程序代码和数据的主要存储区。辅助存储器:用于存放用户程序代码的备份。第八章中断机制 微处理器控制I/O1、查询方式处理器周期的执行查询程序来读取I/O端口或部件的状态寄存器,并判断其状态。从而使微处理器或部件在数据、命令数据传输时保持同步。缺点:执行效率低;不能实时处理I/O端口请求。2、中断方式I/O端口或部件有数据传输请求是,向微处理器发出中断请求,当微处理器接收到该请求时,中止当前任务,转而处理I/O端口的请求,处理完成后继续原操作。ARM9FIQIRQ1、FIQ异常模式下有足够的私有寄存器,且支持数据传送和通道处理方式,从而避免对寄存器保护的要求,提高响应速度。2、FIQ的异常向量被放在所有异常的最后,这样FIQ中断处理程序可以直接放在中断向量处,而不必安排一条跳转指令。3、FIQ异常的优先级也高于IRQ异常。试写出ARM9微处理器处理IRQ1、链接寄存器R14_irq保存有被执行指令地址+4;2、状态寄存器SPSR_irq保存有CPSR寄存器的内容;/*系统进入IRQ中断模式*/3、状态寄存器CPSR的位[4:0]被赋予0b10010;/*切换至ARM状态*//*[5]T、[6]F、[7]I*/4、寄存器CPSR的位[5]清0,但位[6]不变;/*禁止IRQ中断*/5、寄存器CPSR的位[7]置1;6、如果采用高向量地址配置,那么PC寄存器被赋予0xffff0018,否则PC寄存器被赋予0x00000018。试写出ARM9微处理器处理FIQ1、链接寄存器R14_fiq保存有被执行指令地址+4;2、状态寄存器SPSR_fiq保存有CPSR寄存器的内容;/*系统进入FIQ中断模式*/3、状态寄存器CPSR的位[4:0]被赋予0b10001;/*切换至ARM状态,禁止FIQ中断*//*[5]T、[6]F、[7]I*/4、寄存器CPSR的位[5]清0,但位[6]置1不变;/*禁止IRQ中断*/5、寄存器CPSR的位[7]置1;6、如果采用高向量地址配置,那么PC寄存器被赋予0xffff001c,否则PC寄存器被赋予0x0000001c。第九章键盘及数码管显示9.1已知S3C2440LED1K1LED1当按下K2LED2LED 测试GPB5 R011KGPB6 R021KGPB7 R031K

VDD33VLED1K1LED2K2K3LED3K4

VDD33VGPB8 R041K

R1 R2 R3 R410K10K10K10KR1 R2 R3 R410K10K10K10KGPF1GPF4GPF2GPF0ND按键测试

G图1按键及显示电路原理GPFCON位描述GPF7[15:14]00=Input10=EINT701=Output11=ReservedGPF6[13:12]00=Input10=EINT601=Output11=ReservedGPF5[11:10]00=Input10=EINT501=Output11=ReservedGPF4[9:8]00=Input10=EINT401=Output11=ReservedGPF3[7:6]00=Input10=EINT301=Output11=ReservedGPF2[5:4]00=Input10=EINT201=Output11=ReservedGPF1[3:2]00=Input10=EINT101=Output11=ReservedGPF0[1:0]00=Input10=EINT001=Output11=ReservedGPFCON端口F控制寄存器选择端口功能GPFDAT端口F数据寄存器读取端口数据寄存器描寄存器描述功能GPFUPF控制寄存器0:内部加上拉电阻1:内部不加上拉电阻//×**************************************************//按键点亮LED程序//×**************************************************//目的:掌握按键与IO口的使用,IO口位判断的方法//以便掌握按键的使用。//×**************************************************//功能:LED,按键//接口:GPB5->LED1 GPF1->KEY1// GPB6->LED2 GPF4->KEY2// GPB7->LED3 GPF2->KEY3// GPB8->LED4 GPF0->KEY4////×**************************************************#include"def.h" 所要包含的头文件#include"option.h"#include#inclu

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论