复位、时钟、存储器和总线

发布者:温柔的爱情最新更新时间:2022-04-27 来源: elecfans关键字:复位  时钟  存储器  总线 手机看文章 扫描二维码
随时随地手机看文章

复位

初始化微控制器内部电路

将所有寄存器恢复成默认值

确认MCU的工作模式

禁止全局中断

关闭外设

将IO设置为高阻输入状态

等待时钟趋于稳定

从固定地址取得复位向量并开始执行

中断向量表

中断向量表对于ARM这样的微控制器来讲,当它上电复位的时候,默认地址是从00地址开始,四个字节一个表项,每一个表项存一个指针,或者存一个函数的入口地址。

在下图的中断向量表中,我们可以看到,表中第2项存的是复位的中断向量,在这个表项里面存储的函数入口地址就是对应的ARM芯片复位之后所执行的第一条指令的地址。换句话说也就是一旦CPU执行了复位操作,CPU会自动的从这个位置取一个地址然后赋值给PC指针寄存器,进而程序会根据PC指针所指向的地址一条一条地执行指令。而这个位置填入的地址是入口函数的第一条指令的地址,也就是在开发工具的帮助下,生成的startup.s文件里面的入口函数的第一条指令的地址,相应的入口函数最后的指令便是跳转到用户main函数执行用户写的代码。再来看表中的第一项便是堆栈指针寄存器初始值的存放地址,也就是上电初始化时,给堆栈使用的内存空间的地址。


因此,在系统进行上电复位后,会执行两项操作,也就是会把中断向量表中第一项和第二项中存放内容分别赋值给堆栈指针寄存器和PC指针寄存器,从而使CPU在上电复位时的PC指针指向入口函数的第一条指令,而堆栈指针指向内存中用于给堆栈使用的内存的起始地址。这样也就完成了复位操作。

image.png

造成复位的原因

有多种引起复位的因素,有相应的标志位和向量(可以进行不同的初始化流程)


上电复位

电源丢失复位

外部产生的手动复位信号

执行复位指令引发的复位

非法指令引起的复位

时钟丢失引起的复位

看门狗复位

时钟

计算机嵌入式系统是一个典型的数字时序逻辑的系统,它需要一个时钟的驱动从而能够让一切有序的运行,一个一个时钟的跳动会驱动PC指针寄存器一个一个地址地往下跳转,一条一条指令的取到控制单元进行有序地解析和运算。

因此:


时钟是指令执行的基本时间间隔,它能够推动CPU一个周期一个周期的运转,时钟频率越高,意味着CPU执行运算的能力越强。

看门狗/定时器/异步通信等都依赖稳定的时钟

MCU内部是一个统一的时钟树,外设的时钟是从系统时钟分频得到的。

时钟通常是由外部晶体或者振荡器提供,使用外部的配置引脚在复位时选择时钟输入源。

广泛应用锁相环技术,将外部较低频率的时钟提高成内部较高频率的时钟(better EMC & EMI)

存储器

在这里插入图片描述

CPU仅拥有若干个寄存器,程序指令和运算数据必须保存在外部存储器上。CPU内部的寄存器仅仅用于CPU保存临时的变量,通俗来讲就是“草稿纸”

ROM/FLASH可以保存固定内容,不丢失

其中就包含指令,程序,常量

RAM用于保存非固定内容,掉电后丢失

可以用于堆栈的使用以及堆的使用,堆用来存储全局变量

程序运行当中保存变量,保存返回地址。

因此对于计算机来讲,存储器是不可或缺的存在。对于不同MCU来讲,存储器是有大有小的,对于一般的32位ARM的CPU来讲,非易失存储器的大小在几百K的量级,而对于易失性存储器RAM来讲,其容量一般处于十几K的量级。


总线

CPU通过内部总线接口访问存储器/外设

MCU的外部总线接口是内部总线接口的信号子集

内部总线接口包含三部分:

数据总线

地址总线

控制总线

对于ARM Cortex M0+还支持专门的单周期IO读写

下图是内部总线的示意图:

在这里插入图片描述

地址线

总线设备(存储器/外设)必须具备一个确定的地址范围

CPU驱动地址线,地址译码逻辑选中对应的设备

地址线的宽度决定CPU的寻址范围(16bit = 0x0000-0xFFFF)

数据线

CPU通过数据线从设备读取数据、向设备写入数据

数据总线总是双向的

有8bit,16bit,32bit…

单片机内部地址映射

