我使用STM32F7与开发板核心-F746ZG。我已经激活了UART、LWIP中间件及其PPPoS支持。
我可以通过UART上的AT命令使STM32F7与GL865 GSM调制解调器进行通信,即使调制解调器建立其SIM卡的静态IP,并进行校验,一切正常。
但是,我希望LWiP PPPoS在发送ATD*99***1#之后建立静态IP而不是AT命令。
我对网络进行了深入的搜索,找不到包含LWiP PPPoS Server for STM32F与Telit GL865 GSM通信的特定示例。我见过这样的密码
sio_fd_t ppp_sio = sio_open(sio_idx);但是,我无法将它们与STM32多维数据集函数关联起来。
我已经看到了使用pppInit(void)、pppOverSerialOpen(PPP_SERIAL_PORT, linkStatusCB, &connected)函数的例子,但我猜当前堆栈不支持这些命令。
是否有人将STM多维数据集的uart处理与PPPoS of LWiP堆栈相关联?您是否有任何初始化大纲或建议开始并继续获取静态IP?(即INIT,DISCONNECTING,DISCONNECTED,CONNECTING,CONNECTED,LWIP循环)
亲切的问候
发布于 2018-05-08 17:35:52
Sio是“串行IO”的接口层,由特定的端口(特定的平台)实现。一旦实现,TCP/IP协议栈将处理其他协议,包括PPP协商和配置(LCP/IPCP等),包括获取IP地址(自己的IP地址、网关、网络掩码、dns1、dns2)。因此,您所需要做的就是实现在UART上读写数据的低级函数。处理PPP的责任在TCP/IP堆栈的末端。
虽然我没有STM32的确切实现,但是自己实现应该很容易。它的实现方式可能(或不可能)取决于您自己的配置,例如您是否使用FreeRTOS,以及它的队列/互斥体来处理UART通信。关于所有组件在TCP/IP堆栈中与PPP的关系的总体描述,我在此给出了一个答案:STM32 LWIP PPPos implementation。
当涉及到LwIP的sio层时,可以在下面找到一个很好的文档:http://lwip.wikia.com/wiki/PPP。在普通的lwip/src/include/lwip/sio.h头文件中也很好地描述了函数的行为。
在这里可以找到一个示例UNIX实现,如果您发现它有用的话:https://github.com/dreamcat4/lwip/blob/master/contrib/ports/unix/netif/sio.c
https://stackoverflow.com/questions/50234451
复制相似问题