第一章绪论

嵌入式系统是在各方面有严格要求的专用计算机系统。

嵌入式系统按复杂程度主要分为:

  • 简单系统:单片机、DPS
  • 复杂系统:PDA、平板

注:简单系统也可分为小型和中型系统

三要素:

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

“实时性”主要分为:

  • 强实时性:μs~ms
  • 一般实时:ms~s
  • 弱实时:s以上

实时性需求:

  • 非实时
  • 硬实时
  • 软实时

软硬代表响应时间是否完全不超出所需时间。软实时允许极少数情况超出(平均不超出)

嵌入式系统的组成结构:

  • 嵌入式处理器
  • 外围硬件设备
  • 嵌入式操作系统(可选)
  • 用户的应用软件系统

第二章ARM微处理器与编程模式

计算机体系结构分两种:

  • 哈佛结构:程序数据分开储存
  • 冯诺依曼结构:程序也算数据,放一起

指令集:

  • CISC:复杂指令计算机(80%的指令基本用不上)
  • RISC:精简指令计算机(嵌入式系统)

指令集和体系结构并没有对应关系

流水线:同时运行多个指令的不同部分:

CPI:每时钟周期运行指令的个数,上述流水线的CPI为1

ARM微处理器命名的含义:

标志 含义
T 支持Thumb指令集(一种精简指令集)
D 片上调试
M 支持长乘法
I 支持片上断点和调试点
E 增加DSP指令
J JAVA加速器
S 可综合

ARM芯片=ARM内核(CPU)+外部设备

运行模式:

除了用户模式都叫特权模式

除了用户模式和系统模式都叫异常模式

ARM是32位指令集,Thumb是16位。

状态切换:

  1. 进入异常的时候自动切到ARM,返回自动切到Thumb
  2. BX Rm:当寄存器Rm[0]为1时切到Thumb,为0时切到ARM

Rm并不特指哪个寄存器,可以是R0~R7中的任意一个

ARM的通用寄存器:

R0-R7:全状态通用寄存器

R8-R12:分组寄存器,FIQ状态单用5个,其他状态共用5个

R13(SP):堆栈指针,用户模式和系统模式共用1个,其他模式各一个

R14(LR):链接寄存器(R15的备份),用户模式和系统模式共用1个,其他模式各一个

R15(PC):全状态共用,程序计数器,由于流水线技术同时运行多个指令的不同部分,存放当前执行指令向后第二条指令的地址(当前指令地址+8)。

状态寄存器:

CPSR:current 当前状态

SPSR:saved 备份储存的状态

用户模式和系统模式没有SPSR

状态位格式:

高4位:

标志位 含义
N 补码有符号数运算的结果为负数
Z 运算结果为0
C 同汇编,进位,或带移位时移出的位
V 符号位溢出

低8位:

控制位 含义
I 禁止IRQ中断
F 禁止FIQ中断
T 处于Thumb状态
M[4:0] 运行模式

注意到用户模式和系统模式总是使用相同的寄存器,可以理解为系统模式是加了特权的用户模式

Thumb的寄存器:ARM扣掉R8-R12

储存格式:

  • 大端:正常储存,但是高字节低地址(高位靠前,低位靠后,说起来奇怪,其实就是正常的)
  • 小端:nt存法,高字节高地址,低字节低地址,说着好听,其实是8位一组倒着存

储存管理单元MMU:虚拟应用程序所需的空间,控制页表读取使用

页表详见PPT

异常处理的过程:

  1. 异常发生时,保护现场,进入异常处理程序
  2. 执行完异常处理程序后,恢复保存的现场,并返回到异常发生时的下一条程序
  3. 处理器允许多个异常同时发生,此时将按照优先级处理异常。

优先级从高到低:

  1. 复位
  2. 数据访问中止
  3. FIQ
  4. IRQ
  5. 指令预取中止
  6. 未定义指令
  7. SWI

具体介绍

