【问题标题】:Flashing a Cortex-M0+ device using an ISO file [closed]使用 ISO 文件刷新 Cortex-M0+ 设备 [关闭]
【发布时间】:2020-11-15 12:10:59
【问题描述】:

我为运动检测设备编写了一个小代码(基于 CortexM0+ 的 DA14531 SmartBond TINY 模块),我正在用它做一些实验。最后,经过调试和测试,我生成了一个 ISO 文件,现在我想刷机。该过程类似于在 USB 闪存上刻录 ISO 文件还是过程不同?我只有一个设备,我不想做一些不可逆转的事情,所以我先来这里寻求指导。

我在网上看了一段时间,但没有什么符合我的具体情况,所以为我提供正确的链接也很有帮助

【问题讨论】:

  • 您能否用您正在使用的确切 CPU 和操作系统来扩充您的问题?您想要将程序闪存到的存储设备到底是什么?如果您使用的是现成的 SBC,您能否用它的品牌/型号补充您的问题?
  • 您想使用 ISO 文件是因为您认为自己需要一个,还是因为您知道自己需要一个?
  • @Frant 我想要一个,我知道我可以到那里,但我很想知道如何使用 ISO 文件来做到这一点!
  • 极有可能在具有大量资源的 cortex-m7 上,您可以拥有足够的操作系统和文件系统等,可能会读取 USB 媒体上的 ISO 映像,然后可能会读取,在那里解析和运行程序。 cortex-m0+ 不知道您将如何或为什么要尝试,您的芯片上有什么接口(记住不是 arm,芯片供应商)可以与可以保存 ISO 的媒体接口?
  • 我没有看到该模块对与拥有 ISO 的媒体接口有任何真正有用的功能。

标签: arm iso flash-memory


【解决方案1】:

ISO 9660 格式是为光盘设计的,使用它可能与您的用例无关,因为恕我直言,您找到一个工具可以让您直接在 Cortex-来自 ISO 9660 格式文件的 M0+ 设备。

如果您可以像在 Cortex-M0+ 闪存中一样刷新 ISO 文件,您的设备可能无法启动,因为它确实依赖于非常特定的信息(堆栈指针、要执行的第一条指令)来刷新在验证特定位置,更不用说这会造成闪存空间的浪费。

也就是说,如果 Dialog 文档没有特别提到以 ISO 9660 格式刷新文件的可能性,那么使用 Dialog 软件和硬件支持工具很可能(并不奇怪)这是不可能的。

【讨论】:

  • 请准确回答!!你让我更困惑了
  • 究竟是什么让你感到困惑?
  • 我说如果你有一个 JTAG/SWD 探针,或者你可以使用串行端口和一些 Dialog 提供的软件,你可以刷它。是的,我假设您有工具,或者至少在询问您是否可以刷新 ISO 文件之前阅读了有关如何刷新您购买的设备的文档。
  • 对话框文档对此只字未提,因为正如我所说,使用 ISO 9660 格式的文件与您的用例无关。如果你还没有准备好面对这个事实,我无能为力。如果您想获得帮助,我还建议您在此论坛上提问时提高态度:您是使用模糊术语的人,例如“启动密钥”,将 USB 密钥与重置/启动按钮混淆,但是你是抱怨缺乏精确度的人。
  • 如果您没有看到,正如我所说,我无法提供进一步的帮助。我的回答仍然有效。祝你好运,从某人那里获得一些见解(我的意思是,另一个人......)。
【解决方案2】:

因此,当您阅读此产品的文档时,您会注意到有一个 SWD 接口,这肯定是进入该部件的一种方式。当您进一步检查他们的专业套件和其他解决方案时,您会看到他们提到用于调试等的 segger jlink 接口。进一步加强 SWD 作为部件中的至少一个接口。通过该接口(SWD 是 ARM),您可以访问闪存控制器(与 arm 无关,它是特定于芯片的),并通过该接口编写该部件将运行的应用程序二进制文件(处理器使用的机器代码和数据,您的申请)。

