嵌入式系统期末复习

嵌入式系统期末复习

因ARM指令集站内已有资料,故不再赘述

第一章

国内对嵌入式系统的定义是什么?

  • 嵌入式系统是以应用为中心、以计算机技术为基础
  • 软、硬件可裁剪
  • 适用于应用系统对功能、可靠性、成本、体积、功耗等方面有特殊要求的专用计算机系统

嵌入式系统有哪些基本要素?

  • 嵌入性
  • 专用性
  • 计算机系统

嵌入式系统的基本架构主要包括哪几部分?

  • 硬件层是嵌入式系统的底层实体设备,主要包括嵌入式微处理器、外围电路和 外部设备
  • 硬件抽象层是设备制造商完成的与操作系统适配结合的硬件设备抽象层,包括引导程序BootLoader、驱动程序、配置文件等
  • 操作系统层是嵌入式系统的重要组成部分,提供了进程管理、内存管理、文件管理和设备管理等重要功能
  • 应用软件层是嵌入式系统的最顶层,由众多嵌入式应用软件组成。

嵌入式微处理器一般分为哪几种类型,各有什么特点

  • 嵌入式微控制器:推动嵌入式计算机系统走向独立发展道路的芯片,也称单片微型计算机,简称单片机。由于这类芯片的作用主要是控制被嵌入设备的相关动作,因此,业界常称这类芯片为微控制器(Microcontroller Unit,MCU)
  • 嵌入式DSP处理器:嵌入式DSP(Embedded Digital Signal Processor,EDSP) 处理器在微控制器的基础上对系统结构和指令系统进行了特殊设计,使其适合执行DSP算法并提高了编译效率和指令的执行速度。
  • 嵌入式微处理器(Micro Processor Unit):和工业控制计算机相比,嵌入式微处理器具有体积小、重量轻、成本低、可靠性高的优点
  • 嵌入式片上系统(System On Chip) :片上系统(System on a Chip, SoC)是 ASIC (Application Specific Integrated Circuits)设计方法学中产生的一种新技术,是 指以嵌入式系统为核心,以IP (Intellectual Property)复用技术为基础,集软、 硬件于一体,并追求产品系统最大包容的集成芯片

第二章

RISC的主要特点是什么?

  • 单周期的执行
  • 采用高效的流水线操作
  • 无微代码的硬连接控制
  • 指令格式的规格化和简单化
  • 采用面向寄存器组的指令
  • 采用Load/Store(装载/存储)指令结构
  • 注重编译的优化,力求有效地支撑高级语言程序

简述哈佛结构与冯诺伊曼结构的区别

  • 冯诺依曼体系结构特点:

    • 指令和数据存储在相同的内存空间,但存储地址不同

    • 处理器利用相同的总线处理内存中的指令和数据,指令和数据具有相同的数据宽度,指令与数据无法同时存取

  • 哈佛结构

    • 指令存储和数据存储分开,指令和数据分别位于不同的存储空间

    • 指令与数据的存取采用不同总线,取指令和存取数据可同时进行,微处理器具有较高的执行效率

ARM的7种异常类型

ARM的7种异常类型

Cortex A8 ARM处理器的8种运行模式

  • 用户模式(usr):正常的程序执行状态
  • 快速中断模式(fiq):用于高速数据传输或通道处理。
  • 外部中断模式(irq):用于通用的中断处理。
  • 管理模式(svc):操作系统使用的保护模式。
  • 数据访问终止模式(abt):当数据或指令预取终止时进入该模式,可用于虚拟存 储及存储保护。
  • 系统模式(sys):运行具有特权的操作系统任务。
  • 未定义指令中止模式(und):当未定义的指令执行时进入该模式,可用于支持硬 件协处理器的软件仿真。
  • 安全监控模式(mon): 可在安全模式和非安全模式下转换

Cortex-A8的8中运行模式

用户模式和特权模式

寄存器组

Cortex-A8寄存器组

通用寄存器组
  • R0~R7:保存数据和地址
  • R8~R12:分别对应两个不同的物理寄存器,分别是快速中断模式下的相应存储器和非快速中断模式下的相应存储器
  • R13(SP):常作堆栈指针
  • R14(子程序链接寄存器LR):保存调用子函数和中断的返回地址
  • R15(程序计数器PC):记录程序当前的运行地址
状态寄存器
主要功能:
  • 保存最近执行的算术或逻辑运算的信息
  • 控制中断的允许或禁止
  • 设置处理器工作模式

在这里插入图片描述

