0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

复位那些小事—典型的软复位流程

冬至配饺子 来源:芯时代青年 作者:尼德兰的喵 2023-12-04 13:46 次阅读

在聊到复位的时候总会区分两个概念:硬复位和软复位。

硬复位就是通常所说的复位,是通过硬件电路或者特殊的硬件信号来触发的复位过程。当拉低外部复位信号时硬复位被触发,复位线会直接影响系统的硬件电路与寄存器,将系统的内部状态恢复到一个已知的初始状态。

硬复位通常是由外部的控制电路或者特定的硬件引脚来触发,例如按下一个复位按钮或者通过特定的电路逻辑条件。

软复位是通过软件的程序代码或者寄存器配置等方式触发的复位过程。当软复位被触发时,系统一般需要执行特定的步骤来响应软复位需求,确认进入待复位状态后才会进入复位流程,将系统的内部状态恢复到一个已知的初始状态。软复位通常是在程序执行中的某个特定条件下发生,例如检测到一个错误或者需要重新初始化系统时。

硬复位一般是整芯片甚至芯片组复位,这个过程可以说是比较简单粗暴的。而软复位一般是芯片的部分系统进行复位重启,有时也称为快速复位、动态复位、配置复位,大多是通过一系列的流程来完成的。

本篇中就聊一聊典型的系统软复位流程。

1.触发软复位启动条件。这一般是系统内部或SOC出现了致命的错误比如任务执行超时、总线数据错误或安全机制报错等,上位的MCU或者CPU判断需要对该系统进行软复位操作以恢复功能;

2.停止下发任务。判断需要对系统软复位后,应当从任务层停止下发新的任务,避免系统错误进一步的蔓延影响其他进程;

3.下达软复位请求。请求可能通过配置系统的寄存器或者从控制接口下发使能信号;

4.系统接收到软复位的请求后,需要做出一系列的处理。这时一般有两种方向选择,一种是主动停止工作,比如停止执行接下来的取指、在指令或者卷积层边界停止进一步的计算;另一种是被动停止工作,也就是内部逻辑不停止工作,而通过系统边界的模块响应软复位,进而对内部通路进行阻塞或者假握手假接收等行为使内部被动停止工作。

5.系统边界的模块监听所有通路,等待所有已经发出的请求全部收回应答(典型的比如AW请求收回Bresp,AR请求收回Rdata),这样做的目的是避免本系统的复位对SOC或其他系统产生影响,也避免对解除复位后的本系统产生影响(如未收全,本系统复位解除后总线返回了一笔复位前的Bresp,那本系统直接就乱了);

6.边界的模块收全所有应有的返回信息后,或者未能收全但是到达超时阈值后,系统进入待复位状态;

7.此时如果本系统仍然保留着访问DDR和sram的备份通路,那么上位机可以通过配置寄存器去间接访问内存和寄存器进行保留现场。如果没有规划该功能,则略过这一步骤;

8.上位机配置复位保护寄存器使能复位保护电路,避免系统复位过程中有毛刺或者使能信号扩散到总线或其他系统;

9.上位机配置对系统进行时钟降配或者关断时钟等操作,这个是可选操作,一般来说如果复位保护做的比较严格,这里不对时钟进行处理也没关系;

10.配置复位或拉低系统的复位信号,持续一段时间,这个时间没有太严格的要求,按毫秒计时也没有关系,少的话也得几十拍确保系统内所有寄存器都完成了复位;

11.复位已经完成,之后配置解复位或拉高系统的复位信号,解除系统的复位状态,之后等待一段时间等内部电路稳定下来;

12.配置时钟恢复工作频率或恢复时钟,可选;

13.配置复位保护寄存器解除复位保护,恢复总线连接;

14.可以再等待一段时间后,重新下任务或恢复现场,重启系统完成。

软复位的流程没有特别严格的规定,通常是根据芯片的需求而规划,上面所述也只是经验之谈。不过大抵都遵循停任务 - 收应答 - 断连接 - 复位 - 解复位 - 重连接 - 下任务的思路。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 寄存器
    +关注

    关注

    31

    文章

    5308

    浏览量

    119979
  • DDR
    DDR
    +关注

    关注

    11

    文章

    711

    浏览量

    65218
  • 上位机
    +关注

    关注

    27

    文章

    930

    浏览量

    54723
  • 硬件电路
    +关注

    关注

    39

    文章

    240

    浏览量

    29188
  • SRAM存储器
    +关注

    关注

    0

    文章

    88

    浏览量

    13268
