Запустите исполняемый файл на MINI2440 без ОС

На моем ПК установлена ​​Fedora, и у меня есть плата Friendly ARM Mini2440. Я успешно установил ядро ​​​​Linux, и все работает. Теперь у меня есть программа обработки изображений, которую я хочу запустить на плате без ОС. Единственным запущенным процессом на борту должна быть моя программа. И в этой программе, как я могу получить доступ к встроенной камере для получения изображения и последовательному порту для отправки вывода на ПК.


person Smart Core    schedule 27.03.2015    source источник
comment
Терминология для программы без ОС — это автономная программа или программа без операционной системы. Очевидный вопрос: почему?   -  person sawdust    schedule 27.03.2015
comment
Почему нас это не касается... не относится к вопросу...   -  person old_timer    schedule 28.03.2015
comment
серийный номер на ПК - это первое, что вам нужно выяснить, если вы еще не запустили Linux. см. руководства от поставщика. они, скорее всего, используют загрузчик, такой как uboot. прервите загрузку нажатием клавиши и скорее всего есть команда loadx или loady из которой можно скачать программу на голое железо, получить доки для процессора, с помощью команд загрузчика записать в регистр uart tx и посмотреть вылезет ли символ потом идите оттуда, погуглите голую металлическую руку или что-то в этом роде. камера - гораздо более серьезная проблема, которую нужно решить, но, вероятно, выполнимая, если у вас есть документация.   -  person old_timer    schedule 28.03.2015


Ответы (2)


Вы говорите о том, что часто называют средой голого железа. . Google может вам помочь, например, здесь. В среде «голого железа» вы должны хорошо разбираться в своем оборудовании, потому что вам нужно позаботиться о многих вещах, с которыми обычно справляется ОС.

Я работал (время от времени) над поддержкой «голого железа» для моей цепочки инструментов ELLCC для перекрестной разработки. У меня есть реализация ARM довольно далеко, но есть еще много работы. Я написал о своем опыте в моем блоге.

Во-первых, вы должны запустить свою программу. Вам потребуется написать некоторый стартовый код, обычно на ассемблере, для обработки инициализации процессора, когда он выходит из перезагрузки (или включается). Затем код запуска обычно передает управление коду, написанному на C, который в конечном итоге прямо или косвенно вызывает вашу функцию main(). Добраться до main() — огромный шаг в вашем приключении с «голым железом»!

Затем вам нужно решить, как поддерживать аппаратные устройства ввода-вывода, которые в вашем случае включают камеру и последовательный порт. Какая часть стандартной библиотеки C (или C++) требуется для обработки изображений? Возможно, вам потребуется добавить некоторую поддержку таких функций, как printf() или malloc(), которым обычно требуется какая-то поддержка ОС. Следующим было бы неплохо попробовать простое «hello world».

В каталоге examples у ELLCC есть примеры различных уровней ARM bare-metal. Они варьируются от простого main() до поддержки MMU и TCP/IP включительно. Исходный код всего этого можно просмотреть здесь.

Я начал писать это перед уходом на работу сегодня утром и не успел закончить. И у Двелча, и у Клиффорда были хорошие предложения. Загрузчик может значительно упростить вашу работу, а документация по вашему оборудованию имеет решающее значение.

person Richard Pennington    schedule 27.03.2015
comment
Сэр, вы правы, определенно нужно много времени, чтобы все это переварить. Итак, на данный момент я выбрал очень легкую ОС, [code.google.com/p /startos/]'StartOS' для начала работы. Эта ОС запускает исполняемый файл только в SDCard и обеспечивает поддержку драйверов для всех периферийных устройств. Спасибо огромное . Вы очень помогаете. - person Smart Core; 30.03.2015

Во-первых, вы должны понимать, что без ОС вы несете ответственность за вывод платы из состояния сброса, включая настройку PLL и SDRAM, а также за код драйвера для каждого устройства на плате, которое вы хотите использовать. Для этого требуется адекватная документация платы и ее устройств.

Возможно, вы можете использовать существующий загрузчик для настройки ядра и SDRAM, но это может не соответствовать вашим требованиям, поскольку единственным процессом, работающим на плате, должна быть ваша программа обработки изображений.

Кроме того, вам понадобятся некоторые средства загрузки и начальной загрузки; опять же может подойти существующий загрузчик Linux.

Это ни в коем случае не просто и не может быть подробно описано здесь.

person Clifford    schedule 27.03.2015