This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] EK-TM4C1294XL:用于 TM4C1294xxxxx 电路板与放大器的 TCP 引导加载程序;模块 v.1

Guru**** 2448780 points
Other Parts Discussed in Thread: ENERGIA, TM4C1294NCPDT, EK-TM4C1294XL

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/587260/ek-tm4c1294xl-tcp-bootloader-for-tm4c1294xxxxx-boards-modules-v-1

器件型号:EK-TM4C1294XL
主题中讨论的其他器件:EnergiaTM4C1294NCPDT

大家好。

将近一个多月后、每周有几个小时的时间来处理该项目、主要感谢 Bruno、Charles、Bob、Amit、CB1_mobile 以及论坛上所有其他好朋友的宝贵帮助、 我设法从头开始构建完全可操作的 TCP 以太网引导加载程序。 在以下链接中、您可以下载所有源代码以及有用的指导原则、以便在数分钟内了解并运行项目。 如果不清楚、请在此处发帖。 通过编译和/或直接针对 CC7和 ENERGIA IDE 运行项目即可。 已针对100多个引导加载和固件升级成功进行了测试。 下载链接:

此 tcp_bootloader 位于0x00000000处的时间达到我们的期望值、并且可以 与其他 Tiva ROM 引导加载程序和平共存、这些加载程序可以根据我们的源代码的要求照常触发。 该引导加载程序的主要优点是无需在模块附近安装一个组件即可进行固件加载/更新。 一个模块可以在几英里或几大洲之外、指示其远程模块进入更新循环、然后在更新的应用程序或任何其他新应用程序中自动重新启动。 希望有些人会觉得它有用。

祝你一切顺利

