LINUX.ORG.RU

WTF Arago/Yocto? Как оно вообще работает?

 


0

2

Доброго времени суток!

После полного прочтения основной документации на Yocto, решил совершить вторую попытку освоить вот это. А именно - собрать tisdk-server-rootfs-image. Оказалось, что на данном этапе я зря это читал.

Пока что обнаруживаются ошибки в самих Makefile-ах и рецептах навроде:

1)

makefile_armv7:29: *** missing separator (did you mean TAB instead of 8 spaces?). Stop.

echo DEVICE=$(DEVICE)
.

2) ошибки в clocl, где в одной директории лежит Makefile и CMakeLists.txt, причем cmake . генерирует совершенно другой makefile. И оба не компилируются.

Отрывок из оригинального файла приведен ниже (make не может найти x86/AllocasToEntry.o и рушится)

UTILDIR         = ../src/core
WGADIR          = ../src/core/dsp
POCLDIR         = ../src/llvmopencl
OBJS        = AllocasToEntry.o BarrierBlock.o BarrierTailReplication.o \
              BreakConstantGEPs.o CanonicalizeBarriers.o DebugHelpers.o \
              Flatten.o GenerateHeader.o ImplicitLoopBarriers.o \
              ImplicitConditionalBarriers.o IsolateRegions.o \
              Kernel.o LLVMUtils.o LoopBarriers.o ParallelRegion.o \
              PHIsToAllocas.o TargetAddressSpaces.o \
              VariableUniformityAnalysis.o WIVectorize.o Workgroup.o \
              WorkItemAliasAnalysis.o WorkitemHandler.o \
              WorkitemHandlerChooser.o WorkitemLoops.o WorkitemReplication.o\
              SimplifyShuffleBIFCall.o \
              main.o compiler.o wga.o program.o file_manip.o options.o \
              util.o

OBJS := $(patsubst %.o, $(TARGET)/%.o, $(OBJS))

CXXFLAGS := $(LLVM_CXXFLAGS) -I$(UTILDIR) -I$(WGADIR) -I$(POCLDIR) \
            -DLLVM_3_3 $(HOST_USR_INCLUDE) -O3 -fexceptions -std=c++0x \
            -D_PRODUCT_VERSION=$(_PRODUCT_VERSION) $(CXXFLAGS) 

LIBS      = $(CLANG_LIBS)  $(LLVM_LIBS)
LDFLAGS  := $(LLVM_LDFLAGS) $(LDFLAGS)

.PHONY: .FORCE 

$(TARGET): $(TARGET)/.touch $(EXE) 

$(EXE): $(OBJS)
	$(CXX) $^ $(LIBS) $(LDFLAGS) -o $(TARGET)/$@

$(TARGET)/%.o: %.cpp | $(TARGET)/
	$(CXX) $(CXXFLAGS) -c $< -o $@

$(TARGET)/%.o: $(UTILDIR)/%.cpp | $(TARGET)/
	$(CXX) $(CXXFLAGS) -c $< -o $@

$(TARGET)/%.o: $(WGADIR)/%.cpp | $(TARGET)/
	$(CXX) $(CXXFLAGS) -c $< -o $@

$(TARGET)/%.o: $(POCLDIR)/%.cpp | $(TARGET)/
	$(CXX) $(CXXFLAGS) -c $< -o $@

$(TARGET)/%.o: $(POCLDIR)/%.cc | $(TARGET)/
	$(CXX) $(CXXFLAGS) -c $<  -o $@

$(TARGET)/.touch: 
	mkdir -p $(TARGET); touch $(TARGET)/.touch

3) На какие-то пакеты были сначала патчи, затем эти патчи не пригодились, так как эти сами пакеты были исправлены и сейчас патчи 2013 года ломают пакеты 2015 года. Замечу, что мануалы по ссылкам выше самые свежие и я совершенно не понимаю, почему там написана такая лажа. Например, «скачайте mcsdk», а ссылка уже невалидна, значит, придется пробовать новую версию mcsdk, значит... Да черт его знает, какие проблемы с пакетами это еще может значить.

Извиняюсь, накипело.

В общем вопрос - как собрать tisdk-server-rootfs-image при таких косяках в документации и репозиториях?

Кастую I-Love-Microsoft

★★

Последнее исправление: cetjs2 (всего исправлений: 1)

На чем собираешь? Вангую, что дело в том, что у тебя шибко свежий make. Если я правильно помню, TI этот SDK предполагает использовать под Ubuntu 12.04 LTS, в котором GNU make 3.81. Попробуй с ним собрать.

Sectoid ★★★★★
()

1) явно не то, совершенно так быть не должно, конечно не без проблем и заморочек, но чтоб макефиле тупило это уж через чур

2) мне не приходилось собирать софт с LLVM/clang в рамках OE/Yocto

3) разумеется патчи должны быть для именно этой версии, иначе ты не соберешь никакой софт, будь то ядро Linux или любое иное, за 2 года разница может быть колоссальная

Что же делать?

1) собрать просто Yocto или OpenEmbedded стабильной версии (!) и запустить на QEMU/x86 - просто сделай это: собери самый простейший канонический Yocto/OE для x86 без патчей и многое получится понять

2) и только после первого пункта - пиши на форуме и просто спроси «хочу Yocto последней версии для железки X - где брать»? тебя может путать наличие мертвых веток и отрывочность сведений

3) самое главное - а что хост? какой дистриб??? такой как рекомендуют для данного TI SDK и версии Yocto/OE?

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от I-Love-Microsoft

хост - Lubuntu 15.04, рекомендуют Ubuntu 12.04. Но часть проблем лезет из-за несоответствия дистрибов (что частично решилось), а другая - из-за того, что git TI то ли лежит, то ли протокол теперь ни разу не гитовый. Сейчас у меня OpenMP не может скачать, остальное более менее разгреблось (надеюсь. завтра скажу конкретнее)

aido ★★
() автор топика

А не требует ли TI SDK скачки с регистрацией и SMS^W^W? Мне помнится раньше его надо было скачать и подложить в downloads...

slapin ★★★★★
()
Ответ на: комментарий от slapin

Привет! Приобщаю новобранцев в секту Open Embedded, как однажды ты меня... :)

Мне кажется чел торопится разгребать ошибки довольно сложного варианта, в то время как похоже не пытался поработать на чистых стабильных ветках для QEMU/ARM хотя бы...

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от aido

Кстати, ты в курсе что если ты соберешь Yocto/OE для QEMU/ARM и дернешь готовое ядро для своей платы, то оно у тебя даже загрузится, просто не будет userspace части некоторых драйверов и библиотек. Ты бы так тоже попробовал тогда уж.

Я так много раз делал - брал готовое ядро от какой-то платы и собирал OE для QEMU/ARM, и оно даже работало.

I-Love-Microsoft ★★★★★
()
Последнее исправление: I-Love-Microsoft (всего исправлений: 1)
Ответ на: комментарий от I-Love-Microsoft

Ну тут надо ещё модули от нового ядра подложить не забыть А так должно базово работать, если просто консолька. Только нафига тогда техасовый сдк?

slapin ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.