主题中讨论的其他器件: MSPBSL
你(们)好
我将 MSP432E401Y 用于一种将联网的设计、无需与外界进行任何真正的其他连接。 固件现场更新的计划是使用以太网作为传输方法、在这方面、我有一个使用 FreeRTOS 和 lwip 的设计成功地工作。 (Lwip 用于 NDK,因为 NDK 没有 SNMP 守护程序,这是系统的主要用途)
使用给出的示例、我已将"swupdate.c"复制到我的设计中、所有这些似乎都可以正常工作。 我可以发送"魔法"数据包并将其放入引导加载程序。 这是使用 Wireshark 进行测试的、并使用 netcat 发送数据包。
echo -ne '\XAA\XAA\XAA\XAA\XAA\x52\x00\x2b\xa5\xa0\xa7\x52\x2b\xa5\xa0\xa7\xa7\x52\x00\x2b\xa5\xa0\xa2\xa2\xa2\xa26\xa2b\xa2\xa2\xa2\xa2\xa2\xa2\xa2|-xa2\xa2\xa2\xa2\xa
我可以高兴地看到它 BOOTPing。 (它仍然将自身标识为 Tiva,当您将代码提出时,你们是否甚至不能更改 ROM ID 字符串:-)
现在,正如我理解的那样,如果我的普通 DHCP 服务器使用引导文件发出 BOOTP 响应,它将从 TFTP 服务器中提取该文件并刷写它的内存。
我的第一个问题是文件采用什么格式? 原始二进制映像、还是智能格式?
我知道有一个引导加载程序工具 mspbsl、它可以执行此操作、它需要.txt 文件 EEPROM 映像。 但是、该工具存在一些有趣的问题。 (无论如何在 Linux 下)
- 在多 NIC 系统上,它发送广播魔术包,BOOTP 应答默认路由端口。 如果您有单独的生产和开发环境,并且 BOOTP 应答将到达错误子网的广播地址,那就不是很好了...
- 当它尝试侦听 BOOTP 端口并在所有接口上侦听时,我必须关闭 DHCP 服务器才能使用它。 同样、如果您拥有生产和开发系统、这是一场噩梦。
我修复了 NIC 的第一个问题、它具有一些非常糟糕的升压编码、并从源代码重新构建它。 第二个比较烦人、因此我想使用现有的 DHCP/TFTP 系统来提供更新。
第二个问题。
以太网引导加载程序是否超时? 如果发送到引导加载程序模式并且没有 BOOTP (或初始 TFTP),则是否会中止并重新引导? 因此、如果它从未像执行任何擦除/编程那样远、它将会超时或一直保持到下电上电为止?
闪存后、它是否执行完全系统复位(或仅 CPU 复位)? 我问、因为我的设计在启动时似乎会死板、但在下电上电时可以、这很好。 如果您通过调试器执行系统复位、它也会起作用。 我想知道是否需要重置启动代码中未重置的一些外设。
谢谢!
/\/\arc