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

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

3天内不再提示

调试不要忽略默认MCU设置

Aztr_Dialog_Sem 来源:Dialog半导体公司 作者:Paul Hill 2021-02-13 17:02 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

不要忽略默认MCU设置

调试是嵌入式设计中很重要的一部分,并且必须跨越硬件/软件之间的鸿沟。在系统级别,嵌入式设计的功能越来越多地由固件定义,因此要避免漏洞,需要具有特定训练的工程师在项目的设计阶段紧密合作。这也意味着在漏洞不可避免地出现时需要抑制互相推诿的冲动。

也许正是由软件定义的硬件之特性,使现代嵌入式设计成为如此有意思的职业。每个新的微控制器(MCU)似乎都提供了更高的集成度和更先进的功能,但是在对其完成编程之前,它完全没有启用。尽管这种集成和配置显然是一个促进因素,并且在为产品设计带来巨大进步,但它有时可能会给工程师带来无法预料的问题。

诸如MCU之类的嵌入式元件所提供的功能和可配置特性也在不断提高,并且这些元件提供了许多并非在每个设计中都需要的功能。这些额外的功能可能会被忽略,也较少引起问题。

正如大多数工程师所理解的那样,这些功能通常由可通过软件修改的寄存器控制。因此,它们在开机时具有默认设置,并且如果保持不变,将继续在这些默认设置下运行。在很多情况下,这可能不会带来问题。但是,如果这些功能一直未使用,而且可能未经测试,则可能会以某种无法预料的方式产生影响。漏洞可能在系统中产生,由可能被忽略的常规功能所导致。

查找故障可能会很困难、耗时且成本高昂,即使在理想条件下。通常,我们通过其影响来识别故障,这些影响一般为工程师提供了足够的证据来追踪原因。导致故障的原因与硬件还是软件有关,在很大程度上是无关紧要的,不过这也许仍存在争论,重要的是找到并修复故障。

如果故障原因是未正确初始化的低级功能,那么发现它可能会变得更具挑战性。要了解硬件平台的初始状态如何影响整个设计,就需要对整个系统有更高的了解,而追踪这些难以捉摸的条件会消耗不少资源。

例如,MCU上的SPI总线访问串行闪存,是许多嵌入式系统中使用的相对简单的功能。如果在存储的值中检测到错误,会提示存储(而不是MCU)出现故障。这是一个客户的经历,当从闪存的状态寄存器连续读取时提示发现了读/写错误。自然而然,被认为存储器件发生了故障,这一理论由以下事实得出:如果在状态寄存器读取之间设置了短暂的延迟,则检测到的故障数量似乎会减少。此外,重新启动电源似乎可以清除故障一段时间。

客户工程师们认为,这些症状表明串行存储器发生故障,即使它仍在指定规格的周期极限之内,仅完成了约60k的写周期。当客户将串行闪存器件返回给我们进行进一步测试时,即使在执行了超过300k的写周期后,我们都没有发现任何故障。

为了找到真正的故障,我们的工程师调查了客户的应用,并探究了SPI信号。我们发现,这看起来是存储器件出现故障,实际上是系统噪声问题,可以很容易地纠正。尽管部分原因是由于MCU与闪存之间的PCB走线阻抗不匹配,但噪声并非完全是由于不良的PCB设计或信号完整性问题造成的。

尽管看上去似乎是PCB或电路设计问题,但实际上噪声是SPI信号的过冲和下冲,这是由于信号的驱动强度过大引起的。该过冲足以影响闪存器件的电荷泵,并导致读取和写入错误。在某些情况下,SPI信号的过冲和下冲也可以解释为信号跃迁,也可能导致读取或写入错误。

跟踪图像显示了SPI线上的过冲和下冲

一种可能的解决方案是在信号走线上放置一个RC电路,以减慢信号跃迁的速度。不过,我们发现该设计基于一个相对较新的MCU,允许在固件中修改I/O引脚的驱动强度。降低信号的驱动强度足以消除SPI信号线上的过冲和下冲,从而有效地消除系统级噪声源。

这里的重点并不是闪存器件如何努力应对大量的系统噪声,而是MCU上的可配置功能可能会引入一些影响,很容易让人误以为是设计中其他器件出现了故障。在这次事例中,我们通过有力的方法检测到了设计中的故障,并通过我们工程师们的努力解决了问题。

或许我们真正可以从中学到的是,看似硬件的故障也许可以通过软件轻松修复。看似某个元件的故障,也许可以追溯到另一个元件中的错误配置。硬件和软件工程师之间的合作关系,以及客户与供应商之间的合作关系应足够牢固,能够承受得住使用最新技术进行设计所面临的挑战。尽管默认设置的初衷是提供帮助,我们也应当对其进行验证,优化这些设置可以极大地改善系统性能和可靠性。

原文标题:跨越调试物联网设备时的软硬件鸿沟

文章出处:【微信公众号:Dialog半导体公司】欢迎添加关注!文章转载请注明出处。

责任编辑:haq

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

    关注

    147

    文章

    18610

    浏览量

    387124
  • pcb
    pcb
    +关注

    关注

    4391

    文章

    23743

    浏览量

    420769
  • 物联网
    +关注

    关注

    2939

    文章

    47323

    浏览量

    407907

原文标题:跨越调试物联网设备时的软硬件鸿沟

