杭电嵌入式系统原理期末复习题(含部分答案)
    《嵌入式系统原理》习题
    一、
    嵌入式硬件子系统
    1.名词解释
    embeddedsystem嵌入式系统mcu微控制器soc系统芯片dsp数字信号处理
    jtag联合测试工作组。一种国际标准测试协议,主要用于芯片内部测试。ice在线仿真器。支持片上断点与调试risc精简指令集计算机cisc复杂指令集计算机armrisc微处理器cortex-m332位处理器内核
    watchdog看门狗。监测单片机程序运行状态的芯片。2.直观题
    (1)在进行嵌入式存储系统设计时,如何在sram、dram、flash、
    eeprom等存储方案中展开挑选?
    ram分为:sram(静态存储器)和dram(动态存储器)。sram掉电不丢失数据,速度比dram快,但价格特别昂贵,只有在苛刻的地方使用,比如cpu的缓冲。dram虽然速度相对慢,但比任何的rom都要快,做内存比较合适。
    flash存储器,适用于于速度建议低,容量建议小,高速缓存时建议数据不偷
    失的场合。eeprom适用于速度不高,容量不大,掉电时要求数据不丢失的场合。
    在单片机中,ram主要就是搞运转时数据存储器,flash主要就是程序存储器,eeprom主要就是用来在程序运行留存一些须要高速缓存不遗失的数据.(2)比较nandflash、norflash之间的区别。
    nor闪存是随机存储介质,读取可以直接运行装载在norflash里面的代码,用于数据量较小的场合。nand闪存是连续存储介质,它的读取是以一次读取一块的形式来进行的,用户不能直接运行nandflash上的代码。采用这种技术的flash比较廉价,适合存放大的数据。
    (3)嵌入式系统硬件的时钟(clock)的促进作用就是?详细了解下常用的时钟设计
    方案。
    促进作用主要就是同时实现数据传输和拒绝接受的同步。实时时钟设计如下:
    脉冲计数器对时钟源输出的时钟进行计数,当达到一定值后和数字比较器比较,如果一致则触发硬件中断。程序在硬件中断中进行处理。(4)stm32的clocksource可以配置成哪些?(新增)
    在stm32中,存有五个时钟源,为hsi、hse、lsi、lse、pll。hsi就是高速内部时钟。hse就是高速外部时钟。lsi就是低速内部时钟。se就是低速外部时钟。pll为锁相环倍频输入。
    (5)mcu和外围器件连接时常用的总线有哪些?分别做简要介绍。
    spi总线、can总线、i2c总线、ssp总线
    (6)如何理解uart异步传输和iic/spi同步传输方式之间的差异。(7)以自己使用的手机/pc为例,了解下它的硬件构成部件及其主要指标。
    二、
    嵌入式软件子系统
    1.名词解释
    isr中断服务程序。
    中断中断就是指计算机运转过程中,发生某些不幸情况须要主机干涉时,机器能够自动暂停正在运转的程序并转至处置崭新情况的程序。
    中断向量表中断源的识别标志,可用来形成相应的中断服务程序的入口地址或存放中断服务程序的首地址。rtos实时操作系统。
    可以利韦农函数/不容轻进函数可以被中断的函数。可以在这个函数继续执行的任何时刻中断它,转至os调度下去继续执行另外一段代码。不容轻进函数反之。
    临界区指的是一个访问共用资源(例如:共用设备或是共用存储器)的程序片段,而这些共用资源又无法同时被多个线程访问的特性。当有线程进入临界区段时,其他线程或是进程必须等待。
    软实时/硬实时软实时就是指一个刚性的、不容发生改变的时间管制,它不容许任何远远超过时限的错误。远远超过时间管制可能将导致系统错误。硬实时能宽容偶尔的超时。
    porting(移植)2.简单题
    context(上下文)
    (1)微控制器(mcu)的中断处理过程是怎样的?准备部分:
    其基本功能就是维护现场。确认中断源,最后对外开放中断,容许更高级的中断请求吓到低级的中断服务程序。处置部分:
    即真正执行具体的为某个中断源服务的中断服务程序;结束部分:
    首先克吕齐勒中断,以避免在恢复正常现场过程中被代莱中断请求吓到。接着恢复正常现场,然后对外开放中断,以便回到原来的程序后可以积极响应其他的中断请求。
    (2)前后台系统中设备服务的最差响应时间是在什么情况下产生的?最坏情况下的任务级响应时间取决于整个循环的执行时间。(3)c语言关键字volatile有什么含意?并给出三个不同
的例子。
    一个定义为volatile的变量就是说道这变量可能会被意想不到地发生改变,这样,编译器就不能回去假设这个变量的值了。准确地说道就是,优化器在使用这个变量时必须每次都小心地再次加载这个变量的值,而不是采用留存在寄存器里的备份。下面就是volatile变量的三个例子:(一)循序设备的硬件寄存器(例如:状态寄存器)。(二)一个中断服务子程序中可以出访至的非自动变量(non-automaticvariables)。(三)多线程应用领域中被几个任务共享资源的变量。
    (4)写一段c语言代码,将寄存器(地址为:0x2000fcb0)的bit2清零、
    bit3复置1,其它位维持旧有值维持不变。
    unsignedinta=0x2000fcb0;a&=~(1<<2);a|=(1<<3);
    (5)下面的isr存有什么问题?
    isr不能返回一个值(都应该为void类型)。
嵌入式多线程编程    isr无法传达参数。3)isr必须就是长而有效率的,③在isr中搞浮点运算就是不明智的。
    (6)列举常见的rtos。(不少于5个)
    qnx、rtlinux、uc/os-ii、nucleusplus、vrtx、vxworks、ecos
    (7)rtos常用的任务调度策略有哪些?分别做简要介绍。
    抢占市场式调度。每个任务都存有相同的优先级,任务可以一直运转直至被低优先级任务抢占市场。时间片调度,每个任务优先级相同,每个任务都会运转紧固的时间片个数。
    (8)什么是rtos任务调度的优先级翻转问题?如何解决?
    先级滑动就是当一个低优先级任务通过信号量机制访问共享资源时,该信号量已被一低优先级任务占据,因此导致低优先级任务被许多具备较低优先级任务堵塞,实时性难以获得确保。采用优先级承继。当辨认出低优先级的任务因为低优先级任务挤占资源而堵塞时,就将低优先级任务的优先级提高至等候它所占据的资