从CPU向外看,我们可以以地址的角度看到CPU外围设备在地址上与CPU的联系。从下图我们可以清楚地看到从地址0x0000 0000-0X0800 0000是非易失存储器的地址,有128kb的FLASH,在FLASH有一段是专门用于中断向量表的存储,仅接着有一段灰色的从0x0800 0000-0x1FFF F000的这一段是None的,也就是没有任何设备这用这段地址,再接下来便是从0X1FFF F000- 0X2000 0000的地址空间,这段地址空间是用于堆使用的RAM,在一般的裸机程序中,堆也就是用于存储程序中用到的全局变量的地方,再接下来就是从0X2000 000-0X2000 3000的地址,这段地址也是用于RAM的地址,所不同的是这段RAM地址是用于堆栈使用的。0X2000 3000-0X4000 0000是None的,没有任何设备使用,接下来是0X4000 0000 - 0x6000 0000,从图中也可以看出这段地址主要是用于存储外设寄存器的,这些外设是由不同的单片机产商设计的,比如意法半导体设计的或者是TI设计的,尽管是同一个ARM核,但是不同产商设计的寄存器会存在差异,因此这段也就会因为产商的不同而不同,紧接着的是0X6000 0000 - 0XE00 0000,这段地址空间也是没有任何设备使用的,最后一段0XE000 0000-0XFFFF FFFF,这一段主要是用于ARM公司设计的外设,这一段地址空间的外设不会因为单片机产商不同而不同。

在这里插入图片描述

外设

CPU实际是通过外设和外部世界进行连接

外设是为特定的控制应用而设计的

输入输出:DIO,ECT,PWM

模拟量处理:AD,DA

通信处理:SCI,SPI,I2C,HDLC,CAN

在MCU中,外设是通过一系列寄存器俩完成设置

存储器

单片机编程的精髓就在于存储器的使用:

代码存储在存储器中

变量存储在存储器中

外设也是通过其在存储器的位置进行访问

单片机开发的特点(相对于计算机来讲):

单片机启动过程

在这里插入图片描述

在描述了CPU,堆栈,存储器,总线,外设的基础上,根据上图所示可以清楚地知道单片机的启动过程,首先在单片机进行上电复位之后,单片机从中断向量表的第一项和第二项分别获得了用于堆栈空间的内存的起始地址以及复位后入口函数的第一条指令,进而使PC指针发生跳转,跳转到Flash地址执行,从上图也可以清楚地看到RAM分成了两段,一段在上,一段在下,因此可以知道用于堆的RAM就是上面绿色的RAM空间,用于堆栈的RAM就是下面绿色的RAM空间。


总结

回顾上述所讲,主要包含了如下几个方面:


单片机复位的时候,默认地址是从0000开始的,也就是中断向量表的第一项,中断向量表的第一个表项的内容是指定的堆栈的起始地址,第二个表项的内容是程序入口函数的第一条指令的地址。复位的时候,单片机会取出第一个表项的内容,从而完成堆栈的初始化,指定堆栈可用的内存空间的起始地址。除此之外,也会取出第二个表项的内容,将这个表项的内容赋值给PC指针使用,从而使得程序从入口函数的第一条指令开始执行

存储器中RAM的作用是作为堆栈和堆使用,而ROM的作用是存储程序,指令和常量

CPU的总线主要包括:数据总线,地址总线和控制总线

CPU的启动过程和复位时的过程是一致的

关键字:复位  时钟  存储器  总线 引用地址:复位、时钟、存储器和总线

上一篇:TQ2440 学习笔记—— 11、嵌入式编程基础知识【arm-linux-objcopy、objdump选项】
下一篇:ARM Cortex -M 体系结构

推荐阅读最新更新时间:2024-11-17 10:34

