Мухи отдельно, котлеты тоже. Итак, что такое ОСь:
* ОСь - это НЕ
-- файловая система
-- USB
-- TCP/IP
-- компилятор, линкер, make, etc
-- IDE
-- что-то еще аналогичное
* ОСь - ЭТО
-- управление памятью
….. malloc()
….. callock()
….. free()
….. memory pool, или fixed-size-blocks allocation
http://en.wikipedia.org/wiki/Memory_pool
-- управление процессами
-- межпроцессное взаимодействие
….. семафоры
….. мютексы
….. сигналы (редко применяются в embedded системах)
….. различные механизмы обмена данными между процессами – очереди сообщений, совместно используемая память и пр.
Основное назначение ОСи:
* поддержка стандартных механизмов взаимодействия между частями кода, исполняемого на машине.
Если писать программу для какого-то сложного устройства целиком, например USB + Ethernet + файловая система + GUI, и рассматривать эту программу как одно целое – сложность такой программы не даст отладить ее до конца.
По этому на практике разбивают программу на куски, и эти куски взаимодействуют между собой ограниченным числом стандартных способов, а внутри себя каждый кусок живет сам по себе.
Оси бывают разные: вытесняющая многозадачность, кооперативная многозадачность, много чего еще
http://ru.wikipedi …0%BE%D1%81%D1%82%D1%8C
Очень часто файловая система, USB, TCP/IP тесно интегрированы с Осью, и внешнему наблюдателю кажется, что это одно и то же, но это не так.
Цель разработчиков – иметь некую универсальную Ось, к которой можно прикрутить различные компоненты из своих | чужих проектов. Цель продавцов Осей – сделать так, чтобы ты не забыл кроме самой Оси купить и USB, TCP/IP и т.д.
Цель продавцов компиляторов еще страшнее – чтобы Ось и ее компоненты жили только в одной правильное IDE.
В этой кровавой схватке есть некие правила приличия – общепринятые стандарты и методы. Они происходят из здравого смысла и исторически сложившихся вещей. Все их придерживаются. Многие и многие Оси сильно похожи друг на друга, но переносимости кода в режиме «нажми на кнопку – получишь результат» почти никогда нет.
uCOS – не зависит от компиляторов, работает «на всем, что шевелится».
Keil – его Ось берет свое начало из uCOS + LwIP, в настоящее время уже сильно докручена. Среда и компилер у Keil просто отличные, времени сэкономите немало, но вот перескочить на другую архитектуру или другу среду будет непросто.
Выбор можете сделать только Вы. Внимательно осознайте Ваши цели и поймите:
* быстрый старт можно означать немало неоптимальностей в решении, которые Вы просто не успеете понять
* академический, правильный старт – очень часто коммерческий проигрыш в нашем суровом мире. Ибо Вы будете не первым.
Думать, думать, и еще раз думать. Пробовать, читать, и еще раз думать.
На этом разрешите воскресную проповедь считать законченной :)