Jump to content

    

Сборка среды программирования под Cortex A9-A7

Приветствую.

 

Собственно вопрос - может у кого есть методика сборки под указанные ОС системы, включающей в себя компилятор, ИДЕ, еще что там будет нужно, чтоб сделать собственный загрузчик для камней на базе ядра кортекс А7 или А9?

 

Вопросов по программированию нет, все это я уже давно делал в ИАРе, но клиент просит, чтоб было сделано на свободно распространяемом софте.

 

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

 

Настройка отладки(GDB и пр.) не нужна от слова вообще.

 

Буду очень признателен за все советы и ссылки откуда чего скачать...

Share this post


Link to post
Share on other sites

так скажи что за камень, может найдется народ, дадут исходники загрузчика под винду.

Share this post


Link to post
Share on other sites
так скажи что за камень, может найдется народ, дадут исходники загрузчика под винду.

 

Мне не надо исходники, они у меня есть, просто проект под ИАР, но заказчик у себя не будет ставить софт стоимостью 200килорублей, чтоб вносить правки в 2-3 программы, вот и хочу перевести все свое хозяйство под бесплатный софт, но для этого его нужно установить себе на комп и правильно собрать все элементы(ИДЕ, компилятор, мейкфайлы...) Я этим никогда ранее не озадачивался.

 

Проц IMX6S, но в данном случае это не важно, важнее ядро А9, на перспективу А7.

 

 

Я так понимаю, что надо скачать это - https://releases.linaro.org/components/tool...atest/arm-eabi/

 

Но там только компилятор, потом, так полагаю, нужно скачать эклипс, в принципе скачан уже.

 

Потом самое интересное - подружить их вместе. Вот тут я полный ноль :crying:

Share this post


Link to post
Share on other sites

Не надо IDE. Достаточно упомянутой Linaro + make, если он не идет в комплекте.

Share this post


Link to post
Share on other sites
Не надо IDE. Достаточно упомянутой Linaro + make, если он не идет в комплекте.

 

Это когда просто скомпилить уже готовое и портированное, то согласен, а сам процесс портирования все-таки не такой уж тривиальный, поэтому ИДЕ все же желательна

 

ЗЫ. Ну и все-таки наверно предполагаете, что под такой проц в проекте не один файл main.c... Там около сотни файлов, это ж все нужно собрать в новый проект и уж потом компилить...

Edited by mantech

Share this post


Link to post
Share on other sites
Это когда просто скомпилить уже готовое и портированное, то согласен, а сам процесс портирования все-таки не такой уж тривиальный, поэтому ИДЕ все же желательна

Совершенно тривиален - поверьте, делал неоднократно. IDE только помешает.

Всего-то нужно внести минимум правок, написать новый скрипт для линкера и добавить Makefile.

И клиенту передадите аккуратный проект, не требующий документации по установке и сборке.

 

Там около сотни файлов, это ж все нужно собрать в новый проект и уж потом компилить...

Освойте make, и обнаружите, что "собрать проект" - это совсем даже не проблема.

Share this post


Link to post
Share on other sites
Совершенно тривиален - поверьте, делал неоднократно. IDE только помешает.

+1. Для минимальных правок IDE не нужно. А для сборки нужен только make.

Для просмотра и правки дерева исходников есть соответствующие текстовые редакторы. Сам использую Source Insight.

 

Освойте make, и обнаружите, что "собрать проект" - это совсем даже не проблема.

Птичий язык мейкфайлов поначалу пугает, но примеров есть множество, и документация исчерпывающая.

Share this post


Link to post
Share on other sites
Совершенно тривиален - поверьте, делал неоднократно. IDE только помешает.

Всего-то нужно внести минимум правок, написать новый скрипт для линкера и добавить Makefile.

И клиенту передадите аккуратный проект, не требующий документации по установке и сборке.

 

 

Освойте make, и обнаружите, что "собрать проект" - это совсем даже не проблема.

 

Я это понимаю, но в данном вопросе полный ноль, глянул в эти мейкфайлы - все-равно, что птичий язык изучать...

Неужели нет способа проще и понятнее??

Share this post


Link to post
Share on other sites
Я это понимаю, но в данном вопросе полный ноль, глянул в эти мейкфайлы - все-равно, что птичий язык изучать...

Есть такое. Но на начальном этапе во все тонкости можно не вдаваться, да и гугл выручит.

 

Неужели нет способа проще и понятнее??

Ну, можно и из bat-файла все собрать, наверное. Но вряд ли это сильно проще.

Share this post


Link to post
Share on other sites
Есть такое. Но на начальном этапе во все тонкости можно не вдаваться, да и гугл выручит.

 

 

Ну, можно и из bat-файла все собрать, наверное. Но вряд ли это сильно проще.

 

Это понятно, но все-таки ИДЕ как-то должна помогать в этом, например автогенератор мейкфайлов?

Share this post


Link to post
Share on other sites
Это понятно, но все-таки ИДЕ как-то должна помогать в этом, например автогенератор мейкфайлов?

По-моему, трудозатраты на борьбу с IDE сведут плюсы от возможной помощи с её стороны на нет.

Тем более, что ценность приобритенного опыта будет равна нулю.

 

Если бы стояла задача вести разработку - тогда, возможно, и стоило бы смотреть в этом направлении,

но Вам ведь уже отлаженный проект просто собрать надо.

Share this post


Link to post
Share on other sites
По-моему, трудозатраты на борьбу с IDE сведут плюсы от возможной помощи с её стороны на нет.

Тем более, что ценность приобритенного опыта будет равна нулю.

 

Если бы стояла задача вести разработку - тогда, возможно, и стоило бы смотреть в этом направлении,

но Вам ведь уже отлаженный проект просто собрать надо.

 

Почему? Да, сейчас надо просто перепортировать готовый проект, потом возможно будет еще работа по разработке под ядра, которые текущий ИАР не поддерживает.

 

Раньше можно было покупать его но за последние 3 года он стал стоить бешено дорого.

Share this post


Link to post
Share on other sites

Если у вас проект собирается яром, наверняка процесс сборки простейший. Следовательно, и мейкфайл тоже будет простейшим. Жалко денёк потратить и научиться? Советую для начала сделать gcc+make="Hello world!". В процессе набьёте все шишки, остальное - тупой перенос с яра, чисто мускульная работа.

Вот для примера типичный мейкфайл у меня, работает под windows.

Хитрость в том, что перед вызовом директория проекта делается текущей директорией, в PATH добавляется путь к gcc. Таким образом в мейкфайле не нужны абсолютные пути к файлам, все пути написаны относительно директории проекта.

NAME=boot
SHELL=cmd
ARCH=arm-none-eabi
CC=$(ARCH)-gcc
OBJCOPY=$(ARCH)-objcopy
SIZE=$(ARCH)-size
ELF=$(NAME).elf
BIN=$(NAME).bin
SRC=$(wildcard src/*.c net/*.c)
OBJ=$(SRC:.c=.o)
DEP=$(SRC:.c=.d)
INC=-Isrc -I.
CFLAGS=-Os -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -gdwarf-2 -Wall -fno-strict-aliasing -std=gnu11
LDFLAGS=-T stm32f407.ld -Wl,--gc-sections -fwhole-program -static --specs=nano.specs -lc -lm -lnosys

.PHONY: all clean

all: $(BIN)

%.o: %.c
@echo    CC $<
@$(CC) $< -c -MMD $(CFLAGS) $(INC) -o $@

$(ELF): $(OBJ)
@echo  LINK $@
@$(CC) $^ $(CFLAGS) $(LDFLAGS) -o $@
@echo  SIZE $@
@$(SIZE) $@

$(BIN): $(ELF)
@echo   BIN $@
@$(OBJCOPY) -O binary $^ $@

clean:
@echo CLEAN
@del /q $(subst /,\,$(ELF) $(BIN) $(OBJ) $(DEP)) 2>nul

-include $(DEP)

Share this post


Link to post
Share on other sites
Если у вас проект собирается яром, наверняка процесс сборки простейший. Следовательно, и мейкфайл тоже будет простейшим. Жалко денёк потратить и научиться? Советую для начала сделать gcc+make="Hello world!". В процессе набьёте все шишки, остальное - тупой перенос с яра, чисто мускульная работа.

Вот для примера типичный мейкфайл у меня, работает под windows.

Хитрость в том, что перед вызовом директория проекта делается текущей директорией, в PATH добавляется путь к gcc. Таким образом в мейкфайле не нужны абсолютные пути к файлам, все пути написаны относительно директории проекта.

NAME=boot
SHELL=cmd
ARCH=arm-none-eabi
CC=$(ARCH)-gcc
OBJCOPY=$(ARCH)-objcopy
SIZE=$(ARCH)-size
ELF=$(NAME).elf
BIN=$(NAME).bin
SRC=$(wildcard src/*.c net/*.c)
OBJ=$(SRC:.c=.o)
DEP=$(SRC:.c=.d)
INC=-Isrc -I.
CFLAGS=-Os -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -gdwarf-2 -Wall -fno-strict-aliasing -std=gnu11
LDFLAGS=-T stm32f407.ld -Wl,--gc-sections -fwhole-program -static --specs=nano.specs -lc -lm -lnosys

.PHONY: all clean

all: $(BIN)

%.o: %.c
@echo    CC $<
@$(CC) $< -c -MMD $(CFLAGS) $(INC) -o $@

$(ELF): $(OBJ)
@echo  LINK $@
@$(CC) $^ $(CFLAGS) $(LDFLAGS) -o $@
@echo  SIZE $@
@$(SIZE) $@

$(BIN): $(ELF)
@echo   BIN $@
@$(OBJCOPY) -O binary $^ $@

clean:
@echo CLEAN
@del /q $(subst /,\,$(ELF) $(BIN) $(OBJ) $(DEP)) 2>nul

-include $(DEP)

 

 

Дык, изучать все-равно придется, без этого в данном вопросе вообще никак. Просто если уже есть готовые решения, почему б ими не воспользоваться?

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