CAN总线转换器设计与应用
CAN总线协议的诞生原本就是汽车电子生产厂商的发起,后来CAN协议成为国际标准,CAN总线与一般的通信总线相比,CAN总线的数据通信具有突出的可靠性、实时性和灵活性。由于其良好的性能及独特的设计,CAN总线越来越受到人们的重视。 同时,由于CAN总线本身的特点,其应用范围目前已不再局限于汽车行业,例如在工业自动控制、安防/消防网络、煤矿远程通讯及等领域发展。CAN已经形成国际标准,并已被公认为几种最有前途的现场总线之一。 CAN转换器(CAN-232)可以无缝地联接CAN-bus网络和其它通讯网络,比如RS-232、RS-485串行总线、Ethernet以太网、光纤网路等,已经支持多种标准协议的网络互连。由于PC机无CAN
[嵌入式]
德州仪器推出业界最灵活的 3.3V、2.5V 与 1.8V 时钟发生器系列
低抖动 1:4 PLL 器件简化消费类应用设计 2007 年 7 月 17 日,北京讯 日前,德州仪器 (TI) 宣布推出一系列高度可编程的 1:4 锁相环 (PLL) 时钟发生器,该系列产品能够以统一的输入频率生成多达九个输出时钟源,每个输出都能在系统内编程,以支持高达 230 MHz 的任意时钟频率。上述特性提供了许多系统优势,其中包括降低功耗,缩短引导时间,而且无需重新进行系统设计就能方便灵活地更新时钟。这些优势最终有助于降低各种消费类应用的成本,如 IP 机顶盒或 IP 电话、数字电视等数字媒体系统、流媒体与打印机、导航系统以及便携式设备等。(更多详情,敬请访问: http://focus.ti.com.cn/cn/d
[新品]
汽车总线向CAN FD升级 需要简化设计并降低成本
对于车载网络而言, CAN 和LIN作为基础的总线技术存在已久,但它们已经不能满足车载网络中更多功能的负载——一方面是数据传输率和吞吐量的加大,同时,还要增加一些保护功能,如总线故障保护和静电释放保护,以及通过1.8V - 3.3V 或 1.8V - 5V输入/输出与处理器往返数据的能力,而在满足这些需求的同时,设计的复杂性、空间和成本也必须有效控制。 数据传输率和吞吐量的加大对带宽和数据速率灵活性提出更高的要求,这加大了对CAN FD(灵活数据速率)这一通信协议的应用需求。相较于CAN,CAN FD能支持高达5 Mbps的数据传输率和高达64字节的有效负荷,它可以支持汽车 MCU 和连接的系统之间以各种速率高效通信。 系
[汽车电子]
汽车<font color='red'>总线</font>向CAN FD升级 需要简化设计并降低成本
基于CPLD的位同步时钟提取电路设计
引言 异步串行通信是现代电子系统中最常用的数据信息传输方式之一,一般情况下,为了能够正确地对异步串行数据进行发送和接收,就必须使其接收与发送的码元同步,位同步时钟信号不仅可用来对输入码元进行检测以保证收发同步,而且在对接收的数字码元进行各种处理等过程中,也可以为系统提供一个基准的同步时钟。 本文介绍的位同步时钟的提取方案,原理简单且同步速度较快。整个系统采用VerilogHDL语言编写,并可以在CPLD上实现。 位同步时钟的提取原理 本系统由一个跳变沿捕捉模块、一个状态寄存器和一个可控计数器共三部分组成,整个如图1所示,其中data_in是输入系统的串行信号,clock是频率为串行信号码元速率2N倍的高精度时钟信
[半导体设计/制造]
示波器CAN总线数据解码方法
采用示波器侦测串口总线的通信是比较常用的一种解码技术。以Pico示波器为例,Pico示波器具有串行解码的功能,能够对CAN、FlexRay、 I2C、I2S、SPI、LIN或UART等串行总线进行解码。Pico示波器比较适合做串行解码,因为它们的深度存储器可以让软件采集较长时间、不间断的数据,尤其是6000系列能够在几秒内采集数千个数据帧存入到512M的样本存储器。下面将介绍如何用一个款Pico示波器进行CAN总线数据解码。 一、CAN总线解码概述 1、 CAN总线概念 数据通信时,物理线路上传输的信号是由一系列高低电平组成的,这些高低电平携带了我们所需要的信息,在数据接收端,我们需要将这些物理电平按照原始的编码规则进行解析,
[测试测量]
示波器CAN<font color='red'>总线</font>数据解码方法
分析师:三星存储器业务创纪录,有望推高Q3利润
  据路透社北京时间10月10日消息,分析师预计, 三星 存储芯片业务利润将在第三季度创下纪录,这一数据意味着 三星 电子的利润再创新高。受此消息提振, 三星 股价周二在韩国股市开盘后大涨4.5%。下面就随网络通信小编一起来了解一下相关内容吧。   据分析师预计,三星电子第三季度利润为14.3万亿韩元(约合126亿美元),再次创下新高。今年第二季度三星电子的单个季度的净利润首次超过苹果公司。公告显示,三星电子2017年4-6月营业利润达到创纪录的14.07万亿韩元(约126.44亿美元),同比增长72.9%;净利润11.05万亿韩元,刷新历史纪录。   外媒报道,苹果在最新旗舰智能手机iPhone X中使用大量由三星制造的组件,
[网络通信]
STM32各种时钟的区别
时钟系统是处理器的核心,所以在学习STM32所有外设之前,认真学习时钟系统是必要的,有助于深入理解STM32。 下面是从网上找的一个STM32时钟框图,比《STM32中文参考手册》里面的是中途看起来清晰一些: 重要的时钟: PLLCLK,SYSCLK,HCKL,PCLK1,PCLK2 之间的关系要弄清楚; 1、HSI:高速内部时钟信号 stm32单片机内带的时钟 (8M频率) 精度较差 2、HSE:高速外部时钟信号 精度高 来源(1)HSE外部晶体/陶瓷谐振器(晶振) (2)HSE用户外部时钟 3、LSE:低速外部晶体 32.768kHz 主要提供一个精确的时钟源 一般作为RT
[单片机]
STM32各种<font color='red'>时钟</font>的区别
FlexRay总线控制器和TC1796MLI接口设计
   摘要 研究了FlexRay总线控制器CIC310和微处理器TC1796的微连接口(MLI)的数据传输原理和总线协议,使用TC1796和CIC310实现MLI接口的高速数据传输,并介绍了一个主控制器连接多个MLI模块的软件和硬件实现方法。整个系统集成度高,适合车载电子设备的大量数据传输。    关键词 TC1796 MLI接口 CIC310 FlexRay总线    引言   FlexRay总线是一种点对点形式的具有星形拓扑结构的数据传输总线。提供了传统总线通信协议所不具有的一些特性。FlexRay简化了车载电子设备之间的通信系统架构,使得车载电子单元变得更加稳定和可靠。FlexRay总线具有故障容限,可提供500 kb
[工业控制]
FlexRay<font color='red'>总线</font>控制器和TC1796MLI接口设计
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved