-
Notifications
You must be signed in to change notification settings - Fork 0
Cборка HPS программы
Vlad Tarasevich edited this page Oct 13, 2019
·
1 revision
Для сборки программы сейчас используется альтеровский DS-5, для копирования на карту памяти нужно что-то, что понимает ext4.
Что изменено со времен давних:
- Флаг -lstdc++ либо (g++ вместо gcc), ибо, господа, gcc - это для компиляции СИ, а не плюсов. g++ использует gcc + подключает C++ либы
- -pthread - пресвятая многопоточность.
- В папку lib на плате добавлен файлик libstdc++.so.6 из ds-5.
- Полностью переделан MakeFile. Все теперь делается автоматически из корневой папки, где находится Makefile. Все что нужно сделать вам - это при добавлении новой папки указать ее в инклудах ЛИБО правильно прописать #include <../someheader.h>
# Build is done by command 'make' of ds-5 altera compile instrument
# in the project folder
#Compiler and Linker
CC := arm-linux-gnueabihf-gcc
#The Target Binary Program
SRCDIR := HPS
TARGET_NAME := PrinterSystem
TARGETDIR := $(SRCDIR)/bin
TARGET := $(TARGETDIR)/$(TARGET_NAME)
#The Directories, Source, Includes, Objects, Binary and Resources
BUILDDIR := $(SRCDIR)/build
SOURCES := $(shell find $(SRCDIR) -type f -name *.cpp)
OBJECTS := $(addprefix $(BUILDDIR)/,$(patsubst %.cpp,%.o,$(notdir $(SOURCES))))
INCLUDE_SOURCES := -I$(SRCDIR) \
-I$(SRCDIR)/screen/ \
-I$(SRCDIR)/screen/uart
# Altera sources
ARCH := arm
ALT_DEVICE_FAMILY ?= soc_cv_av
SOCEDS_ROOT ?= $(SOCEDS_DEST_ROOT)
HWLIBS_ROOT := $(SOCEDS_ROOT)/ip/altera/hps/altera_hps/hwlib
INCLUDE_ALTERA := -I$(HWLIBS_ROOT)/include/$(ALT_DEVICE_FAMILY) \
-I$(HWLIBS_ROOT)/include/
# Include
INC := -D$(ALT_DEVICE_FAMILY) $(INCLUDE_ALTERA) $(INCLUDE_SOURCES)
CFLAGS := -g -Wall -std=c++11 -pthread
LDFLAGS := $(CFLAGS) -lstdc++
vpath %.cpp $(sort $(dir $(SOURCES)))
# Default make
default: clean info linking
linking: $(TARGET)
$(TARGET): $(OBJECTS)
@echo ""; echo "<-- LINKING -->"
@mkdir -p $(TARGETDIR)
$(CC) $(LDFLAGS) $^ -o $@
$(BUILDDIR)/%.o: %.cpp
@echo ""; echo "In folder: $(BUILDDIR)"
@mkdir -p $(BUILDDIR)
$(CC) $(CFLAGS) $(INC) -c $< -o $@
info:
@echo ""; echo "<-- INFO -->"
@echo "SOURCES = $(SOURCES)"
@echo "OBJECTS = $(OBJECTS)"
# ATTENTION: this delete all the file specified below.
.PHONY: clean
clean:
@echo ""; echo "<-- CLEANING -->";
$(RM) -r $(BUILDDIR) $(TARGET)