STM32 LwIP PPPos - 入门

问题描述 投票:0回答:1

我正在努力(看起来像许多其他人一样)开始为 STM32 使用 LwIP over PPPos(PPPo over Serial)。我本可以早点结束这句话,因为即使没有 PPPos,我也很难理解从哪里开始。

我有。他们的官方主页、wiki、大量论坛,并尝试消化其他平台的 github 示例。但我仍然很难找到从哪里开始的线索。

网上似乎很少(没有?)示例引导我完成整个过程。我真的不明白。物联网世界正在爆炸式增长。所以我真的认为有一些 hello world 的例子会很“容易”。

我现在拥有的:

  • 我可以通过 AT 命令使用 LTE 调制解调器
  • 在我的 nucleo (F446ze) 板上运行的小型应用程序,它可以闪烁 LED,通过 UART3 与我的 PC 通信,并通过 UART2 与 LTE 调制解调器通信
  • 使用免费的 RTOS,这部分非常容易熟悉

但是我不想使用 AT 命令(和 AT+CMQTT 命令)进行笨拙的互联网通信,而是想依赖正确的 TCP/IP 堆栈。将 LTE 调制解调器设置为数据模式 (PPP),并让 LwIP 接管 TCP/IP 堆栈。

2021 年这仍然很复杂吗?或者我完全看错了方向?有人可以指出我正确的方向吗?

我也已经有 freertos 可以工作了。我不介意使用它。我也不介意没有。我只是在寻找一种开始使用 LwIP 的方法,而无需完全对 LwIP 堆栈进行逆向工程。

stm32 iot lwip
1个回答
6
投票

从上到下,您的应用程序代码最终可能会想要与某些服务器通信:解析 DNS 名称、打开 tcp 连接等。这就是 LwIP 提供的 - 一组 API 函数:套接字函数、DNS功能等。例如,当您对给定的 IP 地址和端口执行 TCP 套接字

connect
时,它会决定使用可用网络接口中的哪个,以字节数组的形式构造一个帧,并通过该接口发送这些字节。这就是 LwIP 部分结束的地方 - 它请求给定的网络接口输出它提供的 X 字节,并消耗可能到达该接口的任何字节。它不知道如何准确地使字节“出来”,但它知道如何构造要发送的数据并理解您提供的数据。

从下到上,您拥有调制解调器 - LTE、3G、2G,这并不重要。调制解调器提供一组 AT 命令与它们对话以执行一组功能:设置 SIM 卡 PIN、获取信号质量、列出可用运营商、选择运营商等,以及将其切换到 PPP 模式的方法,这使用

ATD
命令完成。假设调制解调器之前已正确配置,一旦将其切换到 PPP 模式,它将能够使用 PPP 协议发送数据,并且还会“吐出”从网络接收到的任何数据。这是调制解调器部分结束的地方 - 当切换到 PPP 模式时,调制解调器能够使用 PPP 协议发送和接收原始网络流量。它知道如何输出您提供给它的原始字节,但它无法在很高的水平上理解它们。

您的角色是连接(连接)两个部分。您的调制解调器使用 PPP 来产生和消耗网络流量。 LwIP 具有理解和生成 PPP 帧的能力。

在发送数据的情况下,在准备好 PPP 帧后,LwIP 将调用

sio_write
函数,该函数预计将提供的字节发送到已经处于 PPP 模式的调制解调器。这是您需要填写的部分。在读取的情况下,将使用
sio_read
函数,您的工作就是填写它,以便它返回从调制解调器接收到的字节。您将如何做到这一点 - 使用 RTOS 和字节队列,不使用 RTOS 或任何其他方式 - 并不重要。这是您发现更方便或者更适合您的整体项目结构的方法。只要这些函数能够发挥其应有的作用,LwIP 就会很乐意使用它们。

此处更详细地讨论了此接口:https://lwip.fandom.com/wiki/PPP#PPP_over_serial。同样,一般概念是 LwIP 只是一个软件库,最终它会发送和接收字节。您的工作是通过填写它期望的功能来使其能够做到这一点。

© www.soinside.com 2019 - 2024. All rights reserved.