云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 32位单片机与嵌入式操作系统

32位单片机与嵌入式操作系统

  • 62 次阅读
  • 3 次下载
  • 2025/6/24 16:39:47

《32位单片机与嵌入式操作系统》测试

班级 姓名 学号

题号 得分

一 二 三 四 总得分 一、简答(25分)

1、如何实现让S3C2410从32位的FLASH启动?(2分)

答案:S3C2410首先从NAND FLASH中读取前4K字节的程序到其内部自带的4K字节的SRAM中,然后,再从此RAM中开始执行此程序。在此程序中要完成的最重要的任务是初始化SDRAM和NAND FLASH读写控制器,然后把NAND FLASH中的完整程序复制到SDRAM,接下来,跳转到SDRAM中,执行完整的程序,由此完成启动任务。

2、从寄存器分组的角度,解释为什么FIQ比IRQ具有更快地中断响应速度?(2)

答案:ARM的FIQ模式提供了更多的banked寄存器,r8到 r14还有SPSR,而IRQ模式就 没有那么多,R8,R9,R10,R11,R12对应的banked的寄存器就没有,这就意味着在ARM的IRQ模式下,中断处理程序自己要保存R8到R12这几个寄存器,然后退出中断处理时程序要恢复这几个寄存器,而FIQ模式由于这几个寄存器都有banked寄存器,模式切换时CPU自动保存这些值到banked寄存器,退出FIQ模式时自动恢复,所以这个过程FIQ比IRQ快. 在symbian系统里,当CPU处于FIQ模式处理FIQ 中断的过程中,预取指令异常,未定义指令异常,软件中断全被禁止,所有的中断被屏蔽。所以FIQ就会很快执行,不会被其他异常或者中断打断,所以它又比 IRQ快了。而IRQ不一样,当ARM处理IRQ模式处理IRQ中断时,如果来了一个FIQ中断请求,那正在执行的IRQ中断处理程序会被抢断,ARM切换到FIQ模式去执行这个FIQ,所以FIQ比IRQ快多了。

3、ARM处理器具有7种工作模式,说明通过对哪个寄存器操作,如何操作让ARM处理器进入SVC模式?(3)

答案:模式由CPSR中的低五位决定,更改这5位(用户模式除外)就可以进入相应的模式。

4、在保证功能不变的前提下,如何将以下三条指令变为两条指令(2)

CMP r3, #0 BEQ skip SUB r0,r1,r2 Skip

答案:CMP r3,#0

SUBNE r0,r1,r2

第 1 页 共 2 页

5、对于S3C2410来说,它的最大可外扩地址空间容量是多少?可外扩的SDRAM最大容量是多少?SDRAM的首地址是多少?该首地址可变吗?(4分) 6、LDR伪指令是一个重要指令,在一定情况下 LDR伪指令可以被ARM指令取代,说明ARM处理器如何实现下列三条指令的。(8分)

LDR R0,=0xff LDR R1,=0xffffffff LDR R2,=0x1234

7、列举至少4种常见的嵌入式操作系统,并简单说明它们的实时性4(分)? (1)嵌入式Linux 、(2)VxWorks 、(3)Windows CE、(4)μC/OS一Ⅱ

嵌入式Linux的实时性表现为: 内核的可抢占性:Linux内核的不可抢占性使得实时任务无法在任务到来的时候获得调度权,提高内核的可抢占性就是实现内核的可抢占性,增加内核的可抢占点 ;细化时钟粒度:Linux内核缺乏提供的高精度的时钟,依赖系统低精度的时钟无法分辨高精度的实时任务的到来;Linux体系提供实时性能需要添加实时软件模块。而这些模块运行的内核空间正是操作系统实现调度策略、硬件中断异常和执行程序的部分。由于这些实时软件模块是在内核空间运行的,因此代码错误可能会破坏操作系统从而影响整个系统的可靠性,这对于实时应用将是一个非常严重的弱点。

VxWorks的实时性表现为:VxWorks是一种嵌入式实时操作系统(RTOS),Vxworks共支持256个不同优先级的task, 可以保证高优先的任务快速执行 没有内核态和用户态之分,所以task的上下文切换的时间以及系统开销会小很多;Vxworks 以内核线程的形式实现中断处理程序的下半部,这在Linux中也已实现;强实时操作系统的函数调用与服务的执行时间应具有可确定性。

Windows CE的实时性表现为:中断服务线程(IST)的准备误差或延时不会超过100us; 可提供精细度至lms的定时器,并保证最大延迟不会超过IOOus; 系统核心的排班,默认为每lms重新排班一次。

μC/OS一Ⅱ的实时性表现为:多任务,可管理64个任务,任务的优先级必须是不同的,不支持时间片轮转调度法;可确定性,函数调用与服务的执行时间具有其可确定性,不依赖于任务的多少。

二、分析题(共30分)

1、程序分析(4分) 定义如下宏:

#define setbit(x,y) x|(1<

回答以下问题:① setbit(3,1)=? ②clrbit(5,1)=? 答案:setbit(3,1)=00000011b clrbit(5,1)=00000101b

2、取你学号的后两位数(以十进制计),将它以二进制格式写入下面图表的第二行中,完

成任务就绪表,问:你的学号=?,OSRdyTbl[1]=?(二进制数),OSRdyGrp=?(十进制数) ,并计算出当前最高优先级的值?(7分)

第 2 页 共 2 页

答案:我的学号=07,

以二进制写入第二行中是:00000111,即OSRdyTbl[1]= 00000111b(二进制数) OSRdyGrp=2^6+2^4+2^3+2^2+2=94(十进制数) 当前最高优先级值为8*1+0=8 闯哥学号=19,

以二进制写入第二行中是:00010011,即OSRdyTbl[1]= 00010011b(二进制数) OSRdyGrp=2^6+2^4+2^3+2^2+2=94(十进制数) 当前最高优先级值为8*1+0=8 文超学号=03,

以二进制写入第二行中是:00000011,即OSRdyTbl[1]= 00000011b(二进制数) OSRdyGrp=2^6+2^4+2^3+2^2+2=94(十进制数) 当前最高优先级值为8*1+0=8 致远的学号=36,

以二进制写入第二行中是:00100100,即OSRdyTbl[1]= 00100100b(二进制数) OSRdyGrp=2^6+2^4+2^3+2^2+2=94(十进制数) 当前最高优先级值为8*1+2=10

4:针对JXARM9-2410实验箱,在我们所做的外部中断实验中,假设,编译后,文件2410init.s

中标号IsrIRQ内存地址为0x30000664,外部中断3的中断服务函数eint3_isr的首地址为0x30000888,且定义.EQU _ISR_STARTADDRESS, 0x33fffe??,(??是你学号的后两位乘以4后变为十六进制数),其余代码不变,分析2410init.s代码回答下列问题:

第 3 页 共 2 页

①HandleIRQ=?②[HandleIRQ]=? ③外部中断3的中断向量地址=?④外部中断3的中断向量地址中的内容=?⑤表述外部中断3从中断发生到中断服务程序被执行的整个过程。(15分)

答案:我的学号是07,7*4=28=1c(H) 则HandleIRQ=0x33fffe1c+0x18=0x33fffe34 [HandleIRQ]= 0x30000664

外部中断3的中断向量地址=0x33fffe1c+0x2c=0x33fffe48 外部中断3的中断向量地址中的内容=0x30000888 闯哥的学号是19,19*4=76=4c(H)

则HandleIRQ=0x33fffe4c+0x18=0x33fffe64 [HandleIRQ]= 0x30000664

外部中断3的中断向量地址=0x33fffe4c+0x2c=0x33fffe78 外部中断3的中断向量地址中的内容=0x30000888 文超的学号是03,03*4=12=0c(H)

则HandleIRQ=0x33fffe0c+0x18=0x33fffe24 [HandleIRQ]= 0x30000664

外部中断3的中断向量地址=0x33fffe0c+0x2c=0x33fffe38 外部中断3的中断向量地址中的内容=0x30000888 致远的学号是36,36*4=144=90(H)

则HandleIRQ=0x33fffe90+0x18=0x33fffeA8 [HandleIRQ]= 0x30000664

外部中断3的中断向量地址=0x33fffe90+0x2c=0x33fffeBC 外部中断3的中断向量地址中的内容=0x30000888 执行过程:

外部中断3发生时,PC=0x00000018,在0x00000018地址中的指令代码为:ldr pc,_irq 而_irq中的数是0x30000018,此时有pc=0x30000018地址在SDRAM中,程序计数器执行到地址为0x30000018,此地址存放的指令将[HandleIRQ]赋给PC, IsrIRQ赋给[HandleIRQ]此时有IsrIRQ=PC

让PC=R8而R8= _ISR_STARTADDRESS+0x20+Address*4(外部中断3的地址是Address=3),从而R8= _ISR_STARTADDRESS+0x20+3*4=_ISR_STARTADDRESS+0x2c

即可以完成将外部中断3的中断服务函数的首地址给PC,从而实现外部中断3的响应。

三、编程题:(10分)

1.将如下的程序代码中的斜体加粗部分用ARM汇编语言代替,实现混合编程(10分)

char seg7table[16];

*((U8*) 0x10000006) = 0x00;

{

*((U8*) 0x10000004) = seg7table[i]; for(i=0;i<0x10;i++) for( ; ; )

}

第 4 页 共 2 页

搜索更多关于: 32位单片机与嵌入式操作系统 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

《32位单片机与嵌入式操作系统》测试 班级 姓名 学号 题号 得分 一 二 三 四 总得分 一、简答(25分) 1、如何实现让S3C2410从32位的FLASH启动?(2分) 答案:S3C2410首先从NAND FLASH中读取前4K字节的程序到其内部自带的4K字节的SRAM中,然后,再从此RAM中开始执行此程序。在此程序中要完成的最重要的任务是初始化SDRAM和NAND FLASH读写控制器,然后把NAND FLASH中的完整程序复制到SDRAM,接下来,跳转到SDRAM中,执行完整的程序,由此完成启动任务。 2、从寄存器分组的角度,解释为什么FIQ比IRQ具有更快地中断响应速度?(2)

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com