主题中讨论的其他器件:UNIFLASH
基于 TM4C1294xxxxx 的物联网板上的以太网 BOOTLOADING /固件更新的可能完整方案。 这是第一次从我们的商店/工厂内部以及从互联网上的任何地方发生。 如果这是正确的推理、请提供建议。 谢谢你
1) 1) 当我们从工厂收到空的物联网板时、我们可以通过配置为 Out-JTAG 编程器的 LM 闪存编程器+ EK-1294XL Launchpad、也可以通过 UniFlash + XDS100v2编程器(假设我们的板配备了 JTAG 端口)对板上的 MAC 进行编程。
2) 然后,我们使用一个只在电路板上加载一次的微型应用程序,它所做的就是转到并写入特定的 EEPROM 位置,比如1025/0x0401,A 1。
3) 3)然后、我们加载 FLASH_EMAC_bootloader 应用、并进行一些小的修改。
- 检查某些 EEPROM 位置以读取 IP、子网、网关,当然,它们目前不存在,并且由于它们都是 NULL,因此使用192.168.3.10 (或其他任何内容)作为其自己的 IP。
- 在 EEPROM 位置0x0401中检查是否存在1、这是第2步中的第一次。 然后将其设为0,然后继续执行代码的其余部分,等待主应用程序的固件加载。
- 在主应用加载并重新启动电路板后、引导加载程序在上述 EEPROM 位置不再找到1、因此直接将控制权交给主应用程序。
- 此时,我们的主板具有第1步中的自己 MAC 和第3a 步中的 IP 192.168.3.10。
4) 我们的应用程序还运行 TCP/IP 服务器等待连接。 我们使用我们的 PC/笔记本电脑、目前 配置为 IP = 192.168.3.20、并通过 Hercules 或其他 TCP 客户端连接到该 PC
5) 5) 我们现在可以发送到物联网板的固件命令,如 IP=……、subnet=……、gateway=…… 反映了我们网络的实际参数。 所有这些都写入特定的 EEPROM 位置。 此时,我们可以对客户内部网络的 IP、子网和网关进行编程,客户将购买我们的主板。 因此,在下次启动时,不仅我们的主固件 TCP/IP 服务器, 此外,我们的引导加载程序还将作为路由器后面的完整互联网单元加载和运行,路由器的端口9-UDP 用于固件接收,以及我们为主固件的 TCP/IP 侦听服务器选择的任何 TCP 端口。
6) 我们固件中侦听 IP=.t.c 等命令的 TCP/IP 服务器部分也可以监视类型为 BOOTLOADING 的命令
7) 7) 现在、我们的物联网板可以销售并开始执行它应该执行的操作。 如果 稍后我们准备了新固件并希望升级远程板、我们只需连接到物联网板的 TCP/IP 服务器、然后发送命令 BOOTLOADING=1
8) 我们的固件在收到此类命令时、会将1写入预先提到的 EEPROM 位置并发出 ROM_SysCtlReset。
9) 9)现在、读取该 EEPROM 位置的引导加载程序会找到1、这意味着进入等待接收新固件的状态、当然之后它会向该 EEPROM 位置写入0。
如果在客户端的路由器上已充分配置 NAT,并且我们的固件已完全强化密码和其他方法,以便接受、验证和运行通过互联网远程发送命令,那么我们似乎有一种完全有效的互联网固件更新方法。 是这样吗?