ประมาณปี 2549 เนื่องจากข้อกำหนดของโครงการฉันเริ่มติดต่อ LWIP ซึ่งเป็นสแต็กโปรโตคอล TCP/IP โอเพนซอร์สที่ใช้ในระบบไมโครคอนโทรลเลอร์และใช้โอกาสนี้ในการสร้างหนังสือเล่มแรกของฉันที่พิมพ์ในประเภทตะกั่ว - "การออกแบบระบบเครือข่ายฝังตัว - ตามชุด ATMEL ARM7" การตอบสนองของหนังสือเล่มนี้ค่อนข้างดี หลายคนส่ง MSN มาให้ฉัน (เป็นเรื่องน่าเสียดายที่เครื่องมือส่งข้อความโต้ตอบแบบทันทีที่ดีนั้นถูกทอดทิ้งโดย Microsoft และผู้ติดต่อจำนวนมากสูญเสียการติดต่อ) หรือคำถามที่เกี่ยวข้องกับการให้คำปรึกษาทางอีเมล ในแผนการเขียนต้นฉบับของฉันการตีพิมพ์หนังสือเล่มนี้เป็นเพียงจุดเริ่มต้นและฉันจะเขียนหนังสือเล่มที่สองถัดไป - การแนะนำระบบเกี่ยวกับการปลูกถ่ายแอปพลิเคชันการออกแบบและการใช้งานของสแต็คโปรโตคอล PPP ที่มีอยู่ใน LWIP แต่สิ่งต่าง ๆ ขัดกับความปรารถนาของฉันหนังสือเล่มนี้ล่าช้าและการกระโดดครั้งนี้ใช้เวลาสิบสองปี ...
หากคุณคิดอย่างรอบคอบมีสองเหตุผลหลักสำหรับความล่าช้าในสถานที่แรก: ก่อนอื่นมีเวลาน้อยเกินไปที่จะทิ้งเนื่องจากครอบครัวทำงาน ฯลฯ ; ประการที่สองการขาดความรู้ที่เพียงพอและการสำรองทางเทคนิคที่เกี่ยวข้องกับโปรโตคอล PPP นำไปสู่ความมั่นใจไม่เพียงพอความกลัวและความซบเซา แต่เหตุการณ์นี้ทำให้ฉันเสียใจเสมอ สิบสองปีไม่นานหรือสั้น แต่ก็เพียงพอที่จะเปลี่ยนความเสียใจในหัวใจของฉันให้กลายเป็นเมล็ดเล็ก ๆ และเติบโตเป็นต้นไม้แห่งความฝันที่สูงตระหง่าน
ตอนนี้โลกมาถึงในยุค 20 เมื่อการแพร่ระบาดของโรคกำลังโหมกระหน่ำ เวลาที่ใช้แล้วทิ้งของฉันเพิ่มขึ้นและความสามารถทางเทคนิคของฉันนั้นยังห่างไกลจากความใกล้เคียงกับอดีต ถึงเวลาสำหรับต้นไม้แห่งความฝันที่จะเบ่งบานและเป็นผลไม้ เมื่อมองย้อนกลับไปที่จุดเริ่มต้นฉันไม่ได้เข้าสู่อุตสาหกรรมเป็นเวลาสองสามปีและมีความสามารถทางเทคนิคที่ จำกัด ฉันสามารถยืนอยู่บนไหล่ของเจ้านายผู้ยิ่งใหญ่เพื่อศึกษาวิธีการปลูกถ่ายและใช้ LWIP และฉันก็ไม่กล้าที่จะสัมผัสสแต็ค PPP ตอนนี้ถ้ามันยังคงทำงานต่อไปเมื่อกว่าสิบปีที่แล้วสิ่งนี้จะไม่มีความหมาย จากความเข้าใจที่ถูกต้องเกี่ยวกับความแข็งแกร่งทางเทคนิคของฉันเองฉันตัดสินใจที่จะสร้างสแต็คโปรโตคอลเครือข่ายที่สมบูรณ์ตั้งแต่เริ่มต้น ในที่สุดกว่า 6 เดือนสแต็กโปรโตคอล ONPS (ONPS, Open Net Protocol Stack) เสร็จสิ้นการพัฒนาเบื้องต้นและผ่านการทดสอบภายใน มากกว่าสิบปีของความเสียใจที่ได้รับการจ่ายในวันนี้ นอกจากนี้หลังจากประสบการณ์มานานกว่า 20 ปีในที่สุดฉันก็มีความฝันที่จะสร้างซอฟต์แวร์พื้นฐานในใจของฉัน ตอนนี้ความฝันทั้งสองนี้ได้รับรางวัลเช่นกัน
เมื่อ Orioles ใหม่กำลังร้องเพลงเป็นครั้งแรกจะมีสิ่งที่ไม่น่าพอใจมากมาย โอเพ่นซอร์สสามารถแบ่งปันแบ่งปันและศึกษากับผู้ที่ชอบความสนใจของพวกเขา ด้วยวิธีการที่เข้มงวดเหล่านี้สามารถทำซ้ำได้อย่างรวดเร็วและครบกำหนดอย่างรวดเร็วและคาดว่าจะเทียบได้กับ LWIP
ONPS เป็นโอเพ่นซอร์สและสแต็กเครือข่ายในประเทศที่พัฒนาขึ้นอย่างสมบูรณ์ซึ่งเหมาะสำหรับระบบไมโครคอนโทรลเลอร์ที่ จำกัด ทรัพยากรให้การใช้งานที่สมบูรณ์ของตระกูล Ethernet/PPP/TCP/IP โปรโตคอลและให้เครื่องมือเครือข่ายเช่น SNTP, DNS และ PING รองรับแอปพลิเคชันที่อยู่ IP DHCP แบบไดนามิกในสภาพแวดล้อมอีเธอร์เน็ตและยังรองรับตารางการกำหนดเส้นทางแบบไดนามิกและแบบคงที่ สแต็กโปรโตคอลยังห่อหุ้มด้วยการใช้เลเยอร์ซ็อกเก็ต Berkeley เลเยอร์นี้ไม่ได้ออกแบบและนำไปใช้อย่างสมบูรณ์ตามมาตรฐาน Sockets Berkeley แต่ขึ้นอยู่กับประสบการณ์การเขียนโปรแกรมซ็อกเก็ตก่อนหน้าของฉันฉันได้ทำการปรับเปลี่ยนและกำหนดชุดฟังก์ชั่นอินเทอร์เฟซซ็อกเก็ตทั่วไปโดยมีเป้าหมายการออกแบบเพื่ออำนวยความสะดวกในการใช้งานของผู้ใช้และทำให้การเข้ารหัสผู้ใช้ง่ายขึ้น:
สแต็กโปรโตคอลช่วยลดความซับซ้อนของการดำเนินการที่น่าเบื่อบางอย่างที่จำเป็นสำหรับการเขียนโปรแกรมซ็อกเก็ต BSD แบบดั้งเดิมและเปลี่ยนแปลงรายละเอียดการดำเนินการที่ไม่จำเป็นบางอย่างไปสู่การดำเนินการพื้นฐานเช่นรูปแบบการเลือก/แบบสำรวจการปิดกั้นและไม่ปิดกั้นการอ่านและการเขียน การทำให้เข้าใจง่ายไม่ได้หมายถึงการพลิกคว่ำ คำจำกัดความพื้นฐานพารามิเตอร์หลักและวิธีการใช้งานของฟังก์ชันอินเตอร์เฟสซ็อกเก็ตไม่เปลี่ยนแปลง คุณสามารถเริ่มต้นและใช้ซ็อกเก็ตสแต็ค onps ได้อย่างรวดเร็วตามประสบการณ์และพฤติกรรมการเขียนโปรแกรมก่อนหน้าของคุณ ไม่จำเป็นต้องให้ความสนใจกับด้านล่างของสแต็คโปรโตคอลมากเกินไป การใช้การเขียนโปรแกรมซ็อกเก็ต API สามารถตอบสนองความต้องการของแอพพลิเคชั่นการสื่อสารที่ซับซ้อนแทนที่จะใช้ชุดฟังก์ชันอินเตอร์เฟสที่กำหนดเองเพื่อให้บรรลุเป้าหมายเดียวกันเช่น LWIP
เพื่อที่จะปรับให้เข้ากับการใช้หน่วยความจำที่ผิดปกติอย่างมากของระบบไมโครคอนโทรลเลอร์สแต็กโปรโตคอล ONPS ได้รับการพิจารณาว่าใช้สำเนาเป็นศูนย์ในการเขียนที่จุดเริ่มต้นของการออกแบบ ในระหว่างกระบวนการส่งข้อมูลระดับผู้ใช้ไปยังโปรโตคอลระดับล่างโปรโตคอลสแต็กใช้เทคโนโลยีรายการที่เชื่อมโยงกับรายการ BUF เพื่อเชื่อมโยงเข้าด้วยกันจนกว่าพวกเขาจะถูกส่งออกโดยไม่มีการคัดลอกหน่วยความจำ นอกจากนี้โปรโตคอลสแต็กใช้อัลกอริทึมเพื่อนเพื่อให้ฟังก์ชั่นการจัดการหน่วยความจำแบบไดนามิกที่ปลอดภัยและเชื่อถือได้เพื่อเพิ่มการใช้หน่วยความจำในระหว่างการทำงานของสแต็กโปรโตคอลและลดการกระจายตัวของหน่วยความจำ
แตกต่างจากในยุค 2000 และต้นปี 1910 เมื่อ UCOSII และ RTO อื่น ๆ ไม่ได้รับความนิยมในขนาดใหญ่ในสถานการณ์แอปพลิเคชันของไมโครคอนโทรลเลอร์และระบบด้านหน้าและแบ็กเอนด์ยังคงเป็นที่นิยม ดังนั้นสแต็กโปรโตคอลจึงไม่รองรับโหมดส่วนหน้าและส่วนหลังในตอนต้นของการออกแบบและการออกแบบสถาปัตยกรรมนั้นขึ้นอยู่กับ RTO ที่ได้รับความนิยม (RT-Thread, UCOSII/III ฯลฯ ) ภารกิจหลักของการปลูกถ่ายสแต็กโปรโตคอลคือการเขียนฟังก์ชั่นการปรับเลเยอร์การปรับระบบปฏิบัติการที่เกี่ยวข้องตามธรรมชาติสำหรับ TOS ที่แตกต่างกัน แน่นอนว่าหากคุณมีสถานการณ์แอปพลิเคชันที่เฉพาะเจาะจงมากและจำเป็นต้องพอร์ต ONPS stack ไปยังไมโครคอนโทรลเลอร์ที่ใช้โหมดด้านหน้าและแบ็คเอนด์ข้อเสนอแนะของฉันคือการรักษาตรรกะการประมวลผลการสื่อสารของชั้นโปรโตคอลภายใต้ TCP/UDP และปรับสถาปัตยกรรมระบบระดับบนเพื่อปรับให้เข้ากับโหมดระบบเป้าหมาย
การออกแบบสแต็ก ONPS ใช้ชุดรุ่น TCP/IP ที่สมบูรณ์แบบ จากเลเยอร์ข้อมูลลิงค์ไปจนถึงเลเยอร์ IP ไปจนถึงเลเยอร์ TCP/UDP และเลเยอร์ซ็อกเก็ต Berkeley ด้านบนและในที่สุดก็เป็นเลเยอร์แอปพลิเคชันการสื่อสารของผู้ใช้เอง ONPS สแต็กได้รับการครอบคลุมสแต็กเต็มรูปแบบซึ่งสามารถตอบสนองความต้องการการเขียนโปรแกรมเครือข่ายส่วนใหญ่ สถาปัตยกรรมของมันมีดังนี้: 
จะเห็นได้ว่ามันไม่แตกต่างจากรูปแบบการเขียนโปรแกรมเครือข่ายแบบดั้งเดิม ผู้ใช้ยังคงใช้ซ็อกเก็ต API เพื่อเขียนแอปพลิเคชั่นเครือข่าย TCP และ UDP ทั่วไป ในเวลาเดียวกันคุณสามารถใช้เครื่องมือเครือข่ายหลายอย่างที่จัดทำโดยสแต็กโปรโตคอลเพื่อดำเนินการตามเวลาเครือข่ายแบบสอบถาม DNS และการดำเนินการอื่น ๆ
| ชื่อ | อธิบาย |
|---|---|
| BSD | ไฟล์ต้นฉบับถูกนำไปใช้โดยฟังก์ชั่นอินเทอร์เฟซที่เกี่ยวข้องของเลเยอร์ซ็อกเก็ต Berkeley |
| อีเธอร์เน็ต | ไฟล์แหล่งที่มาการใช้งานที่เกี่ยวข้องสำหรับตระกูลโปรโตคอลอีเธอร์เน็ตเช่น Ethernet-II/ARP และ EMAC Layer, DHCP ไคลเอ็นต์ ฯลฯ |
| รวม | ไฟล์ส่วนหัวโปรโตคอลสแต็ก |
| ip | ไฟล์แหล่งที่มาการใช้งานที่เกี่ยวข้องของ IP และตระกูลโปรโตคอล ICMP/TCP/UDP ตอนบน |
| MMU | ไฟล์ต้นฉบับการใช้งานที่เกี่ยวข้องของโมดูลการจัดการหน่วยความจำสแต็กโปรโตคอล |
| net_tools | เครื่องมือเครือข่ายใช้ไฟล์ต้นฉบับเช่นแบบสอบถาม DNS, เวลาเครือข่าย, ping, telnet ฯลฯ |
| การใช้ netif | ใช้ไฟล์ต้นฉบับสำหรับอินเทอร์เฟซที่เกี่ยวข้องกับการจัดการเส้นทางและการกำหนดเส้นทาง |
| ท่าเรือ | โปรโตคอลสแต็คการย้ายข้อมูลที่เกี่ยวข้อง |
| PPP | PPP Link Layer ไฟล์แหล่งที่มาที่เกี่ยวข้องกับการใช้งานรวมถึงไฟล์ต้นฉบับการใช้งานของตระกูลโปรโตคอลเช่น LCP/IPCP/Chap/PAP ฯลฯ |
| tcpserverforstacktesting | เซิร์ฟเวอร์ TCP ที่ใช้สำหรับการทดสอบสแต็กโปรโตคอล IDE ได้รับการพัฒนาสำหรับ VS2015 และระบบเป้าหมายคือ Win7 ขึ้นไป |
| test_code | ไฟล์การตรวจสอบหลักการโทรแบบ PPP ภายใต้ Linux |
สแต็คโปรโตคอลรองรับซีรี่ส์แขนคอร์เท็กซ์ MCUS และรองรับ IDE ทั่วไปเช่น Keil MDK และ IAR ภารกิจหลักของการปลูกถ่ายคือการเขียนและการปรับตัวของเลเยอร์การจำลอง RTOS ให้เสร็จสมบูรณ์ สำหรับคำแนะนำในการพอร์ตโดยละเอียดโปรดดูบทความ "ONPS Network Protocol การโยกย้ายสแต็กและคำแนะนำการใช้งาน v1.0" คลิกที่นี่เพื่อดาวน์โหลด คำอธิบายนี้ให้ตัวอย่างการพอร์ตสำหรับสองแพลตฟอร์มฮาร์ดแวร์ STM32F103RCT6 และ STM32F407VET6 แต่ละตัวอย่างมีไว้สำหรับ RT-Thread และ UCOSII RTOS ตามลำดับ โครงการตัวอย่างได้รับการทดสอบภายในที่เข้มงวดและสามารถใช้โดยตรง
หากคุณไม่มีเวลามากหรือโครงการตัวอย่างไม่ตรงกับแพลตฟอร์มเป้าหมายของคุณคุณสามารถอ้างถึงเอกสารคำแนะนำทั่วไปได้โดยตรง "คู่มือการโยกย้ายสแต็กสแต็ก" สำหรับการโยกย้ายสแต็กโปรโตคอล
สำหรับเอกสารคำแนะนำทั่วไปสำหรับการพัฒนาสแต็กโปรโตคอลโปรดดูที่ "คู่มืออินเตอร์เฟส OPS Stack API" และ "คู่มือผู้ใช้ OPS Stack"
STM32F407VET6 แพลตฟอร์ม : ตัวอย่างการปลูกถ่าย RT-Thread ตัวอย่าง UCOS-II ตัวอย่างการปลูกถ่าย
Qinheng CH32V307 แพลตฟอร์ม : Hongmeng Liteos-M ตัวอย่างตัวอย่างการปลูกถ่าย RT-Thread ตัวอย่างการปลูกถ่ายฟรี
คุณสามารถเยี่ยมชม เว็บไซต์อย่างเป็นทางการของ ONPS Stack ได้ตลอดเวลาเพื่อรับข้อมูลที่เกี่ยวข้องเช่นความคืบหน้าการพัฒนาของโปรโตคอลสแต็กแผนติดตามผลล่าสุด ฯลฯ
หากคุณพบปัญหาหรือข้อเสนอแนะใด ๆ ในระหว่างการใช้งานคุณสามารถไปที่ ชุมชนการสื่อสารของ ONPS Stack เพื่อให้คำแนะนำหรือคำถามของคุณและการเปิดตัวเวอร์ชันใหม่จะได้รับการแจ้งเตือนทันทีในชุมชนการสื่อสาร
นอกจากนี้คุณยังสามารถเข้าร่วมกลุ่ม QQ สำหรับการสื่อสารทางเทคนิคออนไลน์: 
Apache License 2.0 ข้อตกลงใบอนุญาตโอเพ่นซอร์ส
เพื่อให้โครงการดำเนินการต่อและคาดหวังการสนับสนุนของคุณคุณสามารถสแกนรหัส QR ด้านล่างเพื่อบริจาคให้กับโครงการนี้ผ่าน Alipay/WeChat:

