Skip to content

compile_target_ru

Serge Vakulenko edited this page Aug 26, 2015 · 1 revision

Компиляция uOS для конкретной целевой платформы

Для сборки UOS под конкретную целевую платформу необходимо создать рабочий каталог и поместить в него два файла: target.cfg и Makefile.

target.cfg

Файл target.cfg задаёт архитектуру целевого процессора, список компилируемых модулей, стартовый файл, а также имя компилятора и все параметры, необходимые для сборки. Пример для архитектуры ARM7:

ARCH     = arm
MODULES  = runtime kernel timer uart stream random mem regexp \
                  s3c4530 buf net crc snmp
STARTUP  = startup.S

CFLAGS   = -I$(OS)/sources -fno-builtin -fsigned-char -O3 -DARM_S3C4530
ASFLAGS  = -I$(OS)/sources
DEPFLAGS = -MT $@ -MD -MP -MF .deps/$*.dep
LDFLAGS  = -nostdlib -T $(OS)/examples/arm-at91sam7/ldscript.x $(TARGET)/startup.o
LIBS     = -L$(TARGET) -luos -lgcc
CC       = arm-elf-gcc -Wall
AR       = arm-elf-ar
SIZE     = arm-elf-size
OBJDUMP  = arm-elf-objdump
OBJCOPY  = arm-elf-objcopy

Переменная ARCH может иметь значения arm, avr или i386.

Переменная MODULES содержит список требуемых модулей из каталога uos/sources или uos/contrib. Если у Вас имеется свой каталог дополнительный модулей (вместо uos/contrib), Вы можете использовать его, установив переменную CONTRIB, например:

CONTRIB = $(HOME)/Project/mcu

Если для архитектуры имеется несколько разных стартовых файлов, Вы можете выбрать нужный, задав его имя в переменной STARTUP.

Makefile

В файле Makefile необходимо:

  • Определить переменную TARGET, содержащую имя рабочего каталога
  • Определить переменную OS, задающую абсолютный путь к текстам uOS
  • Подключить файл target.cfg параметров компиляции
  • Подключить файл targets/rules.cfg из каталога uOS, содержащий правила компиляции, с учётом параметров
  • Задать цели all и clean.

Вы можете также добавить правила для сборки Вашего приложения.

Пример:

TARGET  = $(CURDIR)
OS      = $(HOME)/Project/uos

include target.cfg

all:    startup.o libuos.a

clean:
        rm -rf *.[oasi] *~ $(MODULES)

include $(OS)/sources/rules.cfg

По команде

$ make произойдет компиляция всех требуемых модулей, и будут созданы статовый файл startup.o и библиотека uOS libuos.a.

You can’t perform that action at this time.