异常类型 进入模式 具体含义 异常向量地址
复位 管理 全部停止,从头运行 0x00000000
未定义指令 未定义 遇到不能处理的指令(硬件没有或编写错误) 0x00000004
SWI(软件中断) 管理 执行SWI指令,这种异常提供了在用户模式下调用特权操作的方法 0x00000008
指令预取中止 中止 取指令地址不存在,或地址不允许当前指令访问 0x0000000C
数据访问中止 中止 取数据地址不存在,或地址不允许当前指令访问 0x00000010
IRQ IRQ 外部发出中断请求,且CPSR的I(禁止IRQ中断)位为0 0x00000018
FIQ FIQ 快速中断请求有效,且CPSR的F(禁止FIQ中断)位为0 0x0000000C

数据访问中止与其后的IRQ中间留了一个异常向量地址,不清楚干什么用

异常处理具体步骤:

  1. 将下一条指令地址放入LR(不是PC的下一条,而是正在执行的下一条)
  2. 将CPSR复制到SPSR
  3. 根据异常类型,设置CPSR的运行模式位(T设为0,M[4:0])
  4. PC取异常对应的异常向量地址,跳转到异常处理程序,并设置中断禁止位(I,F)。

中断返回:

  1. LR的值减去偏移量送入PC
  2. SPSR复制回CPSR
  3. 清除中断禁止位?(这本就是CPSR的东西,按理说上一步应该已经清除了)
  4. 复位异常不用返回

返回:数据LR-8,FIQ,IRQ,指令预取-4,其他不变0.

和优先级有关,优先级越高的返回越多

第三章ARM指令集与汇编程序设计

寻址方式:

寄存器寻址:寄存器的值

立即寻址:#+0x…使用一个指定的16进制数

寄存器偏移寻址:ARM特有寻址方式,在传入的操作数后面加上",LSL 随便什么寻址",对数据先移位再计算。支持5种移位:(不可能考这么细吧)

寄存器间接寻址&基址寻址:

这俩倒不如说是操作符"[]"的用法:

操作符[]的用法:接收两个参数,第一个为寄存器,第二个为立即数,计算这两个数的和X,并取X所对应地址内数据的值。若未指定第二个参数默认为0。

多寄存器寻址:{}

仅用于寄存器,最多16个。

用法:{}内按照从低到高的顺序指定R0-R15寄存器,中间用逗号隔开,对于连续的可用横线代替中间的寄存器。如{R2-R7,R12}

堆栈寻址:带SP就算

几种模式

**满递增(FA):**堆栈向上增长,堆栈指针指向存放有效数据项的最高地址。指令如LDMFA、STMFA等;

**空递增(EA):**堆栈向上增长,堆栈指针指向堆栈上的第一个空位置。指令如LDMEA、STMEA等;

**满递减(FD):**堆栈向下增长,堆栈指针指向存放有效数据项的最低地址。指令如LDMFD、STMFD等;

**空递减(ED):**堆栈向下增长,堆栈指针向堆栈下的第一个空位置。指令如LDMED、STMED等。

只是保存数据的话,入栈出栈用同一种模式就行

相对寻址:隐含了PC的基址寻址,其实就是跳转指令B+随便什么字母+地址,如BL HELL

ARM指令:

基本格式:

条件码cond:相当于直接套个了if(),比如EQ:相等,NE不相等

S:就是S,加上影响,不加不影响

跳转指令B:

B lableBX Rm

调用子程序,B可以加参数L或X或LX,用L会把PC-4放进LR,X会切状态,比如进入ARM,注意带X时不传入lable而是寄存器

数据处理指令:

MOV A,B 把B放进A

MVN A,B 把B的非放进A

CMP A,B 比较A和B的大小(结果存标志位)

CMN A,B 比较A和-B的大小(结果存标志位)

TST A,B 与(结果存标志位)

TEQ A,B 异或(结果存标志位)

ADD A,B,C 加

SUB A,B,C A=B-C

RSB A,B,C A=C-B(设计者指定是有点毛病)

ADC 带进位加

SBC 带进位减

RSC 带进位逆减(交换顺序便于LSL偏移寻址)

AND ORR EOR 与、或、异或,都是三个参数

BIC A,B,C 位清除A=B&(~C) (清除哪位哪位设为1比如0xFF0000清除第三第四字节)

