Itu sekitar tahun 2006, karena persyaratan proyek, saya mulai menghubungi LWIP, tumpukan protokol TCP/IP open source asing yang digunakan dalam sistem mikrokontroler, dan mengambil kesempatan ini untuk membuat buku pertama saya yang dicetak dalam tipe timah - "Desain Sistem Jaringan Tertanam - Berdasarkan Seri ATMEL ARM7". Respons buku ini cukup bagus. Banyak orang mengirimi saya MSN (sangat disayangkan bahwa alat pesan instan yang baik ditinggalkan oleh Microsoft, dan banyak kontak kehilangan kontak,) atau pertanyaan terkait konsultasi email. Dalam rencana penulisan asli saya, publikasi buku ini hanyalah permulaan, dan saya akan menulis buku kedua berikutnya - sistem pengantar transplantasi, aplikasi, desain dan implementasi tumpukan protokol PPP yang terkandung dalam LWIP. Tapi, segalanya bertentangan dengan keinginan saya, buku ini tertunda, dan lompatan ini memakan waktu dua belas tahun ...
Jika Anda memikirkannya dengan hati -hati, ada dua alasan utama untuk keterlambatan di tempat pertama: Pertama, ada terlalu sedikit waktu untuk dibuang karena keluarga, pekerjaan, dll.; Kedua, kurangnya pengetahuan yang memadai dan cadangan teknis yang terkait dengan protokol PPP menyebabkan kepercayaan diri, ketakutan, dan stagnasi yang tidak memadai. Tapi kejadian ini selalu menjadi penyesalan bagi saya. Dua belas tahun tidak panjang atau pendek, tetapi mereka cukup untuk mengubah penyesalan di hatiku menjadi benih kecil dan tumbuh menjadi pohon mimpi yang menjulang tinggi.
Sekarang, dunia telah tiba di tahun 20 -an ketika epidemi mengamuk. Waktu sekali pakai saya telah meningkat, dan kemampuan teknis saya jauh dari sebanding dengan masa lalu. Sudah waktunya bagi Pohon Impian untuk berkembang dan berbuah. Melihat kembali pada awalnya, saya bahkan belum memasuki industri selama beberapa tahun dan memiliki kemampuan teknis yang terbatas. Saya hanya bisa berdiri di atas bahu master besar untuk mempelajari cara transplantasi dan menggunakan LWIP, dan saya bahkan tidak berani menyentuh tumpukan PPP. Sekarang, jika itu hanya melanjutkan pekerjaan dari lebih dari sepuluh tahun yang lalu, maka hal ini tidak akan berarti. Berdasarkan pemahaman yang akurat tentang kekuatan teknis saya sendiri, saya memutuskan untuk membangun tumpukan protokol jaringan yang lengkap dari awal. Akhirnya, lebih dari 6 bulan, tumpukan protokol ONPS (ONPS, Open Net Protocol Stack) menyelesaikan pengembangan awal dan lulus uji internal. Lebih dari sepuluh tahun penyesalan dibayar hari ini. Selain itu, setelah lebih dari 20 tahun pengalaman, saya akhirnya bermimpi membuat perangkat lunak dasar inti di hati saya. Sekarang, kedua mimpi ini juga dihargai.
Ketika Orioles baru pertama kali bernyanyi, pasti akan ada banyak hal yang tidak memuaskan. Open Source dapat dibagikan, dibagikan, dan dipelajari dengan mereka yang menyukai minat mereka. Melalui metode yang ketat ini, dapat dengan cepat diulang dan matang dengan cepat, dan diharapkan sebanding dengan LWIP.
ONPS adalah tumpukan protokol jaringan domestik yang dikembangkan sepenuhnya sendiri, yang cocok untuk sistem mikrokontroler yang dibatasi sumber daya, menyediakan implementasi lengkap keluarga protokol Ethernet/PPP/TCP/IP, dan menyediakan alat jaringan seperti SNTP, DNS, dan ping. Ini mendukung aplikasi alamat IP dinamis DHCP di lingkungan Ethernet, dan juga mendukung tabel perutean dinamis dan statis. Tumpukan protokol juga merangkum menerapkan lapisan soket Berkeley. Lapisan ini tidak dirancang dan diimplementasikan sepenuhnya sesuai dengan standar Berkeley Sockets. Sebagai gantinya, berdasarkan pengalaman pemrograman soket saya sebelumnya, saya menepis dan mendefinisikan serangkaian fungsi antarmuka soket umum dengan tujuan desain memfasilitasi penggunaan pengguna dan menyederhanakan pengkodean pengguna:
Tumpukan protokol menyederhanakan beberapa operasi membosankan yang diperlukan untuk pemrograman soket BSD tradisional, dan mengubah beberapa detail operasi yang tidak perlu untuk implementasi yang mendasarinya, seperti model terpilih/jajak pendapat, pemblokiran dan operasi baca dan penulisan yang tidak diblokir. Penyederhanaan tidak berarti terbalik. Definisi dasar, parameter utama, dan metode penggunaan fungsi antarmuka soket belum berubah. Anda dapat dengan cepat memulai dan menggunakan soket tumpukan ONPS berdasarkan pengalaman Anda sebelumnya dan kebiasaan pemrograman. Tidak perlu terlalu banyak memperhatikan tumpukan protokol. Menggunakan pemrograman API Socket dapat sepenuhnya memenuhi kebutuhan aplikasi komunikasi yang kompleks, daripada menggunakan set fungsi antarmuka yang disesuaikan untuk mencapai tujuan yang sama, seperti LWIP.
Untuk beradaptasi dengan penggunaan memori yang sangat abnormal dari sistem mikrokontroler, tumpukan protokol ONPS dianggap menggunakan nol salinan pada ditulis di awal desainnya. Selama proses lewat data tingkat pengguna ke protokol tingkat bawah, Stack Protokol menggunakan teknologi daftar Daftar Daftar BUF untuk menautkannya bersama sampai mereka dikirim tanpa operasi penyalinan memori. Selain itu, Stack Protokol menggunakan algoritma Buddy untuk memberikan fungsi manajemen memori dinamis yang aman dan andal, untuk memaksimalkan pemanfaatan memori selama operasi tumpukan protokol dan meminimalkan fragmentasi memori.
Tidak seperti tahun 2000 -an dan awal 1910 -an, ketika UCOSII dan RTO lainnya tidak populer dalam skala besar dalam skenario aplikasi mikrokontroler, dan sistem depan dan backend masih populer, itu telah menjadi arus utama bagi pengembang untuk memilih untuk menggunakan RTO di sebagian besar skenario aplikasi. Oleh karena itu, tumpukan protokol tidak mendukung mode front-end dan back-end di awal desainnya, dan desain arsitekturnya didasarkan pada RTO yang populer (RT-Thread, UCOSII/III, dll.). Tugas utama transplantasi tumpukan protokol secara alami untuk menulis fungsi fungsi lapisan adaptasi OS terkait untuk TOS yang berbeda. Tentu saja, jika Anda memiliki skenario aplikasi yang sangat spesifik dan perlu port stack ONP ke mikrokontroler yang mengadopsi mode depan dan backend, saran saya adalah untuk mempertahankan logika pemrosesan komunikasi dari lapisan protokol di bawah TCP/UDP, dan menyesuaikan arsitektur sistem tingkat atas untuk beradaptasi dengan mode operasi sistem target.
Desain tumpukan ONPS mengimplementasikan set lengkap model protokol TCP/IP. Dari lapisan tautan data ke lapisan IP, ke lapisan TCP/UDP dan lapisan soket Berkeley di atas, dan akhirnya lapisan aplikasi komunikasi pengguna sendiri, tumpukan ONPS mencapai cakupan tumpukan penuh, yang dapat memenuhi sebagian besar kebutuhan pemrograman jaringan. Arsitekturnya adalah sebagai berikut: 
Dapat dilihat bahwa tidak ada bedanya dengan model pemrograman jaringan tradisional. Pengguna terus menggunakan Socket API untuk menulis aplikasi jaringan TCP dan UDP yang umum. Pada saat yang sama, Anda juga dapat menggunakan beberapa alat jaringan yang disediakan oleh Protocol Stack untuk melakukan waktu jaringan, kueri DNS, dan operasi lainnya.
| nama | menggambarkan |
|---|---|
| BSD | File sumber diimplementasikan oleh fungsi antarmuka yang relevan dari lapisan soket Berkeley |
| Ethernet | File Sumber Implementasi Terkait untuk Keluarga Protokol Ethernet seperti Ethernet-II/ARP dan EMAC Layer, Klien DHCP, dll. |
| termasuk | File header stack protokol |
| aku p | File sumber implementasi yang relevan dari IP dan keluarga protokol ICMP/TCP/UDP atasnya |
| MMU | Sumber Implementasi Terkait Modul Manajemen Memori Stack Protocol |
| net_tools | Alat jaringan mengimplementasikan file sumber, seperti kueri DNS, waktu jaringan, ping, telnet, dll. |
| netif | Menerapkan file sumber untuk kartu jaringan dan antarmuka terkait manajemen perutean |
| pelabuhan | Protokol Stack Migrasi Terkait File Sumber |
| PPP | PPP Link Lapisan Lapisan Sumber Implementasi Sumber File, termasuk file sumber implementasi dari keluarga protokol seperti LCP/IPCP/CHAP/PAP, dll. |
| Tcpserverforstacktesting | Server TCP yang digunakan untuk pengujian tumpukan protokol, IDE dikembangkan untuk VS2015, dan sistem targetnya adalah Win7 dan di atasnya |
| test_code | File verifikasi prinsip panggilan PPP di bawah Linux |
Tumpukan Protokol mendukung seri MAINSTREAM CORTEX MCUS dan mendukung IDE umum seperti Keil MDK dan IAR. Tugas inti transplantasi adalah untuk menyelesaikan penulisan dan adaptasi lapisan simulasi RTOS. Untuk instruksi porting terperinci, silakan merujuk ke artikel "ONPS Network Protocol Stack Migrasi dan Instruksi Penggunaan v1.0", klik di sini untuk mengunduh. Deskripsi ini memberikan contoh porting untuk dua platform perangkat keras, STM32F103RCT6 dan STM32F407VET6. Setiap sampel masing-masing adalah rt-thread dan ucosii. Proyek sampel telah mengalami pengujian internal yang ketat dan dapat digunakan secara langsung.
Jika Anda tidak memiliki banyak waktu, atau proyek sampel tidak cocok dengan platform target Anda, Anda dapat secara langsung merujuk ke dokumen panduan umum "OPS Stack Migration Manual" untuk migrasi Stack Protokol.
Untuk dokumen panduan umum untuk pengembangan tumpukan protokol, silakan merujuk ke "OPS Stack API Interface Manual" dan "OPS Stack User Manual".
Platform STM32F407VET6 : Sampel Transplantasi Transplantasi RT-Thread UCOS-II Sampel
Platform Qinheng CH32V307 : Sampel Transplantasi Hongmeng Liteos-M Transplantasi Sampel Transplantasi RT-Thread RT-Thread Sampel
Anda dapat mengunjungi situs web resmi tumpukan ONP kapan saja untuk mendapatkan informasi yang relevan seperti kemajuan pengembangan tumpukan protokol, rencana tindak lanjut, versi terbaru, dll.
Jika Anda menghadapi masalah atau saran selama penggunaan, Anda dapat pergi ke komunitas komunikasi ONPS Stack untuk membuat saran atau pertanyaan Anda, dan rilis versi baru juga akan segera diberitahukan di komunitas komunikasi.
Anda juga dapat bergabung dengan grup QQ untuk komunikasi teknis online: 
Lisensi Apache 2.0 Perjanjian Lisensi Sumber Terbuka
Agar proyek dapat melanjutkan dan mengharapkan dukungan Anda, Anda dapat memindai kode QR di bawah ini untuk menyumbang ke proyek ini melalui Alipay/WeChat:

