реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Помогите с gcc AT91RM9200
Henadi
сообщение Feb 4 2008, 20:56
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 18
Регистрация: 25-01-07
Пользователь №: 24 743



Подскажите пожалуйста:
у меня стоит toolchain под Дебианом, программы для запуска под Линуксом на АТ91RM9200 компилируются без проблем. А как в нем скомпилировать программу для запуска из u-boot командой go? Как при компиляции задать адрес загрузки программы?
Прошу отнестись к вопросу с пониманием, я новичек в ARMах.
Go to the top of the page
 
+Quote Post
PrSt
сообщение Feb 5 2008, 11:54
Сообщение #2


http://uschema.com
****

Группа: Свой
Сообщений: 708
Регистрация: 16-02-06
Из: UK(Ukrainian_Kingdom) Kharkov
Пользователь №: 14 394



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

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

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


.


--------------------
Go to the top of the page
 
+Quote Post
amw
сообщение Feb 6 2008, 10:18
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847



Цитата(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 то-же является "программой для микроконтроллера без ОС"


--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть.
© Lewis Carroll. Alice's adventures in wonderland.
Go to the top of the page
 
+Quote Post
vanokuten
сообщение Feb 6 2008, 19:53
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 116
Регистрация: 18-12-04
Из: Минск
Пользователь №: 1 550



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


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

BR,
Ivan


--------------------
Go to the top of the page
 
+Quote Post
Henadi
сообщение Feb 7 2008, 06:00
Сообщение #5


Участник
*

Группа: Новичок
Сообщений: 18
Регистрация: 25-01-07
Пользователь №: 24 743



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

BR,
Ivan

Спасибо всем, кто откликнулся! Буду экспериментировать.
Правильно ли я понял, что в тулчайне, соброном под Линух нельзя компилировать программы для контроллера без ОС, нужно пересобирать libc wacko.gif ?
Go to the top of the page
 
+Quote Post
PrSt
сообщение Feb 14 2008, 11:47
Сообщение #6


http://uschema.com
****

Группа: Свой
Сообщений: 708
Регистрация: 16-02-06
Из: UK(Ukrainian_Kingdom) Kharkov
Пользователь №: 14 394



Цитата(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 иначе может не получится ни чего.

.


--------------------
Go to the top of the page
 
+Quote Post
amw
сообщение Feb 18 2008, 16:22
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847



Цитата(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.


--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть.
© Lewis Carroll. Alice's adventures in wonderland.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st June 2025 - 20:07
Рейтинг@Mail.ru


Страница сгенерированна за 0.01415 секунд с 7
ELECTRONIX ©2004-2016