Как настроить dev. среда для платы ARM AT91SAM7-EX256 под x86 Linux? - PullRequest
0 голосов
/ 16 мая 2011

Я новичок во встроенной разработке, как показано на рисунке. У меня есть маленькая плата ARM, AT91SAM7-EX256 . У меня также есть ключ JTAG для программистов. Я использую Linux ( Ubuntu x86_32 ) на своем ноутбуке и настольном компьютере. Я использую CodeSourcery Lite для кросс-компиляции в ARM-Linux.

  1. Прав ли я, что я не могу использовать этот кросс-компилятор Linux-цели для создания двоичных или шестнадцатеричных файлов для небольшой платы ARM (она поставляется без какой-либо операционной системы)? Стоит ли использовать вместо этого версию под названием ARM EABI ?

  2. Как я вижу, это "универсальный" компилятор ARM. Я прочитал несколько документов, и есть много опций для указания типа процессора и набора инструкций (большой палец и т. Д.), С ним проблем не будет. Но как я могу сказать компилятору, как должно выглядеть изображение (bin / hex) для конкретной платы (запуска, блоков кода / данных и т. Д.)? (В ассемблерах есть директивы org и load .)

  3. Какое программное обеспечение мне нужно для записи отладочных сообщений с платы на моем ПК? Я не хочу отладки на борту, мне просто нужен подробный сигнал времени выполнения, больше, чем просто мигающие светодиоды.

  4. У меня есть возможность использовать MS-Windows, я могу получить выделенную машину для него. Вы рекомендуете, это намного проще?

  5. Могу ли я как-нибудь использовать встроенную сборку в моем C-коде? Я ничего не знаю об этом. Могу ли я использовать C ++ или просто C?


У меня также есть вопрос, на который не нужно отвечать: действительно ли существует 4096 видов компиляторов и кросс-компиляторов GNU (из Linux_x86_32 -> Linux_x86_32, Linux_x86_32 -> Linux_ARM, OSX -> Linux_ARM, PPC_Linux -> OSX) и 16 различных источников компиляторов GNU (сколько существует целевых платформ / процессоров)? Знаки говорят «да», но я не могу в это поверить. Поправьте меня и покажите компилятор GNU, который может создавать объектный файл для любой платформы / процессора, и универсальный компоновщик, который может создавать исполняемый файл для любой платформы.

Ответы [ 2 ]

2 голосов
/ 16 мая 2011

Несмотря на то, что Windows не является «лучшей» платформой для реализации такого рода встроенных разработок, с ней может быть проще начать, так как вы можете получить готовую среду для работы.Например, Yagarto (что я бы порекомендовал).

Настройка встроенной среды разработки в Linux может потребовать значительных знаний, но это не невозможно.

Чтобы ответить на ваши вопросы:

  1. Ваш кросс-компилятор Linux поставляется с библиотеками для создания исполняемых файлов для среды Linux.Вы намекнули, что хотите создать исполняемый файл для этой платы с нуля.Хотя вы можете сделать это с помощью вашего компилятора, он просто запутает вещи.Я рекомендую создать кросс-компилятор для baremetal.Так как вы создаете свой собственный исполняемый файл с исходным кодом (и, таким образом, вы являетесь операционной системой, ABI не имеет значения, поскольку вы генерируете весь код и не взаимодействуете с другим ранее созданным кодом.

  2. Существует несколько версий набора команд ARM (и Thumb). Вам необходимо сгенерировать код для вашего конкретного процессора. Если вы сгенерируете код для более новой версии набора инструкций, вы будетевероятно, генерирует код, который генерирует зарезервированное исключение для команд. Большинство готовых наборов инструментов для кросс-компиляции gcc для ARM являются "multilib" и будут собираться для различных архитектур как в ARM, так и в Thumb.

  3. Неточно точно, что вы ищете здесь. Это пустая металлическая платформа. Вы можете использовать канал отладчика для отправки сообщений, если вы отлаживаете на цели, или вам нужно встроить свой собственный канал связи в прошивку, которую вы пишете(т. е. поддержка Uart).

  4. См. выше.

  5. Да.Смотрите здесь для получения подробной информации о расширенном синтаксисе встроенной сборки gcc.Вы можете сделать это в C ++ и C. Вы также можете просто связать чистые файлы сборки.

Универсального компилятора / компоновщика gcc не существует.Вам нужен уникальный компилятор для каждой комбинации хоста / цели, которую вы используете.

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

0 голосов
/ 17 мая 2011
http://sam7stuff.blogspot.com/

Я использую любую из версий LiteSource. Но я не пользуюсь ни библиотекой gcc, ни библиотекой C, мне просто нужен компилятор.

В gcc 3 дня newlib был великолепен, изменил систему поддержки двух файлов (простой open, close, read, putc type) и вы можете скомпилировать что угодно, но с gcc 4.x вы не сможете даже вернуться назад и кросс-компиляции gcc 3.x, вы должны установить старый дистрибутив linux на виртуальную машину.

Чтобы получить библиотеку gcc, вы, вероятно, хотите использовать версию eabi, а не версию с linux gnueabi в именах файлов.

Вы могли бы также рассмотреть llvm (если вам не нужна библиотека C, и вам все еще нужны binutils), хм, интересно, если newlib компилируется с llvm.

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

...