码迷,mamicode.com
首页 > 其他好文 > 详细

深入浅出处理器(一)

时间:2018-06-27 11:30:58      阅读:231      评论:0      收藏:0      [点我收藏+]

标签:运算   targe   数据   com   案例   控制   指令   ref   1.5   

        在嵌入式开发中,处理器有两种:微控制器和微处理器。那么这两种处理器有何区别呢?微控制器 = CPU + 片内内存 + 片内外设微处理器 = CPU。在以前嵌入式硬件资源很少时,它们的区别对于硬件工程师来说还是很大的。但是在现代的嵌入式中,它们的概念都差不多了。相对来说,微控制器具有成本低,功耗低等优点,常用于嵌入式系统设计;对于软件工程师而言,微控制器和微处理器没有任何区别。


        本系列博客内容是根据狄泰软件学院的《门徒计划》中的 主线课程 相关内容总结而来,狄泰技术交流群:199546072


        下来我们来看看寄存器的分类:CPU 寄存器和外设寄存器。CPU 寄存器是指专用指令执行、数据运算、变量处理以及参数传递;外设寄存器是指用于控制外设的行为和工作方式,寄存器值得配置需要根据芯片手册完成。在处理器中关键寄存器:PC - 重新计数器(指令指针 IP)和 SP - 栈指针(Stack Pointer)。PC 程序计数器的特性,每执行一条指令,PC 中的值就会发生变化,PC 时钟保存下一条 CPU 要执行的指令地址。SP栈指针的特性,始终指向栈空间的顶端,实现 LIFO 特性,保存中断断点、函数调用返回点以及 CPU 现场数据等。我们来看看 PC 和 SP 的使用案例:函数调用。如下

技术分享图片

        在函数调用的时候,PC 指向跳转函数的地址处。在它执行完跳转函数的内容后,接着又返回前面的函数中接着执行代码。那么它如何知道该返回到哪呢?此时便用到了 SP 栈指针。在 PC 进行跳转前会将此时的上下文信息保存到 SP 栈指针指向的栈上。当执行完跳转函数的内容后想要返回原来函数的地址时,此时便会利用 SP 栈指针进行返回。bp 指针是用来保存 SP 栈指针的基地址的,当保存了 PC 的上下文信息时,SP 将会向下移动。

        下来我们来看看处理器的 IO 操作,处理器与外设之间的数据通信通过 IO 操作完成。IO 分为内存映射 IO空间和独立 IO 空间。内存映射 IO 空间是指外设通过精密的硬件连接映射到处理器的地址空间,通过地址访问的方式与外设进行通信;而独立 IO 空间是指独立于地址空间,无法通过地址访问外设,使用专用指令与外设进行通信。从软件工程师的角度来看,只需要对不同的 IO 端口读写就可以操作外设;读写 IO 端口时候的具体值和意义需要查询具体的硬件手册。那么硬件设计的关键是什么呢?如下

技术分享图片

        通过具体的硬件设计,可以使得地址总线上的值在某个范围时,片选信号为“真”,即:使能连接的设备,从而读取相应地址中的数据!这些都是硬件工程师关心的东西,我们只需要能看的懂就可以了。下来以具体设备的地址映射为例来进行说明,地址为0xFFFF1234,如下

技术分享图片

        我们看到低 16 位是通过与门来进行连接的,也就是说,只有它们全为 1 时才能接通。接下来看看处理器启动过程:1、处理器上电后,PC 寄存器固化了一个默认值;2、PC 默认值用于决定第一条执行指令;3、第一条执行指定隶属于启动顺序。如下图所示

技术分享图片

        在嵌入式的启动程序中,我们称之为 BootLoader,它也是系统上电后运行的第一个程序(Not OS)。根据运行阶段,体积和功能的不同分为三个部分:a> BL0 - 固化于硬件中,用于初始化硬件,加载并运行 BL1;b> BL1 - 存储于外部存储设备中,用于初始化主存,加载并运行 BL2;c> BL2 - 存储于外部存储设备中,用于引导操作系统执行。

深入浅出处理器(一)

标签:运算   targe   数据   com   案例   控制   指令   ref   1.5   

原文地址:http://blog.51cto.com/12810168/2133056

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!