Azure NetX Duo предоставляет драйвер только для физических физических устройств Ethernet, совместимых с LAN8742. Как я могу управлять другими физическими уровнями Ethernet?
Я разрабатываю приложение для STM32F4 с Azure RTOS Netx Duo. В частности, я пытаюсь адаптировать пример приложения Nx_TCP_Echo_Server для своей платы, где присутствует Ethernet Phy ADIN1200 производства Analog Devices.
Примечание о примереNx_TCP_Echo_Server
Пример приложения Nx_TCP_Echo_Server был создан для демонстрационной платы STM32F429ZI-NUCLEO ( код Nx_TCP_Echo_Server на github).
В демонстрационной плате STM32F429ZI-NUCLEO Ethernet Phy совместим с драйвером lan8742 (см. на GitHub). К сожалению, Ethernet PHY ADIN1200, установленный на моей плате, несовместим с этим драйвером.
Я заметил, что шестым параметром функции является функция указателяnx_stm32_eth_driver
. Эта функция-указатель указывает на драйвер lan8742 .
Ниже я показываю вызов функцииnx_ip_create()
присутствует в файлеapp_netxduo.c
(код app_netxduo.c) примера приложения Nx_TCP_Echo_Server:
/* Create the main NX_IP instance */
ret = nx_ip_create(&IpInstance, "Main Ip instance", NULL_ADDRESS, NULL_ADDRESS, &AppPool, nx_stm32_eth_driver,
pointer, 2 * DEFAULT_MEMORY_SIZE, DEFAULT_PRIORITY);
Документация NetX Duo сообщает следующую информацию:
Структура NX_IP содержит все для управления одним экземпляром IP. Это включает в себя общую информацию о протоколе TCP/IP, а также процедуру ввода драйвера физической сети для конкретного приложения. Процедура ввода драйвера определяется во время службы nx_ip_create. Дополнительные устройства могут быть добавлены к экземпляру IP через сервис nx_ip_interface_attach.
Моя среда разработки
Моя среда разработки состоит из:
- STM32CubeMX версии 6.7.0
- В STM32CubeMX я установил пакет STM32F4 версии 1.27.1.
- Для использования ThreadX я добавил в CubeMX программный пакет X-CUBE-AZRTOS-F4 версии 1.1.0.
По предыдущей среде могу найти только драйвер для LAN8742.
Мой вопрос
Как найти другие драйверы Ethernet PHY для NetX Duo , кроме драйвера для lan8742?
РЕДАКТИРОВАТЬ
Я нашел , но он очень далек от драйвераlan8742.c
предоставленный моим инструментом разработки (см. код драйвера lan8742код lan8742 ).
На самом деле API двух драйверов очень разные; например NetX Duo (а до него:LwIP
) нужна такая функция, какLAN8742_RegisterBusIO()
(присутствует в драйвере LAN8742) для инициализации структуры с функциями указателя, полезными для записи и чтения регистров Ethernet PHY, но в этот драйвер для ADIN1200этом драйвере эта функция и ее структуры данных отсутствуют.