文章出处:【微信号:Dialog_Semiconductor,微信公众号:Dialog半导体公司】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    GCC -O0 编译内核:调试党的 “救命神器”,这些优势 90% 开发者没吃透!

    在 Linux 内核开发、驱动调试或内核问题定位的场景中,“编译优化等级” 是个容易被忽略却影响巨大的选择。GCC 的优化等级从 O0 到 O3、Os、Ofast 各有侧重,而 O0(默认优化等级
    的头像 发表于 12-03 07:05 24次阅读
    GCC -O0 编译内核:<b class='flag-5'>调试</b>党的 “救命神器”,这些优势 90% 开发者没吃透!

    芯源的MCU都支持哪些下载器?Jlink等支持芯源的MCU下载调试嘛?

    芯源的MCU都支持哪些下载器?Jlink等支持芯源的MCU下载调试嘛?
    发表于 11-21 06:49

    ‌STMicroelectronics AEK-MCU-SPC5LNK 编程调试器技术解析

    STMicroelectronics AEK-MCU-SPC5LNK加密狗开发用作SPC58汽车微控制器的调试器/编程器加密狗。AEK-MCU-SPC5LNK结合了无源USB转JTAG调试
    的头像 发表于 10-21 11:51 259次阅读
    ‌STMicroelectronics AEK-<b class='flag-5'>MCU</b>-SPC5LNK 编程<b class='flag-5'>调试</b>器技术解析

    如何实现NXP S32K3系列MCU安全调试

    随着汽车电子系统变得越来越智能,对功能安全(Safety)的要求越来越高,同时信息安全(Security)也越来越被关注,安全调试(Secure Debug)机制已成为一个重要的信息安全特性
    的头像 发表于 08-18 11:07 2570次阅读
    如何实现NXP S32K3系列<b class='flag-5'>MCU</b>安全<b class='flag-5'>调试</b>

    如何仅使用 MiniWiggler连接并更改 BMI 的默认值?

    在我的项目中,我使用的是ARM XMC1402-Q064X0200 AA微控制器。 默认情况下, BMI 设置为 0xF8C7 ,这会使设备进入ASC BSL(UART 引导加载程序)模式。在这
    发表于 08-12 08:01

    AS32X601系列MCU硬件最小系统设计与调试方案探析

    在嵌入式系统领域,MCU(微控制单元)作为核心部件,其硬件最小系统设计的合理性与调试的有效性直接决定了整个系统的稳定性与可靠性。凭借其卓越的性能和丰富的功能,广泛应用于各类电子设备中。本文以国科安芯
    的头像 发表于 07-22 13:46 410次阅读

    树莓派默认密码指南:新设置、更改方法及安全建议!

    树莓派如今已不再设有“默认”密码,从较新版本的树莓派操作系统(从2022年的树莓派操作系统Bullseye版本起)起,就要求用户在初始设置过程中创建自定义密码。不过,对于旧版本的树莓派操作系统(在此
    的头像 发表于 07-04 15:27 3304次阅读
    树莓派<b class='flag-5'>默认</b>密码指南:新<b class='flag-5'>设置</b>、更改方法及安全建议!

    机智云配网教程 第二期:生成MCU代码包与调试

    产品模块,点击“新建”并选择“智能家居”类型。接下来,会弹出一个界面,在此输入产品名称,其他设置保持默认即可。(注:在数据点设置中,“定长”模式会将所有定义的数据
    的头像 发表于 06-28 10:02 605次阅读
    机智云配网教程 第二期:生成<b class='flag-5'>MCU</b>代码包与<b class='flag-5'>调试</b>

    硬件调试:JLink 驱动配置与调试技巧

    摘要: 本文深入探讨了 JLink 调试器在嵌入式系统硬件调试中的应用,详细阐述了 JLink 驱动配置的方法以及硬件调试技巧。本文以国科安芯的AS32系列MCU芯片为例,通过分析 J
    的头像 发表于 06-12 23:20 1267次阅读
    硬件<b class='flag-5'>调试</b>:JLink 驱动配置与<b class='flag-5'>调试</b>技巧

    RISC-V JTAG:开启MCU 芯片调试之旅

    在当今电子科技飞速发展的时代, MCU 芯片成为众多企业追求技术突破与创新的关键领域。而芯片的调试过程则是确保其性能与可靠性的重要环节。本文以国科安芯自研 AS32A601为例,旨在详细记录
    的头像 发表于 05-07 17:57 2346次阅读
    RISC-V JTAG:开启<b class='flag-5'>MCU</b> 芯片<b class='flag-5'>调试</b>之旅

    FPGA时序约束之设置时钟组

    Vivado中时序分析工具默认会分析设计中所有时钟相关的时序路径,除非时序约束中设置了时钟组或false路径。使用set_clock_groups命令可以使时序分析工具不分析时钟组中时钟的时序路径,使用set_false_path约束则会双向
    的头像 发表于 04-23 09:50 968次阅读
    FPGA时序约束之<b class='flag-5'>设置</b>时钟组

    openocd不能调试的原因?

    按 “CM32M433R-START快速上手” 创建了printf示例工程(修改工具链为unkonwn64,默认工具链编译报错),并按文章中的步骤进行调试,发现串口打印乱码,手动暂停程序,程序停在
    发表于 04-16 07:22

    AGM FPGA/MCU烧写文件类型有哪些及用途

    。 勾选下面的Full Chip erase before program,可以在烧录前擦除芯片程序,并写入默认设置启动项。 勾选Lock after program,则芯片烧录后打开加密锁功能
    发表于 03-14 09:54

    openocd为什么不能调试

    按 “CM32M433R-START快速上手” 创建了printf示例工程(修改工具链为unkonwn64,默认工具链编译报错),并按文章中的步骤进行调试,发现串口打印乱码,手动暂停程序,程序停在
    发表于 03-07 14:33

    HarmonyOS NEXT 原生应用/元服务-ArkTS代码调试等待调试

    “等待调试模式”的应用(默认为当前工程),选择需要进行调试调试类型。然后单击Attach,即可将该应用设置为“等待
    发表于 03-03 16:01