华南理工大学嵌入式 期中测试 整理和答案

更新时间:2023-03-08 16:44:10 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

期中测试一:

1、从体系结构上来说,嵌入式系统可以分为哪些层?

从上到下分为四层,分别为API、设备管理、驱动逻辑和硬件抽象。

软件结构:设备驱动层、实时操作系统、应用程序接口API层、实际应用程序层 2、何为固态存储?嵌入式系统的软件为何要求固态存储?

固态存储器是相对于磁盘、光盘一类的,不需要读写头、不需要存储介质移动(转动)读写数据的存储器。 固态存储器是通过存储芯片内部晶体管的开关状态来存储数据的,由于固态存储器没有读写头、不需要转动,所以固态存储器拥有耗电少、抗震性强的优点。由于成本较高,多以目前大容量存储中仍然使用机械式硬盘;但在小容量、超高速、小体积的电子设备中,固态存储器拥有非常大的优势。

软件要求固态存储,以提高速度。

3、嵌入式开发过程中,宿主机和目标机分别指的是什么?

宿主机:嵌生成入式系统开发的代码,且机器上的编译器能支持交叉编译(例如GCC) 、链接的开发机。

目标机:嵌入式目标平台,运行被调试的程序的机器。

4、比较哈佛体系结构和冯.诺依曼体系结构这两种结构的特点;前者和后者相比,数据的吞吐量提高了约1倍?

传统的微处理器采用的冯·诺依曼结构将指令和数据存放在同一存储空间中,统一编址,指令和数据通过同一总线访问。 哈佛结构则是不同于冯·诺依曼结构的一种并行体系结构,其主要特点是程序和数据存储在不同的存储空间中,即程序存储器和数据存储器是两个相互独立的存储器,每个存储器独立编址、独立访问。与之相对应的是系统中设置的两条总线(程序总线和数据总线),从而使数据的吞吐率提高了一倍。

5、ARM处理器和传统的单片机相比,都采用了哪些先进技术?(至少讲出3项) 流水线技术

在流水线装满以后,几个指令可以并行执行。这样可充分利用现有硬件资源,提高了CPU的运行效率。

超标量执行

重复设置多套指令执行部件,同时处理并完成多条指令,实现并行操作,来达到提高处理速度的目的。

总线和总线桥 DMA技术

6、配置在主存(此处仅指物理主存)空间的存储器容量受到什么限制?作为外存的存储器容量大小有限制吗?请说明原因。

存储器容量受到通用寄存器的数据宽度位数的限制,32位的指令集只能配置232 =4GB,同理64位16GB; 外存的存储器容量不受限制。

7、存储一个32位数0x12345678到0x0000 5000~0x0000 5003四个字节单元中,若以小端模式存储,则0x0000 5002存储单元的内容为什么?

12 34 56 78,小端A + 3、A + 2、A + 1、A顺序,故:0x34

8、嵌入式集成开发环境主要包括那几个工具? 汇编程序(assembler) 将汇编语言指令翻译成二进制机器指令 编译程序(complier) 将结构化程序翻译成机器(或汇编)程序。 链接程序(linker) 可以将分开汇编或编译的文件合并为一个程序。 调试程序(debugger)帮助程序员评估并更正程序。 实时在线仿真器ICE(In-Circuit Emulator)也支持程序的调试,但在目标处理器上执行。 编程下载器(emulator)可以将开发机存储器内所存放的二进制机器码下载到目标机的存储器中。

1、STM32系列微控制器使用ARM公司哪个内核? Cortex-M3

2、STM32F103系列微控制器的定位是针对传统的嵌入式入门市场,因此相对于传统的8051、AVR等单片机,其优势主要体现在哪几个方面? [1] 1.25 DMIPS/MHz和0.19 mW/MHz; [2] 支持Thumb-2指令集;

[3] 单周期乘法指令和硬件除法指令;

[4] 内置了快速的中断控制器,提供了优越的实时特性,中断间的延迟时间降到只需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)的LSEON位设置。

4、请说明STM32F103xx的主系统中四个驱动单元和四个被动单元? 四个驱动单元:Cortex-M3内核DCode总线(D-bus),和系统总线(S-bus);通用DMA1和通用DMA2。

四个被动单元:内部SRAM;内部闪存存储器;FSMC;AHB到APB的桥(AHB2APBx),它连接所有的APB设备。

5、STM32F103xx高速外设和低速外设的时钟频率最大为多少? 高速外设时钟频率最大为72KHz、低速外设的时钟频率最大为36KHz

6、同步串行通信和异步串行通信的各自的工作特点是什么?

在异步通信方式中,接收器和发送器有各自的时钟,它们的工作是非同步的。 同步串行通信(简称同步通信)中,发送器和接收器由同一个时钟源控制。

7、异步串行一帧数据格式为:1个起始位,8个数据位,1个停止位,无校验,波特率为9600bps,请画出传输数据流0x53、0xf2的时序图,设先传低位。

8、ARM处理器中的总线桥的作用是什么?

桥可用来将AHB连到外围设备总线APB上; 简单来说就是一个总线转换器,它实现各类微处理器总线到PCI总线、各类标准总线到PCI总线的连接,并允许它们之间相互通信。

9、配置在主存(此处指物理主存)空间的存储器容量受到什么限制?作为外存的存储器容量有限制吗?请说明原因。

存储器容量受到通用寄存器的数据宽度位数的限制,32位的指令集只能配置232 =4GB,同理64位16GB;外存的存储器容量不受限制。

10、列表举例说明你目前所使用、所知道主存和外存,仅限半导体存储器芯片。 主存:

Nor Flash、SRAM、 DRAM等 外存:

NandFlash、DOC、CF、SD、MMC等

11、什么是Cache存储器?它有什么作用?简单描述其工作过程。 高速缓存是一种小型、快速的存储器,

作用:它保存部分主存内容的拷贝, 减少访问主存储器的所花的访问时间。

工作过程:信息按照地址映像关系(采用硬件方法实现)装入Cache后,执行程序时应将主存地址变换成Cache地址,这个变换过程叫做地址变换。地址的映像和变换是密切相关的。

12、举例说明你周围所使用NAND Flash和NOR Flash,为何NOR Flash可以直接挂在ARM处理器内存空间,但NAND Flash不可以? NAND Flash:

SD(Secure Digital)卡由松下电器、东芝和SanDisk联合推出,1999年8月首次发布。 NOR Flash:

AMD-AM29xxx,富士通-MBMxxx,Intel-E28Fxxx,东芝-TC58Fxxx, Spansion-S29xxx E28F128J3A,16位,16MB NAND Flash读速度不如Nor flash,而擦、写速度高。存储在NAND Flash里的程序不可以直接执行,需要复制到RAM中才能执行。

A、如何设置通用定时器TIMX的定时时间?

接下来我们以通用定时器TIM3为实例,来说明要经过哪些步骤,才能达到这个要求,并产生中断。

1)TIM3时钟使能。

这里我们通过APB1ENR的第1位来设置TIM3的时钟,因为Stm32_Clock_Init 函数里面把APB1的分频设置为2了,所以我们的TIM3时钟就是APB1时钟的2被,等于系统时钟。

2)设置TIM3_ARR和TIM3_PSC的值。

通过这两个寄存器,我们来设置自动重装的值,以及分频系数。这两个参数加上时钟频率就决定了定时器的溢出时间。

3)设置TIM3_DIER允许更新中断。

因为我们要使用TIM3的更新中断,所以设置DIER的UIE位,并使能触发中断。

4)允许TIM3工作。

光配置好定时器还不行,没有开启定时器,照样不能用。我们在配置完后要开启定时器,通过TIM3_CR1

的CEN位来设置。

5)TIM3中断分组设置。

在定时器配置完了之后,因为要产生中断,必不可少的要设置NVIC相关寄存器,以使能TIM3中断。

6)编写中断服务函数。

在最后,还是要编写定时器中断服务函数,通过该函数来处理定时器产生的相关中断。在中断产生后,通过状态寄存器的值来判断此次产生的中断属于什么类型。然后执行相关的操作,我们这里使用的是更新(溢出)中断,所以在状态寄存器SR的最低位。在处理完中断之后应该向TIM3_SR的最低位写0,来清除该中断标志。

B、如何设置独立看门狗定时器的溢出时间?软件如何控制不让看门狗定时器溢出复位。

以上三个寄存器进行相应的设置,我们就可以启动STM32的独立看门狗,启动过程可以按如下步骤实现: 1)向IWDG_KR(键值寄存器)写入0X5555。

通过这步,我们取消IWDG_PR和IWDG_RLR的写保护,使后面可以操作这两个寄存器。 设置IWDG_PR(预分频~)和IWDG_RLR(重装载~)的值。

这两步设置看门狗的分频系数,和重装载的值。由此,就可以知道看门狗的喂狗时间(也就是看门狗溢出时间),该时间的计算方式为:

Tout=((4×2^prer) ×rlr) /40

其中Tout为看门狗溢出时间(单位为ms);prer为看门狗时钟预分频值(IWDG_PR值),范围为0~7;rlr为

看门狗的重装载值(IWDG_RLR的值); 比如我们设定prer值为4,rlr值为625,那么就可以得到: Tout=64×625/40=1000ms,

这样,看门狗的溢出时间就是1s,只要你在一秒钟之内,有一次写入0XAAAA 到IWDG_KR,就不 会导致看门狗复位(当然写入多次也是可以的)。这里需要提醒大家的是,看门狗的时钟不是准确的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的初值应该设为多少?(注:考虑闰年,和不考虑闰年,两种情况的值不同)

本文来源:https://www.bwwdw.com/article/yup6.html

Top