嵌入式领域“软复位”和“硬复位”有什么区别?

2024-02-24

在我看来:软复位:从复位向量启动。硬重置:拉cpu的电平。


硬复位当然意味着整个CPU芯片及其所有外设都被复位。造成这种情况的原因可能有很多:复位引脚被外部拉动、时钟故障、片上低电压检测、看门狗、非法指令陷阱等。

软复位可能意味着返回复位向量的“脏”分支,其中复位向量恢复包括堆栈在内的所有 CPU 核心寄存器。我想说这是非常值得怀疑的做法,我不确定它会有什么好处。主要问题是,当您执行此操作时,所有 MCU 外围硬件寄存器都不会重置为默认值。对所有此类寄存器的复位状态不做出任何假设几乎是不可能的,尤其是现在平均 MCU 带有 1000 多个寄存器。因此,通过这种软且脏的重置,您很可能最终会出现如下行为:

subtle intermittent bugs <= my program <= complete haywire

更牵强的是,软重置可能意味着由软件引起的重置。在这种情况下,它可能会向看门狗寄存器写入错误的值以强制复位,或者无法刷新看门狗。或者可能是执行了非法指令。这些很可能会导致整个芯片的完全重置。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

嵌入式领域“软复位”和“硬复位”有什么区别? 的相关文章

  • 变量重定义,嵌入式c

    我正在开发一个嵌入式 c 项目 并且遇到全局变量重新定义的问题 我已将函数声明和定义分成几个 h 和 c 文件 其中许多函数需要访问全局变量 这些变量在 global vars h 中定义 因此 在头文件的开头 ifndef define
  • 适用于嵌入式设备的良好串行通信协议/堆栈? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 在为各种项目编写了几个不同的自定义串行协议后 我开始对每次重新发明轮子感到沮丧 我一直在寻找更通用的解
  • 针对低内存使用情况,康威生命游戏的有效实现是什么?

    我正在寻找一种快速且节省内存的方法来实现康威的生命游戏 限制 96x128 板 大约 2kB 可用 RAM 和 52MHz 处理器 请参阅此处的技术规格 http www getinpulse com features http www g
  • 为什么较长的管道会导致单个延迟槽不够用?

    我在 Patterson Hennessy 的文章中读到了以下声明计算机组织与设计教科书 随着处理器使用更长的管道并在每个时钟周期发出多个指令 分支延迟变得更长 并且单个延迟槽是不够的 我可以理解为什么 每个时钟周期发出多个指令 会使单个延
  • 可以直接使用程序集访问缓存吗?

    就效率而言 缓存是一个核心问题 我知道缓存通常会自动发生 但是 我想自己控制缓存的使用 因为我认为我可以比一些不知道确切程序的启发式方法做得更好 因此 我需要汇编指令来直接移入或移出高速缓存单元 like movL1 address con
  • 将指向 const 的指针或指向 const 的 const 指针声明为形参

    我最近对代码进行了一些调整 其中我必须更改函数中的形式参数 最初 该参数类似于以下内容 注意 该结构之前已进行类型定义 static MySpecialStructure my special structure static unsign
  • 什么是 Qt 裸机?

    QtCreator 有一个名为 Bare Metal 的插件 裸机是指没有操作系统的计算机 我还没有看到太多关于Qt Bare Metal开发的内容 这是为裸机系统开发 Qt 的一种方法吗 Qt 可以在没有操作系统的系统上运行吗 如果是 这
  • C 易失性变量和高速缓存

    缓存是由缓存硬件对处理器透明地控制的 因此如果我们在C程序中使用易失性变量 如何保证我的程序每次都从指定的实际内存地址读取数据而不是缓存 我的理解是 Volatile 关键字告诉编译器不应优化变量引用 而应按照代码中的编程方式读取变量引用
  • 头文件中的内存分配

    我工作的公司有针对嵌入式目标的 C 开发的开发规则 一是 建议不要在头文件中分配任何存储空间 我不确定这意味着什么 写它的人不在身边 其他开发人员也不在乎 所以我在这里问 我的理解是 我不应该在头文件中声明变量 因此在 h 中不鼓励类似的操
  • 轻量级加密密钥交换协议

    我有一个嵌入式系统通过 HTTP 将数据发布到 JSON REST 服务 我目前正在使用 HMAC SHA1 进行身份验证 方式与亚马逊AWS http docs amazonwebservices com AWSSimpleQueueSe
  • 字大小及其指示

    请参阅下面关于各种指令集架构中的字长以及它与汇编语言的关系的问题 感谢您提供的所有帮助 先说几个事实 如有错误 请指正 处理器架构的字长表示 编辑 其中一些是错误的 请参阅下面 Seva 的帖子 每个寄存器的最大尺寸 每个内存地址的最大尺寸
  • android 清除字符串中的值

    我有一个应用程序 可以让您单击按钮从起始值 20 中添加和减去 5 或 5 以及 1 或 1 我对其进行了设置 这样当单击按钮时 它将将该值放入字符串并显示它 以便用户可以看到他们按下的内容的历史记录 我有一个名为 Reset 的方法 将起
  • 我可以从哪里开始使用可编程硬件?

    一段时间以来 我一直渴望至少学习一点有关硬件编程的知识 并想在这里提出要求以获得一些起点 我是一位相当有成就的程序员 具有 Delphi 和 Objective c 经验 但从未听过设备端口 中断 我什至不知道术语 更不用说对硬件进行编程了
  • C 相同结构不同尺寸

    我的问题与此相关 c 在struct中定义不同大小的数组 https stackoverflow com questions 17956697 c define arrays in struct with different sizes 但
  • 典型的按键持续时间是多少

    我正在固件项目中做一些关于按键处理的工作 我一直在谷歌上搜索 试图找出按键的典型持续时间是多少 特别是快速打字员的最短持续时间 令人惊讶的是我在任何地方都找不到任何相关数据 最近有一些关于按键时序的研究已经发表 这里有两个 http www
  • 哪种架构称为非均匀内存访问(NUMA)?

    根据wiki http en wikipedia org wiki Non uniform memory access 非均匀内存访问 NUMA 是一种用于多处理的计算机内存设计 其中内存访问时间取决于相对于处理器的内存位置 但尚不清楚它是
  • 创建 32 位计数器时出现全局变量问题

    我正在尝试做正交解码 using 爱特梅尔 Xmega AVR微控制器 Xmega只有16 bit柜台 另外 我已经用完了所有可用的计时器 现在要做32 bit柜台我用过一个16 bit柜台并在其over under flow interr
  • 现代缓存中的方式预测

    我们知道 就缓存命中时间而言 直接映射缓存优于集合关联缓存 因为不涉及特定标签的搜索 另一方面 组关联缓存通常比直接映射缓存具有更好的命中率 我读到 现代处理器试图通过使用一种称为路径预测的技术来结合两者的优点 他们预测给定集合中最有可能发
  • Firebase 重置密码 Swift [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想知道你们是否可以向我展示如何在 Swift 中设置重置密码 我目前正在使用 Firebase 作为我的后端服务 我只需要代码 答案
  • ELF 文件头

    关于 elf 文件头的一个简单问题 我似乎找不到任何关于如何在 elf 头中添加 更改字段的有用信息 我希望能够更改幻数并向标题添加构建日期 以及可能的其他一些内容 据我了解 链接器创建标头信息 但我在 LD 脚本中没有看到任何引用它的内容

随机推荐