固件更新应用程序

你可以使用mca_fw_updater命令行应用程序更新在ConnectCore 8M Mini的微控制器辅助(MCA)上运行的固件。

MCA的闪存分为两个区域:程序闪存和NVRAM。在编写新固件之前,该应用程序通过MCA引导加载程序完全擦除程序闪存的内容。默认情况下,NVRAM也会被擦除。

MCA固件是系统的关键部分。如果您不确定新固件映像的来源或更新它的好处,请不要继续。
引导加载程序必须重新启动MCA才能重新运行存储在flash中的应用程序,这涉及到重新启动整个系统。

检查可用的最新MCA固件版本

您的ConnectCore 8M迷你系统模块从工厂发货,MCA上有预编程固件。然而,Digi在支持网站上提供MCA固件的修复和更新。

Digi建议您验证MCA的当前固件版本,并在Digi支持网站上查看最新版本。

ConnectCore 8M Mini产品支持页面查看最新可用的MCA固件版本。

查看当前MCA固件版本

通过阅读U-Boot横幅来验证SOM上当前的MCA固件:

U-Boot SPL dub-2020.04-r3.1-git-00114-g909871f6fff7-dirty(2021年2月11日- 16:54:47 +0100)DDRINFO:启动DRAM init DDRINFO: DRAM速率3000MTS DDRINFO:物理校准完成DDRINFO: ddrmix config完成正常启动试图从MMC2启动U-Boot dub-2020.04-r3.1-git-00114-g909871f6fff7-dirty(2021年2月11日- 16:54:47 +0100)CPU: i.MX8MMQ rev1.0 1600 MHz(运行在1200 MHz) CPU:工业温度等级(-40℃至105℃)在32C复位原因:POR DRAM: 2 GiBMCA: hw_ver =1 fw_ver =1.00MMC: FSL_SDHC: 1, FSL_SDHC: 0 In: serial Out: serial Err: serial Model: Digi ConnectCore 8M Mini Development Kit ConnectCore 8M Mini SOM variant 0x03: 2 GiB LPDDR4, Wi-Fi,蓝牙,MCA, Crypto-auth Board version 3, ID undefined Boot: MMC2 BuildInfo: - ATF a7f57f3 - U-Boot dub-2020.04-r3.1-git-00114-g909871f6fff7-dirty flash目标为MMC:0 Net: eth0: ethernet@30be0000 Fastboot: Normal Normal Boot按任意键停止自动引导:0=>

在已运行的系统中,可以通过命令行命令查看MCA固件版本sysinfo命令。

MCA固件的兼容性

需要MCA固件v0.11或更高版本。以前的版本不受支持,应该使用调试器进行更新。看到程序MCA固件

命令行选项

命令行选项 行动

McA_fw_updater -v,——version

显示工具的当前版本

McA_fw_updater -h,——help

显示可用选项

mca_fw_updater -f FILE,——FILE

擦除闪存完全和更新固件与文件文件

mca_fw_updater -f FILE -k,——keep-nvram

更新固件,但保持当前NVRAM内容

选项- f在安装新固件之前擦除程序和NVRAM闪存扇区。如果此选项与- k,则不会擦除NVRAM。选项- k单独是无效的;它不执行任何操作。

更新MCA固件

固件必须包含在二进制文件中,对用户具有读取权限。当使用选项调用程序时- f,它开始更新过程:

MCA更新过程
#mca_fw_updater -f mca_cc8x_vX.XX.bin更新过程可能需要20秒或更长时间。在此过程中,芯片驱动程序变得无响应,您可能会在控制台上看到I2C通信错误消息。这些错误消息是预期的,不会干扰固件更新过程。请勿关机或复位设备。请勿按CTRL+C或中止此操作。

该程序向MCA固件发送一条消息,其中包含用于调用引导加载程序的字节序列,然后检查引导加载程序是否正在运行。然后执行选定的操作(更新固件,擦除NVRAM)。此过程可能耗时超过20秒,并且控制台显示一个旋转条。在此期间,系统必须保持通电状态才能成功完成更新。一旦写入新固件,重置MCA需要5秒钟。请注意,在MCA重置过程中,程序似乎不执行任何操作。然后i.MX8M Mini CPU与MCA一起重新启动。

不中止固件更新进程.如果进程在写入阶段被中断,MCA可能会处于不一致的状态。如果进程失败,您可以手动重试,但不能保证成功。在这种情况下,您只能通过使用调试器探针刷新固件来恢复MCA。
Digi建议您使用mca_fw_updater应用程序更新MCA固件。如果由于某种原因无法这样做,您也可以使用调试器。看到程序MCA固件

检测无效固件映像

该工具检测固件是否会对MCA闪存造成不可逆损坏的能力有限。因此,它不会安装以下固件:

  • 程序不适合闪存,还是

  • 可以覆盖关键的闪存设置,并防止进一步的更新(例如:锁定闪存擦除或更改时钟设置)。

无效图像检测
#mca_fw_updater -f bad_binary无效固件-它会损坏MCA。更新失败#du -h a_very_big_file 4.9 9m a_very_big_file#./mca_fw_updater -f a_very_big_file固件镜像不适合flash更新失败。

如果将仍然通过这些过滤器的无效图像写入flash,则系统的功能将丢失。如果发生这种情况,必须使用调试器来刷新有效的MCA固件映像。应用程序无法重新编程包含无效固件的MCA;对新固件进行编程需要bootloader模式,无效的MCA固件无法将MCA设置为bootloader模式。

为避免因闪烁无效固件映像而出现的问题:

  • 只写由Digi International Inc.提供的固件,为MCA设计,并由其他软件组件完全支持。

  • 按“Enter”前检查文件名。

故障排除

  • 按照Linux惯例,应用程序返回0为成功,否则为负错误码。出现错误时,可以使用echo $ ?

  • 如果更新过程意外失败,但应用程序没有抱怨二进制文件的大小或格式,请重试该过程。如果这仍然不起作用,MCA固件仍然可以使用调试器探针进行更新。

如果能够进入U-Boot,可以使用以下命令探测连接在I2C1总线(总线索引0)上的设备:

=>i2c dev 0设置总线为0=>i2c探针有效的芯片地址:4B 60 63

MCA的从地址为0x63。这意味着MCA存在并运行固件。如果显示的是地址0x10,则MCA正在运行引导加载程序。如果这些都不存在,则MCA故障。如果MCA正在运行固件或引导加载程序,则可以引导到Linux并尝试再次更新。