固件更新应用程序
你可以使用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固件.
命令行选项
命令行选项 | 行动 |
---|---|
|
显示工具的当前版本 |
|
显示可用选项 |
|
擦除闪存完全和更新固件与文件文件 |
|
更新固件,但保持当前NVRAM内容 |
选项- f
在安装新固件之前擦除程序和NVRAM闪存扇区。如果此选项与- k
,则不会擦除NVRAM。选项- k
单独是无效的;它不执行任何操作。
更新MCA固件
固件必须包含在二进制文件中,对用户具有读取权限。当使用选项调用程序时- f
,它开始更新过程:
#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并尝试再次更新。