John

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 John:
    非常感谢您对社区的贡献。 这将极大地有益于寻求相同解决方案的许多人。 再次感谢您!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    查尔斯很高兴与同样为社会利益贡献力量的人分享好的知识。 毕竟、自 TI-58和 TI-59时代以来、TI 一直是一家令我钦佩的公司。 我非常非常非常非常非常非常喜欢的第一个程序、即游戏3-5-9、它是在 TI 59上以850或某种步进程序构建并成功运行的、并通过 zzzzzzzz 音频磁读卡器、芥末黄色磁卡记录在 A 上。 这是一个奇迹。 我希望我从未将该 TI-59器件与打印机一起销售过。

    我希望引导加载程序/固件更新程序能够帮助一些人。 我也希望不要忽视处理器的关键细节、也不要犯严重的错误。 处理器的书籍和 Tiva 库的书籍以及 VALVANO 的3本书以及 Joseph Yiu 对 Cortex-M3/M4处理器的最终指南帮助我了解了 TM4C1294NCPDT dude 的内部工作原理和原理。 该单元的潜力几乎是无限的。

    如果我的代码中存在愚蠢的错误、请尽快告诉我。 这样、我们就可以使这项集体努力的产品最终成为一种非常强大的管理工具、适用于 M4类型的处理器群和其他类型的等效处理器群。

    祝大家一切顺利、

    John  

    P.S. 在 C# TCP 客户端应用程序中、您可能需要修改命令 字节[] BytesReceived = new byte[_length];修改为 byte[] BytesReceived = new byte[the _length+1]; 由于不同.NET 运行时版本下的一些特殊原因、字符串流缓冲区的处理方式似乎不同。 似乎、出于历史原因、 字节[] BytesReceived = new byte[the _length+1]是一种更安全的方法。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢 John。 您的项目看起来非常酷!

    尝试在 CCS v7中编译项目"tcp_bootloader"时遇到问题:

    发生构建文件生成错误..
    此项目是使用 Energia v0.0创建的、Energia v0.0当前未安装且没有可用的兼容版本。 转到 Preferences > Code Composer Studio > Products 以注册兼容版本的 Energia。
    构建停止..

    在"首选项/产品"下、我的配置如下图所示:

    有什么解决方法的想法吗?

    谢谢

    Simone

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    没问题 Simone。
    只需转至 Energia.nu 、然后下载并安装最新版本。
    小巧而纤薄。 除了此编译之外、您永远不会再使用它。
    或者您可能会发现它对小型 项目很有用。
    在任何情况下、下载并 安装后、只需进行 ENERGIA 的根安装即可
    目录更改为 CCS7、这就是 全部。 然后、您将立即获取您的纸槽。
    我为 CCS7 和 ENERGIA 社区创建了此项目、因此两者都可以使用。
    ENERGIA 中包含 的是原始 TIVAWARE 的一些更小的库。
     
    我还稍微更正 了以太网服务器库以接受服务器端口更改
    运行时间。 对于 EEPROM 和以太网编译、请使用 我的 zip 文件中包含的内容。
     
    John
     
     
     
     
     
    ----
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我了解 Energia IDE 及其优势。 实际上、我非常喜欢小型简单项目。

    如图所示、我的 PC 上已经有"Energia-0101E0017-windows"、这会提供上述错误。

    我还尝试下载"Energia-1.6.10E18-windows"(最新版本)并在 CCS 中修改根目录、但相同的错误仍然存在:

    发生构建文件生成错误..
    此项目是使用 Energia v0.0创建的、Energia v0.0当前未安装且没有可用的兼容版本。 转到 Preferences > Code Composer Studio > Products 以注册兼容版本的 Energia。
    构建停止..

    此外、使用此新版本的 Energia、也不编译项目 lptm4c1294ncppdt_core、lptm4c1294ncppdt_eeprom、lptm4c1294ncppdt_ethernet、从而导致以下错误(例如、对于第一个库):

    发生构建文件生成错误..
    无法识别 board-ID 'lptm4c1294ncpdt'。 它无效、或不受 Energia v18.0支持。
    构建停止..

    (可能对于最后一个问题、我必须在 Energia 的板管理器中下载库)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在 Energia IDE 中安装 TivaC 板可解决 lptm4c1294ncpdt_core、lptm4c1294ncpdt_EEPROM、lptm4c1294ncpdt_ethernet 的问题。

    但主工程"tcp_bootloader"的编译问题仍然存在。

    此致、
    Simone
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

     为了确保我正确执行项目导入过程:

    1) 1)解压缩您的 rar 文件的内容

    2) 2)使用图片中所示的设置将 CCS 工程导入 CCS 7 (从文件夹导入到我的工作区)  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    除了编译引导加载程序时出现的技术问题之外、我还有几个问题:

    1) 1)当您说"此引导加载程序的主要优点是、不需要有人靠近模块进行固件加载/更新。 一个模块可以在几英里或几大洲之外、指示其远程模块进入更新循环、然后在更新的应用程序或任何其他新应用程序中自动重新启动。"

    这话什么意思? 我看了 sendfile TCP 客户端应用程序、发现它需要输入 LAN 上电路板的本地 IP 地址。 在远离家的情况下、如何通过互联网对电路板进行重新编程? 我应该设置哪个参数?

    2) 2)在哪里可以设置固件更新的密码? /什么是密码默认值?

    3) 3)如果我对板上运行的主应用程序有很好的了解、我必须介绍一些函数来管理 TCP 服务器:您是否有任何实现此类函数的示例(和简单)应用程序?

    谢谢你

    Simone

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好,Simone。

    1)在客户端应用程序启动时、在选择要发送的 bin 文件之前或之后、只需更改文本框中的 IP 地址和/或端口。 如果您检查源代码是否全部存在。 固件上传后、您可以使用另一个 IP/端口组合重复此操作、而无需退出客户端应用程序。 IPS 可能来自 LAN 或 WAN、但 TM4C 后面的远程路由器需要进行 NAT 和/或 ping 操作。

    2) 2)我尚未为客户端和 TM4C 以及模块编码密码默认值。 您可以在客户端应用程序和固件中放入所需的任何内容。 您可以在我的代码之前或之后执行检查、以传达文件大小。  

    3) 3) TCP 服务器功能和功能已在引导加载程序的源代码中进行编码。 只需在主固件应用程序的代码中重复该操作即可。  

    我在这个论坛的主题中看不到我下午给你的其他答案!  

    晚上好!

    John

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    很抱歉、如果我问了这么多问题、但我有点困惑、尤其是我的问题3)。
    因此、请确认我是否充分理解了文档中的步骤:
    a)使 tcp_bootloader 复杂化、并使用 lm 闪存编程器将其刷写到空电路板一次
    b)首次、EEPROM 上的 BOOTLOADING 位置将具有值0x1 (?) 因此、电路板(仅安装了引导加载程序、没有主应用程序)将自动进入引导加载程序模式、并一直等待 TCP 连接
    c)一天 X 我决定在板上加载应用程序(我们称之为 alpha):只需将函数包含在 alpha 中以管理未来的应用程序更新/替换、然后我可以使用 TCP 客户端应用程序将文件发送到板。 该应用程序由引导加载程序写入闪存、然后引导加载程序在 BOOTLOADING 位置写入0x0并重新启动电路板。 通过找到0x0、该控制被传递到将正常运行的主应用程序 alpha
    D) Y:我决定用 β 代替 α。 同样、我必须在测试版中包含 TCP 请求管理功能(用于将来的应用升级/替换)、编译应用并通过 TCP 客户端应用程序加载。 然后、它将按 c)中的方式工作

    除了 b)中的问题外、我的问题是:
    我在 CCS 中查看了引导加载程序代码、但我找不到哪些函数应复制到主应用程序 alpha/beta 中。 例如 、在哪个函数中、BOOTLOADING 位置写入0x1值? 或者 在哪个函数中调用 ROM_SysCtlReset()? 通常、您可以提供有关哪些是我应该包含在类似下面的简单程序(Energia 中的闪烁示例)中的 tcp_bootloader 函数的标识:

    //大多数 LaunchPad 都有一个红色 LED
    #define LED RED_LED
    //有关更多 LED 定义,请参阅 pins_energia.h
    //#define LED GREW_LED

    //按下重置键时,设置例程运行一次:
    void setup(){
     //将数字引脚初始化为输出。
     引脚模式(LED、输出);

    //循环例程会一直运行:
    void loop(){
     digitalWrite (LED、HIGH); //打开 LED (HIGH 是电压电平)
     延迟(1000);        //等待一秒钟
     digitalWrite (LED、low);  //通过将电压设置为低电平来关闭 LED
     延迟(1000);        //等待一秒钟

    PS:我看不到您的答案、因此我在 CCS 中编译引导加载程序时仍然遇到问题。

    非常感谢

    Simone

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好,Simone。 我是商务旅行、因此我无法很好地关注所有问题。 但是、当您将来自其他 IDE 的 CPP 代码导入到 CCS 中时、所有注释都会丢失并替换为空行。 我不知道为什么会发生这种情况。 通过 Notepad++或其他编辑器阅读原始源代码、您将在此处看到所有注释。

    -- EEPROM 位置第一次为0xFF =-1,而不是0x00,因此引导加载程序将等待接收应用程序。 在 c)& d)中、您是正确的。

    ----您只需添加启动命令,并使 TCP 服务器始终在闪烁应用程序中运行。 这样、您将能够在将来连接到该应用、并提供命令、以便该应用将对其进行解析、并在 EEPROM 引导加载位置写入0x01并发出重新引导。 然后、您可以远程加载所需的任何其他应用程序。

    周六之前、我不能再有更多帮助了、但学习和关注的一切都很简单。 一次一个简单步骤。

    John
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    CCS 中的 tcp_bootloader 编译仍然存在问题、这使得调试和完全理解代码变得很困难。 我有一个问题:当我闪存 BL 的 bin 然后启动 Tera Term 时、我看到以下内容:

    "我的本地 MAC 是:0x00-0x1A-0xB6-0x02-0x55-0x99
    我的本地 IP 为:192.168.70.55
    我的子网掩码为:255.255.255.0
    我的网关地址为:192.168.70.254
    本地服务器的侦听端口为--> 11111"

    但我确信 MAC 地址和 IP 都不是电路板的真正值(电路板上印有 MAC 地址、我也可以使用 LM Flash Programmer 进行检索; 在重新定义 IP 地址时、从路由器页面可以看到分配给电路板的不同 IP)。 当我尝试使用 TCP 客户端加载应用程序时、下载不会成功。

    我应该在 TCP 客户端应用程序中为 IP 地址和端口输入哪些值? 默认值为192.168.12.12:1002、但该 IP 地址与我在路由器页面中看到的192.168.1.68不同。

    我也不明白值 192.168.70.55的含义。 这似乎是源代码中打印的值、但没有与电路板的实际 IP 值的链接。

    端口值呢? 1002? 11111? 另一个值?

    谢谢

    Simone

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Simone 您好。

    您的客户端 PC 和物联网模块为了能够第一次通过以太网进行通信、它们需要在同一子网上单步执行。 在我的代码中、可以更改定义的地址、以便在与 PC 相同的子网中启动物联网模块。 这是平面网设置问题。 当然、您需要重新编译引导加载程序应用、并在物联网模块上使用 LM 刷写它。 物联网模块启动后、您将看到要显示的(新)子网中的地址、然后您可以开始将应用的 BIN 映像从 PC 传输到物联网模块。

    ***** 第一次尝试成功、 然后通过互联网尝试相同的方法。 如果是11111、1002或其他任何类型、则端口无关紧要。 您只需要在该端口和路由器上的物联网内部 IP 上配置 NAT。 *****

    为了首次简化操作、请使用 LM 刷写我在帖子中包含的引导加载程序库、然后在 与物联网相同的子网上配置 PC 的 LAN 设置。 (将 PC 的 IP=192.168.70.10 subnet=255.255.255.0、gateway=192.168.70.1。 在 PC 应用程序上、如果尚未显示、只需在文本框中更改 IP 和端口即可满足物联网模块的要求。 就这些。 此外、请不要忘记、为了使应用程序的 bin 在引导加载后/重置后 /固件上载后正常运行、必须已针对闪存中的高位地址进行编译、正如我在笔记中详细说明的那样。

    **** MAC 地址可以是要在引导加载程序源代码中定义的任何地址,也可以是已经编码的地址,或者添加一个例程,如 Tiva 示例中所示,以便从 USR 寄存器中读取它。 这一点实际上并不重要。 以太网要成功运行、只需要一个 MAC。 不是特定的 MAC。 无论工厂 MAC 与引导加载程序或应用程序代码中的 MAC 不同、都没关系。 您的模块将作为服务器公开,并带有您在 server start 命令中定义的 MAC。 *****

    祝您好运、

    John

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 John:
    1) 1)为什么您说我的网关应为 gateway=192.168.70.1?
    它不应该是我的路由器的 IP 地址吗? (与192.168.70.1不同)

    请注意、如果我在 PC 中修改 TCP/IP v4设置、因为您建议我的 PC 不再能够连接到我的路由器。

    2) 2)在函数 Read_my_Mac、Read_my_IP、Read_my_subnet 等中。BL 会查看特定 EEPROM 位置是否为空。 如果它们为空(就像 BL 闪存之后一样)、则终端始终显示"My Local MAC is:0x00-0x1A-0xB6-0x02-0x55-0x99"/"My Local IP is:192.168.70.55"/"My Subnet Mask is:255.255.255.0。等等 那么、当您说"物联网模块启动后、您将看到要显示的(新)子网地址"时、您的意思是什么? 在我看来、即使我更改了源代码中以下内容的初始值:

    字节 my_mac[]={0x00、0x1A、0xB6、0x02、0x55、 0x99};
    字节 my_IP[]={192、168、12、12};
    字节 my_gateway[]={192、168、12、1};
    字节 my_subnet[]={255、255、255、0};

    终端将始终显示以下内容:

    "我的本地 MAC 是:0x00-0x1A-0xB6-0x02-0x55-0x99
    我的本地 IP 为:192.168.70.55
    我的子网掩码为:255.255.255.0
    我的网关地址为:192.168.70.254
    本地服务器的侦听端口为--> 11111"

    除非有人在 EEPROM 位置写入。

    顺便说一下、我认为函数 Read_my_gateway 中存在错误、因为检查了 my_subnet 位置而不是 my_gateway。

    很遗憾、我无法修改引导加载程序并重新编译它、因为我仍然遇到错误:

    "发生构建文件生成错误。
    此项目是使用 Energia v0.0创建的、Energia v0.0当前未安装且没有可用的兼容版本。 转到 Preferences > Code Composer Studio > Products 以注册兼容版本的 Energia。
    构建已停止。"

    感谢您的支持
    Simone

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Simone。
    终端将始终显示此"..." 因为如果 EEPROM 中还没有写入其他值、这些是默认值。 如果您检查来源和指南文档、请仔细阅读其中的答案。 如果没有、我很乐意为您提供进一步的帮助。
    只需确保物联网、您的 PC 和路由器都位于同一子网上。 这就是您需要验证的所有内容。
    下载并安装 ENERGIA 17。 这将解决您的编译问题。 (请记住将以太网 CPP & h 替换为我的 rar 中包含的以太网 CPP & h)
    这在任何情况下都应该起作用。
    John
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    使用 Energia 17 (我假设您是指 Energia 0101E0017)、现在出现以下错误:

    ****为项目 tcp_bootloader 构建配置调试****

    "C:\\ti\\ccsv7\\utils\\bin\\gmake"-k -j 4 all -O

    '构建目标:tcp_bootloader.out'

    '调用:GNU 连接器'

    "c /Users/Simone/workspace_v7/lptm4c1294ncpdt_EEPROM/Debug:/Dati/Download/Elettronica/Energia/energia-0101E0017-windows/energia-0101E0017/hardware/tools/lm4f/bin/arm-none-eabi-gcc.exe /Users/Simone/workspace_v7/lptm4c1294ncpdt_Ethernet/Debug /Users/Simone/workspace_v7/lptm4c1294ncpdt_core/Debug -fno-exceptions -df_cpu=120000000L -DENERGIA=17 -DARDUINO=101 -OS -ffunion-sections -Fdata-SECTIONS -fsingle-precision-g -gdwarf-3 -gabi-dwarf -w -Wall -fno-threadsafe-SECTIONS -from-status-chines-from-chine-mwl -mwl -rand-m-mwl -ralgpf-not-m-m-m-mv4=-mwl -status-r-r-mwl -r-mwl -r-mwl -r-mwl -m-mwl -mwl -mbr-mwl -mvf-note-tpf-status-m-m-m-mwl -mbr-mwl -mbr-mwl -mwl -mbr-mv4=unresum-tpf-status-m-m-m-mbr-m-m- /Dati/Download/Elettronica/Energia/energia-0101E0017-windows/energia-0101E0017/hardware/lm4f/cores/lm4f/lm4fcpp_snowflake.ld /Dati/Download/Elettronica/Energia/energia-0101E0017-windows/energia-0101E0017/hardware/lm4f/cores/lm4f/driverlib

    Makefile:154:目标'tcp_bootloader.out'的配方失败

    /tcp_bootloader.o:在函数`setup'中:

    C:/Users/Simone/workspace_v7/tcp_bootloader/tcp_bootloader.ino:146:未`对 EthernetServer::SetPort (unsigned short)'的引用

    collect2.exe:错误:LD 返回1退出状态

    gmaked[1]:***[TCP_bootloader.out]错误1.

    gmake[1]:目标"辅助输出"不会由于错误而重新生成。

    gmake:***[全部]错误2.

    Makefile:145:目标'all'的配方失败

    ****构建完成****

    在图片中、显示了 tcp_bootloader 工程的链接资源。 以黄色突出显示的是 Energia 中的两个库、我用您的源代码替换了这两个库。

    无论如何、如果我想在不进行任何修改和重新编译的情况下使用您的 BL bin:

    我认为我的主板、路由器和 PC 都位于同一子网中(所有 IP 都以192.168.1开头)、但从客户端应用程序下载不成功。

    您能否在 sendfile.exe 的文本框中明确说明我应提供哪个 IP 值? 以下哪一项:

    a)分配给电路板的 IP (如路由器页面中所示)

    b)值192.168.12.12 (根据 字节 my_IP[]={192、168、12、12};)

    c)值 192.168.70.55

    此致

    Simone

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Simone、将以太网和 EEPROM 这两个目录的内容替换为我的目录中的内容。 然后重新编译。

    路由器不能为您的主板分配 IP、因为主板的 IP 来自 EEPROM、或者来自我的源内部的默认 IP 地址为192.168.12.12、除非您在代码中设置并编译来自您的子网的 IP、否则无法进行通信。 我再次建议您将 PC 的 IP 地址改为192.168.12.200 (例如)、然后尝试通过向 SendFile.exe 提供192.168.12.12的文本框和引导加载程序源代码11111中的端口进行连接。
    John
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    最后、我成功地在 CCS 中编译了项目! 通过从工作区中删除项目"lptm4c1294ncppdt_core"、"lptm4c1294ncppdt_EEPROM"、"lptm4c1294ncppdt_ethernet"、然后编译"tcp_bootloader"、上述3个项目将自动重新导入、现在该过程开始工作。
    由于能够编译源代码、我修改了默认 IP 值、Mac 值和网关值。
    现在、客户端应用程序和主板之间的本地(LAN)连接可以正常工作、我可以下载应用程序、即使无需修改 PC 的 IP 地址也是如此。

    我现在将通过互联网对更新进行试验。 基本上、我必须配置路由器以将 TCP 端口11111上的流量转发到电路板的 IP、它是否正确? 然后、在客户端应用中、我必须提供我的公共 IP 地址?

    非常感谢 John、
    此致、
    Simone
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Simone 很棒!!! 太棒了。

    是的,您需要打开防火墙上的11111端口。 您甚至可以将源中的端口号更改为为 您执行的任务。 3550 < my_port < 65000之间的任何内容都应该正常。 是的、您提供了路由器的 p[微带 IP、在该 IP 后可找到物联网模块。 但是、请记住、如果您的 PC 使用相同的路由器来退出互联网、则可能无法连接。 现在、PC 需要在找到物联网模块的局域网之外的子网中单步运行。 这就是我对这段软件进行编码的原因。 玩得开心!

    祝你一切顺利、

    John

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢 John。

    只有一个关于主应用程序的问题、以便能够自行更新。

    在文档中、您会说:

    "在 EK-TM4C1294XL 或类似电路板上运行的主应用程序应具有一个 TCP 服务器纤薄功能、该功能可侦听类型为 update_firmware_ppassword 的远程命令、 其中,密码是要发送到物联网主应用程序的 TCP 服务器的任何内容,以验证是否是在物联网上启动和执行固件更新会话的经验证操作员。

    物联网上运行的主应用程序在收到来自 PC 上运行的远程 TCP 客户端应用程序的消息时,将执行两项操作:a)在 EEPROM 的 BOOTLOADING 位置写入0x01,b)执行 ROM_SysCtlReset ();"

    谁向电路板发送 update_firmware_password? 您的 TCP 客户端应用? 或者、我必须安排另一个应用程序/策略来将此消息发送到董事会?

    谢谢你

    Simone

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    还不错 它的工作方式基于这样一个事实、即当 MAIN_APP 的固件开发人员发布新的 MAIN_APP 的固件版本时、需要有一个将此新固件传输到远程物联网模块的平均方法。 对吧? 因此、MAIN_APP 的源代码/固件的每个版本都必须托管一个例程、该例程能够接收远程"远程"、代码可以将其解释为:<正常 我停止我正在执行的所有操作、在 EEPROM 的引导加载位置写入"1"、然后重新启动-"应用程序对自己"> TM4C1294xxxxx 电路板实现这一目标的唯一开箱即用方式是通过以太网端口。 因此,无论我们的 MAIN_APP 的代码/固件是什么,我们都需要像我所说的那样有一个例程,例如 TCP 服务器侦听器(不管怎样,如果我们的 MAIN_APP 出于其他目的需要,我们可能已经使用了这样的功能),我们会定期从 LOOP ()或通过中断处理进行检查,
    对于"更新_固件_密码"类型或我们选择的任何类型的远程更新请求。  执行固件更新的同一台 PC 可能 是连接到远程模块的 TCP 侦听器(在 MAIN_APP 中)的 PC、以通知其固件更新请求。 要执行此通知、您甚至可以使用 PuTTY 或任何其他启用 TCP/IP 的终端实用程序。 或者、您甚至可以随意修改 C#代码、并通过此界面轻松实现、从而添加更多按钮和一些连接功能。
    我希望现在一切都很清楚。
    John

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    好的、现在非常清楚。 起初、我以为通知传入更新的命令已由您的客户端应用发送。
    由于我的主应用程序使用 MQTT 协议、我在其中添加了一个特殊主题"更新"的管理、以执行在 EEPROM 的引导加载位置写入"1"和重新引导这两个操作。 然后启动引导加载程序、我可以使用您的应用程序传输数据。 在本地网络中一切都正常。

    我注意到、当我尝试通过互联网上载新应用时、第一个块(2048bytes)被传输、但随后被某种程度上占用、下一个块不被传输、然后引导加载程序会在一段时间后重新启动。 可能我必须增加看门狗计时器、或在 TCP 传输过程中多次刷新它。

    非常感谢您的工作和帮助
    Simone
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Simone。 到目前为止、已成功完成了400多个互联网更新、这些更新适用于我们公司已在各种安装中传播的模块。 但是、对于我们来说、在大约7种情况下、互联网更新失败。 我们只需重复一下、一切都正常。  我知道有一个守护程序(错误)在 TCP 堆栈的1.4.1实现内部、或者最有可能在缓冲区处理的 TM4C1299NCPDT PHY 实现内部出现、这种情况在某些互联网通信条件下出现。 可能 没有错误、但在 Tiva 硬件上编码 TCP 时、需要特别考虑一些我不知道的问题。 事实上、除非我忽略了这一点、否则我现在还没有看到针对 TM4C1294xxxxx μC 模块的任何其他纯 TCP/IP 大文件传输实现。     μC、使用完全相同的软件栈 lwip 1.4.1对嵌入式互联网通信进行编码、以便在竞争对手的另一个32位 μ s 上进行文件/固件传输、我从未遇到过这样的问题。 我的一位同事也在开发另一个32位 μC 的平台、从未遇到过这样的问题。 我看到他的 C 语言代码在工作、这是我的 TCP/IP 互联网传输案例的副本、到目前为止他没有遇到任何问题。 我想说、如果支持 Tiva-C 模块的 TI 人员(如 TM4C1294xxxxx μCs)决定编写 TCP/IP 文件传输库的代码并向我们展示我们应该如何正确处理此堆栈、那将是很棒的。 我的意思是、如果 TI 真的想推广这种明智地决定包含 PHY 以太网接口的 Tiva-C 系列模块、还提供 TCP/IP 堆栈示例是否合乎逻辑? (HTTP 是无状态的、因此永远不会面临通信挂起等问题)除非我错过某些内容、否则我认为 lwip 1.4.1需要修改 TCP 库以完全符合 TM4C1294xxxxx 模块的 PHY 实现。 我在两个月前就尝试过这种非常艰难的方法、虽然我在应用和(主要)嵌入式级别的 TCP/IP 和 UDP 网络编程方面拥有27年的经验、但我无法确定这些随机挂起的原因。 我的实验是使用 EK-TM4C1294XL 作为 TCP/IP 接收器、接收来自互联网上的一台 PC 的大文件、并将该文件的部件发送到互联网上的另一台 PC。 在10次尝试中、有3到4次尝试模块挂起! UDP 没有问题。 TCP 问题! 除非 TI 员工想解决这个问题、否则我不会再花更多的时间来解决这个问题。 如果您经常在互联网上挂起、只需修改我的嵌入式代码和 C#代码、即可获得1024甚至512字节的数据包。 速度较慢、但不会挂起。

    Simone、您说您正在使用 MQTT 物联网打包协议。 什么版本? 您是否在做 ZigBee 产品? 到目前为止、您必须已经了解到、这是一种用于微小数据块的基于 TCP/IP 的协议、一切运行正常。 不是这样吗?

    祝你一切顺利、

    John

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、John、感谢您的考虑和建议。

    关于 MQTT、我将使用 Energia 17提供的库。 几个月前、我在 Energia IDE 中开发了我的主要应用(通过业余的以太网连接设备远程操作一些家用设备的红外发射器 LED)、因为我发现开发简单应用非常简单直观。 为了开发该应用、我选择了 MQTT 协议、因为它也很容易在 Android 手机上"实现"控制"部分、例如、由于某些应用程序可以下载为 MQTT 客户端、这只需要最低配置阶段。 我不知道 Energia 17中包含的 MQTT 版本是什么、可以在必要时进行检查。

    我的意愿是更新此类主应用、而无需断开电路板与其工作位置的连接(因为很难访问)。 为此、TI 以太网引导加载程序(在 LAN 内)或 TCP 引导加载程序(也在 LAN 外)是完美的、因此我开始联系他们、 最后、在您宝贵的帮助和耐心的帮助下、我成功地弄清楚了在基于 MQTT 的预先存在的应用程序中必须修改哪些内容才能触发引导加载程序。 然后、固件传输都依赖于 BL 和 TCP 协议。

    希望我已经回答了您的问题、

    此致

    Simone

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    还不错
    祝您所有项目顺利。
    John
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、John、
    我还在尝试获取 TM4C 1294 Launchpad 上的远程更新、并发布了此帖子。 但找不到项目文件的链接。 您能否向我发送您之前发布的链接?
    此致、
    Nishit。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Nishit、您好、非常感谢您对我在这个平台上所做的微小贡献的善意参考。 我出差在我的办公室外工作了几天、今天我才注意到您的问题。 明天我将再次进入我的"库"、我将再次上传项目、并将链接发送给您(论坛)。 我还在 C#应用程序代码和引导加载程序固件代码中对项目进行了一些很好的新修改。 主要思路是:1)假设我们在工厂从任何固件、基于 TM4C1294NCPDT 的控制器板接收到裸片、完全裸片。 2) 2)对于以太网 TCP 服务器接口、为了使该板可正常工作、我们最初需要将 MAC 刻录到其中、否则无法在其上运行 TCP 服务器。 [EK-TM4C1294XL 评估板已经为我们烧坏了] 3)这只能通过 JTAG 通道来完成。 4) 4)我们使用适当/兼容的 JTAG 编程器进行此编程、并将其加载到 TCP 引导加载程序后。 5) 5)从那时起、您只需连接到此引导加载程序的 TCP 服务器即可远程上载任何固件、下载文件中包含的文档中介绍了该启动加载程序的功能。

    但是、请记住、这个项目是我的共同努力、也是 TI 以及本论坛的其他专家和大师为我提供的出色帮助。 在我对这个平台的理解上取得了某些进展之后、我以提示的形式向我提供了帮助。 由于您是学生、正如您所说的、我建议您主要需要掌握有关此平台内部工作原理的相当好且可靠的知识。 只有这样、您才能充分利用本论坛中提供的知识。

    正如我说过的、明天我将重新上传项目、并发布链接。

    John