Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Помогите с gcc AT91RM9200
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > GNU/OpenSource средства разработки
Henadi
Подскажите пожалуйста:
у меня стоит toolchain под Дебианом, программы для запуска под Линуксом на АТ91RM9200 компилируются без проблем. А как в нем скомпилировать программу для запуска из u-boot командой go? Как при компиляции задать адрес загрузки программы?
Прошу отнестись к вопросу с пониманием, я новичек в ARMах.
PrSt
Цитата(Henadi @ Feb 4 2008, 23:56) *
Подскажите пожалуйста:
у меня стоит toolchain под Дебианом, программы для запуска под Линуксом на АТ91RM9200 компилируются без проблем. А как в нем скомпилировать программу для запуска из u-boot командой go? Как при компиляции задать адрес загрузки программы?
Прошу отнестись к вопросу с пониманием, я новичек в ARMах.

всмысле в дебиане?
U-Boot собирается также - только нужно указать пути к компилятору или через переменные окружения или в Makefile

для начала - какая версия U-boot?
в версии 1.3.0 я так и не нашел как
а в старых(1.1.x) - просто в конфиге указываеш


.
amw
Цитата(Henadi @ Feb 4 2008, 22:56) *
Подскажите пожалуйста:
у меня стоит toolchain под Дебианом, программы для запуска под Линуксом на АТ91RM9200 компилируются без проблем. А как в нем скомпилировать программу для запуска из u-boot командой go? Как при компиляции задать адрес загрузки программы?
Прошу отнестись к вопросу с пониманием, я новичек в ARMах.

u-boot - это не ОС. Если я правильно понял, Вы хотите использовать его просто для загрузки программ в поцессор. Тогда у Вас случай ничем не отличается от микроконтроллера без ОС вообще. Все что справедливо для arm-elf-gcc будет справедливо и в Вашем случае.
Нужно сделать соответствующий скрипт линкера и, скорее всего, переписать crt0.S. Можно взять из тулчейна arm-linux и переписать под себя оба файла.
Скомпилированную для линукс libc то-же использовать не получится.
Собирать arm-elf-gcc - не обязательно, можно использовать arm-linux-gcc
К стати, поковыряйте исходники u-boot. Там можно найти много ответов на Ваши вопросы. Сам по себе u-boot то-же является "программой для микроконтроллера без ОС"
vanokuten
Цитата(Henadi @ Feb 4 2008, 22:56) *
Подскажите пожалуйста:
у меня стоит toolchain под Дебианом, программы для запуска под Линуксом на АТ91RM9200 компилируются без проблем. А как в нем скомпилировать программу для запуска из u-boot командой go? Как при компиляции задать адрес загрузки программы?
Прошу отнестись к вопросу с пониманием, я новичек в ARMах.


Если посмотреть исходники uboot - то там есть каталог examples - в котором и лежат пример программ запускаемые из
uboot через go.

BR,
Ivan
Henadi
Цитата(vanokuten @ Feb 6 2008, 20:53) *
Если посмотреть исходники uboot - то там есть каталог examples - в котором и лежат пример программ запускаемые из
uboot через go.

BR,
Ivan

Спасибо всем, кто откликнулся! Буду экспериментировать.
Правильно ли я понял, что в тулчайне, соброном под Линух нельзя компилировать программы для контроллера без ОС, нужно пересобирать libc wacko.gif ?
PrSt
Цитата(Henadi @ Feb 7 2008, 09:00) *
Спасибо всем, кто откликнулся! Буду экспериментировать.
Правильно ли я понял, что в тулчайне, соброном под Линух нельзя компилировать программы для контроллера без ОС, нужно пересобирать libc wacko.gif ?


не совсем

u-boot не собитается под линукс!
он может собираться под линуксОМ или под виндовсОМ или под другой ОСью!

u-boot это некий такой эквивалент как в писюке - биоса
....тоесть просто ЗАГРУЗЧИК, и его задача произвести иниуиализацию и запустить конкретную ОСь или стэндэлонкод и передать даленейщее управление на саму ОСь или стэндэлон код
тоесть стэндэлон и будет Вашей ОСью в данном случае

если Вы хотите заггужать свою программу по конкретному адресу и от туда ее стартовать, то это уже раздел ракументации в u-boot называется если правильно помню - Running Standalone (или типа того, точно не помню) - вот про стэндэлон и читайте - там все предельно просто и кратко

теперь о тулчейне еще...

...загляните вот сюда - http://docs.blackfin.uclinux.org/doku.php?id=gcc_and_gas
правда это для гдугого камня (blackfin), но смысл остается тот же нужно правильно выбрать чем компилировать, все тоже тамое и для arm
вот конкретика на которую многие не обращают внимания


[/size]
Код
[size="1"]<a id="differences_between_blackfin_compilers" name="differences_between_blackfin_compilers">Differences Between Blackfin Compilers[/size]   [size="1"]  There are currently three Blackfin compilers: [/size]

[size="1"] bfin-elf-gcc [/size][size="1"]linked against gcc's own newlib library. The bfin-elf-* toolchain should be used to build non-kernel and non-uClibc applications.[/size][size="1"] bfin-uclinux-gcc[/size][size="1"] linked against uClibc, which was built by the bfin-elf-* toolchain. Use this to build the kernel and kernel modules. Use this to build all userspace applications in the FLAT format.[/size][size="1"] bfin-linux-uclibc-gcc[/size][size="1"] linked against uClibc, which was built by the bfin-elf-* toolchain. Use this to build all userspace applications in the FDPIC ELF format.[/size] [size="1"]The first [b]bfin-elf-gcc[/b] is optimized to produce stand alone (non-Linux) applications, like Das U-Boot. Although it boots the kernel it does not need to be relocated and does not need to use [b]elf2flt[/b] to produce a Flat file for loading by the kernel. This version of the compiler is designed to be Operating System independent. [/size]

  [size="1"] The second [b]bfin-uclinux-gcc[/b] has some features added to generate PIC (Program Independent Code) code without a GOT (Global Offset Table). This works better when working with elf2flt to produce user code executables. Only the bfin-uclinux-gcc can generate a Linux kernel or user land applications that run under Linux. When you build bfin-uclinux-gcc, it builds 2 copies of uClibc, one for flat executables, and one for ELF executables. The compiler is smart enough to know which one to include, depending on the output type, specified on the command line. [/size]

  [size="1"] The third [b]bfin-linux-uclibc-gcc[/b] is designed purely for compiling userspace applications in the FDPIC ELF format. This format is useful for sharing the same executable code among applications at the price of slightly higher overhead at runtime. A must for people using many shared libraries and applications and wish to share resources.[/size]
[size="1"]


тоесть
Вам для нужно использовать не arm-linux-gcc и не arm-linux-uclib-gcc а использовать именно arm-elf-gcc, для генерации бинарного кода для u-boot иначе может не получится ни чего.

.
amw
Цитата(Henadi @ Feb 7 2008, 08:00) *
Спасибо всем, кто откликнулся! Буду экспериментировать.
Правильно ли я понял, что в тулчайне, соброном под Линух нельзя компилировать программы для контроллера без ОС, нужно пересобирать libc wacko.gif ?

Некорректно поставлен вопрос.
Используя arm-linux-gcc можно компилировать программы для МК без ОС.
libc не есть часть GCC компилятора.
glibc собрать для МК без ОС не получится. Смотрите в сторону newlib http://sources.redhat.com/newlib/.
Однако если хотите работать без ОС, то лучше все таки собрать (или взять, пошерстите репозитарии Debian) arm-elf-gcc.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.