条件标志位(N、Z、C、V)
  • N(Negative):N = 1 表示运算的结果为负数;N = 0 表示结果为正数或零
  • Z(Zero):Z = 1 表示运算的结果为零;Z = 0 表示运算的结果不为零
  • C (Carry):在加法指令中,当结果产生了进位,C=1,其它情况C=0;在减法指令中,当运算发生了借位,C=1,其它情况C=0;在移位运算指令中,C被设置成被移位寄存器最后移出去的位。
  • V(oVerflow):对于加/减法运算指令,当操作数和运算结果为二进制补码表示的带符号数时,V=1表示符号位溢出。
控制位(低8位)
  • 中断屏蔽位:I=1,IRQ 中断被屏蔽;F=1,FIQ 中断被屏蔽
  • 状态控制位:T=0,处理器处于 ARM 状态;T=1,处理器处于 Thumb 状态
  • 模式控制位:M[4:0]为模式控制位,决定处理器的工作模式
    模式控制位

简述ARM处理器异常处理过程

  • ARM处理器对异常的响应过程如下
    • 进入与特定的异常相应的运行模式
    • 将 CPSR 寄存器的值保存到将要执行的异常中断各自对应的 SPSR_mode 中,以实现对处理器当前运行状态、中断屏蔽和各标志位的保护
    • 将引起异常指令的下一条指令的地址存入相应的链接寄存器 LR (R14_mode),以便程序在异常处理结束返回时能正确的返回到原来的程序处 继续向下执行。若异常是从ARM态进入的,则链接寄存器LR保存的是下一条 指令的地址(根据不同的异常类型,当前PC+4或PC+8);若异常是从Thumb 状态进入的,则将当前PC的偏移量值保存到LR中,这样异常处理程序就不需 要确定异常是从何种状态进入的
    • 设置CPSR寄存器的低5位,使处理器进入相应的工作模式。设置I=1,以禁止IRQ中断;如果进入复位模式或FIQ模式,还要设置F=1以禁止FIQ 中断
    • 根据异常类型,将向量地址强制复制给程序计数器 PC,以便执行相应的异常处理程序。
  • ARM处理器从异常处理程序中返回的过程如下
    • 恢复原来被保存的用户寄存器
    • 将SPSR_mode寄存器的值复制到CPSR中,以恢复被中断的程序工作状态
    • 根据异常类型将PC寄存器值恢复成断点地址,以执行原来被中断打断的程序
    • 清除CPSR中的中断屏蔽标志位I和F,开放外部中断和快速中断。

第四章

请简述S5PV210处理器GPIO端口操作步骤?

  • 确定所使用的 GPIO 端口的功能,如作为输入/输出引脚使用时,是否需 要设置上拉/下拉电阻;作为其它功能使用时,对应S5PV210处理器的芯片手册进行设置
  • 确定GPIO 端口的输入/输出方向,通过端口设置寄存器完成端口的输入/ 输出功能或其它功能设置
  • 对数据寄存器操作。如果设置为输入引脚,读取数据寄存器对应位值,实现引脚状态的读取;如果设置为输出引脚,通过写数据寄存器对应位值,实现引脚状态的设置。

第五章

ARM- Linux虚拟存储空间及分布

ARM- Linux虚拟存储空间及分布

  • 栈:栈是用户存放程序临时创建的局部变量
  • 堆(heap):堆是用于存放进程运行中被动态分配的内存段
  • BSS段:BSS段包含了程序中未初始化的全局变量
  • 代码段:代码段是用来存放可执行文件的操作指令
  • 数据段:数据段用来存放可执行文件中已初始化全局变量

第六章

什么是嵌入式文件系统?请简要说明嵌入式Linux文件系统的层次结构

  • 嵌入式文件系统是指嵌入式系统中实现文件存取、管理等功能的模块,这些模块提供一系列文件输入输出等文件管理功能,为嵌入式系统和设备提供文件系统支持。
  • 嵌入式Linux文件系统的层次结构自下面上主要由硬 件层,驱动层,内核层和用户层组成,如下图所示。
  • 嵌入式Linux文件系统的层次结构

什么是根文件系统?其主要配置目录有哪些?

  • 根文件系统是一种特殊的文件系统,该文件系统不仅具有普通文件系统的存储数据文件的功能,它还是内核启动时所挂载(mount)的第一个 文件系统,内核代码的映像文件保存在根文件系统中,系统引导启动程序会在根文件系统挂载之后从中把一些初始化脚本和服务加载到内存中去运行
  • 主要配置目录:/bin,/dev,/etc,/lib,/proc,/var,/usr等

