这个存储库包含.NET nanoFramework固件刷写工具。
这是一个.NET Core 工具,它能够将固件映像 (nanoBooter和nanoCLR) 刷写进一个.NET nanoFramework 支持的设备,部署应用程序(运行.NET应用程序所需的所有程序集)并恢复先前保存的部署映像。
它是.NET nanoFramework工具集的一部分,与其他用于.NET nanoFramework开发、使用或仓库管理的各种工具一起使用。
它使用了几个第三方工具:
- 乐鑫 esptool 您可以在存储库中找到esptool和许可信息 链接.
- STM32 Cube Programmer 您可以找到源代码、许可信息和文档 链接.
- Texas Instruments Uniflash 您可以找到Uniflash工具和许可信息 链接.
我们还将此工具作为 .NET 库分发,以便它可以集成到第三方应用程序中。请查看“Samples”文件夹中的 README 以获取更多详细信息以及示例应用程序。
使用以下.NET Core CLI命令一键安装.NET nanoFramework 固件刷写工具:
dotnet tool install -g nanoff
成功安装后,将显示一条消息,显示将用于调用工具和所安装的版本的命令。 类似于下面的例子:
You can invoke the tool using the following command: nanoff
Tool 'nanoff' (version '9.9.9') was successfully installed.
dotnet tool install nanoff --tool-path c:\a-plain-simple-path-to-install-the-tool
请注意,如果您没有在STM32设备中使用'nanoff',则此限制不适用。
您需要将nanoff添加到您的路径中。安装完成后,运行以下命令:
export PATH=$PATH:~/.dotnet/tools
要更新.NET nanoFramework 固件刷写工具,请使用.NET Core CLI命令:
dotnet tool update -g nanoff
如果工具安装在特定的路径下,请使用以下.NET Core CLI命令:
dotnet tool update nanoff --tool-path c:\path-where-the-tool-was-installed
一旦安装了该工具,你就可以通过命令“nanoff”来调用它,这是该程序名称的简称,以方便输入。
nanoff [command] [args]
该工具包括所有可用命令的帮助,您可以通过输入以下命令来查看:
nanoff --help
有多个ESP32固件可用,一些是专门为一个设备构建的。 请参阅 列表.
ESP32_PSRAM_REV0固件将只适用于ESP32系列的任何变体,带或不带pram,以及所有silicon版。
你可以阅读更多关于不同固件之间的差异 链接.
FEATHER_S2固件将适用于几乎所有的ESP32-S2系列的变体,暴露嵌入式USB CDC引脚。
你可以阅读更多关于不同固件之间的差异 链接.
当使用'nanoff'时,你可以添加'——target MY_TARGET_NAME_HERE'来使用特定的固件。 如果,相反,您只指定平台与'——platform esp32' 'nanoff'将自动选择最合适的固件,这取决于所连接的设备的功能。 类似于这个的输出将会显示出什么固件将要被使用:
No target name was provided! Using 'ESP32_REV0' based on the device characteristics.
注意:请注意,对于ESP32-S2,不可能安全地确定使用什么是最好的固件。 由于这个原因,它必须提供适当的设备名称与'——target MY_TARGET_NAME_HERE'。
部分ESP32单板进入引导加载模式存在问题。 这通常可以通过按住BOOT/FLASH按钮来解决。
如果' nanoff '检测到这种情况,会显示以下警告:
*** Hold down the BOOT/FLASH button in ESP32 board ***
更新连接到COM31的ESP32设备器的固件到最新可用的开发版本。
nanoff --update --target ESP32_PSRAM_REV0 --serialport COM31
使用本地CLR文件(例如来自一个构建文件)更新连接到COM31的ESP32-S2 KALUGA 1设备的固件。
这个文件必须是一个二进制文件,且必须是有效且经过构建的CLR。 对文件内容不执行其他检查或验证。
nanoff --update --target KALUGA_1 --serialport COM31 --clrfile "C:\nf-interpreter\build\nanoCLR.bin"
您可以调整要使用的核心固件的名称。 请参阅前一节以获得完整的列表。
查看与COM31相连的ESP32设备的详细信息。
nanoff --platform esp32 --serialport COM31 --devicedetails
将托管应用程序部署到连接到COM31的ESP32_PSRAM_REV0设备上。
Note: 在成功构建之后,可以在Visual Studio项目的Release或Debug文件夹中找到包含部署映像的二进制文件。 此文件包含将托管应用程序部署到设备所需的所有内容(即应用程序可执行文件和所有引用的库和程序集)。
nanoff --target ESP32_PSRAM_REV0 --serialport COM12 --deploy --image "E:\GitHub\nf-Samples\samples\Blinky\Blinky\bin\Debug\Blinky.bin"
要在连接到COM31的ESP32设备机上部署应用程序,您必须指定托管应用程序的路径。 您也可以提供一个地址,该地址将覆盖默认的部署地址。
本示例使用的是在构建应用程序时可以找到的二进制格式文件。 注意,因为只有应用程序可以运行,所以在构建库时,不会自动创建bin文件,这只针对应用程序。
nanoff --target ESP32_PSRAM_REV0 --update --serialport COM31 --deploy --image "c:\eps32-backups\my_awesome_app.bin" --address 0x1B000
使用JTAG连接将ST_STM32F769I_DISCOVERY设备的固件更新到最新可用的稳定版本。
nanoff --update --target ST_STM32F769I_DISCOVERY --jtag
将托管应用程序部署到ST_STM32F769I_DISCOVERY设备,该设备的部署区域位于0x08080000 Flash地址,并在刷写后复位MCU。
Note: 在成功构建之后,可以在Visual Studio项目的Release或Debug文件夹中找到包含部署映像的二进制文件。 此文件包含将托管应用程序部署到设备所需的所有内容(即应用程序可执行文件和所有引用的库和程序集)。
nanoff --target ST_STM32F769I_DISCOVERY --deploy --image "E:\GitHub\nf-Samples\samples\Blinky\Blinky\bin\Debug\Blinky.bin" --address 0x08040000 --reset
使用JTAG连接和托管应用程序,将ST_STM32F769I_DISCOVERY设备的固件更新到最新可用的预览版本。
您必须指定托管应用程序的路径。
本例使用了Visual Studio在构建任何nanoFramework c#应用程序时生成的二进制格式文件。 因为它是一个二进制文件,所以您还必须指定部署区域的flash地址(这里是0x08000000,注意十六进制格式)。
nanoff --update --target ST_STM32F769I_DISCOVERY --jtag --binfile "c:\dev\my awesome app\bin\debug\my_awesome_app.bin" --address 0x08000000
这将列出通过JTAG连接的所有STM32设备。
nanoff --listjtag
这将列出所有通过DFU连接的STM32设备。
nanoff --listdfu
为STM32 JTAG连接的设备安装驱动程序。
nanoff --installjtagdrivers
为STM32 DFU连接的设备安装驱动程序。
nanoff --installdfudrivers
将TI_CC1352R1_LAUNCHXL设备的固件更新到最新的预览版本。
nanoff --update --target TI_CC1352R1_LAUNCHXL --preview
安装XDS110 USB驱动。
nanoff --installxdsdrivers
该工具会尽最大努力检查所请求的设备是否符合已连接的设备。
有时这是不可能的,因为设备名称的差异和变化,或者缺乏所连接设备提供的详细信息,甚至(像DFU所连接的设备),因为根本不可能确切地确定所连接的设备。
这并不一定意味着固件不能工作,所以这只是一个建议。
要禁用此验证,请在命令行中添加'——nofitcheck'选项。
可以通过' v|verbosity '选项设置工具输出详细。
例如,如果在一个自动化流程中使用该工具,该流程需要最小的输出以简化对执行返回结果的处理,那么这是很方便的。 它可以设置为:
- q[uiet]
- m[inimal]
- n[ormal]
- d[etailed]
- diag[nostic]
nanoff -v q
翻译结果
您可以列出支持的设备及其版本,用于稳定版本或预览。 --platform
允许您过滤平台。
在预览版本中列出可用于ESP32设备的软件包。
nanoff --listboards --platform esp32
列出可用于STM32设备的包(稳定版本)。
nanoff --listboards --platform stm32
如果你只使用'——listtargets'开关,你会得到所有设备的所有稳定包的列表。
可以查看签入代码 这个源文件.
如欲提供反馈、报告问题及了解如何作出贡献,请参阅 主储库.
加入我们的Discord社区 这里.
此项目的贡献者列表可在以下网站找到 贡献者.
nanoFramework firmware flash工具使用 MIT许可证.
这个项目采用了贡献者契约所定义的行为准则,以澄清我们社区的预期行为。
知识产权.NET Foundation Code of Conduct.
这个项目由.NET Foundation提供支持.