ISO 与带有 BIOS/EFI 的 PC 密切相关,这也意味着 x86,并且与微控制器无关,更不用说非 x86、非 BIOS/EFI PC/笔记本电脑了。在基于 cortex-m0(+) 的平台上获得足够的软件是极不可能的,如果你有一个可以容纳它的媒体接口,你可以解析它并提取任何有用的东西,然后有资源可以加载和在 ram 中执行任何程序。在我听说过的任何部分中,您都无法在 ram 中执行此操作,以便您可以提取可以加载到零件上的闪存的内容。另外,如果可以的话,您必须先将该程序放入零件中,然后才能支持 ISO,但您不能。

ISO 具有任何意义或具有任何上下文的唯一远程方式是,如果在您的 PC 上启动 ISO 映像,并且 PC(而不是 mcu)的 ISO 映像包含开发系统。例如,使用供应商提供的工具为这部分预先准备的 Linux 操作系统发行版,这样您就不必在计算机上安装开发系统,您可以使用 ISO 上的实时映像在 ramdisk 上运行它。该开发系统不会使用 ISO 文件,而是使用适当的文件格式来开发二进制文件并通过 SWD 或其他一些芯片/板特定接口将它们加载到板上。

除此之外,没有进一步讨论 ISO 和微控制器的理由。

一些芯片供应商(不是 arm,芯片供应商)也可能提供支持例如 uart、spi、i2c、usb 接口的工厂引导加载程序或逻辑,您可以使用芯片(不是 arm)特定软件来与该芯片上运行的软件(引导加载程序)交谈,然后可以写入闪存。如果系统中有足够的资源,您也可以编写自己的引导加载程序。 (基于 arm 的)mcu 世界正在远离这些引导加载程序,过去一直拥有这些引导加载程序的三大主要公司中有两家已经开始将其删除或禁用它们作为默认功能。

除了 SWD 之外,其他公司没有提供其他接口来对零件进行编程,SWD 或什么都不提供。当然,在 cortex-m0+ 市场中,每一分钱都很重要,用于引导加载程序的额外闪存和额外的芯片空间等增加了传统功能的总成本,因为开发人员现在可以轻松获得 SWD 接口模块,从而变得不那么重要了。几美元。这不像过去 JTAG 板要 2000 美元。目前所有 cortex-m 部件都支持 SWD,使其成为最有用的界面,并提醒开发人员拥有可以访问该界面的工具值得(5 美元,外加学习使用它的时间)投资。

用于编写 flash 的工具决定了支持哪些文件格式,现在主要是原始二进制映像或 elf 文件格式。过去包括英特尔 hex 和摩托罗拉 s-record 等文件格式,但只有像我这样的老前辈才喜欢这些文件格式,即使精灵很容易解析,原始二进制图像更简单,大约四行代码.

一些芯片供应商没有提供足够的信息来推出您自己的产品,但大多数情况下他们会提供。 Arm很早以前就发布了SWD接口信息,所以技术上可以自己滚,然后支持你想要的任何文件格式。但是您必须将此工具与 ISO 文件一起分发,因此您将使用第二个 ISO 文件来分发工具以读取第一个文件。根据您的问题和 cmets,您距离编写此类工具还有很长的路要走。尤其是当存在支持主要文件格式(elf 和原始二进制文件)的 openocd 等工作工具并且可以将 SWD 与当前的 cortex-m 核心线对话时。

同样,如果您建议使用 ISO 分发工具以及要在 PC 上加载和运行的二进制文件,这可能是有意义的,但最终用户更容易从芯片供应商处下载工具或工具供应商,然后从您那里下载二进制文件,而不是投入额外的工作来处理 ISO。

【讨论】:

    猜你喜欢
    • 2020-03-22
    • 2021-12-18
    • 2019-08-12
    • 2021-07-04
    • 2016-06-19
    • 2015-01-22
    • 1970-01-01
    • 2011-07-26
    • 1970-01-01
    相关资源
    最近更新 更多