Обратите внимание, что ваш вопрос довольно общий. Есть много различий в деталях.
Одним из самых больших является формат вашего двоичного файла: большинство двоичных файлов RTEMS статически связаны друг с другом. У вас есть только один большой двоичный файл, содержащий вашу систему и приложение. Поддерживается некоторая динамическая загрузка, но это не тот случай, который используется большинством пользователей.
Как уже упоминалось, мой nm в комментариях RTEMS имеет много API POSIX (по крайней мере, встроенный поднабор). Таким образом, вы можете использовать тот же API, что и в Linux.
Большое отличие состоит в том, что RTEMS имеет глобальное адресное пространство (для большинства целей). Таким образом, у вас нет разделения между задачами. Это затрудняет отладку ошибок указателей.
Также есть разница: большинство встроенных систем предназначены для долго работающих приложений. В таких приложениях (независимо от того, работаете ли вы в Linux, RTEMS или в любой другой системе), вы должны быть осторожны, чтобы очистить свои данные (закрыть файлы, освободить память и т. Д.). В Linux (или других системах класса рабочего стола) у вас есть процессы, и ядро очищает все ресурсы после завершения вашего процесса. Хотя вы можете создавать потоки в RTEMS, никто не очищается после выхода из потока.