Это было примерно в 2006 году из -за требований проекта, я начал связываться с LWIP, иностранным стеком протоколов TCP/IP с иностранным исходным кодом, используемым в системах микроконтроллеров, и воспользовался этой возможностью, чтобы создать мою первую книгу, напечатанную в типе свинца - «Встроенная сетевая система - на основе серии Atmel Arm7». Ответ этой книги довольно хорош. Многие люди прислали мне MSN (жаль, что такой хороший инструмент обмена мгновенными сообщениями был отброшен Microsoft, и многие контакты потеряли контакты) или вопросы, связанные с консультациями по электронной почте. В моем первоначальном плане письма публикация этой книги - только начало, и я напишу вторую книгу следующей - систему введения в трансплантацию, применение, проектирование и реализацию стека протоколов PPP, содержащейся в LWIP. Но все пошло против моих желаний, эта книга была отложена, и этот прыжок занял двенадцать лет ...
Если вы внимательно думаете об этом, есть две основные причины задержки в первую очередь: во -первых, слишком мало времени, чтобы быть одноразовым из -за семьи, работы и т. Д.; Во -вторых, отсутствие достаточных знаний и технических запасов, связанных с протоколом ГЧП, приводит к недостаточной уверенности, страху и стагнации. Но этот инцидент всегда был для меня сожалением. Двенадцать лет не являются ни длинными, ни короткими, но их достаточно, чтобы превратить сожаления в моем сердце в маленькое семя и превратиться в высокое дерево снов.
Теперь мир прибыл в 20 -е годы, когда эпидемия бушевает. Мое одноразовое время увеличилось, и мои технические возможности далеко не сравнимы с возможностями прошлого. Пришло время, чтобы дерево мечты расцвело и принести плоды. Оглядываясь назад, я даже не вошел в отрасль в течение нескольких лет и имел ограниченные технические возможности. Я мог бы стоять только на плечах великого мастера, чтобы изучить, как пересадить и использовать LWIP, и я даже не осмелился дотронуться до стека ГЧП. Теперь, если бы он продолжил работу более десяти лет назад, то эта штука была бы бессмысленной. Основываясь на точном понимании моей собственной технической силы, я решил создать полный стек сетевого протокола с нуля. Наконец, в течение 6 месяцев стек протоколов ONPS (ONPS, Open Net Stack Protocol) завершил начальную разработку и прошел внутренний тест. Более десяти лет сожалений выплачиваются сегодня. Кроме того, после более чем 20 -летнего опыта у меня наконец -то мечтаю сделать основное базовое программное обеспечение в моем сердце. Теперь эти две мечты также вознаграждены.
Когда новые иволги впервые поют, неизбежно будет много неудовлетворительных вещей. Открытый исходный код может быть разделен, разделен и изучен с теми, кому нравятся их интересы. Благодаря этим строгим методам он может быть быстро повторен и быстро созрел, и ожидается, что он будет сопоставим с LWIP.
ONPS является открытым исходным кодом и полностью разработанным стеком внутренних сетевых протоколов, подходящий для систем микроконтроллеров с ограниченными ресурсами, обеспечивает полную реализацию семейства протоколов Ethernet/PPP/TCP/IP и предоставляет сетевые инструменты, такие как SNTP, DNS и PING. Он поддерживает приложение DHCP Dynamic IP -адреса в среде Ethernet, а также поддерживает динамические и статические таблицы маршрутизации. Стек протоколов также инкапсулирует реализацию слоя гнезда Беркли. Этот слой не разработан и реализуется полностью в соответствии со стандартом гнезда Беркли. Вместо этого, основываясь на моем предыдущем опыте программирования сокетов, я перепродажу и определяю набор общих функций интерфейса сокета с целью содействия использования пользователей и упрощения пользовательского кодирования:
Стек протоколов упрощает некоторые утомительные операции, необходимые для традиционного программирования гнезда BSD, и изменяет некоторые ненужные данные операции на базовую реализацию, такие как модель Select/опрос, блокировка и не блокировка операций чтения и записи. Упрощение не означает опрокидывание. Основное определение, основные параметры и методы использования функций интерфейса сокета не изменились. Вы можете быстро начать работу и использовать розетки Onps Stack на основе вашего предыдущего опыта и привычек программирования. Нет необходимости уделять слишком много внимания к дне стека протоколов. Использование программирования Socket API может полностью удовлетворить потребности сложных приложений связи, а не использовать свой набор функций интерфейса для достижения той же цели, как и LWIP.
Чтобы адаптироваться к чрезвычайно ненормальному использованию памяти систем микроконтроллеров, стек протоколов ONPS считался использованием нулевой копии при записи в начале его дизайна. В процессе передачи данных на уровне пользователя в протокол нижнего уровня стек протоколов использует технологию списка списка BUF, чтобы связать их вместе, пока они не будут отправлены без каких-либо операций копирования памяти. Кроме того, стек протоколов использует алгоритм приятеля для обеспечения безопасных и надежных функций управления динамической памяти, чтобы максимизировать использование памяти во время работы стека протоколов и минимизировать фрагментацию памяти.
В отличие от 2000 -х и начала 1910 -х годов, когда UCOSII и другие RTO не были популярны в больших масштабах в сценариях применения микроконтроллеров, а системы спереди и бэкэнд все еще были популярны, разработчики стали основным направлением для использования RTO в большинстве сценариев применения. Следовательно, стек протоколов не поддерживал передние и задние режимы в начале своего дизайна, и его архитектурный дизайн был основан на популярных RTO (RT-Thread, UCOSII/III и т. Д.). Основной задачей трансплантации стека протоколов является естественно, чтобы написать связанные функции адаптационного уровня ОС для разных TOS. Конечно, если у вас есть чрезвычайно конкретные сценарии применения и вам нужно переносить стек ONPS в микроконтроллер, который использует передний и бэкэнд-режим, я предлагаю сохранить логику обработки коммуникации слоя протокола под TCP/UDP и настроить архитектуру системы верхнего уровня, чтобы адаптироваться к целевой режиме работы системы.
Проектирование стека ONPS реализует полный набор моделей протокола TCP/IP. От слоя канала данных до уровня IP, до уровня TCP/UDP и уровня сокета Berkeley, и, наконец, и, наконец, собственного уровня приложения пользователя, стек ONPS достигает полного покрытия стека, что может соответствовать большинству потребностей в сетевом программировании. Его архитектура заключается в следующем: 
Видно, что это ничем не отличается от традиционной модели программирования сети. Пользователи продолжают использовать API сокета для написания общих приложений TCP и UDP -сети. В то же время вы также можете использовать несколько сетевых инструментов, предоставленных стеком протоколов для выполнения времени сети, запроса DNS и других операций.
| имя | описывать |
|---|---|
| BSD | Исходный файл реализован соответствующей функцией интерфейса уровня сокетов Беркли |
| Ethernet | Связанные исходные файлы реализации для семей Ethernet, такие как Ethernet-II/ARP и EMAC Layer, DHCP-клиент и т. Д. |
| включать | Файл заголовка стека протоколов |
| IP | Соответствующие исходные файлы реализации IP и его верхний семейство протоколов ICMP/TCP/UDP |
| MMU | Связанные файлы исходных файлов реализации модуля управления памятью стека протоколов |
| net_tools | Сетевые инструменты реализуют исходные файлы, такие как запрос DNS, сетевые сроки, Ping, Telnet и т. Д. |
| netif | Реализация исходных файлов для сетевых карт и маршрутизации, связанных с управлением интерфейсами |
| порт | Исходные файлы, связанные с миграцией стека протоколов |
| ППС | Связанные исходные файлы реализации Ссылки PPP, включая исходные файлы реализации семейств протоколов, такие как LCP/IPCP/CHAP/PAP и т. Д. |
| TcpserverforStackTesting | TCP -сервер, используемый для тестирования стека протоколов, IDE разработан для VS2015, а целевая система - Win7 и выше |
| test_code | Файл проверки принципа принципа PPP на Linux |
Стек протоколов поддерживает Mainstream Arm Cortex Series Series и поддерживает обычные IDE, такие как Keil MDK и IAR. Основной задачей трансплантации является завершение написания и адаптации имитационного уровня RTOS. Для получения подробных инструкций по портированию, пожалуйста, обратитесь к статье «Инструкции по миграции и использованию стека Onps Network Protocol Protocol В этом описании приведены примеры порта для двух аппаратных платформ, STM32F103RCT6 и STM32F407VET6. Каждый образец предназначен для RT-Thread и UCOSII RTO соответственно. Проект выборки подвергся строгому внутреннему тестированию и может быть использован напрямую.
Если у вас не так много времени, или образцовый проект не соответствует вашей целевой платформе, вы можете напрямую ссылаться на общий документ «Руководство по миграции стека Ops» для миграции стека протоколов.
Для общих руководящих документов для разработки стека протоколов, пожалуйста, обратитесь к «Руководству по интерфейсу ops api стека» и «Руководство пользователя стека Ops».
Платформа STM32F407VET6 : образец трансплантата RT-Thread.
Платформа Qinheng CH32V307 : Hongmeng Liteos-M Трансплантационный образец. Образец трансплантации трансплантации RT-Thread.
Вы можете в любое время посетить официальный веб-сайт стека ONPS, чтобы получить соответствующую информацию, такую как ход разработки стека протоколов, планы последующего наблюдения, последняя версия и т. Д.
Если вы сталкиваетесь с какими -либо проблемами или предложениями во время использования, вы можете перейти в сообщество связи ONPS Stack, чтобы сделать ваши предложения или вопросы, а выпуск новой версии также будет немедленно уведомлен в сообществе связи.
Вы также можете присоединиться к группе QQ для онлайн -технического общения: 
Лицензионное соглашение Apache License 2.0
Чтобы проект продолжил и ожидал вашей поддержки, вы можете сканировать QR -код ниже, чтобы пожертвовать в этот проект через Alipay/WeChat:

