2023年ARM硬件试题库及答案_第1页
2023年ARM硬件试题库及答案_第2页
2023年ARM硬件试题库及答案_第3页
2023年ARM硬件试题库及答案_第4页
2023年ARM硬件试题库及答案_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

嵌入式硬件助理工程师认证考试试题题库选择题1、以下说法不对的的是(B)。A、任务可以有类型说明ﻩ B、任务可以返回一个数值C、任务可以有形参变量 ﻩD、任务是一个无限循环2、用图形点阵的方式显示一个16*16点阵汉字需要(B)字节。A、8ﻩ ﻩﻩB、32C、16ﻩ ﻩﻩ ﻩ D、643、下列描述不属于RISC计算机的特点的是(C)。A.流水线每周期前进一步。B.更多通用寄存器。C.指令长度不固定,执行需要多个周期。D.独立的Load和Store指令完毕数据在寄存器和外部存储器之间的传输。4、存储一个32位数0x2168465到2023H~2023H四个字节单元中,若以大端模式存储,则2023H存储单元的内容为(D)。A、0x21ﻩﻩ B、0x68C、0x65 ﻩﻩﻩﻩ D、0x025、μCOS-II中对关键代码段由于希望在执行的过程中不被中断干扰,通常采用关中断的方式,以下X86汇编代码对的并且不会改变关中断之前的中断开关状态的是(D)A.先CLI、执行关键代码、再STIB.先STI、执行关键代码、再CLIC.先POPF、CLI、执行关键代码、再PUSHFD.先PUSHF、CLI、执行关键代码、再POPF。6、RS232-C串口通信中,表达逻辑1的电平是(D)。A、0v ﻩﻩ ﻩ B、3.3vC、+5v~+15vﻩﻩ D、-5v~-15v7、ARM汇编语句“ADDR0,R2,R3,LSL#1”的作用是(A)。A.R0=R2+(R3<<1)B.R0=(R2<<1)+R3C.R3=R0+(R2<<1)D.(R3<<1)=R0+R28、IRQ中断的入口地址是(C)。A、0x00000000 ﻩﻩﻩ B、0x00000008C、0x00000018ﻩ D、0x000000149、S3C2420XI/O口常用的控制器是(D)。(1)端口控制寄存器(GPACON-GPHCON)。(2)端口数据寄存器(GPADAT-GPHDAT)。(3)外部中断控制寄存器(EXTINTN)。(4)以上都是。10、实时操作系统中,两个任务并发执行,一个任务要等待其合作伙伴发来信息,或建立某个条件后再向前执行,这种制约性合作关系被成为(A)。A.同步B.互斥C.调度D.执行11、和PC系统机相比嵌入式系统不具有以下哪个特点(C)。A、系统内核小ﻩ B、专用性强C、可执行多任务ﻩﻩ D、系统精简12、ADDﻩR0,R1,#3属于(A)寻址方式。A.立即寻址 B.多寄存器寻址C.寄存器直接寻址 ﻩD.相对寻址13、GET伪指令的含义是(A)A.包含一个外部文献ﻩ ﻩB.定义程序的入口C.定义一个宏ﻩﻩ D.声明一个变量14、存储一个32位数0x876165到2023H~2023H四个字节单元中,若以小端模式存储,则2023H存储单元的内容为(C)。A、0x00 ﻩﻩﻩﻩB、0x87C、0x65ﻩﻩ ﻩD、0x6115、μCOS-II操作系统不属于(C)。A、RTOS ﻩﻩﻩ ﻩB、占先式实时操作系统C、非占先式实时操作系统ﻩ D、嵌入式实时操作系统16、若R1=2023H,(2023H)=0x86,(2023H)=0x39,则执行指令LDRﻩR0,[R1,#8]!后R0的值为(D)。A.0x2023ﻩﻩﻩﻩﻩﻩB.0x86C.0x2023 ﻩﻩﻩ D.0x3917、寄存器R13除了可以做通用寄存器外,还可以做(C)。A、程序计数器 ﻩ B、链接寄存器C、栈指针寄存器 ﻩﻩD、基址寄存器18、FIQ中断的入口地址是(A)。A、0x0000001C ﻩﻩﻩB、0x00000008C、0x00000018ﻩ ﻩﻩD、0x0000001419、ARM指令集和Thumb指令集分别是(D)位的。A.8位,16位ﻩﻩ ﻩ B.16位,32位C.16位,16位 ﻩ ﻩ D.32位,16位20、ARM寄存器组有(D)个寄存器。A、7 ﻩ ﻩﻩﻩﻩB、32C、6ﻩﻩ ﻩﻩﻩﻩD、3721、若R1=2023H,(2023H)=0x28,(2023H)=0x87,则执行指令LDRﻩR0,[R1,#8]!后R0的值为(D)。A.0x2023 ﻩﻩ ﻩB.0x28C.0x2023ﻩﻩﻩ ﻩD.0x8722、寄存器R15除了可以做通用寄存器外,还可以做(A)A.程序计数器 ﻩ ﻩ B.链接寄存器C.堆栈指针寄存器 ﻩ ﻩD.基址寄存器23、嵌入式系统有硬件和软件部分构成,以下(C)不属于嵌入式系统软件。A.系统软件B.驱动C.FPGA编程软件D.嵌入式中间件24、μCOS-II操作系统属于(B)A、顺序执行系统ﻩﻩﻩ B、占先式实时操作系统C、非占先式实时操作系统 ﻩD、分时操作系统25、ARM指令集是(B)位的。A.16ﻩ B.32C.8 ﻩﻩ ﻩﻩﻩD.2426、假设R1=0x31,R2=0x2则执行指令ADD R0,R1,R2LSL#3后,R0的值是(C)A.0x33 ﻩﻩﻩ ﻩB.0x34C.0x39 ﻩﻩﻩ D.0x3827、寄存器R13除了可以做通用寄存器外,还可以做(C)A、程序计数器ﻩ ﻩ B、链接寄存器C、栈指针寄存器ﻩ ﻩﻩD、基址寄存器28、ARM寄存器组有(C)个状态寄存器A、7 ﻩ B、32C、6ﻩﻩ ﻩﻩﻩ D、3729、和PC机系统相比下列哪个不是嵌入式系统独具的特点(C)A、系统内核小 ﻩﻩ ﻩB、专用性强C、可执行多任务ﻩ ﻩ D、系统精简30、Unicode编码与(A)编码方式兼容。A、ASCII码ﻩﻩﻩ ﻩB、GBKC、GB2312ﻩ ﻩ D、区位码31、嵌入式系统有硬件和软件部分构成,以下(C)不属于嵌入式系统软件。A.系统软件B.驱动C.FPGA编程软件D.嵌入式中间件32、Cache用于存放主存数据的部分拷贝,主存单元地址与Cache单元地址之间的转换用(A)完毕。A.硬件B.软件C.用户D.程序员33、在μC/OS-II系统中,OSTimeTick()函数只被以下(A)函数或过程所调用。A.OSTickISRB.OSShedC.OSCtxSwﻩﻩD.OSIntCtxSw34、每种嵌入式操作系统都有自身的特点以吸引相关用户,下列说法错误的是(D)。A.嵌入式Linux提供了完善的网络技术支持;B.CLinux是专门为没有MMU的ARM芯片开发的;C.C/OS-Ⅱ操作系统是一种实时操作系统(RTOS);D.WinCE提供完全开放的源代码。35、下列关于存储管理单元(MMU)说法错误的是(B)。A.MMU提供的一个关键服务是使各个任务作为各自独立的程序在其自己的私有存储空间中运营。B.在带MMU的操作系统控制下,运营的任务必须知道其他与之无关的任务的存储需求情况,这就简化了各个任务的设计。C.MMU提供了一些资源以允许使用虚拟存储器。D.MMU作为转换器,将程序和数据的虚拟地址(编译时的连接地址)转换成实际的物理地址,即在物理主存中的地址。36、下列CPSR寄存器标志位的作用说法错误的是(D)。A.N:负数B.Z:零C.C:进位D.V:借位37、S3C2410X解决器为用户进行应用设计提供了支持多主总线的IIC接口。解决器提供符合IIC协议的设备连接的串行连接线为(C)。A.SCL和RTX ﻩB.RTX和RCXC.SCL和SDA D.SDA和RCX38、栈和队列的共同特点是(C)。A.都是先进先出B.B.都是先进后出C.只允许在端点处插入和删除元素D.没有共同点

39、有如下程序main(){intx=1,a=0,b=0;switch(x){case0:b++;case1:a++;case2:a++;b++;}printf("a=%d,b=%d\n",a,b);}该程序的输出结果是(A)。A.a=2,b=1B.a=1,b=1C.a=1,b=0D.a=2,b=2

40、若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是(D)。A.函数调用可以作为独立的语句存在B.函数调用可以作为一个函数的实参C.函数调用可以出现在表达式中D.函数调用可以作为一个函数的形参41、以下说法对的的是(C)。A.C语言程序总是从第一个的函数开始执行B.在C语言程序中,要调用函数必须在main()函数中定义C.C语言程序总是从main()函数开始执行D.C语言程序中的main()函数必须放在程序的开始部分42、寄存器R15用作(B)。A.栈指针寄存器 B.程序计数器C.当前程序状态寄存器ﻩD.基地址寄存器IRQ中断的优先级别是(D)。A.1 ﻩﻩ B.2C.3 ﻩﻩ D.4LDRR2,[R3,#128]的寻址方式是(C)。A.寄存器寻址ﻩﻩB.寄存器移位C.变址寻址 ﻩD.间接寻址S3C2410有(B)个USB接口。A.1ﻩﻩ B.2C.3ﻩ D.446、ARM解决器的工作模式有(C)种。A.5B.6C.7D.8填空题:串行通信方式有三中单工通信、双工通信和半双工通信。填写μC/OS-II中任务创建函数OSTaskCreate()的四个参数的含义:OSTaskCreate(MyTask,ﻩﻩ//(任务的函数指针)ﻩ(void*)s,ﻩﻩ//(传给任务函数的参数)ﻩ&TaskStartStk[TASK_STK_SIZE-1],//(任务的堆栈指针)ﻩ ﻩ0 ﻩ //(任务的优先级号));。ARM7指令系统采用三级流水线指令,分别涉及:取指、译码和执行。TCP/IP在多个层引入了安全机制,其中TLS协议位于(传输)层。OSTaskSuspend(self)可把正在运营的任务挂起(或等待),参数self指任务自身的优先级。用此函数挂起的任务可通过OSTaskResume(self)函数唤醒。下列程序的输出结果是(“Hello”)。maim(){charb[]="Helloyou";b[5]=0;printf("%s\n",b);}有数组定义inta[2][2]={{1},{2,3}};则a[0][1]的值为(0)。在ARM解决器的各种模式中,大多数应用程序运营在(用户)模式,当一个高优先级中断产生时会进入(快速中断)模式,在复位或软件软中断时进入(特权)模式。一个嵌入式系统结构有典型的四层组成,涉及:硬件层、中间层、软件层和功能层。一个FAT文献系统卷有四部分组成,涉及:保存区ﻩ、FAT区、根目录和数据区。事件控制块ECB中OSEventType表达事件类型,OSEventCnt表达信号量计数器(和信号量的值)。ﻩﻩ串行通信方式有三中单工通信、双工通信和半双工通信。OSTaskSuspend(self)可把正在运营的任务挂起(或等待),参数self指任务自身的优先级。用此函数挂起的任务可通过OSTaskResume(self)函数唤醒。假如信号量是用于表达打印机不忙,那么该信号量的初始值应设为1。若一个优先级为48的任务就绪,则在就绪表中,OSRdyTbl[]的OSRdyTbl[6]的D0置位,变量OSRdyGrp的ﻩD6置位。Socket接口是TCP/IP网络的__API______,定义了许多函数或例程。常用的Socket类型有两种为_流式(stream)__Socket和_数据报式(datagram)_Socket。其中_流式(stream)__Socket是面向连接的,_数据报式(datagram)_Socket是面向无连接的。调试程序时调入的文献最佳为Debug版本下编译生成的.axf文献,该版本的文献包含部分调试用到的信息。S3C44B0X使用ARM7(或ARM7TDMI) 内核,工作频率为66MHZ。在图形操作系统中,字符通常有两种存储方式:一种是图形点阵(或点阵)方式;一种是矢量图形(或矢量图)方式。在嵌入式开发系统中使用的都是图形点阵方式。和信号量用数值表达不同,邮箱可以使一个任务向令一个任务发送一个指针型变量,该变量包含了特定消息的数据结构。S3C44B0提供_两个__个独立的异步串口,都可以运营于__中断__模式或__DMA___模式。16、ARM解决器的两种工作状态为ARM状态和Thmub状态。17、USB家庭中有三位成员,即主机(或host)、设备(或device)、集线器(或Hub)。ARM存储器有两种存储模式,即大端模式和小端模式。假设Y=0x46134存储在2023H~2023H四个内存单元中,若以小端模式存储,则(2023H)=__0x34__、(2023H)=0x61_、(2023H)=_0x04_、(2023H)=__0x00__。信号量有两种类型,分别为:二进制(或binary)型和记数器(或counter)型。影响流水线性能的因素有(互锁)和(跳转指令)。某数码相机内置128MB的存储空间,拍摄分辨率设定为1600×1200像素,颜色为24为,若不采用压缩技术,使用内部存储器最多可以存储(23)张照片,该相机最多支持(224)种色彩。对于8位二进制数,-7的反码和补码分别是(11111000)和(11111001)。在CPU的状态寄存器中,假如符号标志为“1”,表达运算结果为(负);假如进位标记为“0”,表达(无进位或借位)。判断题程序运营过程中的资源可以是显示器、键盘,但不可以是一个数组或变量(X)21、在μCOS-II操作系统中,已知Task1的优先级为12,Task2的优先级为26。假如在Task2运营过程中发生键盘中断,在执行中断服务程序时Task1进入就绪状态,则中断返回时Task1得到CPU的使用权。(√ﻩ)若定义任务task1的优先级为12,则不能再定义其他任务的优先级也为12(√ﻩ)任务创建后即开始调度(X)液晶工作在文本模式下时,既可以显示英文字符也可以显示汉字(X)处在就绪状态的任务只能切换到运营状态(X)等待消息函数WaitMessage(0)中的“0”表达此函数的超时等待时间为0秒(X)若OSTaskSuspend(prio)函数把正在延时的任务挂起,则调用一次相应的唤醒函数即可使该任务切换到就绪状态。(X)调试程序时,需要停止程序运营后才可查看变量内容(√ )μCOS-II操作系统中移植成功后即可使用文献系统(X)将模拟信号转换成数字信号的电路是DA转换器。(×)IIC是同步串行数据总线,。(√)S3C2410的解决器对内存的访问只能通过Load/Store指令来实现。(√)NandFlash比NorFlash成本高,可靠性差。(×)C语言程序可以嵌套加入汇编程序模块。(√)运算放大器的输出电压范围一般大于电源电压的范围。(×)由于CPU内部寄存器的访问速度较高,根据ATPC标准,应尽也许使函数的参数控制在4个以下。(√)ARM解决器结构体系中具有T变种解决器核可以工作在ARM状态和Thumb状态。(√)简答题1、ARM微解决器的编程模型是指ARM微解决器的基本工作原理和一些与程序设计相关的基本技术细节,ARM编程模型重要有哪五个方面?重要是指什么内容?答案要点:ARM微解决器的工作状态:ARM状态、Thumb状态ARM体系结构的存储器格式:大端格式、小端格式ARM微解决器的工作模式:7种运营模式ARM体系结构的寄存器组织:37个32位寄存器,其中31个为通用寄存器,6个为状态寄存器,哪些寄存器是可编程访问的,取决微解决器的工作状态及具体的运营模式。ARM微解决器的异常状态:7种异常画图说明μCOS-II操作系统各状态之间是如何切换的,并举出至少一个相应的切换条件或函数。答:带箭头各任务间切换图对的,得1分;切换条件每三个得1分,共3分,每种切换能举出一个对的条件或函数即可。3、什么是μCOS-II操作系统的时钟节拍?答:时钟节拍是特定的周期性中断。(1分)这个中断可以看作是系统心脏的脉动。中断间的时间间隔取决于不同的应用,一般在10ms~200ms之间。(1分)时钟的节拍式中断使得内核可以将任务延时若干个整数时钟节拍,以及当任务等待事件发生时,提供等待超时的依据。(1分)时钟节拍率越快,系统的额外开销就越大。(1分)4、ARM解决器有几种工作模式?并做说明每种工作模式的含义。答:ARM解决器有7种工作模式:用户模式(usr)-正常程序执行的模式 ﻩ ﻩﻩ0.5分快速中断模式(fiq)-FIQ异常响应时进入此模式ﻩﻩ ﻩ0.5分中断模式(irq)-IRQ异常响应时进入此模式 ﻩ ﻩﻩ0.5分管理员模式(svc)-系统复位和软件中断响应时进入此模式ﻩﻩ0.5分中止模式(abt)-用于虚拟存储及存储保护ﻩﻩ ﻩﻩ0.5分系统模式(sys)-与用户类似,但有直接切换到其它模式等特权 0.5分未定义模式(und)-未定义指令异常响应时进入此模式ﻩ 0.5分ﻩ除了用户模式外,其他模式均可视为特权模式 ﻩﻩﻩﻩ0.5分5、什么是操作系统?操作系统在“硬件、操作系统、应用程序、硬件驱动”四者中,处在哪两层之间??答:操作系统是计算机中最基本的程序。操作系统负责计算机系统中所有软硬件资源的分派与回收、控制与协调等并发的活动;操作系统提供用户接口,使用户获得良好的工作环境;操作系统为用户扩展新的系统提供软件平台。(3分)操作系统处在应用程序和硬件驱动之间。(1分)6、什么是嵌入式系统?分别从狭义和广义两方面说明。答:从广义上说,凡是与产品结合在一起具有嵌入式特点的控制系统都可以叫嵌入式系统如电子表、超声波测距仪等职能仪表,常见CPU为MCS51系列芯片。(2分) ﻩ从狭义上说,嵌入式系统是指而嵌入式系统一般指在开发时移植了操作系统,功能较复杂的便携式电子设备,如手机、掌上电脑、MP4等,常见CPU为ARM、DSP、SOC等。(2分)7、简述任务切换的过程。答:当多任务内核决定运营此外的任务时,它保存正在运营任务的当前状态,即CPU寄存器中的所有内容。(1分)这些内容保存在任务的当前状态保存区,也就是任务自己的堆栈中。(1分)入栈工作完毕以后,就把下一个将要运营的任务的当前状态从任务的堆栈中重新装入CPU的寄存器,并开始下一个任务的运营。这个过程就称为任务切换。(1分)做任务切换所需要的时间取决于CPU有多少寄存器要入栈。(1分)8、S3C44B0的存储系统中,0xc000000和0xc080000的含义是什么?它们之间的512kbyte空间做什么用?答:0xC000000是SDRAM的起始地址,系统的程序存储空间从0xC080000开始。(2分)512Kbyte的空间划分出来,作为系统的LCD显示缓冲区使用(更新其中的数据,就可以更新LCD的显示)。(2分)9、简述你对嵌入式和嵌入式系统的理解?答:凡是使用了CPU的便携式电子设备都可以叫嵌入式,(如电子表、超声波测距仪等职能仪表,常见CPU为MCS51系列芯片)(2分)。而嵌入式系统一般指在开发时移植了操作系统,功能较复杂的便携式电子设备,(如手机、掌上电脑、MP4等,常见CPU为ARM、DSP、SOC等)。(2分)10、嵌入式设计流程?答:1)系统需求分析 ﻩﻩ2)体系结构设计 ﻩﻩ3)硬件/软件协同设计ﻩ ﻩ4)系统集成 ﻩ5)系统测试(每点约1分,酌情错2点,扣1分)11、什么是代码临界区,进、出代码临界应分别做什么?答:代码的临界区也称为临界区,指解决时不可分割的代码。一旦这部分代码开始执行,则不允许任何中断打入。(2分)ﻩﻩ为保证代码临界区的执行,在进入临界区之前要关中断,而临界区代码执行完以后要立即开中断(在任务切换时,地址、指令、数据等寄存器堆栈保护)。(2分)12、简要叙述嵌入式系统开发流程。参考答案及要点:建立开发环境;配置开发主机;建立引导装载程序BOOTLOADER;下载已经移植好的操作系统;建立根文献系统;开发应用程序。13、试简述常用的三极管放大电路和技术特点。答:共射电路:具有较大的电压放大倍数和电流放大倍数,输入电阻和输出电阻适中。共集电路:输入电阻大,输出电阻小,电压放大倍数小于1。共基电路:输入电阻小,频率特性好。14、嵌入式系统的软件层次结构涉及哪些部分?简朴说明各部分的功能与作用。答:驱动层程序、操作系统、应用程序接口和应用程序。驱动层程序:为上层软件提供设备的操作接口。操作系统:进程管理、进程间通信、内存管理等。应用程序接口:复杂函数和数据结构的集合,简化应用程序的开发。应用程序:实现用户功能。阅读程序题1、根据以下程序回答问题。

structNODE{intk;structNODE*link;};

main(){structNODEm[5],*p=m,*q=m+4;inti=0;while(p!=q){p->k=++i;p++;q->k=i++;q--;}

q->k=i;for(i=0;i<5;i++)printf("%d",m[i].k);printf("\n");}(1)i、p、structNODE和m的分别占据多少字节的内存空间?(4分)(2)p和q指针初始指向的地址相差多少字节?(4分)(3)程序运营后的输出结果是什么?(4分)参考答案及要点:(1)i、p、structNODE和m的分别占据4字节、4字节、8字节和40字节的内存空间。(2)p和q指针初始指向的地址相差32字节(3)程序运营后的输出结果13431。2、在分辨率为320x240的LCD上,执行完下列程序后,画出在LCD上显示的图形并在划横线处添加注释。voidMain_Task(void*Id){ﻩ intoldx,oldy; ﻩPDCpdc; ClearScreen(); pdc=CreateDC();ﻩﻩSetDrawOrg(pdc,LCDWIDTH/2,LCDHEIGHT/2,&oldx,&oldy); Circle(pdc,0,0,50);//_________________________ MoveTo(pdc,-50,-50);//_________________________ﻩ LineTo(pdc,50,-50);//_________________________ﻩ ArcTo(pdc,80,-20,TRUE,30);//_________________________ﻩﻩLineTo(pdc,80,20); ﻩArcTo(pdc,50,50,TRUE,30); ﻩLineTo(pdc,-50,50);ﻩﻩArcTo(pdc,-80,20,TRUE,30); ﻩLineTo(pdc,-80,-20); ﻩArcTo(pdc,-50,-50,TRUE,30);ﻩﻩOSTimeDly(3000);ﻩ}答: ﻩ ﻩ320x240的LCD以原点为圆心,50为半径画圆 (0.5分 画笔移动到坐标(-50,-50)处 (0.5分)ﻩ从坐标(-50,-50)到(50,-50)画直线ﻩ(0.5分)ﻩ从当前坐标开始以30为半径顺时针画圆弧到坐标(80,-20)ﻩ(0.5分)3、在划线处添加代码,完毕下面的程序,实现在task1中计算1到10的平均值,完毕后向task2发送信号量。Task2无限期等待信号量,等到后在LCD上显示收到平均值。ﻩﻩﻩ___OS_EVENT*math_Sem;__;VoidTask1() ﻩ{ﻩﻩinti,average=0,sum=0;ﻩ ﻩ __math_Sem=OSSemCreate(0);__ﻩ ﻩ for(i=1;i<=10;i++)ﻩﻩ {sum=sum+i;} ﻩﻩaverage=sum/10;ﻩﻩﻩ ﻩ_OSSemPost(math_Sem);__; ﻩ for(;;){OSTimeDly(100);}ﻩ }voidtask2(){ __U8err;ﻩ___; for(;;) ﻩﻩ{ _OSSemPend(math_Sem,0,&err);_ ; ﻩﻩLCD_printf("wegettheaverage!\n");ﻩ ﻩﻩﻩ ____OSTimeDly(100);__ ; }}4、在划横线处添加代码,完毕下面创建一个任务的过程,规定优先级为36,任务栈大小为256。OS_STKtask1_Stack[256]={0,};voidtask1(void*Id);#definetask1_Prio 36OSInit();//操作系统初始化OSTaskCreate(task1,(void*)0,(OS_STK*)&task1_Stack[256-1],task1_Prio);OSStart() ;//操作系统任务调度开始5、ARM指令集的每一条指令都是4字节的,下面是一段中断入口程序,在空白处填上该中断的类型和中断向量。ENTRYB ﻩStartup ﻩ; 复位中断,0x00 1分B ﻩUndefHandleﻩﻩ; 未定义指令中断,0x04ﻩﻩ1分B SWIHandle ﻩ; 软中断,0x08ﻩ ﻩﻩﻩ1分B ﻩPAbtHandleﻩﻩ; 预取中止,0x0Cﻩ ﻩ1分B DAbtHandle ﻩ; 数据中止,0x00000010 ﻩNOP; ﻩ ﻩﻩﻩ;系统保存未用,0x00000014B IRQHandleﻩﻩ; IRQ中断,0x18ﻩﻩﻩ ﻩ1分Bﻩ FIQHandle ﻩ;ﻩ快速中断,0x1C ﻩﻩ ﻩ1分6、下面的程序描述了键盘消息的创建和使用过程,认真阅读并在划横线的地方添加适当的注释。voidKey_Scan_Task(void*Id)//按键扫描任务{ﻩU32key;ﻩﻩﻩINT8Uerr;ﻩ ﻩPOSMSGpmsg;ﻩﻩ for(;;){ ﻩ OSMboxPend(Key_MailBox,0,&err);//__请求键盘邮箱ﻩ1分ﻩ ﻩ key=Zlg7289_ReadKey(); pmsg=OSCreateMessage(NULL,OSM_KEY,KeyBoard_Map[key],0);ﻩ ﻩﻩﻩ ﻩﻩ ;//__请求到表达有键按下的邮箱1分 ﻩ if(pmsg) ﻩﻩﻩﻩSendMessage(pmsg);//_创建消息ﻩ ﻩ1分ﻩ ﻩ}}voidMain_Task(void*Id)//接受键盘消息的任务{ POSMSGpMsg=0;//创建消息结构 ﻩﻩfor(;;)ﻩﻩ {//死循环ﻩ ﻩ pMsg=WaitMessage(0);//___发送消息 1分 ﻩ switch(pMsg->Message){//___判断消息的类型1分ﻩﻩﻩ caseOSM_KEY://键盘消息 ﻩ LCD_printf("Tohavekeyon!\n");//向液晶屏输出ﻩ break;ﻩ ﻩ }ﻩ ﻩ DeleteMessage(pMsg);//___删除消息1分 ﻩ}}7、三个任务代码如下,其中task1、task2、task3的优先级分别为:29、36,48。分析LCD上的显示结果。Voidtask1(){ ClearScreen();LCD_Printf(“task1isrunning!\n”);OSTimeDly(500);}Voidtask2(){ﻩClearScreen();LCD_Printf(“thisistask2!\n”);OSTimeDly(350);}Voidtask3(){ ClearScreen();LCD_Printf(“runningtask3!\n”);OSTimeDly(200);}在LCD上的显示结果为:第一次:task1isrunning!ﻩ(1分) 第二次:thisistask2! (1分)ﻩ第三次:runningtask3!ﻩ (1分) 第四次:runningtask3!ﻩ (1分) 第五次:thisistask2! (1分)第六次:task1isrunning! (1分)8、C语言程序#include"..\ucos-ii\includes.h"/*uC/OSinterface*/#include"..\ucos-ii\add\osaddition.h"#include"..\inc\drv.h"#include<string.h>OS_STKMain_Stack[STACKSIZE*8]={0,};//1)定义并初始化堆栈(数组)voidMain_Task(void*Id);#defineMain_Task_Prio12//2)定义任务优先级OS_EVENT*Nand_Rw_Sem;//3)定义信号量OS_EVENT*Uart_Rw_Sem;intmain(void){ ARMTargetInit();//开发板初始化ﻩOSInit();//4)操作系统初始化ﻩuHALr_ResetMMU();//复位MMUﻩLCD_Init();//初始化LCD模块ﻩLCD_printf("LCDinitializationisOK\n");//向液晶屏输出数据 LCD_printf("320x240TextMode\n");ﻩinitOSGUI();//初始化图形界面ﻩLoadFont();//调Unicode字库ﻩLoadConfigSys();//使用config.sys文献配置系统设立ﻩLCD_printf("CreatetaskonuCOS-II...\n");ﻩOSTaskCreate(Main_Task,(void*)0,(OS_STK*)&Main_Stack[STACKSIZE*8-1],Main_Task_Prio);//5)创建系统任务 OSAddTask_Init();//创建系统附加任务 LCD_printf("StartinguCOS-II...\n"); LCD_printf("Enteringgraphmode...\n"); LCD_ChangeMode(DspGraMode);//变LCD显示模式为文本模式 InitRtc();//初始化系统时钟Nand_Rw_Sem=OSSemCreate(1);//6)创建信号量,初值为1,满足互斥条件 OSStart();//7)操作系统任务调度开始 return0;}9、阅读下列与看门狗有关的寄存器描述,解释每一行代码的功能。看门狗定期器控制寄存器(WTCON)寄存器地址读/写描述初始值WTCON0x53000000读/写看门狗定控制寄存器0x8021WTCON的标记位WTCONBit描述初始值PrescalerValue[15:8]预装比例值,有效范围值为0~2550x80Reserved[7:6]保存00WatchdogTimer[5]使能和严禁看门狗定期器0=严禁看门狗定期器1=使能看门狗定期器0ClockSelect[4:3]这两位决定期钟分频因素00:1/1601:1/3210:1/6411:1/12800InterruptGeneration[2]中断的严禁和使能0=严禁中断产生1=使能中断产生0Reserved[1]保存0ResetEnable/Disable[0]严禁很使能看门狗复位信号的输出1=看门狗复位信号使能0=看门狗复位信号严禁1看门狗定期器数据寄存器(WTDAT)寄存器地址读/写描述初始值WTDAT0x53000004读/写看门狗数据寄存器0x8000看门狗计数寄存器(WTCNT)寄存器地址读/写描述初始值WTCNT0x53000008读/写看门狗计数器当前值0x8000#definerWTCON(*(volatileunsigned*)0x53000000)//第1行#definerWTDAT(*(volatileunsigned*)0x53000004)//第2行#definerWTCNT(*(volatileunsigned*)0x53000008)//第3行voidwatchdog_test(void){ﻩ rWTCON=((PCLK/1000000-1)<<8)|(3<<3)|(1<<2);//第4行 rWTDAT=7812; ﻩﻩﻩﻩﻩﻩﻩﻩ//第5行ﻩrWTCNT=7812;//第6行 rWTCON|=(1<<5);ﻩ//第7行}参考答案及要点:第1-3行:定义看门狗控制寄存器、数据寄存器和计数寄存器为rWTCON、rWTDAT和rWTCNT。(2分)第4行:设立看门狗的预装比例值为1000000,分频因素为1/128,并使能中断。(6分)第5-6行:对数据寄存器和计数寄存器赋值为7812。(2分)第7行:启动看门狗。(2分)10、下面程序是多任务中信号量的典型应用,阅读程序,分别画出各个任务的程序流程图,并说明程序要实现的功能什么。OS_EVENT*math_Sem;ﻩﻩ int source,dest;ﻩﻩ math_Sem=OSSemCreate(0);ﻩﻩvoidtask1()ﻩﻩ{ for(;;){source=8; ﻩﻩ OSSemPost(math_Sem);ﻩ ﻩ}}voidtask2()ﻩﻩ{ﻩU8err;for(;;){OSSemPend(math_Sem,0,&err); ﻩ dest=source;ﻩ ﻩsource=0;ﻩ }}答:功能:编写两个任务task1和task2实现规定的功能。设task2为较高的优先级,task1中给一个全局变量source赋值;task2中读取这个变量的值到另一个全局变量dest中,然后清零source变量。规定先赋值后读取。(3分) 流程图:(3分)Task1的流程图task2的流程图应用实践题1、运用串口1实现两个开发平台间的双机通信。规定1)画出双机通信的串口连接图。2)要实现开发平台A发送某个数,开发平台B接受到后加1再回送给开发平台A。应如何设计程序,给出编程思绪或画出程序流程图。1)(2分)ﻩ 2)编程思绪:ﻩ开发平台A编程思绪:1)初始化串口12)给一个变量赋初值,并调发送函数通过串口1发送3)调接受函数,通过串口1接受(3分) ﻩ开发平台B编程思绪:1)调接受函数,通过串口1接受2)接受到得数据加1 ﻩﻩﻩﻩ3)调发送函数,发送加1后的数据(3分)2、编写程序,实现运用ARM芯片的I/O端口控制LED显示。控制如下硬件原理图中的四个发光二极管LED1、LED2、LED3、LED4,使它们有规律地点亮和熄灭,具体顺序如下:LED1亮→LED2亮→LED3亮→LED4亮→LED1灭→LED2灭→LED3灭→LED4灭→全亮→全灭,如此反复。参考答案及要点:#include"2410lib.h"voidled_on(void){inti,nOut;nOut=0xF0;rGPFDAT=nOut&0x70;for(i=0;i<100000;i++);rGPFDAT=nOut&0x30;for(i=0;i<100000;i++);rGPFDAT=nOut&0x10;for(i=0;i<100000;i++);rGPFDAT=nOut&0x00;for(i=0;i<100000;i++);}voidled_off(void){inti,nOut;nOut=0;rGPFDAT=0;for(i=0;i<100000;i++);rGPFDAT=nOut|0x80;for(i=0;i<100000;i++);rGPFDAT|=nOut|0x40;for(i=0;i<100000;i++);rGPFDAT|=nOut|0x20;for(i=0;i<100000;i++);rGPFDAT|=nOut|0x10;for(i=0;i<100000;i++);}voidled_on_off(void){inti;rGPFDAT=0;for(i=0;i<100000;i++);rGPFDAT=0xF0;for(i=0;i<100000;i++);}3、实现CAN总线通信需要哪两个芯片?画出S3C44B0运用CAN总线进行通信的硬件连接示意图。要实现两个开发平台间通过CAN总线双机通信,应如何设计程序(给出软件设计思绪或程序流程图)。答:1)MCP2510和TJA1050。(2分)2)(3分) ﻩﻩ3)能对的表达CAN总线的初始化和发送接受编程思绪(3分)ﻩﻩ ﻩ开发平台A编程思绪:1)初始化MCP25102)启动can总线收发 ﻩﻩ3)通过can口发送一个字符 ﻩ开发平台B编程思绪:1)初始化MCP25102)启动can总线收发 ﻩﻩ3)通过can口接受一个字符4、给出S3C44B0通过驱动器控制步进电机的硬件连接示意图;已知步进电机正转时的控制顺序为A→AB→B→BC→C→CD→D→DA,以列表的形式给出各I/O控制口的值。可以通过哪个宏来设立I/O控制口的值。答:1)2)高四位I/O控制口的值3)可以通过宏SETEXIOBITMASK(bit,mask)(EXIO.h)来设立扩展I/O口。5、TCP/IP协议可以分为哪几层?画出S3C44B0进行网络通信的硬件框图;要实现基于UDP的网络通信,应如何设计程序,给出编程思绪或程序流程图。1)分为:ﻩ物理层数据链路层(IEEE802.3EthernetMAC)网络层(IP、ARP、ICMP、IGMP)传输层(TCP、UDP)应用层(BSDSockets)ﻩﻩ 2)3)能对的描述实现网络初始化、创建、绑定、发送和接受UPD包的过程。编程思绪:1)初始化以太网2)创建socket套接字3)绑定socket套接字和本机Ip4)通过socket发送数据或5)通过socket接受数据最后两步顺序可换6、独立式键盘和矩阵式键盘各有什么优缺陷?画出矩阵式键盘连接示意图;若采用矩阵式键盘,如何编程获得按下的键值,给出编程思绪或流程图。1)独立式键盘占有I/O口较多,但编程简朴;矩阵式键盘占有I/O接口较少,编程相对复杂。ﻩ2)3)辨认矩阵键盘按键的方法分为两步:第一步,辨认键盘有无键被按下;第二步,假如有键被按下,辨认出具体的按键。辨认键盘有无键被按下的方法是:让所有行线均置为0电平,检查各列线电平是否有变化,假如有变化,则说明有键被按下,假如没有变化,则说明无键被按下。辨认具体按键的方法是(亦称扫描法):逐行置零电平,其余各行置为高电平,检查各列线电平的变化,假如某列电平有高电平变为零电平,则可拟定此行此列交叉点处的按键被按下7、阅读以下S3C2410部分用户手册.求:当PCLK或UCLK为40

温馨提示

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

评论

0/150

提交评论