博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
软件开发--深入浅出处理器
阅读量:6150 次
发布时间:2019-06-21

本文共 1767 字,大约阅读时间需要 5 分钟。

一. 深入浅出处理器上

A.处理器:微控制器VS微处理器

微控制器--CPU+片内内存+片内外设
微处理器--CPU
B.寄存器分类
CPU寄存器--专用指令执行,数据运算,变量处理,参数传递
外设寄存器--用于控制外设的行为和工作方式,寄存器值的配置需要根据芯片手册完成
C.处理器中的关键寄存器
pc-程序计数器
1.每执行一条指令,pc中的值就会发生变化
2.pc始终保存下一条cpu要执行的指令地址
sp-栈指针
1.始终指向栈空间的顶端,实现LIFO特性
2.保存中断断点,保存函数调用返回点,保存CPU现场数据等
软件开发--深入浅出处理器
D.处理器的IO操作
1.处理器与外设之间的数据通信通过IO操作完成
2.内存映射IO空间--外设通过精密的硬件连接映射到处理器的地址空间,通过地址访问的方式与外设进行通信
3.独立IO空间--独立于地址空间,无法通过地访问外设,使用专用指令与外设进行通信
E.操作外的基本方式
1.通过IO端口配置控制寄存器
2.通过IO端口读取数据寄存器
软件开发--深入浅出处理器
F.处理器启动过程简介
1.处理器上电后,PC寄存器固化了一个默认值
2.PC默认值用于决定第一条执行指令
3.第一条执行指定隶属于启动程序
软件开发--深入浅出处理器
启动程序
1.系统上电后运行的第一个程序
2.根据运行阶段,体积和功能的不同分为三个部分
a.BLO-固化于硬件中,用于初始化硬件,加载并运行BL1
b.BL1-存储于外部存储设备中,用于初始化主存,加载并运行BL2
c.BL2-存储于外部存储设备中,用于引导操作系统执行

二.深入浅出处理器中

A.中断的概念和意义

1.中断是一种处理器与外设进行通信的机制
2.用于通知处理器外部有重要事件发生
3.一般情况下,中断需要被处理器响应
B.中断服务程序
1.从外设中读取中断状态寄存器的值,以便了解中断类型
2.根据中断类型具体设计处理逻辑
3.清除外设状态寄存器中的中断标识位
4.清除处理器中的中断标识位
软件开发--深入浅出处理器
C.中断的意义
1.应用程序不必关心中断的发生与处理
2.中断服务不必关心应用程序的执行状态
3.中断是“上层应用”与“底层代码”的分割边界

软件开发--深入浅出处理器

D.中断的类型
1.硬中断--通过处理器中断信号线产生的中断
2.软中断--通过非法指令或特殊指令触发的中断
E.中断的优先级
1.多个中断同时出现时,处理器先响应高优先级的中断
2.低优先级中断的ISR执行时,可以被高优先级中断再次打断
3.ISR比APP Code拥有更高的执行优先级
F.中断的应用--程序断点
1.断点指的是调试工具用于暂停代码执行的指令位置
2.断点的实现原理为处理器的中断支持
程序断点的实现原理:
1.获取原程序指定行对应的代码地址
2.把代码地址中的指令替换为中断触发指令
3.在中断服务程序中将控制权交给调试程序
4.调试程序读写原程序上下文信息
5.调试程序将代码地址中的指令还原
6.原程序从断点处继续向下执行
软件开发--深入浅出处理器

三.深入浅出处理器下

A.内存管理单元(MMU)

1.现代处理器中队内存进行高效管理的功能单元
2.操纵系统利用内存管理能够实现--虚拟内存与内存保护
软件开发--深入浅出处理器
上面的程序可以看出,两次运行的输出是完全相同的,而在理论上,该程序运行两次的话了,两次的结果应该不同的
软件开发--深入浅出处理器
由上图可以看出,进程1与进程2两个不同进程在内存中的不同位置执行,因此,全局变量的地址不同,但是实际上打印的的结果是一样的,在这里引入了虚拟内存
虚拟内存:
1.应用程序开发时,面对的内存为虚拟内存
2.虚拟内存模式下使用的内存地址为虚拟地址
3.每一个进程拥有独立私有的虚拟地址空间
虚拟内存的意义:虚拟内存能够支持多个大内存需求量的进程同时运行于较小的物理内存中
软件开发--深入浅出处理器
虚拟内存的机制;
1.虚拟内存需要重新映射到物理内存
2.虚拟地址映射到物理内存中的实地址
3.每次只有进程的少量代码在物理内存中运行
4.大部分进程位于存储器中

页式内存管理

1.页是内存单位,指一定数量的内存
2.虚拟内存和物理内存以页为基本单位
3.进程的活动页被载入内存时,记录页地址的映射关系

软件开发--深入浅出处理器

页式内存管理;
页式管理法将内存分为两个部分:(p,d)
p-地址高位,页面号
d-地址低位,页内偏移量
软件开发--深入浅出处理器

转载于:https://blog.51cto.com/13475106/2363357

你可能感兴趣的文章
JS图片跟着鼠标跑效果
查看>>
[SCOI2005][BZOJ 1084]最大子矩阵
查看>>
学习笔记之Data Visualization
查看>>
Leetcode 3. Longest Substring Without Repeating Characters
查看>>
416. Partition Equal Subset Sum
查看>>
app内部H5测试点总结
查看>>
[TC13761]Mutalisk
查看>>
while()
查看>>
常用限制input的方法
查看>>
IIS7下使用urlrewriter.dll配置
查看>>
并行程序设计学习心得1——并行计算机存储
查看>>
bulk
查看>>
js document.activeElement 获得焦点的元素
查看>>
C++ 迭代器运算
查看>>
【支持iOS11】UITableView左滑删除自定义 - 实现多选项并使用自定义图片
查看>>
JavaWeb学习笔记(十四)--JSP语法
查看>>
【算法笔记】多线程斐波那契数列
查看>>
java8函数式编程实例
查看>>
jqgrid滚动条宽度/列显示不全问题
查看>>
在mac OS10.10下安装 cocoapods遇到的一些问题
查看>>