1.嵌入式系统基础
CISC与RISC之间的区别?
CISC的英文全称为“Complex Instruction Set Computer”,即“复杂指令系统计算机”,RISC的英文全称为“Reduced Instruction Set Computer”,即“精简指令集计算机”,
RISC 设计者把主要精力放在那些经常使用的指令上,尽量使它们具有简单高效的特色。对
不常用的功能,常通过组合指令来完成。因此,在RISC 机器上实现特殊功能时,效率可能
较低。但可以利用流水技术和超标量技术加以改进和弥补。而CISC 计算机的指令系统比较丰富,有专用指令来完成特定的功能。因此,处理特殊任务效率较高。
哈佛结构与冯诺依曼结构区别?
哈佛结构是一种将程序指令存储和数据存储分开的存储器结构。中央处理器首先到程序指令
存储器中读取程序指令内容,解码后得到数据地址,再到相应的数据存储器中读取数据,并进行下一步的操作(通常是执行)。程序指令存储和数据存储分开,可以使指令和数据有不
同的数据宽度,哈佛结构的微处理器通常具有较高的执行效率。
冯诺伊曼结构也称普林斯顿结构,是一种将程序指令存储器和数据存储器合并在一起的存储
器结构。程序指令存储地址和数据存储地址指向同一个存储器的不同物理位置,因此程序指令和数据的宽度相同。
写出下列英文缩写的中文含义。USB RTOS RISC TCP IPC GPIO (简答题)USB——Universal Serial Bus(通用串行总线)
RTOS——Real-time operating system(实时操作系统)
RISC——Reduced Instruction Set Computer(精简指令集计算机)
TCP——Transmission Control Protocol(传输控制协议)
IPC——Instruction Per Clock (CPU 每一时钟周期内所执行的指令多少)
GPIO——General Purpose Input Output (通用输入/输出)每个GPIO端口可通过软件分别配置成输入或输出。
比较嵌入式系统与通用计算机的区别。(简述题)
通用计算机系统的技术要求是高速、海量的数值计算,其技术发展方向是总线速度的无限提升、存储容量的无限扩大;而嵌入式计算机系统的技术要求则是智能化控制,技术发展方向是与对象系统密切相关的潜入性能、控制能力与控制的可靠性不断提高。
中断处理经过了哪几个阶段。(简述题)
(p23)禁止其他中断——保存上下文——中断处理程序——中断服务程序——恢复上下文
——允许新中断
2.嵌入式硬件体系结构
嵌入式微处理器(ARM)三级流水线?包括哪三级?
(p19)各型号的ARM处理器的流水线即数不同,ARM7是三级流水线,分别为:取指、译码、执行。以后的版本逐渐增加了流水线级数,从而简化各级逻辑,提高处理器的性能。
ARM处理器的工作状态?ARM状态 Thumb状态
第一种为ARM状态,此时处理器执行32位的字对齐的ARM指令;第二种为Thumb状态,此时处理器执行16位的、半字对齐的Thumb指令。
ARM指令集 Thumb指令集
ARM处理器的7种工作模式?
(1)用户模式(usr , User Mode)。ARM处理器正常的程序执行状态。
(2)快速中断模式(fiq , Fast Interrupt Request Mode)。用于高速数据传输或通道处理。当
触发快速中断时进入此模式。
(3)外部中断模式( irq , Interrupt Request Mode )。用于通用的中断处理。当触发外部中断
时进入此模式。
(4)管理模式( svc , Supervisor Mode )。操作系统使用的保护模式。在系统复位或者执行软件中断指令SWI时进入。
(5)数据访问终止模式( abt , Abort Mode )。当数据或指令预取终止时进入该模式,可用于虚拟存储及存储保护。
(6)系统模式(sys , System Mode )。运行具有特权的操作系统任务。
(7)未定义指令终止模式( und , Undefined Mode )。当未定义的指令执行时进入该模式,
可用于支持硬件协处理器的软件仿真。
7种处理器模式:用户系统快速中断中断管理数据访问终止未定义指令终止
ARM处理的中断分别是哪两种模式?
IRQ (Interrupt Request)和FIQ (Fast Interrupt Request)是ARM处理器的两种编程模式。IRQ是指中断模式,FIQ是指快速中断模式。对于FIQ 你必须尽快处理你的事情并离开这个模式。IRQ 可以被FIQ 所中断,但IRQ 不能中断FIQ。ARM为了支持这两种不同的中断,提供了
对应的叫做FIQ和IRQ处理器模式(ARM有7种处理器模式)。
3.ARM指令系统
ARM指令寻址方式
1.寄存器寻址;(掌握)
MOV R1,R2 ——将R2寄存器中的值存入R1寄存器
2.立即寻址;(掌握)
MOV R1,#1 ——将立即数1装入R1寄存器
3.寄存器移位寻址;(掌握)
MOV R1,R2,LSL #3 ——R2的值左移3位,结果放入R1
MOV R1,R2,LSL R3 ——R2的值左移与R3寄存器内值相等的位数,结果放入R1 4.寄存器间接寻址;(掌握)
LDR R1,[R2] ——将R2寄存器指向的存储单元的数据读出,保存在R1中
单寄存器Load/Store指令
我们把数据从存储器到寄存器的传送叫加载(load),数据从寄存器到存储器的传送叫存储(store)。
加载:
格式为:LDR {条件} 目的寄存器,<存储器地址>
LDR指令是字加载指令,用于从存储器中将一个32位的字数据传送到目的寄存器中。LDRB 指令是字节加载指令,LDRH是无符号半字加载指令。
存储:
格式为:STR{条件} 源寄存器,<存储器地址>
STR指令是字存储指令,用于从源寄存器中将一个32位的字数据传送到存储器中。STRB指令是无符号字节存储指令,STRH指令是无符号半字存储指令。
STR LDR (简答题)
4.Linux基础
Linux经常使用的命令
比如:ls:列出指定路径下的文件。
cp:# cp -r aaa/bbb . 将aaa下的bbb目录复制到当前目录。
mv:# mv aaa/bbb . 将aaa目录下的bbb目录移动剪切到当前目录下。
Chmod:控制档案如何被他人存取。
Chown:属于root权限命令,可以修改档案拥有者。
Cat:连接并显示文本内容。
Rm:rm -r:递归删除;-f:强制删除,不提示。
Touch:#touch a 创建文件a,如果文件a已存在,则会更改文档的日期时间,包括存
取时间和更改时间。当然对目录也有效。
useradd(添加用户):在系统中创建一个新账号,然后为新账号分配用户号、用户组、主目
录和登录Shell等资源。刚添加的账号是被锁定的,无法使用。
怎么使用chmod命令?
这是Linux系统管理员最常用到的命令之一,它用于改变文件或目录的访问权限。该命令有
两种用法:
其语法格式为:chmod [who] [opt] [mode] 文件/目录名
其中who表示对象,是以下字母中的一个或组合:
u:表示文件所有者
g:表示同组用户
o:表示其它用户
a:表示所有用户
opt则是代表操作,可以为:
+:添加某个权限
-:取消某个权限
=:赋予给定的权限,并取消原有的权限
而mode则代表权限:
r:可读
w:可写
x:可执行
如何新建用户?如何使得新建用户具有读写权限?
实验课中,关闭防火墙命令?
Linux关闭防火墙命令
1)永久性生效,重启后不会复原
开启:chkconfig iptables on
关闭:chkconfig iptables off
2)即时生效,重启后复原
开启:service iptables start
关闭:service iptables stop
Mount命令使用
NFS挂载(重点)
1.停止NFS服务。
2.本地增加共享目录,或者建立一个目录作为挂节点与其他NFS系统共享。
3.启动NFS服务。
U盘挂载
1.查看本地硬盘分区情况。
2.插入U盘,明确U盘在本地的分区。
3.建立一个目录用来作为挂节点。
Vi的工作模式?
Vi有以下三种基本的工作模式:
指令模式(Command Mode)下输入a、i、o进入文本输入模式(Input Mode)
文本输入模式(Input Mode) 下按ESC进入指令模式(Command Mode)
指令模式(Command Mode)下输入:进入末行模式(Last line Mode)
末行模式(Last line Mode)下指令错误则返回指令模式(Command Mode)
Vi命令行模式-----各种命令的意思!
1、指令模式(Command Mode)
指令模式主要使用方向键移动光标位置进行文字的编辑,下面列出了常用的操作命令及含义。
0 -----光标移动至行首
h -----光标左移一格
l -----光标右移一格
j -----光标下移一行
k -----光标上移一行
$+A-----将光标移动到该行最后
PageDn -----向下移动一页
PageUp -----向上移动一页
d+方向键-----删除文字
dd -----删除整行
pp -----整行复制
r -----修改光标所在的字符
S -----删除光标所在的列,并进入输入模式
2、文本输入模式(Input Mode)
在指令模式下(Command Mode)按a/A键、i/I键、o/O键进入文本模式,文本输入模式的命令及其含义如下所示。
a -----在光标后开始插入
A -----在行尾开始插入
i -----从光标所在位置前面开始插入
I -----从光标所在列的第一个非空白字元前面开始插入
o -----在光标所在列下新增一列并进入输入模式
O -----在光标所在列上方新增一列并进入输入模式
ESC -----返回命令行模式
3、末行模式(Last line Mode)
末行模式主要进行一些文字编辑辅助功能,比如字串搜索、替代、保存文件等操作。主要命令如下
:q -----结束Vi程序,如果文件有过修改,先保存文件
:q!-----强制退出Vi程序
:wq -----保存修改并退出程序
:set nu -----设置行号
需要注意的是,以上指令都是在英文输入模式下才有效,在linux 终端下有时我们用的是中文输入模式,输入中文的“:”就不能转换模式了。
什么是GCC?它的执行过程包括哪四个阶段?
GCC是linux下的编译器,执行过程中包括预处理——编译——汇编——链接,4个步骤。
Shell脚本文件中变量有以下3种变量:
用户变量:shell脚本文件的一般变量都是用户变量。
环境变量:由关键字export说明的变量叫做环境变量。
系统变量:主要在表示参数时使用。
Shell中单引号与双引号作用?
shell脚本中的单引号和双引号一样都是字符串的界定符,而不是字符的界定符。单引号用
于保持引号内所有字符的字面值,即使引号内的和回车也不例外,但是字符串中不能出现
单引号。(注意是所有,只是单引号本身不能够出现在其中)。
双引号用于保持引号内所有字符的字面值(回车也不例外),但以下情况除外:
?$加变量名可以取变量的值
?反引号仍表示命令替换
?\$表示$的字面值
?\`表示`的字面值
?\"表示"的字面值
?表示的字面值
?除以上情况之外,在其它字符前面的无特殊含义,只表示字面值。
Shell编程—流程控制语句
其他略
FOR循环(重点考察)
比如:for循环在shell中并不像C语言累加的形式,那具体怎么实现?(PPT上讲过)(程序题)
gdb调试相关:
为了使用gdb调试,编译程序时应该怎么处理?
gcc –g;
敲过哪些命令,这些命令的含义是什么?
比如:怎么设置断点?
Break;
怎么查看变量值?等等
5.嵌入式系统开发环境
什么是宿主机?什么是目标机?
宿主机是执行编译、链接嵌入式软件的计算机;目标机是运行嵌入式软件的硬件平台。通常我们用的PC机就是宿主机,而我们用的开发板则是目标机。
NFS是什么?
NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许
网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。
什么是交叉编译?为什么要采用交叉编译? (简答题)
在一种计算机环境中运行的编译程序,能编译出在另外一种环境下运行的代码,我们就称这种编译器支持交叉编译。这个编译过程就叫交叉编译。简单地说,就是在一个平台上生成另
一个平台上的可执行代码。
有时是因为目的平台上不允许或不能够安装我们所需要的编译器,而我们又需要这个编译器
的某些特征;有时是因为目的平台上的资源贫乏,无法运行我们所需要编译器;有时又是因为目的平台还没有建立,连操作系统都没有,根本谈不上运行什么编译器。
5.嵌入式Linux系统的构建
Bootloader的两种操作模式?
(p108)启动加载模式:
在这种模式下,BootLoader从目标机的某个固态存储设备上将操作系统加载到RAM中运行。(其实就是正常的启动模式)
下载模式:
目标机上的BootLoader通过串口或网络连接等通信手段从宿主机上下载文件。(其实就是升级)。
向无任何程序的目标机中写入Bootloader程序,一般使用哪种接口?
JTAG接口:JTAG (Joint Test Action Group;联合测试工作组)最初是用来对芯片进行测试的,JTAG的基本原理是在器件内部定义一个TAP(Test Access Port;测试访问口)通过专用的JTAG 测试工具对内部节点进行测试。JTAG测试允许多个器件通过JTAG接口串联在一起,形成一
个JTAG链,能实现对各个器件分别测试。如今,JTAG接口还常用于实现ISP(In-System Programmer,在系统编程),对FLASH等器件进行编程。
Linux有两种工作界面:字符界面和图形界面!
内核裁剪的流程?
1、将新内核拷贝到/usr/src下,
2、解压缩内核:
tar jxvf linux.2.6.29.tar.bz2
3、cd /usr/src/linux
4、清除不必要的文件:make disclean
5、裁剪内核:系统运行的必要配置+动态添加其他配置,make menuconfig生成一个.config 文件,文件位置位于arch/$cpu/configs
6、menuconfig配置菜单,选择相应配置时,有三种选择方式:Y--将该功能编译进内核、N--不将该功能编译进内核、M--将该功能编译成可以在需要的时候动态插入到内核的模块,通
过空格键进行选取,可以将其重命名,以便下次直接使用cp mini2451_config .config
7、将配置好的内核进行交叉编译:make ARCH=arm CROSS_COMPILE=arm-linux-
8、生成uImage:内核镜像在arch/arm/boot中的zImage
将mkimage工具拷贝/bin:cp mkimage /bin