Чем программирование в rtems отличается от Linux? - PullRequest
0 голосов
/ 03 октября 2019

Я новичок в программировании на rtem, и мне было интересно, чем эти два, rtems и linux, отличаются с точки зрения программирования. Я понимаю, что rtems - это операционная система реального времени, но если бы вы создавали приложение hello world, разве программа не была бы такой же?

Ответы [ 2 ]

0 голосов
/ 15 октября 2019

Значения по умолчанию для атрибутов POSIX для потоков не указаны в стандарте и могут различаться в зависимости от RTEMS и Linux.

0 голосов
/ 03 октября 2019

Обратите внимание, что ваш вопрос довольно общий. Есть много различий в деталях.

Одним из самых больших является формат вашего двоичного файла: большинство двоичных файлов RTEMS статически связаны друг с другом. У вас есть только один большой двоичный файл, содержащий вашу систему и приложение. Поддерживается некоторая динамическая загрузка, но это не тот случай, который используется большинством пользователей.

Как уже упоминалось, мой nm в комментариях RTEMS имеет много API POSIX (по крайней мере, встроенный поднабор). Таким образом, вы можете использовать тот же API, что и в Linux.

Большое отличие состоит в том, что RTEMS имеет глобальное адресное пространство (для большинства целей). Таким образом, у вас нет разделения между задачами. Это затрудняет отладку ошибок указателей.

Также есть разница: большинство встроенных систем предназначены для долго работающих приложений. В таких приложениях (независимо от того, работаете ли вы в Linux, RTEMS или в любой другой системе), вы должны быть осторожны, чтобы очистить свои данные (закрыть файлы, освободить память и т. Д.). В Linux (или других системах класса рабочего стола) у вас есть процессы, и ядро ​​очищает все ресурсы после завершения вашего процесса. Хотя вы можете создавать потоки в RTEMS, никто не очищается после выхода из потока.

...