На моем ПК установлена Fedora, и у меня есть плата Friendly ARM Mini2440. Я успешно установил ядро Linux, и все работает. Теперь у меня есть программа обработки изображений, которую я хочу запустить на плате без ОС. Единственным запущенным процессом на борту должна быть моя программа. И в этой программе, как я могу получить доступ к встроенной камере для получения изображения и последовательному порту для отправки вывода на ПК.
Запустите исполняемый файл на MINI2440 без ОС
Ответы (2)
Вы говорите о том, что часто называют средой голого железа. . Google может вам помочь, например, здесь. В среде «голого железа» вы должны хорошо разбираться в своем оборудовании, потому что вам нужно позаботиться о многих вещах, с которыми обычно справляется ОС.
Я работал (время от времени) над поддержкой «голого железа» для моей цепочки инструментов ELLCC для перекрестной разработки. У меня есть реализация ARM довольно далеко, но есть еще много работы. Я написал о своем опыте в моем блоге.
Во-первых, вы должны запустить свою программу. Вам потребуется написать некоторый стартовый код, обычно на ассемблере, для обработки инициализации процессора, когда он выходит из перезагрузки (или включается). Затем код запуска обычно передает управление коду, написанному на C, который в конечном итоге прямо или косвенно вызывает вашу функцию main(). Добраться до main() — огромный шаг в вашем приключении с «голым железом»!
Затем вам нужно решить, как поддерживать аппаратные устройства ввода-вывода, которые в вашем случае включают камеру и последовательный порт. Какая часть стандартной библиотеки C (или C++) требуется для обработки изображений? Возможно, вам потребуется добавить некоторую поддержку таких функций, как printf() или malloc(), которым обычно требуется какая-то поддержка ОС. Следующим было бы неплохо попробовать простое «hello world».
В каталоге examples у ELLCC есть примеры различных уровней ARM bare-metal. Они варьируются от простого main() до поддержки MMU и TCP/IP включительно. Исходный код всего этого можно просмотреть здесь.
Я начал писать это перед уходом на работу сегодня утром и не успел закончить. И у Двелча, и у Клиффорда были хорошие предложения. Загрузчик может значительно упростить вашу работу, а документация по вашему оборудованию имеет решающее значение.
Во-первых, вы должны понимать, что без ОС вы несете ответственность за вывод платы из состояния сброса, включая настройку PLL и SDRAM, а также за код драйвера для каждого устройства на плате, которое вы хотите использовать. Для этого требуется адекватная документация платы и ее устройств.
Возможно, вы можете использовать существующий загрузчик для настройки ядра и SDRAM, но это может не соответствовать вашим требованиям, поскольку единственным процессом, работающим на плате, должна быть ваша программа обработки изображений.
Кроме того, вам понадобятся некоторые средства загрузки и начальной загрузки; опять же может подойти существующий загрузчик Linux.
Это ни в коем случае не просто и не может быть подробно описано здесь.