嵌⼊式常见笔试题收集
总结了⼀些关于嵌⼊式常见的笔试题,部分copy了⽹上的⼀些博客⽂章,侵权联删!
⼀、系统相关
波特率
1)定义:
波特率表⽰每秒钟传送的码元符号的个数,是衡量数据传送速率的指标,它⽤单位时间内载波调制状态改变的次数来表⽰。
在信息传输通道中,携带数据信息的信号单元叫码元,每秒钟通过信道传输的码元数称为码元传输速率,简称波特率。波特率是传输通道频宽的指标。
2)计算:
波特率115200 = 115200 (位/秒)
以最普通的串⼝(起始位+8位数据+停⽌位)为例:
除以 10,得到的是每秒字节数:
波特率115200 = 115200 (位/秒) = 11520 (字节/秒)
再除以 1024,就是每秒 KB 数:
波特率115200 = 115200 (位/秒) = 11.25 (KB/秒)
如果有⼀位奇偶校验位,就应该除以 11,得到的是每秒字节数。
最后:
波特率115200 = 115200 (位/秒) = 10.27 (KB/秒)
备注:
⼆进制环境下,波特率 = ⽐特率。
哈佛结构
哈佛结构是⼀种将程序指令存储和数据存储分开的存储器结构,它的主要特点是将程序和数据存储在
不同的存储空间中,即程序存储器和数据存储器是两个独⽴的存储器,每个存储器独⽴编址、独⽴访问,⽬的是为了减轻程序运⾏时的访存瓶颈。
程序指令储存和数据储存分开,数据和指令的储存可以同时进⾏,可以使指令和数据有不同的数据宽度,如Microchip公司的PIC16芯⽚的程序指令是14位宽度,⽽数据是8位宽度。
其中,51单⽚机和stm32都为哈佛结构。
冯诺依曼结构
冯·诺依曼结构,⼜称为普林斯顿体系结构,是⼀种将程序指令存储器和数据存储器合并在⼀起的存储器结构。取指令和取操作数都在同⼀总线上,通过分时复⽤的⽅式进⾏;缺点是在⾼速运⾏时,不能达到同时取指令和取操作数,从⽽形成了传输过程的瓶颈。由于程序指令存储地址和数据存储地址指向同⼀个存储器的不同物理位置,因此程序指令和数据的宽度相同。
其中,msp430、ARM7、freescale等单⽚机为冯诺依曼结构。
改进型哈佛结构
改进型哈佛结构虽然也使⽤两个不同的存储器:程序存储器和数据存储器,但它把两个存储器的地址
总线合并了,数据总线也进⾏了合并,即原来的哈佛结构需要4条不同的总线,改进后需要两条总线。
ARM处理器的⼯作模式嵌入式多线程编程
⼀个程序运⾏在不同的模式下⾯的时候,能够运⾏的ARM处理器的指令是不⼀样的,能够访问的ARM处理器的寄存器都是不⼀样的。这些模式为:
特权模式
除⽤户模式外,其它模式均为特权模式(Privileged Modes)。ARM 内部寄存器 和⼀些 ⽚内外设 在硬件设计上只允许(或者可选为只允许)特权模式下访问。此外,特权模式可以⾃由的切换处理器模式,⽽⽤户模式不能直接切换到别的模式。
异常模式
特权模式中除系统(system)模式之外的其他5种模式⼜统称为异常模式。它们除了可以通过在特权下的程序切换进⼊外,也可以由特定的异常进⼊。⽐如硬件产⽣中断信号进⼊中断异常模式,读取没有权限数据进⼊中⽌异常模式,执⾏未定义指令时进⼊未定义指令中⽌异常模式。其中管理模式也称为超级⽤户模式,是为操作系统提供软中断的特有模式,正是由于有了软中断,⽤户程序才可以通过系统调⽤切换到管理模式。
硬件权限级别:系统模式 > 异常模式 > ⽤户模式
对于Linux⽽⾔,⼀般的应⽤程序运⾏在User模式,⽽Linux内核运⾏在SVC模式,即Supervisor模式
(1)⽤户模式:
⽤户模式是⽤户程序的⼯作模式,它运⾏在操作系统的⽤户态,它没有权限去操作其它硬件资源,只能执⾏处理⾃⼰的数据,也不能切换到其它模式下,要想访问硬件资源或切换到其它模式只能通过软
中断或产⽣异常。
(2)系统模式:
系统模式是特权模式,不受⽤户模式的限制。⽤户模式和系统模式共⽤⼀套寄存器,操作系统在该模式下可以⽅便的访问⽤户模式的寄存器,⽽且操作系统的⼀些特权任务可以使⽤这个模式访问⼀些受控的资源。
说明:⽤户模式与系统模式两者使⽤相同的寄存器,都没有SPSR(Saved Program Statement Register,已保存程序状态寄存器),但系统模式⽐⽤户模式有更⾼的权限,可以访问所有系统资源。
(3)⼀般中断模式:
⼀般中断模式也叫普通中断模式,⽤于处理⼀般的中断请求,通常在硬件产⽣中断信号之后⾃动进⼊该模式,该模式为特权模式,可以⾃由访问系统硬件资源。
(4)快速中断模式:
快速中断模式是相对⼀般中断模式⽽⾔的,它是⽤来处理对时间要求⽐较紧急的中断请求,主要⽤于⾼速数据传输及通道处理中。
(5)管理模式(Supervisor,SVC) :
管理模式是CPU上电后默认模式,因此在该模式下主要⽤来做系统的初始化,软中断处理也在该模式下。当⽤户模式下的⽤户程序请求使⽤硬件资源时,通过软件中断进⼊该模式。
说明:系统复位或开机、软中断时进⼊到SVC模式下。
(6)终⽌模式:
中⽌模式⽤于⽀持虚拟内存或存储器保护,当⽤户程序访问⾮法地址,没有权限读取的内存地址时,会进⼊该模式,linux下编程时经常出现的segment fault通常都是在该模式下抛出返回的。
(7)未定义模式:
未定义模式⽤于⽀持硬件协处理器的软件仿真,CPU在指令的译码阶段不能识别该指令操作时,会进⼊未定义模式。
流⽔线机制
传统的单⽚机(如8051)中,处理器只有完成⼀条指令的读取和执⾏后,才会开始下⼀条指令的处理,所以PC(程序计数器)总是指向正在执⾏的指令。⽽ARM体系架构中则引⼊了流⽔线的概念。
到ARM7为⽌的ARM处理器使⽤了简单的三级流⽔线。三级流⽔线使⽤三个⼯位,将指令的处理分为三个阶段,分别为取指、译码和执⾏。取指:从存储器中装载;译码:识别将要被执⾏的指令;执⾏:处理指令并将结果写回寄存器。
Cortex-A9架构基于先进的推测型⼋级流⽔线
同步通信和异步通信
(1)同步通信要求接收端时钟频率和发送端时钟频率⼀致,发送端发送连续的⽐特流;异步通信时不要求接收端时钟和发送端时钟同步,发送端发送完⼀个字节后,可经过任意长的时间间隔再发送下⼀个字节。
(2)同步通信效率⾼;异步通信效率较低。
(3)同步通信较复杂,双⽅时钟的允许误差较⼩;异步通信简单,双⽅时钟可允许⼀定误差。
(4)同步通信可⽤于点对多点;异步通信只适⽤于点对点。同步是阻塞模式,异步是⾮阻塞模式。
异步通信:异步通信中的接收⽅并不知道数据什么时候会到达,收发双⽅可以有各⾃⾃⼰的时钟。发送⽅发送的时间间隔可以不均,接收⽅是在数据的起始位和停⽌位的帮助下实现信息同步的。这种传输通常是很⼩的分组,⽐如⼀个字符为⼀组,为这个组配备起始位和结束位。所以这种传输⽅式的效率是⽐较低的,毕竟额外加⼊了很多的辅助位作为负载,常⽤在低速的传输中。典型通信为串⼝通信。
同步通信:同步通信中双⽅使⽤频率⼀致的时钟 ,它的分组相⽐异步则⼤得多,称为⼀个数据帧,通过独特的bit串作为启停标识。发送⽅要以固定的节奏去发送数据,⽽接收⽅要时刻做好接收数据的准备,识别到前导码后马上要开始接收数据了。同步这种⽅式中因为分组很⼤,很长⼀段数据才会有额外的辅助位负载,所以效率更⾼,更加适合对速度要求⾼的传输,当然这种通信对时序的要求也更⾼。典型通信为:SPI和IIC。
软实时和硬实时
硬实时与软实时之间最关键的差别在于,软实时只能提供统计意义上的实时。例如,有的应⽤要求系统在95%的情况下都会确保在规定的时间内完成某个动作,⽽不⼀定要求100%。在许多情况下,这样的“软性”正确率已经可以达到⽤户期望的⽔平。⽐如,⽤户在操作DVD播放机时,只要98%的情况都能正常播放,⽤户可能就满意了;⽽发射卫星、控制核反应堆的应⽤系统,这些系统的实时性必须达到100%,是绝对不允许出现意外。
ARM体系的CPU两种⼯作状态
ARM状态:arm处理器⼯作于32位指令的状态,所有指令均为32位。
THumb状态:arm执⾏16位指令的状态,即16位状态。
THumb指令集是arm指令集的⼀个⼦集,是针对代码密度问题⽽提出的,它具有16位的代码宽度。与等价的32位代码相⽐
较,THumb指令集在保留32位代码优势的同时,⼤⼤的节省了系统的存储空间。
另外:ARM的M系列主要⽤Thumb指令,ARM9和A系列主要⽤ARM指令。
Linux⽂件权限
权限数字对应权限组说明:
总共分为4部分
【⽂件或⽂件夹】【owner权限】【group权限】【others权限】
【⽂件是-,⽂件夹是d】【r/w/x相加】【r/w/x相加】【r/w/x相加】
如 chmod 就是说 xxx⽂件的权限为 可读可写可执⾏ 且对 所以⽤户有效。
ls -l a 查看a⽂件的权限
⼆、软件相关
各种变量类型所占内存
⼤端⼩端问题
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论