收藏 人收藏

    评论

    相关推荐

    CXL系统启动和复位流程概览

    这三种复位被归纳为传统(Conventional)复位。Function级复位和CXL复位不是传统复位
    的头像 发表于 09-22 14:37 2849次阅读
    CXL系统启动和<b class='flag-5'>复位</b><b class='flag-5'>流程</b>概览

    复位那些小事—系统解复位的特殊处理

    复位就是复位撤离,系统解复位就是复位结束了系统准备开始工作。
    的头像 发表于 12-04 15:25 1583次阅读
    <b class='flag-5'>复位</b><b class='flag-5'>那些小事</b>—系统解<b class='flag-5'>复位</b>的特殊处理

    复位电路没有小事

    复位电路不知道该定位成是模拟电路合适数字电路,原因是功能和结构太简单了,好多人都不屑深入研究。而世上的事就是这样,你认真研究它确实是不难,你要忽视它麻烦就大了。曾经有一家国内的设计公司(上市公司
    发表于 07-03 04:20

    复位电路无小事

    复位电路无小事,感兴趣的小伙伴们可以瞧一瞧。
    发表于 09-18 17:15 0次下载

    430怎么复位_430复位方法详解

    最近在搞430的FLASH的自定义法(利用串口)程序烧写,烧写完成后断电复位,reset按键就可以运行新的程序。但是和学长交流了一下,这种方法不够好,希望有一种复位的方式。
    的头像 发表于 05-20 10:04 6585次阅读

    MCU复位原理详解

    想要实现复位,先给VRCTKEY赋个0x05FA,再想SYSRESETEQ写1即可实现复位
    发表于 10-27 10:47 9311次阅读

    如何使用C语言实现复位详细资料说明

    本文档的有内容详细介绍的是如何使用C语言实现复位详细资料说明。
    发表于 06-14 17:44 1次下载
    如何使用C语言实现<b class='flag-5'>软</b><b class='flag-5'>复位</b>详细资料说明

    详细讲解同步后的复位是同步复位还是异步复位

    针对异步复位、同步释放,一直没搞明白在使用同步化以后的复位信号时,到底是使用同步复位还是异步复位
    的头像 发表于 04-27 18:12 4684次阅读
    详细讲解同步后的<b class='flag-5'>复位</b>是同步<b class='flag-5'>复位</b>还是异步<b class='flag-5'>复位</b>?

    STM32芯片的那些系统级复位功能

    我们知道,STM32芯片里有很多系统级的复位,比方上电复位、欠压复位、看门狗复位、软件复位复位
    的头像 发表于 10-19 09:06 5078次阅读

    谈谈复位那些

    复位信号几乎是除了时钟信号外最常用的信号了,几乎所有数字系统在上电的时候都会进行复位,这样才能保持设计者确定该系统的系统模式的状态,以便于更好的进行电子设计,并且在任意时刻,确保使用者总能对电路系统进行复位,使电路从初始的状态开
    的头像 发表于 06-02 15:11 1911次阅读
    谈谈<b class='flag-5'>复位</b><b class='flag-5'>那些</b>事

    stm32复位 内核复位和系统复位

    内核复位:它会使STM32内核(Cortex-M)进行复位,而不会影响其外设,如GPIO、TIM、USART、SPI等这些寄存器的复位
    的头像 发表于 08-01 17:21 4658次阅读

    同步复位与异步复位的区别

    请简述同步复位与异步复位的区别,说明两种复位方式的优缺点,并解释“异步复位,同步释放”。
    的头像 发表于 08-14 11:49 7006次阅读

    基于DWC_ether_qos的以太网驱动开发-复位介绍与问题案例

    一般模块都会有复位的功能,复位在驱动编写中很重要。一般初始化时执行复位使得模块进入确定的初
    的头像 发表于 09-02 09:17 1525次阅读
    基于DWC_ether_qos的以太网驱动开发-<b class='flag-5'>软</b><b class='flag-5'>复位</b>介绍与问题案例

    如何排查GD32 MCU复位是由哪个复位源导致的?

    上期为大家讲解了GD32 MCU复位包括电源复位和系统复位,其中系统复位还包括独立看门狗复位、内核
    的头像 发表于 02-03 09:46 1637次阅读
    如何排查GD32 MCU<b class='flag-5'>复位</b>是由哪个<b class='flag-5'>复位</b>源导致的?

    复位电路的设计问题

    前言 最近看advanced fpga 以及fpga设计实战演练中有讲到复位电路的设计,才知道复位电路有这么多的门道,而不是简单的外界信号输入系统复位流程: 1.同步
    的头像 发表于 11-15 11:13 89次阅读
    <b class='flag-5'>复位</b>电路的设计问题