《嵌入式系统》试题库
50、 什么是基于查询的实时软件结构?有何优缺点?实时性如何决定? 答:基于查询的实时软件结构无中断机制,仅采用查询方式的实时软件结构。
优点:侧重任务的处理,软件设计简单,堆栈可预测,可调用不可重入函数(任务间不嵌 套)。
缺点:对事件响应不能实时,容易丢弃异步事件;所有的任务具有相同的优先级别,如果 一个任务执行时间不可预测,则所有任务的响应时间不可预测;主程序是一个无限循环的 结构,一个任务崩溃则引起整个系统崩溃。 实时性(最坏情况):取决于所有其它任务执行时间之和。 51、 什么是基于中断的实时软件结构?有何优缺点?实时性如何决定? 答:基于中断的实时软件结构采用纯中断方式的实时软件结构,事件和任务处理全部由中 断服务子程序完成。 优点:侧重事件的处理,利用中断优先级解决了优先级问题 缺点:容易漏掉低优先级异步事件;中断嵌套容易导致栈溢出,堆栈不可预测;调用不可 重入型函数时,要满足互斥条件。 实时性(最坏情况):高优先级任务能得到及时响应和处理。 52、 什么是前后台系统?有何优缺点?实时性如何决定? 答:前后台系统分为前台程序和后台程序。前台程序也称中断级程序,通过中断来处理事 件,在中断服务子程序中,一般对中断做一些简单的处理,然后给出事件发生的标志,待 后台程序来处理;后台程序也称任务级程序,一个死循环,循环查询各种标志位,如果标 志位置位,就执行相应的任务程序。 优点:系统结构简单,几乎不需要额外的存储开销;可以避免中断嵌套(栈溢出),避免 漏掉异步事件;可调用不可重入函数(任务间不嵌套)。
缺点:所有的任务具有相同的优先级别,如果一个任务执行时间不能确定,则所有任务响 应时间不可预测;后台程序是一个无限循环的结构,一旦在这个循环体中正在处理的任务 崩溃,使得整个任务队列中的其他任务得不到机会被处理,从而造成整个系统的崩溃。 实时性:取决于所有其它任务的执行时间之和。
第 21 页 共 44 页
《嵌入式系统》试题库
53、 重入函数有何特点?
答:可用于递归调用或者多个过程同时调用;生成模拟栈,用来完成参数传递和保存局部 变量;其他函数不可重入,原因是参数和局部变量放在固定存储区域。
54、 一般尽量少采用重入函数,为什么?
答:重入函数会导致栈不可预测,而嵌入式系统中 RAM 容量都很小,容易导致栈溢出。 55、 关键字 static 有什么作用?
答:关键字 static 有三个作用:在函数体内,一个被声明为静态的变量在这一函数被调用 过程中维持其值不变;在文件域内(但在函数体外),一个被声明为静态的变量可以被文 件域内所有函数访问,但不能被文件域外其它函数访问。它是一个本地的全局变量;在文 件域内,一个被声明为静态的函数只可被这一文件域内的其它函数调用。那就是,这个函 数被限制在声明它的文件的本地范围内使用。 56、 关键字 const 有什么作用? 答:关键字 const 的作用是为给读你代码的人传达非常有用的信息,实际上,声明一个参 数为常量是为了告诉了用户这个参数的应用目的;通过给优化器一些附加的信息,使用关 键字 const 也许能产生更紧凑的代码;合理地使用关键字 const 可以使编译器很自然地保护 那些不希望被改变的参数,防止其被无意的代码修改。 57、 关键字 volatile 有什么作用? 答:阻止编译器优化。一个定义为 volatile 的变量是说这变量可能会被意想不到地改变 精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不 是使用保存在寄存器里的备份。 58、 列出 volatile 变量使用的几种情况。 答:并行设备的硬件寄存器(如:状态寄存器);中断服务子程序中会访问到的非自动变 量;多线程应用中被几个任务共享的变量。 59、 请指明该定义的含义并解释每个修饰关键词的作用:volatile const unsigned char UTRSTAT0。 答:易失只读状态寄存器 UTRSTAT0; volatile:可能被外界(硬件、其他进程)改变; const:本程序不应该试图去修改它; unsigned char:无符号字节类型; 60、 请指出下述求平方函数的错误并写出正确代码。 int square(volatile int *ptr) {
return (*ptr) * (*ptr); }
答:由于指针 ptr 指向 volatile 变量,该变量的值可能被硬件、其他进程所改变,两次读的 值可能不一样,因此这段代码可能返不是你所期望的平方值。 正确的代码如下:
第 22 页 共 44 页
int square(volatile int *ptr) {
int a;
a = *ptr; // 只读一次 return a * a; }
《嵌入式系统》试题库
61、 谈一谈 S3C44B0x 的中断响应的详细过程。 答:S3C44B0x 的中断响应的详细过程为: ① 中断源向中断控制器发出中断请求; ② 中断控制器通过 IRQ/FIQ 向 CPU 发出中断请求; ③ CPU 响应中断并查询中断源得到中断向量表入口地址; ④ 到中断向量表相应入口地址取指令执行,该处为跳转指令; ⑤ 执行跳转指令,跳转到中断服务子程序处执行。 62、 什么是 DMA 传输? 答:一种快速传送数据的机制,不需要 CPU 的参与,数据传递可以从 I/O 接口到内存,从 内存到 I/O 接口,从一段内存到另一段内存。 63、 谈一谈 S3C44B0x 的 DMA 响应的详细过程。 答:S3C44B0x 的 DMA 响应的详细过程为: ① I/O 接口电路向 DMA 控制器发出 DMA 请求; ② DMA 控制器向总线仲裁器发出总线请求; ③ 总线仲裁器向 DMA 控制器回答总线应答信号; ④ DMA 控制器向 I/O 接口电路回答 DMA 应答信号; ⑤ DMA 传输开始,完毕引起中断。
64、 定时/计数器的基本构成有哪些?
答:控制寄存器、状态寄存器、计数初值寄存器、计数器、计数输出寄存器。
65、 嵌入式软件有何特点?
第 23 页 共 44 页
《嵌入式系统》试题库
答:软件要求固态化存储,应用有较强的实时性需求,硬件资源环境比较苛刻,软件代码 具有高质量和高可靠性,多任务操作系统是主流发展方向。
66、 什么是嵌入式操作系统?
答:一种支持嵌入式系统应用的操作系统软件,是嵌入式系统极为重要的组成部分。通常 包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面等。具 有通用操作系统的基本特点:能够有效管理越来越复杂的系统资源,能够把硬件虚拟化, 简化的驱动程序移植和维护,能够提供库函数、驱动程序、工具集以及应用程序。
67、 为什么需要嵌入式操作系统? 答:嵌入式处理器性能提高,资源(内存、I/O 接口)增多;任务要求复杂,实时、多任 务、编程困难;许多的任务需求是相同的,完全可以将一些相同的功能作为一个通用模块 实现,这就是操作系统,它屏蔽了底层硬件的细节,方便用户,提供了标准的、可剪裁的 系统服务软组件。 68、 谈一谈以处理器为核心的嵌入式系统设计流程? 答:需求分析,看看用户需要解决哪些问题;选择处理器和相应的硬件;硬件的设计,原 理图和 PCB;软件的设计,处理器的初始化,中断,外设等等;系统调试、测试。
69、 谈一谈以嵌入式操作系统为核心的嵌入式系统设计流程? 答:一个嵌入式系统,处理器和核心电路是固定的,操作系统及典型的外设驱动程序是固 定的;嵌入式系统设计所需要做的工作,是不是要添加什么外设,写一些所添加的外设的 驱动程序,编写应用程序——纯软件的工作;选择成熟的嵌入式操作系统,避免重复劳动, 缩短开发周期,从而降低产品成本。
70、 谈一谈加载嵌入式操作系统的优缺点。
答:优点:程序的设计和扩展变得容易,任务分析成模块,简化应用程序的设计,对实时 性要求苛刻的事件得到了快速、可靠的处理,通过有效的系统服务,使得系统资源得到更 好的利用。缺点:额外的存储开销,2~5%的 CPU 额外负荷,内核的费用。
第 24 页 共 44 页
《嵌入式系统》试题库
71、 简述嵌入式操作系统和实时操作系统的关系。
答:“嵌入式”并不意味着“实时”,例如 μClinux、Embedded Linux 为嵌入式操作系统但 非实时操作系统;“实时”并不意味着“嵌入式”,例如 OpenVMS(工作站、小型机)为 实时操作系统但非嵌入式操作系统;不过实际上,目前的嵌入式操作系统(EOS)基本上 是实时操作系统(RTOS)。
72、 什么是实时操作系统? 答:指具有实时性、能支持实时系统工作的操作系统。首要任务是调度一切可利用的资源 完成实时任务,其次才着眼于提高系统的使用效率,重要特点是要满足对时间的限制和要 求。 73、 实时操作系统的基本功能有哪些? 答:任务管理,任务间同步和通信,存储器优化管理,实时时钟服务,中断管理服务。
74、 实时操作系统的有何特点? 答:规模小,中断被屏蔽的时间很短,中断处理时间短,任务切换很快。 75、 实时操作系统的有哪些评价指标? 答:任务调度算法、上下文切换时间、确定性、最小内存开销和最大中断禁止时间。
76、 什么是非抢先式实时操作系统?有何优缺点?实时性如何决定? 答:对于基于优先级的实时操作系统而言,非抢先式实时操作系统是指某个任务运行后, 就把 CPU 控制权完全交给了该任务,直到它主动将 CPU 控制权还回来。
优点:实时性比不使用实时操作系统的好,程序设计相对简单,可调用不可重入函数(任 务间不嵌套)。
缺点:如果最长任务的执行时间不能确定,系统的实时性就不能确定。 实时性:取决于最长任务的执行时间。
第 25 页 共 44 页