初见处理器

概述

本文章将会站在软件工程师的角度讲解处理器,不会从硬件工程师的角度来说明一个处理器是怎样设计的。

微处理器和微控制器的区别

站在软件工程师的角度而言微处理器和微控制器基本是没有差别的。如果有差别的话,微控制器由处理器,内存,片内外设组成。微处理器就是单单的 CPU ,运算时候使用的计算机部件。为什么会有这两个概念,从嵌入的发展而言,早期的嵌入式的开发需要考虑设备体积的大小,经常进行硬件的剪裁,当硬件剪裁的时候,性能就不够强大,从而导致软件的性能也要进行相应的剪裁。早期嵌入式开发会发较多的时间在剪裁上面。从成本的角度和功耗的角度,我们希望一块板子上面,基本的功能都有了。就出现微控制器的概念。

在现代而言嵌入式设备的性能越来越高,从经济的角度而言没有花太多的必要和时间去进行操作系统的剪裁和硬件的剪裁。(虽然很多公司都会为了节省成本而对软件层面进行相应的牺牲)。

处理器里面的寄存器

就软件工程师而言,没有特殊说明的情况下一般指的都是 CPU 的寄存器,作用是专用指令的执行,数据传递。还有一类寄存器就是相应外设的寄存器,这类寄存器主要控制外设的功能 

。要从概念的角度进行区分,这两类是完全不同的两类寄存器。

处理器里面的关键寄存器

PC -程序计数器(指令指针 IP):每运行一条指令,PC 中的值也会相应的变化,PC 指针始终保持着 CPU 下一条要执行指令的地址。

SP - 栈指针(Stack Pointer):始终指向栈空间的顶端,实现 LIFO 特性。保存终端的断点,保存函数调用的返回点,保存 CPU 的现场数据等。

函数调用过程当中 CPU 里面的 PC 和 SP 配合使用的过程。

PC 指向代码段的某个位置 A,在 A 的时候进行函数调用(函数调用时候,会进行指令的跳转,到相应的函数结束的时候,要跳转会原来的指令,对于 CPU 而言,它只知道指令的地址,那么它怎么跳转回到原来的位置)这个时候,就会用到 SP 寄存器,跳转时候将当前的上下文信息保存到栈空间,SP 指向栈顶。在调用结束后,将上下文进行返回,那么怎么保存栈空间的上下文信息呢?在进行上一次保存的上下文的 SP 地址的信息会在 BP 寄存器进行保存,上一次的 BP 寄存器也会在上下文的信息进行保存。结束后都一并返回回去。

处理器的 IO 操作

内存映射外设:硬件的精密设计,cpu 可以访问地址来控制外设。内存的控制和读取可以通过地址的读写来实现。

独立外设:不能使用地址空间进行访问,而是要遵守一定的协议。

对于 CPU 而言,和外设进行通信。一般通过 IO 端口配置外设内部的寄存器。通过 IO 读取数据寄存器。从软件工程师的角度来看,只需要对不同的 IO 口读写就可以操作外设;读写 IO 端口的时候具体的意义需要查询具体的硬件手册。

驱动开发其实做的就是上面的工作(和操作系统的关系不大,无论上不上操作系统都需要进行硬件的开发)。

硬件设计的 关键(映射方式的完成,其实是将外设接到地址总线和数据总线相接):

1.外设如果要工作一般要先打开一个开关(从 CPU 的地址总线的几根线来用来产生一个片选信号,当地址值一定的时候,我们就可以控制外设的开关),这些工作一般是硬件工程师完成的(通过地址总线来控制外设)。

假设外设是一个存储器,将外设映射到处理器可以访问的地址空间去。将地址总线的一部分(一般是高位)通过与门的输出来作为外设的而空间,地位的数据总线接到外设的地址线上面。这样就可以进行相应的映射了。类似上面的方法可以将任意的外设映射到任意的地址空间。虽然这是硬件工程师的是但是作为嵌入式软件工程师还是可以了解以下的。

对于另一类的外设,遵循相应的指令执行就可以了。

处理器的启动过程

处理器上电的时候,PC 寄存器固化了一个指令(具体是通过上电时候决定,具体由硬件工程师设定)。上电后就硬件设定默认的值,再到 PC 执行第一条指令(第一个程序开始运行了,就是 bootloader )。 bootloader 经常被分成3个部分来组成应用程序(至于为什么有3个部分,看硬件配置了)。

BL0:一般固化在硬件里面,上电的瞬间就跳到这里,做最基础的工作。做完这些就交给 BL1 来处理。

BL1:存储于外部存储设备中,用于初始化主存,加载并运行 BL2

BL2:存储于外部设备中,用于引导操作系统执行。

s3c6410

具体的看启动过程可以参考芯片手册。

总结 

里面的内容还是很基础的,深入的内容会在后面的文章进行详解。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值