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

 
 
> Кросс-компиляция под Xscale/ARM
samosad
сообщение Mar 1 2008, 20:27
Сообщение #1





Группа: Новичок
Сообщений: 6
Регистрация: 27-02-08
Пользователь №: 35 445



Добрый вечер, прошу совета по кросс-компиляции.

Значит имеем:
хост - PC, OS OpenSUSE 10.3, с компилятором gcc, всевозможными поднятыми серверами,
таргет - Intel IXDP425, соответственно на ней процессор IXP425 архитектуры Xscale, RedBoot 1.94 / 2

Под целевую платформу собрал Linux - Snapgear 3.5 по инструкции с помощью готового toolchain
arm-linux-tools-20061213.tar.gz отсюда: http://snapgear.org/snapgear/downloads.html.

Linux на неё грузится, радостно запускается, видим командную строку.

Далее пытаюсь пишу элементарную программу типа:
file.c :
Код
main()
{
  while(1);
}

Компилирую под хост - gcc file.c - запускаю, работает;
компилирую под таргет - arm-linux-gcc -mbig-endian file.c - загружаю на платформу, запускаю, резутат типа такого: "ошибка libc.so: выполнение бинарного файла остановлено!"
(если не писать параметр -mbig-endian результат еще хуже: "can not execute binary file")
Причем этот же тулчайн (arm-linux-gcc) только что собрал рабочий Snapgear Linux под эту платформу, а элементарная прога типа этой file.c или HelloWorld просто не запускается.

И еще один вопрос - можно ли запускать исполняемые файлы прямо из под RedBoot'a? Упомянутые выше не запускаются, вызывая зависание системы.

Может кто знает, в чем проблема, подскажите, буду очень благодарен!!!

Сообщение отредактировал samosad - Mar 1 2008, 20:28
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
samosad
сообщение Mar 12 2008, 19:45
Сообщение #2





Группа: Новичок
Сообщений: 6
Регистрация: 27-02-08
Пользователь №: 35 445



новые вопросы.
компилирую файл так:
Код
arm-elf-gcc -mbig-endian while.c -o while.elf


по команде
Код
#readelf -d while.elf

результат: в файле нет динамических ссылок.

попытка запуска этого файла под РедБутом
Код
RedBoot: load -r -v -b 0x01600000 while.elf
RedBoot: exec 0x01600000


выдаёт кракозябры и вешает платформу.

попытка запуска его же но под линуксом выдает ошибку "Segmentation fault"

что я делаю не так?
Go to the top of the page
 
+Quote Post
amw
сообщение Mar 12 2008, 21:37
Сообщение #3


Знающий
****

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



Цитата(samosad @ Mar 12 2008, 21:45) *
новые вопросы.
компилирую файл так:
Код
arm-elf-gcc -mbig-endian while.c -o while.elf

по команде
Код
#readelf -d while.elf

результат: в файле нет динамических ссылок.

Тут вставить
Код
arm-elf-objcopy -O binary while.elf while.bin

Цитата
попытка запуска этого файла под РедБутом

Заменить это:
Цитата
Код
RedBoot: load -r -v -b 0x01600000 while.elf

На это:
Код
RedBoot: load -r -v -b 0x01600000 while.bin

Цитата
RedBoot: exec 0x01600000[/code]

выдаёт кракозябры и вешает платформу.

попытка запуска его же но под линуксом выдает ошибку "Segmentation fault"

что я делаю не так?

Плюс:
1. Не забыть про big/little endian.
2. Линковать по правильному адресу. См. линкер скрипт в info ld

Сообщение отредактировал amw - Mar 12 2008, 21:40


--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть.
© 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 Текстовая версия Сейчас: 28th July 2025 - 14:31
Рейтинг@Mail.ru


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