目录
ARM系统开发基础
(1)软件和硬件的对应的关系
(2)二极管
(3)RAM
(4)三极管 - 开关
(5)MOS管---开关
补充:二极管与三极管和MOS管的区别
1.电子管
2.与或非门
字节顺序
计算机组成(硬件+软件)
软件:
缓存
主存储器
辅助存储器
4,运算器
5,控制器
6,总线
原理图绘制软件:
ARM的两种工作状态
7种工作模式介绍
ARM系统开发基础
(1)软件和硬件的对应的关系
软件:
电路:低电平高电平
芯片:截止导通
软件和硬件的接口:寄存器(控制)
(2)二极管
半导体开关特性
逻辑0和1:数字电路中高低电瓶表示
获得高,低电平的基本方法:利用半导体开关元件的导通截止(即开,关)两种工作状态
1)单项导通特性 - 整流
2)反向击穿特性 - 稳压管
3)发光特性--LED
4)电容特性 - 储能RAM
(3)RAM
1)SRAM--硬件解决 - 有三大总线快,贵
2)DRAM--软件解决 - 没有三大总线(必须初始化才使用),便宜,慢
(4)三极管 - 开关
1)区分NPN和PNP
看箭头P ---- N.
2)逻辑控制
PNP
导通:基极上加低电压
截止:基极上加高电压
NPN
导通:基极上加高电压
截止:基极上加低电压
(5)MOS管---开关
看箭头P ---> N取首字母
2)控制逻辑
P型
导通:栅极上加低电压
截止:栅极上加高电压
N型
导通:栅极上加高电压
截止:栅极上加低电压
(6)数字门电路
(1)与门 - 断路特性 - 遇0为0
(2)或门 - 短路特性 - 遇1为1
(3)非门 - 取反
异或:如果A,b两个值不相同,则异或结果为1.如果A,b两个值相同,异或结果为0。
vo swap(int * x,int * y)
{
* X ^ = * Y;
* X ^ = * Y;
* X ^ = * Y;
}
A = 5,B = 8;
补充:二极管与三极管和MOS管的区别
1.电子管
这三种管都是半导体器件.1。
二极管顾名思义就是有两个极,只有一个PN结,是将PN结加上相应的电极引线和管壳就成为半导体二极管。适用于高频和小功率的工作,也用作数字电路中的开关元件,二极管具有单向导通的特性,一般用在整流,稳压,续流等领域
.2。三极管简称晶体管,(包含有集电极c,发射极e,基极b)不是简单的两个PN结拼起来的,每个极的厚度都有讲究的。三极管分为NPN型和PNP型两种,是最重要的一种半导体器件。它能起放大,振荡或开关等作用
.3.MOS管也称为场效应管,是一种较新型的半导体器件。外形与普通晶体管相似,但两者的控制特性却截然不同。
普能晶体管是电流控制元件,通过控制基极电流达到控制集电极电流或发射极电流的目的,到信号源必须提供一定的电流才能工作。
MOS管则是电压控制元件,它的输出电流决定 输入端电压的大小,基本上不需要信号源提供电流,所以它的输入电阻很高,这是它的突出特点。它广泛应用于放大电路和数字电路。
2.与或非门
字节顺序
1)ARM体系结构将存储器看作是从0地址开始的字节线性组合。从0字节到3字节防止第一个存储的字(32位)数据,从第4个字节到第7个字节防止第二个存储的字数据,依次排列
.ARM处理器是32位处理器,它的寻址空间最大为4G,以字为单位进行对齐。
字对齐:比如说你有一个32位整型数,存放的时候,它可以存放在0的位置,4的位置,8的位置,但是不可以存放在3这个字节位置,不满足字节对齐
.2)ARM体系结构可以用两种方法存储字数据,称之为大端格式和小端格式。
我们用的ARM cortex-A9使用的是小端格式存储。
大端格式:字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中。
小端格式:与大端存储格式相反,在小端存储格式中,低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节。
小端:低对低,对高高
大端:高对低,对高
ARM可以用little / big endian格式存储数据
小端:
最低有效字节被存储在内存的低地址空间
Big endian:
最高有效字节被存储在内存的低地址空间
实现:
计算机组成(硬件+软件)
软件:
系统软件:的Windows和BIOS,引导程序
windows,linux,maxos,ios,android +(Linux内核)
应用软件:微信。QQ,办公,
硬件:1,输入部分
鼠标,键盘,扫描仪,摄像头
2,输出设备
显示器,音响,绘图仪,打印机
3,存储设备
用来存放程序和数据的部件,他是一个记忆设备
缓存
:CPU直接访问,用来存储当前正在执行的指令的程序中的活跃部分,以便快速的向CPU提供指令和数据
主存储器
:可由CPU直接访问,用来存放当前正在执行的程序和数据。
辅助存储器
:设置在主机外部,CPU不能会直接访问,用来存放展示不参与运行的程序和数据,需要时再传送到主存。
存储系统是指:高速缓存存储器+主存储器
4,运算器
5,控制器
6,总线
总线是一种能为多个部件服务的公共信息传送线路,它能分时的发送与接收各部件的信息
原理图绘制软件:
ARM的两种工作状态
1,ARM状态:32位,ARM状态执行字对齐的32位ARM指令。
2,拇指状态,16位,执行半字对齐的16位指令。
3,用Bx Rn指令来进行两种状态的切换:
其中Bx是跳转指令,而Rn是寄存器(1个字,32位),如果Rn的位0为1,则进入Thumb状态;如果Rn的位为0,这进入ARM状态。(原因:ARM指令的后两位始终为0,没有用,而拇指指令的后一位始终为0,没有用,因此采用位0来表示ARM指令与拇指指令的切换标志位)。
注:1,ARM和拇指两种状态之间的切换不影响处理器的工作模式和寄存器的内容。
2,ARM处理器在处理异常时,不管处理器处于什么状态,则都将切换到ARM状态。(**********)
另外:ARM的中号系列主要用拇指指令,ARM9和甲系列主要用ARM指令
S3C2440.S启动代码中根本就没用拇指指令
一,ARM处理器7种工作模式(特权模式特权模式异常模式)
- 用户模式(USR):正常程序执行模式,不能直接切换到其他模式
- 系统模式(SYS):运行操作系统的特权任务,与用户模式类似,但具有可以直接切换到其他模式等特权
- 快中断模式(FIQ):支持高速数据传输及通道处理,FIQ异常响应时进入此模式
- 中断模式(IRQ):用于通用中断处理,IRQ异常响应时进入此模式
- 管理模式(SVC):操作系统保护模式,系统复位和软件中断响应时进入此模式(由系统调用执行软中断SWI命令触发)
- 中止模式(ABT):用于支持虚拟内存和/或存储器保护,在ARM7TDMI没有大用处
- 未定义模式(UND):支持硬件协处理器的软件仿真,未定义指令异常响应时进入此模式
-
表3-1 ARM处理器工作模式
处理器工作模式
特权模式
异常模式
说明
用户(user)模式
用户程序运行模式
系统(system)模式
该组模式下可以任意访问系统资源
运行特权级的操作系统任务
一般中断(IRQ)模式
通常由系统异常状态切换进该组模式
普通中断模式
快速中断(FIQ)模式
快速中断模式
管理(supervisor)模式
提供操作系统使用的一种保护模式,swi命令状态
中止(abort)模式
虚拟内存管理和内存数据访问保护
未定义指令终止(undefined)模式
支持通过软件仿真硬件的协处理
CPU的模式可以简单的理解为当前CPU的工作状态,比如:当前操作系统正在执行用户程序,那么当前CPU工作在用户模式,这时网卡上有数据到达,产生中断信号,CPU自动切换到一般中断模式下处理网卡数据(普通应用程序没有权限直接访问硬件),处理完网卡数据,返回到用户模式下继续执行用户程序。
特权模式
除用户模式外,其它模式均为特权模式(Privileged Modes)。ARM 内部寄存器 和一些 片内外设 在硬件设计上只允许(或者可选为只允许)特权模式下访问。此外,特权模式可以自由的切换处理器模式,而用户模式不能直接切换到别的模式。
异常模式
特权模式中除系统(system)模式之外的其他5种模式又统称为异常模式。它们除了可以通过在特权下的程序切换进入外,也可以由特定的异常进入。比如硬件产生中断信号进入中断异常模式,读取没有权限数据进入中止异常模式,执行未定义指令时进入未定义指令中止异常模式。其中管理模式也称为超级用户模式,是为操作系统提供软中断的特有模式,正是由于有了软中断,用户程序才可以通过系统调用切换到管理模式。
7种工作模式介绍
(1)用户模式:
用户模式是用户程序的工作模式,它运行在操作系统的用户态,它没有权限去操作其它硬件资源,只能执行处理自己的数据,也不能切换到其它模式下,要想访问硬件资源或切换到其它模式只能通过软中断或产生异常。
(2)系统模式:
系统模式是特权模式,不受用户模式的限制。用户模式和系统模式共用一套寄存器,操作系统在该模式下可以方便的访问用户模式的寄存器,而且操作系统的一些特权任务可以使用这个模式访问一些受控的资源。
说明:用户模式与系统模式两者使用相同的寄存器,都没有SPSR(Saved Program Statement Register,已保存程序状态寄存器),但系统模式比用户模式有更高的权限,可以访问所有系统资源。
(3)一般中断模式:
一般中断模式也叫普通中断模式,用于处理一般的中断请求,通常在硬件产生中断信号之后自动进入该模式,该模式为特权模式,可以自由访问系统硬件资源。
(4)快速中断模式:
快速中断模式是相对一般中断模式而言的,它是用来处理对时间要求比较紧急的中断请求,主要用于高速数据传输及通道处理中。
(5)管理模式(Supervisor,SVC) :
管理模式是CPU上电后默认模式,因此在该模式下主要用来做系统的初始化,软中断处理也在该模式下。当用户模式下的用户程序请求使用硬件资源时,通过软件中断进入该模式。
说明:系统复位或开机、软中断时进入到SVC模式下。
(6)终止模式:
中止模式用于支持虚拟内存或存储器保护,当用户程序访问非法地址,没有权限读取的内存地址时,会进入该模式,linux下编程时经常出现的segment fault通常都是在该模式下抛出返回的。
(7)未定义模式:
未定义模式用于支持硬件协处理器的软件仿真,CPU在指令的译码阶段不能识别该指令操作时,会进入未定义模式。
说明:
1、用户模式外,其它6种模式称为特权模式。所谓特权模式,即具有如下权利:
a.MRS(把状态寄存器的内容放到通用寄存器);
b.MSR(把通用寄存器的内容放到状态寄存器中)。
由于状态寄存器中的内容不能够改变,因此要先把内容复制到通用寄存器中,然后修改通用寄存器中的内容,再把通用寄存器中的内容复制给状态寄存器中,即可完成“修改状态寄存器”的任务。
2、剩下的六种模式中除去系统模式外,统称为异常模式。
除用户模式外,其余6种工作模式都属于特权模式
特权模式中除了系统模式以外的其余5种模式称为异常模式
大多数程序运行于用户模式
进入特权模式是为了处理中断、异常、或者访问被保护的系统资源
硬件权限级别:系统模式 > 异常模式 > 用户模式
快中断与慢中断区别:快中断处理时禁止中断
二、异常的优先级
三、存储器格式
- 大端格式:高字节在低地址,低字节在高地址
- 小端格式:高字节在高地址,低字节在低地址
四、ARM体系的CPU有两种工作状态
- ARM状态
- THumb状态
五、Linux操作系统与ARM工作模式
首先,ARM开发板在刚上电或复位后都会首先进入SVC即管理模式,此时、程序计数器R15-PC值会被赋为0x0000 0000;bootloader就是在此模式下,位于0x0000 0000的NOR FLASH或SRAM中装载的,因此、开机或重启后bootloader会被首先执行。
接着,bootloader引导Linux内核,此时、Linux内核一样运行在ARM的SVC即管理模式下;当内核启动完毕、准备进入用户态init进程时,内核将ARM的当前程序状态CPSR寄存器M[4:0]设置为10000、进而用户态程序只能运行在ARM的用户模式。
由于ARM用户模式下对资源的访问受限,因此、可以达到保护Linux操作系统内核的目的。
需要强调的是:Linux内核态是从ARM的SVC即管理模式下启动的,但在某些情况下、如:硬件中断、程序异常(被动)等情况下进入ARM的其他特权模式,这时仍然可以进入内核态(因为就是可以操作内核了);同样,Linux用户态是从ARM用户模式启动的,但当进入ARM系统模式时、仍然可以操作Linux用户态程序(进入用户态,如init进程的启动过程)。
即:Linux内核从ARM的SVC模式下启动,但内核态不仅仅指ARM的SVC模式(还包括可以访问内核空间的所有ARM模式);Linux用户程序从ARM的用户模式启动,但用户态不仅仅指ARM的用户模式。
异常模式常用于处理中断或者异常,以及需要访问受保护的系统资源等情况。
软中断:根据硬件中断原理由软件模拟出来的中断称为软中断几个
重要
寄存器:1.r13:堆栈指针,指向栈顶元素(堆栈指针,sp)
2.r14:链接寄存器,用来存放函数返回地址(链接寄存器,lr)
保存当前执行指令的下一条指令的地址(lr = pc + 4)
当返回时(pc = lr)
3.r15:程序计数器,用来跟踪程序运行的位置(程序计数器) )),pc)
4.cpsr
5.spsr函数跳转都是带返回的跳转pc = 14 lr = pc + 4; pc = lr;