Качественное сравнение между Petalinux и FreeRTOS
Я собираюсь начать разработку приложения на плате Zynq. Моя задача - в основном перенести существующее приложение, работающее на Microblaze, на двухъядерный ARM.
Что меня интересует, так это то, какую ОС использовать в новой системе, потому что у меня нет никакого опыта в этой области. Мне кажется, что есть четыре основных подхода:
1) Petalinux (используйте оба ядра)
2) Petalinux + FreeRTOS (используйте оба ядра)
3) FreeRTOS (используйте только ядро)
4) Baremetal (используйте только ядро)
Мое приложение должно перемещать большой объем данных между Ethernet и несколькими пользовательскими каналами, поэтому оно должно обслуживать много прерываний и выполнять множество операций DMA.
Сколько накладных расходов вносит Petalinux в службу прерываний по отношению к baremetal или FreeRTOS? Считаете ли вы, что для такой работы быстрее будет работать одноядерное приложение без какой-либо ОС или, например, приложение Petalinux с накладными расходами ОС (и механизмов синхронизации, таких как семафоры или мьютекс)?
Я знаю, что вопрос не точный и довольно расплывчатый, но, не имея опыта работы в этой области, мне очень нужны начальные подсказки.
Спасибо.
2 ответа
Как вы говорите, это слишком расплывчато, чтобы дать взвешенный ответ, потому что это действительно зависит от вашего приложения (когда это не так). Если вам нужны все "вещи", доступные для Linux, и время загрузки не является проблемой, то согласитесь. Если вам нужно реальное поведение в реальном времени, быстрая загрузка, простота и не нужно ничего специфичного для Linux, тогда FreeRTOS может быть вашим лучшим выбором. Существует проект Zynq FreeRTOS TCP, который использует интерфейс сокетов в стиле BSD (например, Linux) здесь: http://www.freertos.org/FreeRTOS-Plus/FreeRTOS_Plus_TCP/TCPIP_FAT_Examples_Xilinx_Zynq.html
Обычно производительность не должна сильно отличаться. Если вы скомпилируете свой linux с хорошо оптимизирующим компилятором, то есть хороший шанс быть быстрее по сравнению с голым металлом.
Но если вам нужно тяжело, в реальном времени Linux не подходит для вас.
Есть хорошая белая бумага от Altera, но она должна подходить и для Xilinx: белая бумага в реальном времени