Портирование приложений на основе Linux на платформу uC/OS-II
Я планирую внедрить веб-сервер Hiawatha на платформе, отличной от Linux, которая представляет собой ОСРВ ОС uC/OS-II.
Мне нужна помощь для переноса Linux-зависимых API на платформу RTOS.
Пожалуйста, позвольте мне, если уже есть библиотеки для сборки, которые я могу использовать для портирования Linux на RTOS.
Заранее спасибо
1 ответ
Любой код, который использует не только стандартную библиотеку C, потребует некоторых усилий по переносу - степень, в которой будут выполняться нестандартные и специфичные для ОС библиотеки и вызовы, будет определять требуемое усилие или даже возможность такого порта.
Большинству кода Linux любой сложности потребуется POSIX API, а сетевой код, вероятно, будет использовать сокеты BSD. Многопоточный код также может использовать pthreads. У uC/OS-II нет ни одного из них; он касается только планирования, синхронизации, синхронизации и межпроцессного взаимодействия; это ядро планирования, а не полноценная ОС в том же смысле, что и Linux - у нее даже нет файловой системы - требование большей части кода Linux. Конечно, добавление дополнительных библиотек и расширений может предоставить вам все, что вам может понадобиться.
Более того, простой планировщик уровня "один поток на приоритет" в uC/OS-II затруднит планирование типичного многопоточного кода Linux так, как задумано. Большинство ОСРВ (включая uC/OS-III) поддерживают циклическое / временное планирование задач с одинаковым уровнем приоритета, но uC/OS-II - нет; возможно, делая его непригодным для этой задачи.
Что-то более сложное, что uC/OS-II может быть в порядке, или, возможно, использование кода, более подходящего для uC/OS-II, возможно. eCos, например, является гораздо более полной ОСРВ для встроенных систем; он с открытым исходным кодом и включает в себя API POSIX, поддержку файловой системы и API сокетов. Было бы гораздо проще перенести код Linux на это. Точно так же существует множество облегченных примеров встроенных веб-серверов, которые, вероятно, больше подходят для uC/OS-II и других простых ОСРВ, или даже вообще не содержат ОС. Например, LwIP - это стек TCP/IP для небольших встроенных систем, для которых существуют порты uC/OS-II и для которых есть примеры веб-серверов.
Дело в том, что Linux для uC/OS-II несопоставимы; один требует < 10Kb кода, другой имеет минимальный размер около 4Mb! Чтобы заставить код Linux работать в такой системе, вам потребуется добавить много дополнительного кода для предоставления отсутствующих сервисов, что может оказаться невозможным на вашей целевой платформе.
[Изменить: 08 июля 2012]
Рассматривали ли вы возможность использования собственного стека TCP/IP Micrium и надстройки для веб-сервера µC/HTTP? Вероятно, лучше интегрироваться в uC/OS-II и обеспечивать лучшую производительность, чем сторонний код, не относящийся к RTOS.