MUL A,B,C 32位乘法

MLA A,B,C,D 32位乘法,但是还要+D

64位乘法:(盲猜不考,真考到这个估计及格的可能性也不大了)

储存器访问指令:

花式LDR:

花式STR:

总结:S是有符号,B是字节,不带是字,H是半字,T是用户模式

链表搜索程序:

search

CMP R0,#0

LDRNEB R2,[R0] //此处是为了展示LDR的用法,不然可以直接CMPNE R1,[R0]

CMPNE R1,R2

BNE search

MOV PC,LR //返回用这句

LDM和STM:

分两种运行模式:数据块和堆栈

简单说,LDM是前面的数放后面,STM是后面的数放前面

瞎几把指令,不想看。

下面这个八成要考:

BIC是清除指令

Thumb指令集,移除了B以外所有指令的条件位,移除了R8~R12

存储系统

按存储介质分:半导体存储器,光盘存储器,磁表面存储器

存取方式:

  • 随机存取RAM
  • 顺序存取SAM
  • 直接存取DAM
  • 只读ROM
  • 闪速存储Flash Memory

存储系统结构:

注:上图的存储器名称并不代表存储器类型,比如Nor Flash属于ROM类型的存储器

内部寄存器:逻辑门

高速缓存:逻辑门

主存:SRAM、DRAM、SDRAM

主存引导区:EPROM、E2PROM、Nor Flash

外存:NAND Flash、磁盘、光盘、SD卡

外存被分为8个Bank(0~7),每个Bank128MiB,但Bank6和Bank7的大小可以设定。所以前7个Bank有固定的起始地址,而最后一个Bank不固定

Bank0作为引导区,只能接ROM存储器

Bank1~7:可以接ROM、SRAM、SDRAM

Bank6和Bank7的容量虽然可以设定,但两者必须相等。且不能超过128MiB。

8位存储芯片并联成16位:一半存高位数据,一半存低位数据,其他全并联

NorFlash:16位2M,通常配置到Bank0

NAND Flash:分为4096块,每块32页,每页528字节(但只有512存数据)

共26根地址线2514选择块,139选择页8~0选择列

A8是特殊的地址线,根据命令选择,命令0x01代表A8=1,0x00代表A8=0。先用A8选择两个半页中的一个,然后按照A0~A7 、 A9~A16 、A17~A24、A25传入地址。

存储器控制寄存器:我可去你的吧,谁能记住。

第五章通用外设与接口

通用输入输出端口:GPIO

S3C2440有9组GPIO:

FCLK=2×(MDIV+8)×(时钟源频率)/((PDIV+2)×2SDIV)FCLK=2\times(MDIV+8)\times(时钟源频率)/((PDIV+2)\times 2^{SDIV}) FCLK=2×(MDIV+8)×(时钟源频率)/((PDIV+2)×2SDIV)
看门狗定时器,当计数器为0时触发PCLK的复位
这第五章是重点,但是投入和回报不成正比,不看。

合工大信安嵌入式考前自救相关推荐

  1. python爬取合工大、安大、中科大就业信息网宣讲会信息——requests_htmlmongoDB

    # -*- coding: utf-8 -*- """ Created on Fri Apr 27 15:12:18 2018 #python 3.6 "&qu ...

  2. 合工大与安大的计算机科学与技术好,计算机考研安徽大学和合工大两所学校哪个好?...

    安徽大学的计算机录取分数低点,实力也稍强点,是安徽省省级A类重点学科,而安徽大学的.计算机科学与技术.信息与通信工程.土木工程,文科其他专业实力在全国就并不突出了.计算机科学与技术.统计学.生态学等理 ...

  3. 麒麟信安操作系统推动智慧电力高质发展

    麒麟信安操作系统软件大规模应用于电力生产控制系统中,通过高安全.高可靠.高可用.强实时.兼容性强等技术优势,成为满足电力各细分领域技术需求的国产安全操作系统首选品牌.包括智能电网调度控制系统.智能电网 ...

  4. 聚焦 | 电力行业国产操作系统迎来大市场,麒麟信安积极承接发展新机遇

    近年来,针对信息安全的外部环境不确定性加剧,作为关系到国计民生的电力行业,加速了自主创新的步伐. 从2009年起,电力行业就开始采用拥有自主核心技术的软硬件设施,到如今,整个电力行业已普遍完成了调度自 ...

  5. 武汉理工大学合肥工业大学 计算机,合工大为什么从985降到211?附合肥工业大学211地位(合工大不是985)...

    选择科目 测一测我能上哪些大学 选择科目 领取你的专属报告 > 选择省份 关闭 请选择科目 确定 v> 合肥工业大学是安徽省一所著名高校,简称"合工大",也是安徽211 ...

  6. 网络攻防技术(郑大信安个人总结版)

    网络攻防技术(郑大信安个人总结版) 目录 第1部分 绪论 2 第2部分 网络脆弱性分析 3 第3部分 网络侦察 5 第4部分 网络扫描 7 第5部分 拒绝服务攻击 11 第6部分 计算机木马 14 第 ...

  7. 计算机学习入门指北——计科软工网络信安侧重图析、解读专业术语、岗位分类、未来规划

    申明:本博文偏技术向,主观性较强,其中部分理解必有偏差和误解,望指出改正! 计算机学习入门指北: 作为刚入学的计算机系学生,面对一片专业术语十分蒙.区块链?大数据?开源?数据库?嵌入式开发?前端后端? ...

  8. 润和软件携手高鸿信安助力构建可信计算生态

    近日,润和软件推出的企业级通用操作系统HopeStage与高鸿信安旗下产品CTRUST HTE 操作系统可信增强系统完成兼容性互认证. 经测试,企业级通用系统HopeStageV1.0与高鸿信安CTR ...

  9. 率先完成息安全产品百万级装车应用,为辰信安完成新一轮融资

    近日,广东为辰信息科技有限公司(以下简称"为辰信安")完成新一轮融资,投资方为国投招商.国投招商将支持为辰信安汽车信息安全产品研发及市场拓展,不断创新汽车信息安全底层技术,助力汽车 ...

最新文章

  1. JS基础入门篇(一)
  2. 化工原理各章知识点汇总
  3. C# 两时间,时间间隔
  4. 个人见解:*与(c语言)
  5. Hive _函数(系统内置函数、自定义函数、自定义UDF函数)
  6. LeetCode27——Remove Element(移除数组中指定的元素)
  7. 通过 getResources 找不到jar包中的资源和目录的解决方法
  8. 简单易用的开源ORM框架SqlSugar v5.0.0.19源码
  9. SpringMVC自学日志04(Controller 及 RestFul风格 )
  10. simplejson.scanner.JSONDecodeError: Extra data: line 1 column 22089 - line 1 column 22090
  11. java按钮添加事件_java中添加按钮并添加响应事件的方法(推荐)
  12. Access访问错误集锦:Access关键字
  13. Docker seaweedfs
  14. cactiEZ 使用
  15. HD AUDIO For XP SP3 声卡修正补丁下载
  16. 牛客刷题---年会抽奖
  17. stm32毕业设计 单片机车牌识别系统
  18. 解决DNS解析故障的几种方法
  19. 6-2 折半查找 (15分)_数据结构实验7_羊卓的杨
  20. Linkis和DSS本地和远程调试文档

热门文章

  1. 影响小红书KOL报价的4大因素,小红书品牌方推广投放经验分享
  2. 《关键信息基础设施保护条例》已上报国务院有望年内出台​
  3. 计算机毕业设计 基于JavaWeb的图书查询管理系统(源码+论文)
  4. SM5202高耐压防电池反接兼容TP4056脚位具有SOP8 MSOP8小型封装的通用1A线性充点芯片
  5. JavaScript 框架之jQuery
  6. 智能驾驶发展的前世今生 |既生瑜,何生亮,究竟何为PPP-RTK?
  7. 精密单点定位技术(PPP)和RTK技术有什么区别
  8. 使用迅雷快速下载慢速官网大文件
  9. 用户思维+:好产品让用户为自己尖叫
  10. visio中公式太小_学SolidWorks钣金必知的钣金折弯与展开计算原理与公式