Сборка для Bare Metal BeagleBoard - PullRequest
       39

Сборка для Bare Metal BeagleBoard

0 голосов
/ 13 января 2012

Я только недавно пытаюсь проникнуть во встроенное программирование и ищу несколько ресурсов.Я немного программировал на языках более высокого уровня, но всегда был очарован тем, как на самом деле работает аппаратное обеспечение.В качестве принудительной функции, чтобы заставить себя, наконец, узнать об оборудовании, я недавно приобрел BeagleBoard XM с целью программирования его на голое железо со сборкой.время, а также поиск в Интернете для примера кода.Я нашел несколько ресурсов, которые предоставляют хорошие примеры для отображения данных через последовательный порт, но не более того.Я надеялся найти несколько примеров людей, использующих прерывания и SDMA, но пока не нашел ни одного.Моя цель как начального проекта - написать очень простую программу, которая будет принимать символьный ввод из последовательного порта и выводить его обратно на экран.Я хотел бы сделать так, чтобы он использовал прерывания / SDMA.Прочитав TRM, не очевидно, как это сделать.Будучи совершенно новым для этого предмета, невероятно сложно точно знать, что мне даже нужно искать, чтобы разобраться в документации.Я задавался вопросом, есть ли какие-нибудь эксперты, которые могли бы предоставить какой-либо пример кода asm, который использует некоторые аппаратные функции BeagleBoard.В конце концов, никакое количество документации не может заменить хороший конкретный пример кода.

Ответы [ 3 ]

1 голос
/ 25 февраля 2012

Я должен согласиться с тем, что говорят все остальные. Хотя, теоретически, все, что вам нужно, есть, Beagle не самая лучшая платформа для таких вещей в первый раз. У меня есть несколько примеров того, как вызвать несколько небольших микроконтроллеров http://github.com/dwelch67, и есть такие сайты, как http://gandalf.arubi.uni -kl.de / avr_projects / arm_projects / и другие с еще большим количеством примеры.

У меня есть beagleboard, голый металлический код Uart Out, но звучит так, как будто он у вас есть (в yagbat, из-за отсутствия лучшего места (не стоило собственного репозитория), у меня есть каталог beagleboard).

Панель запуска msp430 стоит менее 5 долларов и неплохой процессор. Сделано техасскими инструментами (те же самые люди, которые делают omap), поэтому в руководствах должно быть похожее чувство.

Конечно, есть arduinos, но вы хотите обойти песочницу, что не сложно, см. Мои примеры.

Чтобы остаться в семействе рук, есть mbed (около $ 50 +) (избегайте песочницы, легко сделать) и хороший, который вам может понравиться, потому что это всего лишь микроконтроллер со всем, что в нем есть. это доска открытий stm32f4 от st, у меня есть ссылки на моей странице примера. Она составляет около 20 долларов, идет до 168 МГц, имеет уменьшенную единицу с плавающей запятой (редко для микроконтроллера), отдельные кэши инструкций и данных, много оперативной памяти по сравнению с другими микроконтроллерами и т. Д. Все по этой бесплатной цене в 20 долларов.

Многие из этих микроконтроллеров будут большого или большого пальца + большой палец2. Cortex-m3 и 4 являются armv7-m, поэтому поддерживают большой палец плюс полный большой палец2. cortex-m0 и -m1 основаны на armv6, поэтому поддерживают только маленький thumb2, которого недостаточно для беспокойства. У меня есть эмулятор большого пальца, с которым вы также можете играть большим пальцем (без поддержки thumb2). Я думаю, что cortex-A в beagleboard основан на armv7, поэтому он поддерживает те же thumb + thumb2, что и cortex-m3 и -m4. Stm32f4 основан на -m4, mbed выпускается в двух вариантах: один -m3, а новый -m0. Многие микроконтроллеры на основе cortex-m основаны на -m3, как выяснилось, -m4 и -m0 только набирают обороты. Вы можете большим или большим пальцем2 начать использовать унифицированный набор инструкций, который представляет собой размытие между рукой и большим пальцем (2), позволяя объединить один источник как с инструкциями руки, так и с инструкциями большого пальца (с некоторыми ограничениями, конечно). Таким образом, вы можете либо просто написать в thumb / thumb2 и передать эти знания непосредственно в cortex-A (с одной инструкцией bx для переключения режимов из ARM в thumb), либо перенести код thumb2 или унифицированный код непосредственно в cortex-A и собрать как рука.

Самая важная вещь здесь - это не изучение ассемблера, хотя ключом является чтение руководств, чем больше руководств от большего числа поставщиков, тем лучше вы понимаете, как найти информацию, необходимую для этой более сложной задачи. По своему опыту я также испытывал трудности с отдельными частями руководства omap. В большинстве руководств есть ошибки или они неполные, и т. Д. Вы должны научиться работать / взламывать это, и это просто требует опыта. С помощью omap вам, скорее всего, придется копаться в источниках linux или uboot для этой платформы, чтобы дополнить руководство. Поскольку beagle использует загрузчик, это хорошо, потому что кое-что сделано для вас, плохо, потому что вам нужно перепроектировать аппаратное и программное обеспечение, чтобы выяснить, где разместить таблицу векторов прерываний, чтобы вы могли выполнять решения на основе прерываний. Я настоятельно рекомендую начинать с не прерывания, опроса, на основе, а затем медленно переходить от знания к прерыванию. Попытка поразить хоумран каждый раз в летучей мыши потерпит неудачу. Наносите один базовый удар за раз.

1 голос
/ 13 января 2012

BeagleBoard использует Cortex-A8. Это довольно сложная микросхема, и запустить ее не просто из чтения руководств, особенно для начинающих. Вы можете попробовать прочитать существующий код, который уже работает на нем - U-Boot и, возможно, драйверы из ядра Linux. Не ожидайте увидеть много сборок, кроме кода запуска очень низкого уровня.

Но, вероятно, лучшая идея - это то, что предложила fvu - взять простую плату MCU, такую ​​как LPCXpressor или mbed, и играть с ней. Cortex-M3 / M0, хотя и не является тривиальным, намного проще в работе, и для различных периферийных устройств доступно множество простых небольших выборок.

0 голосов
/ 05 февраля 2013

Ваша проблема двоякая: разбираться в программировании на baremetal и OS и разбираться в оборудовании beagleboard. Что касается последнего, я рекомендую посмотреть код других людей вместе с таблицами данных. Чтение только даташей занимает очень много времени. Начните с u-boot кода для beagleboard:

Некоторые другие голые металлические проекты, которые не являются BB-XM, но я нашел полезными:

Ваша вторая проблема - понять низкоуровневое программирование на ARM. Я рекомендую эти книги, однако учтите, что они написаны для более старых архитектур. Тем не менее, они все равно должны быть очень полезны для вас:

У последнего даже есть глава по написанию вашей собственной маленькой ОС.

...