2006 년경 프로젝트 요구 사항으로 인해 마이크로 컨트롤러 시스템에 사용되는 외래 오픈 소스 TCP/IP 프로토콜 스택 인 LWIP에 연락하기 시작 했으며이 기회를 통해 리드 유형 (Atmel ARM7 시리즈를 기반으로 한 임베디드 네트워크 시스템 설계)으로 인쇄 된 첫 번째 책을 작성했습니다. 이 책의 반응은 꽤 좋습니다. 많은 사람들이 저에게 MSN을 보냈습니다 (Microsoft에 의해 많은 인스턴트 메시징 도구가 버려졌으며 많은 연락처가 연락처를 잃었습니다) 또는 이메일 상담 관련 질문을 보냈습니다. 저의 원래 작문 계획 에서이 책의 출판은 시작에 불과하며, LWIP에 포함 된 PPP 프로토콜 스택의 이식, 응용 프로그램, 설계 및 구현에 대한 시스템 소개 다음 책을 쓸 것입니다. 그러나, 내 소원에 반대했고,이 책은 지연되었고,이 점프는 12 년이 걸렸습니다 ...
당신이 그것에 대해 신중하게 생각한다면, 처음에는 지연에 대한 두 가지 주된 이유가 있습니다. 첫째, 가족, 직장 등으로 인해 일회용이 너무 적습니다.; 둘째, PPP 프로토콜과 관련된 충분한 지식 및 기술 준비금이 부족하면 자신감, 두려움 및 정체가 충분하지 않습니다. 그러나이 사건은 항상 나에게 후회했다. 12 년은 길고 짧지는 않지만 내 마음 속의 후회를 작은 씨앗으로 바꾸고 우뚝 솟은 꿈의 나무로 자라기에 충분합니다.
이제 전염병이 격렬한 20 대에 세상이 도착했습니다. 일회용 시간이 증가했으며 기술 능력은 과거의 기술과 비교할 수 없습니다. 꿈의 나무가 꽃을 피우고 열매를 맺을 때입니다. 처음을 되돌아 보면서, 나는 몇 년 동안 업계에 들어 가지 않았고 기술 능력이 제한적이었습니다. 나는 Great Master의 어깨에 서서 LWIP를 이식하고 사용하는 방법을 연구하기 위해 서서 PPP 스택을 만지지도 않았습니다. 이제 10 년 전부터 일을 계속했다면이 일은 의미가 없을 것입니다. 내 자신의 기술 강점에 대한 정확한 이해를 바탕으로, 나는 처음부터 완전한 네트워크 프로토콜 스택을 구축하기로 결정했습니다. 마지막으로, 6 개월 동안 ONPS 프로토콜 스택 (ONP, Open Net Protocol Stack)은 초기 개발을 완료하고 내부 테스트를 통과했습니다. 오늘 10 년 이상 후회가 지급됩니다. 또한 20 년이 넘는 경험을 마친 후 마침내 핵심 기본 소프트웨어를 내 마음에 만드는 꿈을 꾸었습니다. 이제이 두 가지 꿈도 보상을받습니다.
새로운 오리올스가 처음 노래 할 때, 필연적으로 불만족스러운 많은 것들이있을 것입니다. 오픈 소스는 자신의 관심사를 좋아하는 사람들과 공유, 공유 및 연구 할 수 있습니다. 이러한 엄격한 방법을 통해 빠르게 반복되고 빠르게 성숙 될 수 있으며 LWIP와 비교할 수 있습니다.
ONPS는 리소스 제약 마이크로 컨트롤러 시스템에 적합한 오픈 소스 및 완전히 자체 개발 된 국내 네트워크 프로토콜 스택 스택으로 이더넷/PPP/TCP/IP 프로토콜 패밀리를 완벽하게 구현하고 SNTP, DNS 및 PIN과 같은 네트워크 도구를 제공합니다. 이더넷 환경에서 DHCP 동적 IP 주소 응용 프로그램을 지원하며 동적 및 정적 라우팅 테이블도 지원합니다. 프로토콜 스택은 또한 버클리 소켓 레이어 구현을 캡슐화합니다. 이 레이어는 버클리 소켓 표준에 따라 완전히 설계 및 구현되지 않았습니다. 대신, 이전 소켓 프로그래밍 환경을 기반으로 사용자의 사용을 용이하게하고 사용자 코딩을 단순화하는 설계 목표를 사용하여 일련의 공통 소켓 인터페이스 기능 세트를 재개하고 정의합니다.
이 프로토콜 스택은 기존 BSD 소켓 프로그래밍에 필요한 일부 지루한 작업을 단순화하고 일부 불필요한 작업 세부 정보를 선택/폴링 모델, 차단 및 비 차단 읽기 및 쓰기 작업과 같은 기본 구현으로 변경합니다. 단순화는 전복을 의미하지는 않습니다. 소켓 인터페이스 함수의 기본 정의, 기본 매개 변수 및 사용 방법은 변경되지 않았습니다. 이전 경험과 프로그래밍 습관을 기반으로 신속하게 시작하고 ONPS 스택 소켓을 사용할 수 있습니다. 프로토콜 스택의 바닥에 너무 많은주의를 기울일 필요가 없습니다. 소켓 API 프로그래밍을 사용하면 LWIP와 마찬가지로 맞춤형 인터페이스 기능 세트를 사용하지 않고 복잡한 통신 애플리케이션의 요구를 완전히 충족 할 수 있습니다.
마이크로 컨트롤러 시스템의 매우 비정상적인 메모리 사용에 적응하기 위해 ONPS 프로토콜 스택은 설계 시작시 작성시 0을 사용하는 것으로 간주되었습니다. 사용자 수준 데이터를 하위 수준 프로토콜로 전달하는 과정에서 프로토콜 스택은 BUF 목록 링크 된 목록 기술을 사용하여 메모리 복사 작업없이 전송 될 때까지이를 연결합니다. 또한 프로토콜 스택은 프로토콜 스택 작동 중에 메모리 활용을 최대화하고 메모리 조각화를 최소화하기 위해 Buddy Algorithm을 사용하여 안전하고 안정적인 동적 메모리 관리 기능을 제공합니다.
2000 년대와 1910 년대 초과는 달리 UCOSII 및 기타 RTO가 마이크로 컨트롤러의 응용 시나리오에서 대규모로 인기가 없었고 Front and Backend 시스템은 여전히 인기가 있었으며 개발자가 대부분의 응용 시나리오에서 RTO를 사용하도록 선택하는 주류가되었습니다. 따라서 프로토콜 스택은 설계 시작시 프론트 엔드 및 백엔드 모드를 지원하지 않았으며 건축 설계는 인기있는 RTO (RT-Stred, UCOSII/III 등)를 기반으로했습니다. 프로토콜 스택 이식의 주요 작업은 자연스럽게 다른 TOS에 대한 관련 OS 적응 계층 기능 기능을 작성하는 것입니다. 물론, 매우 구체적인 애플리케이션 시나리오가 있고 ONPS 스택을 전면 및 백엔드 모드를 채택하는 마이크로 컨트롤러로 포팅 해야하는 경우, TCP/UDP 하에서 프로토콜 레이어의 통신 처리 로직을 유지하고 대상 시스템 작동 모드에 적응하도록 상위 시스템 아키텍처를 조정하는 것이 좋습니다.
ONPS 스택 디자인은 전체 TCP/IP 프로토콜 모델 세트를 구현합니다. 데이터 링크 계층에서 IP 계층, TCP/UDP 계층 및 위의 버클리 소켓 레이어 및 사용자 자체 통신 애플리케이션 계층으로, ONPS 스택은 대부분의 네트워크 프로그래밍 요구를 충족시킬 수있는 풀 스택 커버리지를 달성합니다. 아키텍처는 다음과 같습니다. 
기존 네트워크 프로그래밍 모델과 다르지 않다는 것을 알 수 있습니다. 사용자는 소켓 API를 사용하여 일반적인 TCP 및 UDP 네트워크 응용 프로그램을 작성합니다. 동시에 프로토콜 스택에서 제공하는 여러 네트워크 도구를 사용하여 네트워크 타이밍, DNS 쿼리 및 기타 작업을 수행 할 수도 있습니다.
| 이름 | 설명하다 |
|---|---|
| BSD | 소스 파일은 버클리 소켓 레이어의 관련 인터페이스 함수에 의해 구현됩니다. |
| 이더넷 | 이더넷 -II/ARP 및 EMAC 계층, DHCP 클라이언트 등과 같은 이더넷 프로토콜 패밀리의 관련 구현 소스 파일 |
| 포함하다 | 프로토콜 스택 헤더 파일 |
| IP | IP의 관련 구현 소스 파일 및 상단 ICMP/TCP/UDP 프로토콜 패밀리 |
| MMU | 프로토콜 스택 메모리 관리 모듈의 관련 구현 소스 파일 |
| net_tools | 네트워크 도구는 DNS 쿼리, 네트워크 타이밍, 핑, 텔넷 등과 같은 소스 파일을 구현합니다. |
| 네티프 | 네트워크 카드 및 라우팅 관리 관련 인터페이스 용 소스 파일 구현 |
| 포트 | 프로토콜 스택 마이그레이션 관련 소스 파일 |
| PPP | PPP 링크 계층 관련 구현 소스 파일 (LCP/IPCP/PAP 등과 같은 프로토콜 패밀리의 구현 소스 파일 등) 등 |
| tcpserverforstacktesting | 프로토콜 스택 테스트에 사용되는 TCP 서버, IDE는 VS2015 용으로 개발되었으며 대상 시스템은 Win7 이상입니다. |
| test_code | Linux에서 PPP 다이얼링 원리 확인 파일 |
이 프로토콜 스택은 주류 암 피질 시리즈 MCU를 지원하고 Keil MDK 및 IAR과 같은 일반적인 IDE를 지원합니다. 이식의 핵심 작업은 RTOS 시뮬레이션 계층의 쓰기 및 적응을 완료하는 것입니다. 자세한 포팅 지침은 "ONPS 네트워크 프로토콜 스택 마이그레이션 및 사용 지침 v1.0"기사를 참조하십시오. 여기를 클릭하여 다운로드하십시오. 이 설명은 STM32F103RCT6 및 STM32F407VET6의 두 하드웨어 플랫폼에 대한 포팅 예제를 제공합니다. 각 샘플은 각각 RT- 스레드 및 UCOSII RTO 용입니다. 샘플 프로젝트는 엄격한 내부 테스트를 거쳤으며 직접 사용할 수 있습니다.
시간이 많지 않거나 샘플 프로젝트가 대상 플랫폼과 일치하지 않으면 프로토콜 스택 마이그레이션에 대한 일반 안내 문서 "Ops Stack Migration Manual"을 직접 참조 할 수 있습니다.
프로토콜 스택 개발에 대한 일반적인 지침 문서는 "OPS 스택 API 인터페이스 매뉴얼"및 "OPS 스택 사용자 매뉴얼"을 참조하십시오.
STM32F407VET6 플랫폼 : RT- 스레드 이식 샘플 UCOS-II 이식 샘플
Qinheng CH32V307 플랫폼 : Hongmeng Liteos-M 이식 샘플 프리 로스 이식 샘플 RT- 스레드 이식 샘플
언제든지 ONPS 스택의 공식 웹 사이트를 방문하여 프로토콜 스택의 개발 진행, 후속 계획, 최신 버전 등과 같은 관련 정보를 얻을 수 있습니다.
사용 중에 문제 나 제안이 발생하면 ONPS 스택 커뮤니케이션 커뮤니티 로 이동하여 제안이나 질문을 할 수 있으며 새 버전의 출시는 즉시 커뮤니케이션 커뮤니티에서 알림을받습니다.
온라인 기술 커뮤니케이션을 위해 QQ 그룹에 가입 할 수도 있습니다. 
Apache 라이센스 2.0 오픈 소스 라이센스 계약
프로젝트가 계속 지원되고 지원을 기대하려면 아래의 QR 코드를 스캔하여 Alipay/Wechat을 통해이 프로젝트에 기부 할 수 있습니다.

