Jump to content

    

Eclipse + GCC для ARM

А mkdir.exe там присутствует?

Он нужен, потому что mkdir - это встроенная команда cmd.exe, и sh.exe не умеет её запускать.

(mkdir.exe и ещё несколько нужных программ я брал, емнимс, из какого-то древнего winavr (в директории utils/bin)).

Там присутствует busybox, который поддерживает эту команду. Доказательство:

D:\Users\Андрей>sh
~ $ mkdir
BusyBox v1.24.0.git (2015-07-15 20:12:15 UTC) multi-call binary.

Usage: mkdir [OPTIONS] DIRECTORY...

Create DIRECTORY

        -m MODE Mode
        -p      No error if exists; make parent directories as needed
~ $

Т.е. из командной строки mkdir запускается.

Я заменил в make-файле строку

MD = mkdir

на

MD = busybox mkdir

и проект начал собираться

Попробовал последовать вашему совету - положил в папку mkdir.exe и msys.dll из WinAVR - исходный make-файл заработал.

 

В общем, задача решена, но осадочек :05: остался.

Спасибо за подсказку :beer:

Share this post


Link to post
Share on other sites

Не знаю, что было в древнем WinAVR. Нормальный набор утилит брал здесь.

Busybox тоже неплохо, но размер у неё больше и работает она медленнее, поскольку "всё в одном".

Share this post


Link to post
Share on other sites
Не знаю, что было в древнем WinAVR. Нормальный набор утилит брал здесь.

Busybox тоже неплохо, но размер у неё больше и работает она медленнее, поскольку "всё в одном".

Ну, вообще говоря, этот набор еще древнее, т.к. последний релиз WinAVR датируется 2010 годом. :laughing:

Но это уже не столь принципиально.

 

Share this post


Link to post
Share on other sites

Добрый день. Не моли бы Вы пояснить пару моментов.

1. В вашем makefile имеется отдельная переменная SRCS, как я понял из комментария, для подключения индивидуальных исходных файлов.

Однако если просто добавить файл в эту переменную, то выдается ошибка

make: *** No rule to make target '../obj/kernel.o', needed by '../kernel.elf'.

Если же добавить путь к этому файлу в переменную DIRS, то он скомпилируется и без указания в SRCS.

Какой тогда смысл в переменной SRCS?

2. Ваши примеры собираются нормально, а когда я пытаюсь собрать свой проект, линкер выдает сообщение:

arm-none-eabi-ld: unrecognised emulation mode: thumb
Supported emulations: armelf
makefile:146: recipe for target '../kernel.elf' failed

Инструментарий один и тот же, флаги линкера тоже.

В чем может быть причина?

P.S. Со вторым вопросом разобрался: Вы вызываете линкер через g++, а у меня был указан ld.

Edited by Harvester

Share this post


Link to post
Share on other sites
1. В вашем makefile имеется отдельная переменная SRCS, как я понял из комментария, для подключения индивидуальных исходных файлов.

Однако если просто добавить файл в эту переменную, то выдается ошибка

make: *** No rule to make target '../obj/kernel.o', needed by '../kernel.elf'.

Если же добавить путь к этому файлу в переменную DIRS, то он скомпилируется и без указания в SRCS.

Какой тогда смысл в переменной SRCS?

Идея была в том, чтобы подцепить какие-то файлы выборочно. (Если добавить директорию с файлом к DIRS, то подцепятся все файлы из этой директории).

Но как-то ни разу не пригождалось такое, вот и не доделал.

Чтобы заработало, надо добавить пути к этим индивидуально добавленным файлам в переменную VPATH. Найдите строчку с VPATH и измените её на:

    VPATH := $(DIRS) $(dir $(SRCS))

Тогда всё заработает как задумано.

Share this post


Link to post
Share on other sites

Понял, спасибо.

Edited by IgorKossak
бездумное цитирование

Share this post


Link to post
Share on other sites

Устанавливал дополнения к Eclipse и попутно написал краткое руководство. В статье рассмотрен порядок установки среды разработки ECLIPSE и дополнительных компонентов к ней для программирования и отладки микропроцессоров с ядром ARM. Возможно, кому-то пригодится.

Если у вас есть дополнения или исправления по данной теме – пишите, добавлю в руководство. Смотрите вложение.

How_to_install_the_GNU_ARM_Eclipse.pdf

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this