第七章

简述交叉开发模式一般采用的三个步骤?

  • 在主机上编译BootLoader(引导加载程序),然后通过JTAG 接口烧写到目标板。这种方式速度较慢,一般在目标板上还未运行起可用的 BootLoader 时采用。如果开发板上已经运行起可用BootLoader,并且支持烧 写Flash 功能,则可利用BootLoader通过网络下载映像文件并烧写,速度较快。
  • 在主机上编译Linux 内核,然后通过BootLoader下载到目标板以启动 或烧写到Flash。为了方便调试,内核应该支持网络文件系统(Network File System, NFS),这样,目标板启动Linux 内核后,可以通过NFS 方式挂载根文件系统。
  • 在主机上编译各类应用程序,通过NFS 运行、调试这些程序,验证无误后再将制作好的文件系统映像烧写到目标板。

BootLoader的功能是什么?请简要说明BootLoader 的普遍工作流程

  • BootLoader是嵌入式系统在加电后执行的第一段代码,在它完成CPU和相关硬件的初始化之后,再将操作系统映像或固化的嵌入式应用程序装载到内存中然后跳转到操作系统所在的空间,启动操作系统运行。
  • BootLoader启动大多数都分为两个阶段
  • 第一阶段主要包含依赖于CPU的体系结构硬件初始化的代码,通常都用汇编语言来实现。这个阶段的任务有
    • 基本的硬件设备初始化(屏蔽所有的中断、关闭处理器内部指令/数据 Cache等)
    • 为第二阶段准备RAM空间
    • 如果是从某个固态存储媒质中,则复制BootLoader的第二阶段代码到 RAM
    • 设置堆栈
    • 跳转到第二阶段的C程序入口点
  • 第二阶段通常用C语言完成,以便实现更复杂的功能,也使程序有更好的可读性和可移植性。这个阶段的任务有
    • 初始化本阶段要使用到的硬件设备
    • 检测系统内存映射
    • 将内核映像和根文件系统映像从Flash读到RAM
    • 为内核设置启动参数
    • 调用内核。

第八章

作为Linux内核的重要组成部分,设备驱动程序主要完成哪些功能?

  • 对设备初始化和释放
  • 把数据从内核传送到硬件和从硬件读取数据
  • 读取应用程序传送给设备文件的数据和回送应用程序请求的数据
  • 检测错误和处理中断

内核空间物理页分配技术主要使用了哪些方法?

  • 基于slab分配器的管理技术,slab分配器主要的功能就是对频繁分配和释放的小对象提供高效的内存管理。它的核心思想是实现一个缓存池,分配对象的时候从缓存池中取,释放对象的时候再放入缓存池
  • 内核非连续内存分配(vmalloc)。内核提供vmalloc函数分配内核虚拟内存, 该函数不同于kmalloc,它可以分配较kmalloc大得多的内存空间(可远大于 128K,但必须是页大小的倍数),但相比Kmalloc来说,vmalloc需要对内核 虚拟地址进行重映射,必须更新内核页表,因此分配效率上相对较低。

Linux设备驱动程序分类有哪些?

  • 字符设备

字符设备是传输数据以字符为单位进行的设备,字符设备驱动程序通常实现 open、close、read和write等系统调用函数,常见的字符设备有键盘、串口、控制台等。

  • 块设备

所谓块设备是指对其信息的存取以“块”为单位。如常见的光盘、硬磁盘、 软磁盘、磁带等,块长大小通常取512B、1024B或4096B等。块设备和字符设备一样可以通过文件系统节点来访问。在大多数linux系统中,只能将块设备看作多个块进行访问,一个块设备通常是1024B数据

  • 网络设备

网络设备驱动通常是通过套接字(Socket)等接口来实现操作。任何网络事务处理都可以通过接口来完成和其他宿主机数据的交换。内核和网络设备驱动程序之间的通信与字符设备驱动程序和块设备驱动程序与内核的通信是完全不同的。

Linux设备驱动程序有哪些组成部分?

  • 对子程序进行自动配置和初始化,检测驱动的硬件设备是否正常,能否正常工作。
  • 设备服务子程序和中断服务子程序,这两者分别是驱动程序的上下两部分。驱动上部分即设备服务子程序的执 行是系统调用的结果,并且伴随着用户态向核心态的演变, 在此过程中还可以调用与进程运行环境有关的函数,比如 sleep()函数。驱动程序的下半部分即中断服务子程序。

