Статический IP для GSM-модуля Telit GL865 через LWiP PPPoS с использованием STM32F7 - PullRequest
0 голосов
/ 08 мая 2018

Я использую STM32F7 с платой разработки Nucleo-F746ZG. Я активировал UART, промежуточное ПО LWIP и его поддержку PPPoS.

Я могу заставить STM32F7 связываться с GSM-модемом Telit GL865, используя AT-команды через UART, (т.е.) заставляя модем устанавливать статический IP-адрес своей SIM-карты и проверяя пинги, все в порядке.

Однако я хочу, чтобы LWiP PPPoS устанавливал статический IP вместо AT-команд сразу после отправки ATD*99***1#.

Я глубоко искал в Интернете и не смог найти конкретный пример, который содержит LWiP PPPoS Server для STM32F для связи с Telit GL865 GSM. Я видел такие коды, как

sio_fd_t ppp_sio = sio_open(sio_idx);

Однако я не смог связать их с функциями куба STM32.

Я видел примеры использования функций pppInit(void), pppOverSerialOpen(PPP_SERIAL_PORT, linkStatusCB, &connected), но я думаю, что эти команды не поддерживаются для текущего стека.

Кто-нибудь связывал ручку Uart STM CUBE с PPPoS стека LWiP? Есть ли у вас какие-либо схемы или советы по инициализации для начала и продолжения получения статического IP-адреса? (т.е. INIT, DISCONNECTING, DISCONNECTED, CONNECTING, CONNECTED, LWIP петля)

С уважением

1 Ответ

0 голосов
/ 08 мая 2018

Sio - это интерфейсный уровень «Serial IO», реализуемый конкретным портом (конкретной платформой). После реализации стек TCP / IP обрабатывает все остальное, включая согласование и настройку PPP (LCP / IPCP и т. Д.), Что включает получение IP-адресов (собственный IP, шлюз, маску сети, dns1, dns2). Поэтому все, что вам нужно сделать, это реализовать низкоуровневые функции, которые читают и записывают данные через UART. Ответственность за обработку PPP лежит на конце стека TCP / IP.

Хотя у меня нет точной реализации для STM32, она должна быть достаточно простой, чтобы реализовать ее самостоятельно. То, как это реализовано, может (или не может) зависеть от вашей собственной конфигурации, например, используете ли вы FreeRTOS и, следовательно, его очереди / мьютексы для обработки связи UART. Для общего описания того, как все компоненты обычно размещаются в стеках TCP / IP по отношению к PPP, я дал здесь некоторое время назад ответ: STM32 LWIP PPPos .

Когда речь заходит о слое 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

...