网站搜索排名,网站优化建设绵阳,定制一个高端网站,玄武营销型网站制作厂家学习交流加#xff08;可免费帮忙下载CSDN资源#xff09;#xff1a;个人微信#xff1a; liu1126137994学习交流资源分享qq群1#xff08;已满#xff09;#xff1a; 962535112学习交流资源分享qq群2#xff1a; 780902027 深入浅出处理器这几篇文章可能你觉得对软件… 学习交流加可免费帮忙下载CSDN资源个人微信 liu1126137994学习交流资源分享qq群1已满 962535112学习交流资源分享qq群2 780902027 深入浅出处理器这几篇文章可能你觉得对软件开发用处不大这个看个人理解吧若是想贯通上下知其然还要知其所以然的话或许还是有点用处的。学习处理器的篇章非常少花一点时间学一下也无所谓的
在我之前还是做硬件的时候我一直不理解微处理器和微控制器的区别。 之前写过一篇文章讲X86处理器的可以点击查看X86处理器 文章目录1、 处理器1.1、寄存器分类1.2、处理器中的关键寄存器1.3、处理器的IO操作2、硬件设计的关键3、处理器的启动过程4、总结 1、 处理器
处理器分为两种微处理器和微控制器。
微处理器与微控制器有以下区别 微处理器 – CPU 微控制器 –CPU 片内内存 片内外设
注意
微控制器具有成本低功耗低等优点常用于嵌入式系统设计对于软件工程师而言微处理器与微控制器没有任何区别
其中CPU与外设包括微控制器的片内外设与片外外设都有寄存器但是它们的用处却是非常的不一样。之前写过的X86处理器那篇文章中已经讲了一些X86处理器的寄存器的用处大致就是存储数据的但是微控制器上的外设中的寄存器不是用来存储数据的而是用来控制外设的行为和工作方式的。
1.1、寄存器分类 CPU寄存器 – 专用指令执行数据运算 变量处理参数传递 外设寄存器 – 用于控制外设的行为和工作方式、 –寄存器值的配置需要查看相应的硬件手册
1.2、处理器中的关键寄存器
今天我们只了解两个寄存器PC程序计数器寄存器SP栈指针寄存器。 PC程序计数器指令指针寄存器IP – PC实际上就是代码中的每一条指令的地址这个地址刚好就是内存中代码段中的偏移地址 –每执行一条指令PC中的值就会发生变化 – PC始终保存着一条指令这条指令就是CPU即将要执行的那条指令下一条要执行的指令 SP栈指针Stack Pointer –SP寄存器始终保存着栈空间的栈顶地址实现LIFO特性 – SP栈指针用于保护函数调用的现场比如中断断点通用寄存器函数的返回值等。具体如何保护在以后的文章中会讲解
具体使用方法会在后面的文章中讲解今天暂时知道这两个寄存器的概念与用法。
1.3、处理器的IO操作
众所周知一台电脑有很多外设USB声卡显卡等这些都是外设。那么处理器是如何与外设进行数据通信的呢
处理器与外设之间的通信通过IO操作完成。
那么既然有IO操作肯定是要有CPU去寻址的过程在CPU所能寻址的范围内找到外设的地址对该地址进行读写就可以与外设进行通信。那么外设如何通过IO将自己的地址空间映射给CPU的寻址空间呢 通过内存映射IO空间 – 外设通过精密的硬件链接映射到CPU的寻址空间。 – 然后CPU通过地址访问与外设进行数据读写访问 独立的IO空间 –外设独立于CPU的地址空间无法通过CPU的寻址来与外设进行通信 – 此时需要使用专用的指令与外设进行通信
上面是CPU与外设的基本通信方式我们不必纠结于具体的硬件实现毕竟我们是做软件开发。
那么CPU现在可以与外设进行通信了那么CPU如何操作外设呢
通过IO端口配置控制寄存器通过IO端口读取数据寄存器
从软件工程师的角度来看只要对不同的IO端口读写就可以操作外设读写IO端口时候的具体值和意义需要查询具体的硬件手册。
2、硬件设计的关键
上一节我们知道了CPU是如何与外设打交道的。那么在硬件上大概设怎样的设计呢
首先CPU与外设之间要有地址总线与数据总线然后需要有一个片选信号用来确保是否“启动”该外设。 通过具体的硬件设计可以使地址总线上的值在某个范围时片选信号为“真”即使能连接的外设从而读取相应地址中的数据
具体的硬件如何设计不去细究这里知道大概原理即可
3、处理器的启动过程
在一开始我们的电脑是没有操作系统的那么处理器是如何启动的呢
处理器启动后PCIP寄存器固话了一个默认值PC默认值决定了CPU上电后第一条执行指令在哪第一条执行指令是CPU的启动程序BIOSBIOS以后讲解
下图为CPU简易的启动过程
大致了解一下BIOS
固化于硬件中的一个程序用于初始化硬件然后将指令指针寄存器PCIP指向主引导扇区程序主引导扇区程序再来引导操作系统内核的自举程序然后启动操作系统。后期会专门学习操作系统现在暂时不用了解
4、总结
基础不牢地动山摇。上来就提倡看各种源码的不是大牛就是菜鸡。大牛很少菜鸡很多。
本系列文章几乎全部参考狄泰软件学院相关课程想学习的可以加群 群聊号码199546072
学习探讨加个人 qq1126137994 微信liu1126137994