因此,当您阅读此产品的文档时,您会注意到有一个 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。