Linux设备驱动程序是如何加载进内核的?

  • 将驱动程序编译成模块形式进行动态加载,常用命令 有insmod(加载)、rmmod(卸载)等
  • 静态编译,即将驱动程序直接编辑放进内核。动态加载模块设计使Linux 内核功能更容易扩展。而静态编译方法对于在要求硬件只是完成比较特定、专一的功能的一 些嵌入式系统中,具有更高的效率。

字符设备驱动程序编写通常都要涉及三个重要的内核数据结构,请简要叙述。

  • File_operations为用户态应用程序提供接口,是系统调用 和驱动程序关联的重要数据结构
  • File 结构体在内核代码include/linux/fs.h 中定义,表示 一个抽象的打开的文件,file_operations结构体就是file 结构的一个成员。
  • Inode 结构表示一个文件,而file 结构表示一个打开的文件。这正是二者间最重要的关系。

请简要叙述字符设备驱动程序的初始化流程

  • 定义相关的设备文件结构体(如file_operation()中的相关成 员函数的定义)
  • 向内核申请主设备号(建议采用动态方式)
  • 申请成功后,通过调用MAJOR()函数获取主设备号
  • 初始化cdev的结构体,可以通过调用cdev_init()函数实现
  • 通过调用cdev_add()函数注册cdev到内核
  • 注册设备模块,主要使用module_init()函数和 module_exit()函数。

Linux设备模型的主要功能有哪些

  • 电源管理和系统关机
  • 与用户空间通信
  • 热插拔(hotplug)设备管理
  • 设备类型管理
  • 对象生命周期处理

第九章

简述QT5的信号和插槽机制

信号和插槽用于两个对象之间的通信,信号和插槽(signal/slot)机制是Qt的 核心特征,这也是Qt不同于其他开发框架的最突出的特点。信号和插槽是Qt自定 义的一种通信机制,它独立于标准的C/C++语言,所有从QObject或其子类派生的 类都能够包含信号和插槽。在Qt的部件类中已经定义了一些信号和插槽,但是更多的做法是子类化这个部件,然后添加自己的信号和插槽来实现想要的功能。

  • 事件处理的方式也是回调

  • 当对象状态发生改变的时候,发出signal通知所有的slot接收signal,尽管它并不知道哪些函数定义了slot,而slot也同样不知道要接收怎样的signal

signal和slot机制真正实现了封装的概念,slot除了接收signal之外和其它的成员函数没有什么不同,而且signal和slot之间也不是一一对应的

第十章

什么是嵌入式数据库系统?其主要特点是什么?

  • 嵌入式数据库系统是指支持移动计算或某种特定计算模式的数据库管理系统,它通常与操作系统和具体应用集成在一起,运行在智能型嵌入式设备或移动设备上。
  • 其主要特点是:
    • 嵌入性
    • 移植性
    • 安全性
    • 实时性
    • 可靠性
    • 主动性

第十一章

请画出传统嵌入式系统设计流程,并简要说明各阶段内容?

嵌入式系统设计流程

①在对目标嵌入式系统提出系统定义方案后,要对系统实现进行可行性分析和需求分析;

②在经过严格分析论证后,进入系统总体设计方案阶段,该阶段除提出系统总体框架以外;

③还需进行软硬件划分、处理器选型、操作系统选择、开发环境选择等诸多工作。

名词解释

ARM: Advanced RISC Machine

JTAG(Joint Test Action Group): Joint Test Action Group ,联合测试工作组

BLX(Branch with Link and Exchange):带连接和状态切换的跳转指令

MVN(Move Negative):数据取反传送指令

LR(Link Register):连接寄存器,寄存器R14

CPSR(Current Program Status Register):程序状态寄存器

SPSR(Saved Program Status Register):程序状态保存寄存器

BSP(Board Support Packet) :板级支持包,介于底层硬件和上层软件之间的底层软件开发包。

SoC(System on a chip):系统芯片指的是在单个芯片上集成一个完整的系统,对所有或部分必要的电子电路进行包分组的技术。

LKM(Loadable Kernel Module):可加载内核模块程序

JFFS(Journaling Flash File System):Linux使用的一种文件系统。可支持读写。

YAFFS(Yet Another Flash File System):Linux使用的一种文件系统。可支持读写。

GPIO(General Purpose Input Output):总线扩展线

IIC(Inter-Integrated Circuit):集成电路总线

U-Boot(Universal Bootloader):通用引导加载器

Thumb 状态:ARM体系结构中一种16位的指令集。可以看作是ARM指令压缩形式的子集,为减小代码量而提出,具有16bit的代码密度。

  • 29
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值