Era alrededor de 2006, debido a los requisitos del proyecto, comencé a contactar a LWIP, una pila de protocolo TCP/IP de código abierto extranjeras utilizada en sistemas de microcontroladores, y aproveché esta oportunidad para crear mi primer libro impreso en el tipo de sistema de red ", basado en la serie ATMEL ARM7". La respuesta de este libro es bastante buena. Muchas personas me enviaron MSN (es una lástima que Microsoft abandonara una herramienta de mensajería instantánea tan buena, y muchos contactos perdieron contacto) o preguntas relacionadas con la consulta por correo electrónico. En mi plan de escritura original, la publicación de este libro es solo el comienzo, y escribiré un segundo libro a continuación: una introducción del sistema al trasplante, aplicación, diseño e implementación de la pila de protocolo PPP contenida en LWIP. Pero, las cosas fueron en contra de mis deseos, este libro se retrasó y este salto tomó doce años ...
Si lo piensa cuidadosamente, hay dos razones principales para la demora en primer lugar: primero, hay muy poco tiempo para ser desechable debido a la familia, el trabajo, etc.; En segundo lugar, la falta de conocimiento suficiente y reservas técnicas relacionadas con el protocolo PPP conduce a una confianza insuficiente, miedo y estancamiento. Pero este incidente siempre ha sido un arrepentimiento para mí. Doce años no son ni largos ni cortos, pero son suficientes para convertir los remordimientos en mi corazón en una pequeña semilla y convertirse en un árbol imponente de sueños.
Ahora, el mundo ha llegado a los años 20 cuando la epidemia está furiosa. Mi tiempo desechable ha aumentado, y mis capacidades técnicas están lejos de ser comparables a las del pasado. Es hora de que el árbol de los sueños florezca y diga fruto. Mirando hacia atrás al principio, ni siquiera había ingresado a la industria durante algunos años y tenía capacidades técnicas limitadas. Solo podía pararme sobre los hombros del Gran Maestro para estudiar cómo trasplantar y usar LWIP, y ni siquiera me atreví a tocar la Stack PPP. Ahora, si solo continuara el trabajo de hace más de diez años, entonces esto no sería sentido. Basado en una comprensión precisa de mi propia fuerza técnica, decidí construir una pila completa de protocolo de red desde cero. Finalmente, durante 6 meses, la pila de protocolo de ONPS (ONPS, pila de protocolo de red abierta) completó el desarrollo inicial y pasó la prueba interna. Hoy se pagan más de diez años de arrepentimientos. Además, después de más de 20 años de experiencia, finalmente tengo el sueño de hacer un software básico básico en mi corazón. Ahora, estos dos sueños también son recompensados.
Cuando los nuevos Orioles están cantando por primera vez, inevitablemente habrá muchas cosas insatisfactorias. El código abierto se puede compartir, compartir y estudiar con aquellos a quienes les gustan sus intereses. A través de estos métodos estrictos, se puede iterar y madurar rápidamente rápidamente, y se espera que sea comparable a LWIP.
ONPS es una pila de protocolo de red nacional de código abierto y totalmente autodesarrollado, adecuado para sistemas de microcontroladores limitados por recursos, proporciona una implementación completa de la familia de protocolo Ethernet/PPP/TCP/IP, y proporciona herramientas de red como SNTP, DNS y Ping. Admite la aplicación de dirección IP dinámica DHCP en el entorno Ethernet, y también admite tablas de enrutamiento dinámicas y estáticas. La pila de protocolo también encapsula la implementación de una capa de enchufes Berkeley. Esta capa no está diseñada e implementada completamente de acuerdo con el estándar de enchufes de Berkeley. En su lugar, según mi experiencia anterior de programación de socket, redeclaro y defino un conjunto de funciones comunes de interfaz de socket con el objetivo de diseño de facilitar el uso de los usuarios y simplificar la codificación de usuarios:
La pila de protocolo simplifica algunas operaciones tediosas requeridas para la programación tradicional de socket BSD, y cambia algunos detalles de operación innecesarios a la implementación subyacente, como el modelo selecto/encuestado, las operaciones de lectura y escritura de bloqueo y no bloqueo. La simplificación no significa volcarse. La definición básica, los parámetros principales y los métodos de uso de las funciones de interfaz de socket no han cambiado. Puede comenzar rápidamente y usar los enchufes de la pila ONPS en función de su experiencia previa y los hábitos de programación. No hay necesidad de prestar demasiada atención al fondo de la pila de protocolo. El uso de la programación de API de Socket puede satisfacer completamente las necesidades de aplicaciones de comunicación complejas, en lugar de usar su conjunto personalizado de funciones de interfaz para lograr el mismo objetivo, al igual que LWIP.
Para adaptarse al uso de memoria extremadamente anormal de los sistemas de microcontroladores, se consideró que la pila de protocolo de ONPS usaba cero copia en la escritura al comienzo de su diseño. Durante el proceso de pasar datos a nivel de usuario al protocolo de nivel inferior, la pila de protocolo utiliza la tecnología de lista vinculada de la lista BUF para vincularlos hasta que se envíen sin ninguna operación de copia de memoria. Además, la pila de protocolo utiliza algoritmo de amigos para proporcionar funciones de gestión de memoria dinámica seguras y confiables, para maximizar la utilización de la memoria durante la operación de la pila de protocolo y minimizar la fragmentación de la memoria.
A diferencia de la década de 2000 y principios de la década de 1910, cuando los UCOSII y otros RTO no eran populares a gran escala en los escenarios de aplicación de los microcontroladores, y los sistemas frontales y de backend aún eran populares, se ha convertido en la corriente principal para los desarrolladores para elegir usar RTO en la mayoría de los escenarios de aplicaciones. Por lo tanto, la pila de protocolo no admitió modos front-end y back-end al comienzo de su diseño, y su diseño arquitectónico se basó en el RTOS popular (RT-Preshing, Ucosii/III, etc.). La tarea principal de trasplante de pila de protocolo es, naturalmente, escribir funciones relacionadas con la función de la capa de adaptación del sistema operativo para diferentes TOS. Por supuesto, si tiene escenarios de aplicación extremadamente específicos y necesita transferir la pila de ONP a un microcontrolador que adopta el modo frontal y de backend, mi sugerencia es retener la lógica de procesamiento de comunicación de la capa de protocolo en TCP/UDP, y ajustar la arquitectura del sistema de nivel superior para adaptarse al modo de operación del sistema objetivo.
El diseño de la pila de ONPS implementa un conjunto completo de modelos de protocolo TCP/IP. Desde la capa de enlace de datos hasta la capa IP, hasta la capa TCP/UDP y la capa de socket de Berkeley anterior, y finalmente la capa de aplicación de comunicación del usuario, la pila ONPS logra la cobertura completa de la pila, que puede satisfacer la mayoría de las necesidades de programación de redes. Su arquitectura es la siguiente: 
Se puede ver que no es diferente del modelo de programación de red tradicional. Los usuarios continúan utilizando la API de Socket para escribir aplicaciones comunes de red TCP y UDP. Al mismo tiempo, también puede usar varias herramientas de red proporcionadas por la pila de protocolos para realizar el tiempo de red, la consulta DNS y otras operaciones.
| nombre | describir |
|---|---|
| BSD | El archivo fuente se implementa mediante la función de interfaz relevante de la capa de sockets de Berkeley |
| éternet | Archivos de fuente de implementación relacionados para familias de protocolo Ethernet como Ethernet-II/ARP y EMAC Capa, cliente DHCP, etc. |
| incluir | El archivo de encabezado de la pila de protocolo |
| IP | Los archivos fuente de implementación relevantes de la IP y su familia de protocolo ICMP/TCP/UDP superior |
| mmu | Implementación relacionada Archivos de origen del módulo de gestión de memoria de la pila de protocolo |
| net_tools | Las herramientas de red implementan archivos fuente, como consulta DNS, tiempo de red, ping, telnet, etc. |
| netif | Implementar archivos de origen para interfaces relacionadas con la gestión de tarjetas de red y de enrutamiento |
| puerto | Archivos de origen relacionados con la migración de la pila de protocolo |
| PPP | Archivos fuente de implementación relacionados con la capa de enlace PPP, incluidos los archivos fuente de implementación de familias de protocolos como LCP/IPCP/CHAP/PAP, etc. |
| Tcpserverforstacktesting | Servidor TCP utilizado para pruebas de pila de protocolo, IDE se desarrolla para VS2015, y el sistema de destino es Win7 y superior |
| test_code | Archivo de verificación del principio de marcación de PPP en Linux |
La pila de protocolo admite MCU de la serie Cortex de brazo convencional y admite IDE comunes como Keil MDK e IAR. La tarea central de trasplante es completar la escritura y la adaptación de la capa de simulación RTOS. Para obtener instrucciones detalladas de porte, consulte el artículo "ONPS Network Protocol Stack Migration and Usage Instrucciones v1.0", haga clic aquí para descargar. Esta descripción proporciona ejemplos de portada para dos plataformas de hardware, STM32F103RCT6 y STM32F407VET6. Cada muestra es para RT-Thread y UCOSII RTO respectivamente. El proyecto de muestra se ha sometido a pruebas internas estrictas y se puede usar directamente.
Si no tiene mucho tiempo, o el proyecto de muestra no coincide con su plataforma de destino, puede consultar directamente el documento de guía general "OPS STACK MANUAL" para la migración de la pila de protocolo.
Para obtener documentos de orientación general para el desarrollo de la pila de protocolo, consulte el "Manual de interfaz de la API de la pila OPS" y el "Manual del usuario de OPS Stack".
Plataforma STM32F407VET6 : muestra de trasplante de trasplante de rt-subplante Muestra de trasplante
Plataforma Qinheng CH32V307 : muestra de trasplante de trasplante de Hongmeng Liteos-M Muestra de trasplante RT-Presamante RT
Puede visitar el sitio web oficial de la pila de ONP en cualquier momento para obtener información relevante, como el progreso del desarrollo de la pila de protocolo, los planes de seguimiento, la última versión, etc.
Si encuentra algún problema o sugerencia durante el uso, puede ir a la comunidad de comunicación de la pila de ONPS para hacer sus sugerencias o preguntas, y el lanzamiento de la nueva versión también se notificará inmediatamente en la comunidad de comunicación.
También puede unirse al grupo QQ para la comunicación técnica en línea: 
Acuerdo de licencia de código abierto de Licencia APACHE 2.0
Para que el proyecto continúe y espere su soporte, puede escanear el código QR a continuación para donar a este proyecto a través de Alipay/WeChat:

