主题中讨论的其他器件:Energia
您好!
我想知道是否有人尝试用较新的版本2.0.2替换 LwIP 1.4.1?
Alan
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.
您好!
我想知道是否有人尝试用较新的版本2.0.2替换 LwIP 1.4.1?
Alan
您好 Allan 和 Charles
我所做的是、首先在 TIVAWARE_213156安装的 thire_party 目录下备份 lwip-1.4.1目录、然后将 src 子目录替换为2.0.2。 1.4.1和2.0.2中的应用目录位于不同的路径中、但并不重要(如果使用该示例、只需在源代码中根据需要更改#include 路径)。 我这样做主要是为了解决我在 tcp_in.c 和1.4.1的 tcp_out.c 中缓冲区处理时遇到的一些问题。 备份完1.4.1后、您可以尝试使用这些2.0.2库、并检查您的库的行为是否存在差异。 在比较插件并排激活两个版本的不同库以找出存在的差异并理解它们的情况下、在 Notepad++中运行是一个非常乏味的过程。 由于这不是我们的代码、我没有找到任何其他方法来检查这两个版本的差异、至少对于我要查找的问题。 与往常一样、如果您在编译期间遇到许多粉色/红色线条、而您没有时间进行乏味的调试、则只需用原始1.4.1版本的 DIir 替换和覆盖即可。 这种方法一直有效:-)
祝你一切顺利、度过美好的周末
John
P.S. 在 http://www.nongnu.org/lwip/2_0_x/upgrading.html 中、可以检查2.0.2与旧版本之间的差异。 当编译器弹出"神秘"消息时非常有用。
大家好、Manuel 和论坛上的所有人。
1) 1)对于 Notepad++、有一个插件允许一个插件同时具有两个不同的源并对它们进行比较。
2) 2)我发现 lwip 1.4.1和2.0.2版本存在一些差异、现在我无法详细回顾这些差异、因为这是原因
早在这里已经是1:30了。 明天我可以就我发现的一些分歧再次作出答复。
3) 1.4.1中的一个“缺”是无法在 main()或运行时重新定义服务器的端口。 您需要定义
服务器的侦听端口一次,可以在 whatever.h 文件中,也可以在 main()之前的定义/声明区域中,或
在使用 ENERGIA IDE 的情况下使用 setup()之前。
4) 4)在 EthernetServer 类中添加了一种方法、到目前为止似乎可以正常工作、我明天将在这里再次发布它、
允许用户在运行时动态创建侦听器。 没什么大不了的、但有些情况会变得非常严重
有用。
祝你一切顺利、
John
你好 Manuel。
实际上、lwip-2.0.2在许多方面与 lwip-1.4.1完全不同。 如果只是比较两个版本的 tcp.c 块、则可能会发现2.0.2比1.4.1有许多改进。 数据包块处理中。 但是、如果使用 CCS、这些更改不会严重影响任何现有代码。 ENERGIA 的情况不太可能。 ENERGIA 的版本17基于 lwip-1.4.1并在两个 tcp.c 块之间(ENEGIA 使用的块在 lm4f\libraries\ethernet/utility\tcp.c 中) 、以及其他块之间存在几乎可以忽略不计的差异。 但是、由于 ENERGIA 提供了一组开箱即用的以太网利用率库(在 lm4f\libraries\ethernet 中)、因此可以使用以太网快速开始编码、 如果用户决定使用 lwip-2.0.2代码块更新 ENERGIA-17的 lwip 目录、则他/她还必须检查和更新以太网、EthernetUdp、EthernetServer、EthernetClient 源。 没有什么大不了的、也不是一项应该轻率处理的任务。
在我昨晚的帖子中、我提到了 ENERGIA 的 EthernetServer.h/c 源代码中的一个"错误"、主要是一段缺失的代码。 如果用户希望在运行时以及在不同端口上的 setup()中可以自由地提升 TCP 侦听器,则需要添加以下代码:
在 Ethernet.c --> void EthernetServer::SetPort (uint16_t iPort){_port = iPort;}和 EthernetServer.h 的类 EthernetServer 在'private:'扇区、uint16_t _port;在类的'public:'扇区-> void SetPort (uint16_t iPort);
希望上述内容有所帮助。 如果 Manuel 需要有关 lwip-2.0.2和 lwip-1.4.1之间差异的更多说明、如果我知道、我很乐意提供帮助。
John
John、
非常感谢您的全面回答。 非常感谢您的所有意见。
老实说、我不知道 Energia 环境的存在。 它看起来非常像 Arduino IDE (但确实要强大得多)、因此感谢您将它引起我的注意。
关于实际升级、我正在使用 CCS、因此根据我的理解、我不必担心 更新以太网、EthernetUdp、EthernetServer、EthernetClient 源代码。
现在、我"仅有"~50个错误需要清除(我从大约200开始)、因此我将逐渐接近。
再次感谢你。
John、
非常感谢。 我现在已经非常接近让它进行无错误的编译。
在我遇到此错误时、给我带来一些麻烦的最后一位是 makefsdata.c 文件:
#1965无法打开源文件"sys/stat.h"makefsdata.c/m6400 - Tiva/Platform/Network/lwip-2.0.2/src/apps/httpd/makefsdataline 23C/C++ problem
看起来 sys/stat.h 文件不是编译器库的一部分(我使用的是 ti-cgt-arm_5.2.2编译器)。
您是否遇到过这种情况?
再次感谢你。
Manuel
尊敬的 John:
再次感谢您的帮助回复。 我终于成功构建了代码库:-)
唯一的一点是,为了这样做,我不得不注释掉 timeouts.c 中出现的 sys_now (),否则,我将得到一个链接错误,表明符号未解析。 它会响铃吗?
我在这里使用 FREE_RTOS、这意味着#NO_SYS 标志为0、根据我的理解、这应该会自动删除 SYS_NOW ()的所有引用。
此致。
Manuel
你好 Manuel。
就我此刻所知、一些静态库定义的问题与 CCSx 不了解的静态库有关。 让我明天稍后检查它、我会回来。
John
P.S. 从一开始,你就会大胆地去,那里没有人……E. C. T., . μC μ C/OS-xyz? 您是否已经向边缘暴露了您的嵌入式编码和 RT 理解? RTOS 并不困难、但在 决定采用处理器的架构和问题架构之前、需要非常好地了解处理器的架构和问题架构。 这不是建议,只是 一种煽动。 由于 I'v 已烧坏、因此甚至没有 RTOS 能够提供裸机代码所能提供的性能的10%。 这在多核处理器领域是不正确的。 在这种情况下、用户必须使用 RTOS。
在这个论坛中、聪明的人可以在这些问题上为您提供更有价值的帮助。 一切都是最好的…