Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Создание u-boot для LPC2468 с помощью cygwin
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Операционные системы > Linux
mempfis_
Всем добрый день/вечер/ночь.
Хочу освоить OS Linux для embedded-использования.
На данном этапе разобрался что для использования линукса необходимо чтобы в процессоре жил u-boot и гдето, где есть место, хранилось ядро.
Для начала хочу разобраться с созданием u-boot для LPC2468.
Из примеров есть u-boot-1.3.2 от Olimex.
Для сборки u-boot установил cygwin со встроенным компилятором arm-uclinux-tools-base-gcc3.4.0-20040713.
В папке cygwin создал папку my_uboot а в ней u-boot-1.3.2-olimex в которую распаковал соответствующий архив.

Запускаю cygwin, перехожу в нужную папку и подаю команду make. Привожу результат на картинке.
Для меня этот набор информаии пока что как тёмный лес.
Вопрос к знающим что там не так? Что почитать чтобы в голове прояснилось?
Уже прочитал Gettin strted with uCLinux от Embedded Artist и uboot от NXP.
Облазил yandex/google (где нашёл что под виндой можно использовать cygwin).
Всёравно пока что моих знаний недостаточно чтобы разобраться что к чему и создать свой первый u-boot.
При необходимости могу выложить нужные файлы из архива.
haker_fox
Извините, что не по теме, но сдается мне, что все это лучше компилировать в виртуалке с линуксом) Там тоже проблем хватало, но в конце концов скомпилировалось)
Lotor
Не собирал такое, но из картинки видно, что в make файле прописан компилятор arm-alf-gcc, т.е. Вы используете не ту toolchain похоже.
mempfis_
Цитата(haker_fox @ Nov 9 2012, 06:35) *
Извините, что не по теме, но сдается мне, что все это лучше компилировать в виртуалке с линуксом) Там тоже проблем хватало, но в конце концов скомпилировалось)


У меня стоит Debian 5 на виртуальной машине. Но у меня проблема - я пока что не разобрался как получить доступ к папке я исходниками u-boot и к папке с компилятором, чтобы установить его. А поставить чистый линукс на компьютер я не могу. Если можете подсказать как в винде закинуть необходимые мне файлы в определённую папку и получить к ней доступ из виртуальной машины - буду благодарен.

Цитата(Lotor @ Nov 9 2012, 07:25) *
Не собирал такое, но из картинки видно, что в make файле прописан компилятор arm-alf-gcc, т.е. Вы используете не ту toolchain похоже.


Т.е. всё что связано с компиляцией и сборкой проекта находится в файле с названием make? (как приду домой посмотрю)
В readme файле cygwin написано что устанавливается arm-uclinux-tools-base-gcc3.4.0-20040713.
Yandex показал что существуют arm-linux-gcc -v and arm-elf-gcc. Т.е. то что установлено у меня сейчас теоретически тоже подойдёт в качестве компилятора, нужно только корретно прописать make-файл. Я прав?
Lotor
Цитата(mempfis_ @ Nov 9 2012, 12:00) *
Т.е. всё что связано с компиляцией и сборкой проекта находится в файле с названием make? (как приду домой посмотрю)

make файл (как правило) описывает, каким образом нужно компилировать и компоновать программу - так что да.
PS: Я для опытов использую toolchain от СodeSourcery, может и Вам следует его попробовать.
alx2
Цитата(mempfis_ @ Nov 9 2012, 01:03) *
перехожу в нужную папку и подаю команду make. Привожу результат на картинке.
Вопрос к знающим что там не так? Что почитать чтобы в голове прояснилось?

Во-первых, как Вам уже подсказали, система не находит arm-elf-gcc. Скорее всего директорий, в котором он находится, не включен в переменную path. Или, если имя файла компилятора у Вас иное, установите правильно переменную окружения HOSTCC или оказывайте имя в командной строке make (HOSTCC=как-там-его-gcc), как это описано в разделе Building the Software файла README u-boot'а.

Во-вторых, согласно написанному в файле README, для его сборки надо говорить не просто "make", а "make BOARD_config", где BOARD - имя вашей платы, по которому будет подключен соответствующий файл конфигурации из каталога include/configs/. Если готовой конфигурации для вашей платы нет, придется ее сделать (проще всего взять за основу конфигурацию от какой-нибудь максимально похожей платы и исправить нужное)... Вот как-то так. sm.gif

Почитать - общий README в корне u-boot'а и README для вашей платформы в каталоге doc.

И еще, make - это программа, выполняющая сборку. А файл, в котором описаны правила сборки, называется Makefile.

Наконец, присоединяюсь к совету перенести всю сборку на linux. Там Вы сможете использовать готовые фреймворки для сборки всей системы, например OpenEmbedded. Непонятно, зачем Вам нужен доступ из виртуальной машины к файлам хост-машины. Наоборот, положите все нужные файлы на файловую систему виртуальной машины с linux и там собирайте.

Цитата(Lotor @ Nov 9 2012, 09:25) *
Не собирал такое, но из картинки видно, что в make файле прописан компилятор arm-alf-gcc, т.е. Вы используете не ту toolchain похоже.

В Makefile имя компилятора не прописано. Там используется значение переменной HOSTCC.
mempfis_
Цитата
Наконец, присоединяюсь к совету перенести всю сборку на linux. Там Вы сможете использовать готовые фреймворки для сборки всей системы, например OpenEmbedded. Непонятно, зачем Вам нужен доступ из виртуальной машины к файлам хост-машины. Наоборот, положите все нужные файлы на файловую систему виртуальной машины с linux и там собирайте.


Я не против собирать всё в виртуальной машине или чистом линуксе. Но в данный момент я не могу поставить линукс на компьютер. Вместо него поставил виртуальную машину Vmplayer и запустил Debian 5. Так вот в Debian я не могу добраться до архива компилятора и исходников u-boot которые положил в общие папки.
В настройках виртуальной машини прописал
Код
sharedFolder0.present = "TRUE"
sharedFolder0.enabled = "TRUE"
sharedFolder0.readAccess = "TRUE"
sharedFolder0.writeAccess = "TRUE"
sharedFolder0.hostPath = "D:\!!!linux\shared\temp\"
sharedFolder0.guestName = "host_temp"
sharedFolder0.expiration = "never"
sharedFolder1.present = "TRUE"
sharedFolder1.enabled = "TRUE"
sharedFolder1.readAccess = "TRUE"
sharedFolder1.writeAccess = "TRUE"
sharedFolder1.hostPath = "D:\!!!linux\shared\dev\"
sharedFolder1.guestName = "host_dev"
sharedFolder1.expiration = "never"
sharedFolder.maxNum = "2"
isolation.tools.hgfs.disable = "FALSE"


Всё приблизительно как в Getting_started_with_uClinux_A.pdf

По поводу cygwin.

Залез в Makefile, нашёл строку
Код
ifeq ($(ARCH),arm)
CROSS_COMPILE = arm-elf- //тут стояло arm-linux-
endif


Также нашёл несколько конфигураций

Код
lpc_e2294_config:    unconfig    
    @$(MKCONFIG) $(@:_config=) arm arm720t lpc_e2294 NULL lpc2292

lpc_e2468_config: unconfig
    @$(MKCONFIG) $(@:_config=) arm arm720t lpc_e2468 NULL lpc2468

lpc_2478_stk_config: unconfig
    @$(MKCONFIG) $(@:_config=) arm arm720t lpc_2478_stk NULL lpc2468


Для теста подаю команду make lpc_2478_stk_config
Для этой и для других конфигураций возникает ошибка как на картинке.
mdmitry
Цитата(mempfis_ @ Nov 9 2012, 18:29) *
sharedFolder0.hostPath = "D:\!!!linux\shared\temp\"
sharedFolder1.hostPath = "D:\!!!linux\shared\dev\"

На мой взгляд не стоит использовать спецсимволы для имен каталогов, тем более для виртуальной машины linux.

make позволяет включить отладочный режим (-n ). Выводятся команды, но не выполняются. Посмотрите, какие команды и какие пути подставляются реально.
mempfis_
Есть первый позитивный результат сборки u-boot-1.1.6
После применения патча u-boot-1.1.6-ea_v1_8_1.diff на оригинальную версию u-boot-1.1.6 или скачанную из папки extras Embedde Artist с ftp Elektronix у меня без ошибок собрался убут с конфигурацией lpc2292sodimm_config.
Но к сожалению конфигурация LPC2468OEM_Board_config собирается с ошибкой (приведена на рисунке).

Собираю в cygwin, установлено arm-elf-gcc-3.4.3.
Кто знает это ошибка cygwin, конфигурации или GCC? Возможно стоит установить более новый GCC или гдето в настройках указать использовать программное FP (FP - floating point?)?

Конфигурация LPC2468OEM_Board_config для меня более подходящая т.к. у меня есть плата с LPC2468. Linux на неё не станет т.к. там 512к оперативки, а u-boot должен влезть.

alx2
Цитата(mempfis_ @ Nov 9 2012, 20:29) *
В настройках виртуальной машини прописал
....
Всё приблизительно как в Getting_started_with_uClinux_A.pdf

Лень читать этот документ, извините. Лично мое мнение - Вам не shared-folders надо настраивать, а сеть. Чтобы гостевая система имела доступ в интернет. Потом просто скачиваете из интернета нужные Вам исходники (через git, svn, ftp, http и все что угодно) прямо в файловую систему виртуальной машины. И собираете там же. А хост-система пусть используется только в качестве терминала. Никакие исходники на хост-системе хранить не надо...

И еще: не могли бы Вы сообщения об ошибках копировать сюда в виде текста, а не картинки-скриншота? А то очень неудобно сообщения из картинок читать...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.