《华南理工大学嵌入式 期中测试 整理和答案》由会员分享,可在线阅读,更多相关《华南理工大学嵌入式 期中测试 整理和答案(4页珍藏版)》请在金锄头文库上搜索。
1、期中测试一:1、从体系结构上来说,嵌入式系统可以分为哪些层?从上到下分为四层,分别为 API、设备管理、驱动逻辑和硬件抽象。软件结构:设备驱动层、实时操作系统、应用程序接口 API 层、实际应用程序层2、何为固态存储?嵌入式系统的软件为何要求固态存储?固态存储器是相对于磁盘、光盘一类的,不需要读写头、不需要存储介质移动(转动)读写数据的存储器。固态存储器是通过存储芯片内部晶体管的开关状态来存储数据的,由于固态存储器没有读写头、不需要转动,所以固态存储器拥有耗电少、抗震性强的优点。由于成本较高,多以目前大容量存储中仍然使用机械式硬盘;但在小容量、超高速、小体积的电子设备中,固态存储器拥有非常大的
2、优势。软件要求固态存储,以提高速度。3、嵌入式开发过程中,宿主机和目标机分别指的是什么?宿主机:嵌生成入式系统开发的代码,且机器上的编译器能支持交叉编译(例如 GCC) 、链接的开发机。目标机:嵌入式目标平台,运行被调试的程序的机器。4、比较哈佛体系结构和冯. 诺依曼体系结构这两种结构的特点;前者和后者相比,数据的吞吐量提高了约 1 倍?传统的微处理器采用的冯诺依曼结构将指令和数据存放在同一存储空间中,统一编址,指令和数据通过同一总线访问。哈佛结构则是不同于冯诺依曼结构的一种并行体系结构,其主要特点是程序和数据存储在不同的存储空间中,即程序存储器和数据存储器是两个相互独立的存储器,每个存储器独
3、立编址、独立访问。与之相对应的是系统中设置的两条总线(程序总线和数据总线) ,从而使数据的吞吐率提高了一倍。5、ARM 处理器和传统的单片机相比,都采用了哪些先进技术?(至少讲出 3 项)流水线技术在流水线装满以后,几个指令可以并行执行。这样可充分利用现有硬件资源,提高了 CPU 的运行效率。超标量执行 重复设置多套指令执行部件,同时处理并完成多条指令,实现并行操作,来达到提高处理速度的目的。总线和总线桥DMA 技术 6、配置在主存(此处仅指物理主存)空间的存储器容量受到什么限制?作为外存的存储器容量大小有限制吗?请说明原因。存储器容量受到通用寄存器的数据宽度位数的限制,32 位的指令集只能配
4、置 232 =4GB,同理 64 位 16GB;外存的存储器容量不受限制。7、存储一个 32 位数 0x12345678 到 0x0000 50000x0000 5003 四个字节单元中,若以小端模式存储,则 0x0000 5002 存储单元的内容为什么?12 34 56 78,小端 A + 3、 A + 2、A + 1、A 顺序,故:0x348、嵌入式集成开发环境主要包括那几个工具?汇编程序(assembler) 将汇编语言指令翻译成二进制机器指令编译程序(complier) 将结构化程序翻译成机器(或汇编)程序。链接程序(linker) 可以将分开汇编或编译的文件合并为一个程序。调试程序(
5、debugger)帮助程序员评估并更正程序。实时在线仿真器 ICE(In-Circuit Emulator)也支持程序的调试,但在目标处理器上执行。编程下载器(emulator )可以将开发机存储器内所存放的二进制机器码下载到目标机的存储器中。1、STM32 系列微控制器使用 ARM 公司哪个内核?Cortex-M32、STM32F103 系列微控制器的定位是针对传统的嵌入式入门市场,因此相对于传统的8051、AVR 等单片机,其优势主要体现在哪几个方面?1 1.25 DMIPS/MHz 和 0.19 mW/MHz;2 支持 Thumb-2 指令集;3 单周期乘法指令和硬件除法指令;4 内置了
6、快速的中断控制器,提供了优越的实时特性,中断间的延迟时间降到只需 6 个 CPU 周期,从低功耗模式唤醒的时间也只需 6 个 CPU 周期;5 与 ARM7 TDMI 相比运行速度最多可快 35%且代码最多可节省 45%;6 提供更为丰富的外设和网络接口,使用更为灵活方便。3、STM32F103xx 系列微控制器最高工作频率为多大?外部晶体振荡器和内部 RC 振荡器相比有哪些特点?工作频率为 72MHz;内部 RC 振荡器 (LSI RC):通过控制/ 状态寄存器 (RCC_CSR)的 LSION 位来设置。外部 32.768kHz 振荡器(LSE):通过备份域控制寄存器 (RCC_BDCR)
7、的 LSEON 位设置。4、请说明 STM32F103xx 的主系统中四个驱动单元和四个被动单元?四个驱动单元:Cortex-M3 内核 DCode 总线(D-bus) ,和系统总线(S-bus) ;通用 DMA1 和通用DMA2。四个被动单元:内部 SRAM;内部闪存存储器;FSMC;AHB 到 APB 的桥(AHB2APBx ) ,它连接所有的 APB 设备。5、STM32F103xx 高速外设和低速外设的时钟频率最大为多少? 高速外设时钟频率最大为 72KHz、低速外设的时钟频率最大为 36KHz6、同步串行通信和异步串行通信的各自的工作特点是什么?在异步通信方式中,接收器和发送器有各自
8、的时钟,它们的工作是非同步的。同步串行通信(简称同步通信)中,发送器和接收器由同一个时钟源控制。 7、异步串行一帧数据格式为:1 个起始位,8 个数据位,1 个停止位,无校验,波特率为9600bps,请画出传输数据流 0x53、0xf2 的时序图,设先传低位。8、ARM 处理器中的总线桥的作用是什么?桥可用来将 AHB 连到外围设备总线 APB 上; 简单来说就是一个总线转换器,它实现各类微处理器总线到 PCI总线、各类标准总线到 PCI 总线的连接,并允许它们之间相互通信。9、配置在主存(此处指物理主存)空间的存储器容量受到什么限制?作为外存的存储器容量有限制吗?请说明原因。存储器容量受到通
9、用寄存器的数据宽度位数的限制,32 位的指令集只能配置 232 =4GB,同理 64 位 16GB;外存的存储器容量不受限制。10、列表举例说明你目前所使用、所知道主存和外存,仅限半导体存储器芯片。主存:Nor Flash、SRAM、DRAM 等外存:NandFlash、DOC 、CF、SD、MMC 等11、什么是 Cache 存储器?它有什么作用?简单描述其工作过程。高速缓存是一种小型、快速的存储器, 作用:它保存部分主存内容的拷贝, 减少访问主存储器的所花的访问时间。工作过程:信息按照地址映像关系(采用硬件方法实现)装入 Cache 后,执行程序时应将主存地址变换成 Cache 地址,这个
10、变换过程叫做地址变换。地址的映像和变换是密切相关的。12、举例说明你周围所使用 NAND Flash 和 NOR Flash,为何 NOR Flash 可以直接挂在 ARM 处理器内存空间,但 NAND Flash 不可以?NAND Flash: SD(Secure Digital)卡由松下电器、东芝和 SanDisk 联合推出,1999 年 8 月首次发布。NOR Flash: AMDAM29xxx,富士通MBMxxx,IntelE28Fxxx ,东芝TC58Fxxx, SpansionS29xxx E28F128J3A,16 位,16MBNAND Flash 读速度不如 Nor flash
11、,而擦、写速度高。存储在 NAND Flash 里的程序不可以直接执行,需要复制到 RAM 中才能执行。A、如何设置通用定时器 TIMX 的定时时间?接下来我们以通用定时器 TIM3 为实例,来说明要经过哪些步骤,才能达到这个要求,并产生中断。 1)TIM3 时钟使能。 这里我们通过 APB1ENR 的第 1 位来设置 TIM3 的时钟,因为 Stm32_Clock_Init 函数里面把 APB1 的分频设置为 2 了,所以我们的 TIM3 时钟就是 APB1 时钟的 2 被,等于系统时钟。 2)设置 TIM3_ARR 和 TIM3_PSC 的值。 通过这两个寄存器,我们来设置自动重装的值,以
12、及分频系数。这两个参数加上时钟频率就决定了定时器的溢出时间。 3)设置 TIM3_DIER 允许更新中断。 因为我们要使用 TIM3 的更新中断,所以设置 DIER 的 UIE 位,并使能触发中断。 4)允许 TIM3 工作。 光配置好定时器还不行,没有开启定时器,照样不能用。我们在配置完后要开启定时器,通过TIM3_CR1 的 CEN 位来设置。 5)TIM3 中断分组设置。 在定时器配置完了之后,因为要产生中断,必不可少的要设置 NVIC 相关寄存器,以使能 TIM3 中断。 6)编写中断服务 函数。 在最后,还是要编写定时器中断服务函数,通过该函数来处理定时器产生的相关中断。在中断产生后
13、,通过状态寄存器的值来判断此次产生的中断属于什么类型。然后执行相关的操作,我们这里使用的是更新(溢出)中断,所以在状态寄存器 SR 的最低位。在处理完中断之后应该向 TIM3_SR 的最低位写 0,来清除该中断标志。 B、如何设置独立看门狗定时器的溢出时间?软件如何控制不让看门狗定时器溢出复位。以上三个寄存器进行相应的设置,我们就可以启动 STM32 的独立看门狗,启动过程可以按如下步骤实现: 1)向 IWDG_KR(键值寄存器)写入 0X5555。 通过这步,我们取消 IWDG_PR 和 IWDG_RLR 的写保护,使后面可以操作这两个寄存器。 设置 IWDG_PR(预分频)和 IWDG_R
14、LR(重装载)的值。 这两步设置看门狗的分频系数,和重装载的值。由此,就可以知道看门狗的喂狗时间(也就是看门狗溢出时间) ,该时间的计算方式为: Tout=(42prer) rlr) /40 其中 Tout 为看门狗溢出时间(单位为 ms) ;prer 为看门狗时钟预分频值(IWDG_PR 值) ,范围为 07;rlr为看门狗的重装载值(IWDG_RLR 的值) ; 比如我们设定 prer 值为 4,rlr 值为 625,那么就可以得到: Tout=64625/40=1000ms, 这样,看门狗的溢出时间就是 1s,只要你在一秒钟之内,有一次写入 0XAAAA 到 IWDG_KR,就不 会导致
15、看门狗复位(当然写入多次也是可以的) 。这里需要提醒大家的是,看门狗的时钟不是准确的 40Khz,所以在喂狗的时候,最好不要太晚了,否则,有可能发生看门狗复位。 2)向 IWDG_KR 写入 0XAAAA。 通过这句,将使 STM32 重新加载 IWDG_RLR 的值到看门狗计数器里面。也可以用该命令来喂狗。 3)向 IWDG_KR 写入 0XCCCC。 通过这句,来启动 STM32 的看门狗。注意 IWDG 在一旦启用,就不能再被关闭!想要关闭,只能重启,并且重启之后不能打开 IWDG,否则问题依旧,所以在这里提醒大家,如果不用 IWDG 的话,就不要去打开它,免得麻烦。 通过上面 3 个步骤,我们就可以启动 STM32 的看门狗了,使能了看门狗,在程序里面就必须间隔一定时间喂狗,否则将导致程序复位。 C、 STM32F103xx 的 RTC 有什么特点,假设 RTC-CNT 的输入计数信号周期为 1 秒,RTC-CNT=0x0000 0000 表示 00 年 01 月 01 日 00 时 00 分 00 秒,如果要设置为 15 年 05 月 28 日 10 时23 分 33 秒,RTC-CNT 的初值应该设为多少?(注:考虑闰年,和不考虑闰年,两种情况的值不同)