Aufgrund der Projektanforderungen begann ich, LWIP, einen ausländischen Open -Source -TCP/IP -Protokollstack, der in Mikrocontroller -Systemen verwendet wurde, an LWIP, und nutzte diese Gelegenheit, um mein erstes Buch mit Lead -Typ - "eingebettetes Netzwerksystem -Design - basierend auf der Atmel ARM7 -Serie" zu erstellen. Die Antwort dieses Buches ist ziemlich gut. Viele Leute schickten mir MSN (es ist schade, dass ein so gutes Instant -Messaging -Tool von Microsoft und vielen Kontakten verloren hat) oder von Fragen der E -Mail -Konsultation. In meinem ursprünglichen Schreibplan ist die Veröffentlichung dieses Buches erst der Anfang, und ich werde als nächstes ein zweites Buch schreiben - eine Systemeinführung in die Transplantation, Anwendung, Design und Implementierung des in LWIP enthaltenen PPP -Protokollstapels. Aber es ging gegen meine Wünsche, dieses Buch verzögerte sich und dieser Sprung dauerte zwölf Jahre ...
Wenn Sie sorgfältig darüber nachdenken, gibt es in erster Linie zwei Hauptgründe für die Verzögerung: Erstens gibt es zu wenig Zeit, um aufgrund von Familie, Arbeit usw. verfügbar zu sein; Zweitens führt der Mangel an ausreichenden Kenntnissen und technischen Reserven im Zusammenhang mit dem PPP -Protokoll zu unzureichendem Vertrauen, Angst und Stagnation. Aber dieser Vorfall war für mich immer ein Bedauern. Zwölf Jahre sind weder lang noch kurz, aber sie genug, um das Bedauern in meinem Herzen in einen kleinen Samen zu verwandeln und zu einem hoch aufragenden Baum von Träumen zu werden.
Jetzt ist die Welt in den 20er Jahren angekommen, als die Epidemie tobt. Meine Einwegzeit hat zugenommen, und meine technischen Fähigkeiten sind alles andere als vergleichbar mit denen der Vergangenheit. Es ist Zeit, dass der Baum der Träume blüht und Früchte trägt. Im Rückblick auf den Anfang hatte ich einige Jahre lang nicht einmal in die Branche eingetreten und hatte nur begrenzte technische Fähigkeiten. Ich konnte nur auf den Schultern des großen Meisters stehen, um zu untersuchen, wie man Transplantation und LWIP verwendet, und ich habe mich nicht einmal gewagt, den PPP -Stapel zu berühren. Wenn es nun nur die Arbeit von vor mehr als zehn Jahren fortsetzte, wäre dieses Ding bedeutungslos. Basierend auf einem genauen Verständnis meiner eigenen technischen Stärke entschied ich mich, einen vollständigen Netzwerkprotokollstapel von Grund auf neu zu erstellen. Schließlich vervollständigten über 6 Monate der OnPS -Protokollstapel (ONPS, Open Net Protocol Stack) die anfängliche Entwicklung und bestanden den internen Test. Heute werden mehr als zehn Jahre Bedauern gezahlt. Außerdem habe ich nach mehr als 20 Jahren Erfahrung endlich den Traum, Core Basic -Software in meinem Herzen zu machen. Jetzt werden diese beiden Träume ebenfalls belohnt.
Wenn die neuen Oriolen zum ersten Mal singen, wird es zwangsläufig viele unbefriedigende Dinge geben. Open Source kann mit denen geteilt, geteilt und studiert werden, die ihre Interessen mögen. Durch diese strengen Methoden kann es schnell iteriert und reift werden, und es wird erwartet, dass es mit LWIP vergleichbar ist.
ONPS ist ein Open Source und vollständig selbst entwickelte Inlandsnetzwerk-Protokollstapel, das für ressourcenbezogene Mikrocontroller-Systeme geeignet ist, bietet eine vollständige Implementierung der Ethernet/PPP/TCP/IP-Protokollfamilie und bietet Netzwerkwerkzeuge wie SNTP, DNS und PING. Es unterstützt die DHCP -dynamische IP -Adressanwendung in der Ethernet -Umgebung und unterstützt auch dynamische und statische Routing -Tabellen. Der Protokollstapel fasst auch die Implementierung einer Berkeley Sockets -Schicht zusammen. Diese Schicht ist nicht vollständig gemäß den Berkeley Sockets Standard entworfen und implementiert. Stattdessen klare und definiere ich basierend auf meiner vorherigen Socket -Programmiererfahrung eine Reihe gemeinsamer Socket -Schnittstellenfunktionen mit dem Entwurfsziel, die Verwendung und Vereinfachung der Benutzercodierung der Benutzer zu erleichtern:
Der Protokollstack vereinfacht einige mühsame Operationen, die für die herkömmliche BSD-Socket-Programmierung erforderlich sind, und ändert einige unnötige Betriebsdetails in die zugrunde liegende Implementierung, z. Vereinfachung bedeutet nicht umkippt. Die grundlegende Definition, Hauptparameter und Verwendungsmethoden der Socket -Schnittstellenfunktionen haben sich nicht geändert. Sie können schnell loslegen und Onps -Stack -Sockets basierend auf Ihren früheren Erfahrungen und Programmiergewohnheiten verwenden. Es ist nicht nötig, dem Boden des Protokollstapels zu viel Aufmerksamkeit zu schenken. Die Verwendung von Socket -API -Programmierungen kann den Anforderungen komplexer Kommunikationsanwendungen vollständig erfüllen, anstatt die benutzerdefinierten Schnittstellenfunktionen zu verwenden, um das gleiche Ziel zu erreichen, genau wie LWIP.
Um sich an die extrem abnormale Speicherverwendung von Mikrocontroller -Systemen anzupassen, wurde angenommen, dass der OnPS -Protokollstapel zu Beginn seines Entwurfs keine Kopie für Schreibungen verwendet. Während des Prozesses des Übergebens von Daten auf Benutzerebene an das Protokoll auf niedrigerer Ebene verwendet der Protokollstapel die verlinkte Listentechnologie der BUF-Liste, um sie miteinander zu verknüpfen, bis sie ohne Speicherkopiervorgänge gesendet werden. Darüber hinaus verwendet der Protokollstapel den Buddy -Algorithmus, um sichere und zuverlässige Funktionen für dynamische Speicherverwaltung zu liefern, um die Speicherauslastung während des Protokollstapels zu maximieren und die Speicherfragmentierung zu minimieren.
Im Gegensatz zu den 2000er und frühen 1910er Jahren, als UCOSII und andere RTOs in den Anwendungsszenarien von Mikrocontrollern in großem Maßstab nicht beliebt waren und die Vorder- und Backend -Systeme immer noch beliebt waren, wurde es für Entwickler zum Mainstream geworden, RTOs in den meisten Anwendungsszenarien zu verwenden. Daher unterstützte der Protokollstack zu Beginn seines Designs keine Front-End- und Back-End-Modi, und sein architektonisches Design basierte auf den beliebten RTOs (RT-Thread, UCOII/III usw.). Die Hauptaufgabe der Protokollstapeltransplantation besteht natürlich darin, verwandte Funktionsfunktionen für OS -Anpassungsschicht für verschiedene TOS zu schreiben. Wenn Sie über äußerst spezifische Anwendungsszenarien verfügen und den ONPS-Stapel an einen Mikrocontroller portieren müssen, der vorne und im Backend-Modus übernimmt, ist es mein Vorschlag, die Kommunikationsverarbeitungslogik der Protokollschicht unter TCP/UDP zu behalten und die Systemarchitektur der oberen Ebene anzupassen.
Das ONPS -Stack -Design implementiert einen vollständigen Satz von TCP/IP -Protokollmodellen. Von der Datenverbindungsschicht zur IP -Ebene bis zur TCP/UDP -Ebene und der Berkeley Socket Layer und schließlich der eigenen Kommunikationsanwendungsschicht des Benutzers erreicht der OnPS -Stapel eine vollständige Stapelabdeckung, die die meisten Netzwerkprogrammieranforderungen entsprechen kann. Seine Architektur ist wie folgt: 
Es ist ersichtlich, dass es sich nicht vom herkömmlichen Netzwerkprogrammiermodell unterscheidet. Benutzer verwenden weiterhin Socket -API, um gemeinsame TCP- und UDP -Netzwerkanwendungen zu schreiben. Gleichzeitig können Sie auch mehrere vom Protokollstapel bereitgestellte Netzwerk -Tools verwenden, um das Netzwerk Timing, die DNS -Abfrage und andere Operationen durchzuführen.
| Name | beschreiben |
|---|---|
| BSD | Die Quelldatei wird durch die relevante Schnittstellenfunktion der Berkeley Sockets Layer implementiert |
| Ethernet | Verwandte Implementierungsquelldateien für Ethernet-Protokollfamilien wie Ethernet-II/ARP- und EMAC-Schicht, DHCP-Client usw. |
| enthalten | Die Protokoll -Stapel -Header -Datei |
| IP | Die relevanten Implementierungsquelldateien des IP und der oberen ICMP/TCP/UDP -Protokollfamilie |
| MMU | Verwandte Implementierungsquelldateien des Protokollstapelspeicherverwaltungsmoduls |
| net_tools | Netzwerk -Tools implementieren Quelldateien wie DNS -Abfrage, Netzwerk Timing, Ping, Telnet usw. |
| Netif | Implementieren Sie Quelldateien für Netzwerkkarten- und Routing -Verwaltungs -Interfaces |
| Hafen | Quelldateien der Protokollstapel migrationsbezogene Quelldateien |
| Ppp | PPP -Linkschichtbezogene Implementierungsquelldateien, einschließlich Implementierungsquelldateien von Protokollfamilien wie LCP/IPCP/CHAP/PAP usw. |
| TcpServerForstackTesting | TCP -Server, der für Protokollstapeltests verwendet wird |
| test_code | PPP -Wähl Prinzip -Überprüfungsdatei unter Linux |
Der Protokollstapel unterstützt MCUs der Mainstream Arm Cortex und häufige IDEs wie Keil MDK und IAR. Die Kernaufgabe der Transplantation besteht darin, das Schreiben und Anpassung der RTOS -Simulationsschicht abzuschließen. Ausführliche Anweisungen zur Portierung finden Sie im Artikel "ONPS -Netzwerkprotokoll -Migrations- und Nutzungsanweisungen v1.0". Klicken Sie hier, um herunterzuladen. Diese Beschreibung enthält Portierungsbeispiele für zwei Hardwareplattformen, STM32F103RCT6 und STM32F407VET6. Jede Probe ist für RT-Thread bzw. UCOIIS-RTOS. Das Beispielprojekt wurde strengen internen Tests durchlaufen und kann direkt verwendet werden.
Wenn Sie nicht viel Zeit haben oder das Beispielprojekt nicht mit Ihrer Zielplattform übereinstimmt, können Sie sich direkt auf das allgemeine Leitfaden "OPS -Stack -Migrationshandbuch" für die Protokollstapelmigration beziehen.
Für allgemeine Leitfadendokumente für die Protokollstapelentwicklung finden Sie im Handbuch "Ops Stack API Interface" und "Ops Stack User Manual".
STM32F407VET6-Plattform : RT-Thread-Transplantation Probe UCOS-II-Transplantationsprobe
Qinheng CH32V307 Plattform : Hongmeng Liteos-M Transplantation Probe Probe für Free-ROS-Transplantation Probe RT-Thread-Transplantationsprobe
Sie können die offizielle Website des ONPS-Stacks jederzeit besuchen, um relevante Informationen wie den Entwicklungsfortschritt des Protokollstacks, Follow-up-Pläne, der neuesten Version usw. zu erhalten.
Wenn Sie während des Gebrauchs Probleme oder Vorschläge stoßen, können Sie in die ONPS Stack Communication Community gehen, um Ihre Vorschläge oder Fragen zu machen, und die Veröffentlichung der neuen Version wird auch sofort in der Kommunikationsgemeinschaft benachrichtigt.
Sie können auch der QQ -Gruppe für die technische Online -Kommunikation beitreten: 
Apache -Lizenz 2.0 Open -Source -Lizenzvereinbarung
Damit das Projekt fortgesetzt und Ihre Unterstützung erwartet, können Sie den folgenden QR -Code scannen, um dieses Projekt über Alipay/WeChat zu spenden:

