JTAG(Joint Test Action Group):JTAG是一种用于测试和调试集成电路的标准接口。它提供了对芯片内部信号和寄存器的访问,用于硬件调试和故障诊断。
BLX(Branch with Link and Exchange):BLX是ARM处理器的指令之一,用于在跳转到目标地址的同时,将当前指令的下一条指令地址保存到寄存器中。
MVN(Move Not):MVN是ARM处理器的指令之一,用于对操作数执行位求反操作。
LR(Link Register):LR是ARM处理器中的寄存器,用于存储返回地址,即函数调用后将要返回的下一条指令的地址。
CPSR(Current Program Status Register):CPSR是ARM处理器中的当前程序状态寄存器,用于存储当前处理器的运行状态和控制标志位。
SPSR(Saved Program Status Register):SPSR是ARM处理器中的保存的程序状态寄存器,用于存储在中断或异常发生时的前一个程序状态。
BSP(Board Support Package):BSP是指针对特定硬件平台的软件支持包,包含了针对该平台的驱动程序、操作系统适配层和各种工具。
SoC(System on a Chip):SoC是一种集成度高的芯片,将处理器核心、内存、外设接口和其他系统组件集成在一块芯片上,常用于嵌入式系统中。
LKM(Loadable Kernel Module):LKM是一种可动态加载到操作系统内核的模块,它扩展了操作系统的功能,并在需要时可以加载或卸载。
JFFS(Journaling Flash File System):JFFS是一种闪存文件系统,特别设计用于闪存存储器,提供可靠的数据存储和管理。
YAFFS(Yet Another Flash File System):YAFFS是一种专为闪存存储器设计的文件系统,具有快速的读写性能和高可靠性。
GPIO(General-Purpose Input/Output):GPIO是一种通用输入/输出接口,允许处理器与外部设备进行数字信号的输入和输出。
IIC(Inter-Integrated Circuit):IIC是一种串行通信协议,用于在电路板上的芯片之间进行通信。
U-Boot(Universal Bootloader):U-Boot是一种常用的开源引导加载程序,用于启动嵌入式系统,并提供各种引导和调试功能。
Thumb 状态:Thumb是ARM处理器的一种指令集,其指令长度较短,可以提高代码密度和节省存储空间。
ThumbEE 状态:ThumbEE是ARM处理器的一种扩展状态,用于支持更高级别的安全和代码保护功能。
什么是嵌入式系统?
嵌入式系统是以应用为中心,以计算机技术为基础,软,硬件可裁剪,适用于应用系统对功能,可靠性,成本,体积,功耗等方面有特殊要求的专用计算机系统.
嵌入式系统有哪些基本要素?
嵌入式系统的三个基本要素是嵌入性、专用性与计算机系统。
按嵌入式系统的复杂程度进行分类,可将嵌入式系统分为哪几类?
请叙述嵌入式系统的特点有哪些?
请详细说明嵌入式系统的组成?
嵌入式微处理器的特点有哪些?
请说明常用嵌入式处理器分成哪几类?
请说明哈佛体系结构和冯诺依曼体系结构有何不同?
二者的区别就是程序空间和数据空间是否是一体的。 冯·诺依曼结构数据空间和地址空间不分开,哈佛结构数据空间和地址空间是分开的。
什么是 CISC 和 RISC ?
CISC的英文全称为“Complex InstrucTion Set Computer”,即“复杂指令系统计算机”.
RISC的英文全称为“Reduced InstrucTion Set Computer”,即“精简指令集计算机”.
RISC结构的特点:
ARM体系结构中的v7和v8:
v7:采用了Thumb-2技术,是32位的.首次采用NEON信号处理扩展集.
v8:首次支持64位.支持三个主要指令集A32,T32,A64.
Cortex-A8处理器工作模式:
大/小端存储模式
大端模式是被存字数据的高字节存储在存储系统的低地址中,而被存字数据的低字节则存放在存储系统的高地址中.
小端存储格式中,存储系统的低地址中存放的是被存字数据中的低字节内容,存储系统的高地址存放的是被存字数据中的高字节内容.
通常异常响应过程:
ARM处理器对异常的响应过程:
进入与特定的异常响应的运行模式.
将CPSR的值保存到将要执行的异常中断相应的SPSR_mode中,以实现对处理器当前运行状态,中断屏蔽和各标志位的保护.
将引起异常指令的下一条指令的地址存入相应的链接寄存器,以便程序在异常处理结束返回时能正确返回到原来的程序出继续向下执行.
设置CPSR的低5位,使处理器进入相应的工作模式.
根据异常类型,将向量地址强制复制给PC,以便执行相应的异常处理程序.
ARM 处理器的指令集主要有哪些?
什么是寻址方式?
寻址方式是指处理器根据指令中给出的地址信息,找出操作数所存放的物理地址,实现对操作数的访问.
请写出 ARM 指令系统 6 种以上寻址方式?
请简述 S5PV210 处理器 GPIO 端口操作步骤?
确定所使用的GPIO端口的功能,如作为输入/输出引脚使用时,是否需要设置上拉/下拉电阻;作为其他功能使用时,对应S5PV210处理器的芯片手册进行设置.
确定GPIO端口的输入/输出方向,通过端口设置寄存器完成端口的输入/输出功能或其他功能设置.
对数据寄存器操作.如果设置为输入引脚,读取数据寄存器对应位值,实现引脚状态的读取;如果设置为输出引脚,通过写数据寄存器对应位值,实现引脚状态的设置.
S5PV210启动过程:
上电后首先执行BL0,该段代码主要的工作序列如下所示:
BL1:
初始化系统时钟,内存,串口等.然后将BL2代码复制到InternalSRAM的BL2区中并跳转执行.
BL2:
初始化网卡,Flash等.之后BL2读取操作系统镜像到内存中运行.
请简要描述 ARM-Linux 中断处理过程?
中断申请并响应:
分配中断线,注册中断服务程序时把设备中断处理程序添加进系统,使在中断发生的时候调用相应的中断处理程序.
保存现场:
处理中断时要保存现场,然后才能处理中断,处理完之后还要把现场状态恢复后才能返回到被中断的地方继续执行.
中断处理:
ARM Linux对中断的处理主要分为内核模式下的中断处理模式和用户模式下的中断处理模式.
中断返回:
在用户模式下产生中断,则在返回时会根据需要进行进场调度,而如果中断发生在管理等内核模式下是不会进行进程调度的.
JFFS2 的主要不足是什么?
U-Boot的主要特点:
什么是主机-目标机交叉开发模式?
是由开发主机和目标机两套计算机系统组成的.开发主机一般指通用计算机,如PC等,目标机指嵌入式开发板.通过交叉开发环境,在主机上使用开发工具,针对目标机设计应用系统进行设计,然后下载到目标机上运行.在此之后的嵌入式系统应用程序的设计,都可以在主机上编辑,通过设置好的交叉编译工具链生成针对目标机运行的嵌入式应用程序,然后下载到目标机上测试运行,并可对该程序进行调试.
主机-目标机的文件传输方式有哪些?
简述交叉开发模式一般采用的三个步骤?
在主机上编译BootLoader,然后通过JTAG接口烧写到目标板.(如果已经运行起可用BootLoader,并且支持烧写Flash功能,则可利用BootLoader通过网络下载映像文件并烧写)
在主机上编译Linux内核,然后通过BootLoader下载到目标板以启动或烧写到Flash.(内核支持NFS可以通过NFS方式挂载根文件系统)
在主机上编译各类应用程序,通过NFS或其他方式运行,调试这些程序,验证无误后再将制作好的文件系统映像烧写到目标板.
作为Linux内核的重要组成部分,设备驱动程序主要完成以下的功能:
对设备初始化和释放.
把数据从内核传送到硬件和从硬件读取数据.
读取应用程序传送给设备文件的数据和回送应用程序请求的数据.
检测错误和处理中断.
Linux设备驱动程序分类有哪些?
字符设备
块设备.如:光盘,硬磁盘,软磁盘,磁带等.
网络设备
字符设备驱动程序的初始化流程:
定义相关的设备文件结构体.
向内核申请主设备号.
申请成功后,通过调用MAJOR()函数获取主设备号.
初始化cdev的结构体,可以通过调用cdev_init()函数实现.
通过调用cdev_add函数注册cdev到内核.
注册设备模块,主要使用module_init()函数和module_exit()函数.
Linux设备驱动程序可以分为两个主要组成部分:
对子程序进行自动配置和初始化,检测驱动的硬件设备是否正常,能否正常工作.如果该设备正常,则要进一步初始化该设备及相关设备驱动程序需要的软件状态.这部分驱动程序仅在初始化的时候被调用一次.
设备服务子程序和中断服务子程序,这两者分别是驱动程序的上下两部分.驱动程序的上半部分即设备服务子程序的执行是系统调用的结果,并且伴随着用户态向核心态的演变,在此过程中还可以调用与进程运行环境有关的函数,比如sleep()函数.驱动程序的下半部分即中断服务子程序,在Linux环境下,系统并不是直接从中断向量表中调用设备驱动程序的中断服务子程序,而是接受硬件中断,然后再调用中断服务子程序.中断可以产生于任何一个进程运行的过程中.
Linux设备驱动程序是如何加载进内核的?
一种是将驱动程序编译成模块形式进行动态加载,常用命令有insmod(加载)、rmmod(卸载)等;
另一种是静态编译,即将驱动程序直接编辑放进内核。 动态加载模块设计使 Linux 内核功能更容易扩展。而
静态编译方法对于在要求硬件只是完成比较特定、专一的功能的一些嵌入式系统中,具有更高的效率。
字符设备驱动程序编写涉及到的三个重要内核数据结构:
file_operations: 为用户态应用程序提供接口,是系统调用和驱动程序关联的重要数据结构.
是一个字符设备把驱动的操作和设备号联系在一起的接口,也是一系列指针的集合.
file: 表示一个抽象的打开的文件,file_operations结构体就是file结构的一个成员.内核在用open()函数打开设备文件时创建file结构,并传递给在该文件上操作的所有函数,直到最后的close()函数.
inode: 表示一个文件,对于单个文件,系统允许有多个表示打开的文件描述符的file结构,但他们都指向同一个inode结构.是Linux管理文件系统的最基本单位,也是文件i同链接任何子目录、文件的桥梁.
QT特点(优点):
简述 QT5 的信号和插槽机制
信号(Signal):信号是一个特殊的函数,它在对象内部某个事件发生时被触发。信号可以被视为一种通知,表示某个特定的事件已经发生。例如,一个按钮对象可以定义一个名为clicked()
的信号,表示按钮被点击了。
插槽(Slot):插槽是一个普通的成员函数,用于响应信号的发出。插槽可以被视为信号的接收器,当相应的信号被触发时,与之关联的插槽函数将被调用。例如,一个文本框对象可以定义一个名为textChanged()
的插槽,用于在文本内容发生变化时执行一些操作。
信号与插槽的连接:信号和插槽通过连接机制建立关联。当一个信号发出时,与之连接的插槽将被自动调用。连接可以在代码中手动设置,也可以通过Qt的可视化工具进行操作。
使用信号和插槽机制可以实现对象之间的松耦合通信。一个对象可以发出信号,而不需要知道响应的对象是谁或如何处理这个信号。相应的插槽可以在任何时间被连接或断开,使得系统的灵活性得到提高。
嵌入式数据库特点:
SQLite主要特点:
嵌入式数据库特点:
SQLite主要特点:
请画出嵌入式系统协同设计流程,并简要说明各阶段内容?
新手上路,有错请指正;