Перейти к содержанию
    

Создание проекта на assembler в STM32F4

2 часа назад, haker_fox сказал:

Ибо куча постов в стиле "видновс .... и пользователи виндовс..." запомнилась, а вот полезная информация потонула за тоннами гневных изречений... жаль.

Есть такая секта "Свидетелей Линуха". :biggrin:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Коль уж мы тут все равно в офтоп скатились, поделюсь своим свежим. Надоело вручную менять цель (debug/release), а cmake для STM32 использовать как-то уж чересчур... Вот и сделал такое чудовище:

Spoiler

# make debug adds -DEBUG -Werror
# make ADDEFS="additional defs"
BINARY		= chrono
BOOTPORT	?= /dev/ttyUSB0
BOOTSPEED	?= 115200
# MCU FAMILY
FAMILY		?= F1
# MCU code
MCU			?= F103x8
# density (stm32f10x.h, lines 70-84)
DENSITY 	?= MD
# change this linking script depending on particular MCU model,
LDSCRIPT	?= stm32F103xB.ld
DEFS		= ${ADDEFS} -DVERSION=\"0.1.0\"
TARGET := RELEASE
# proxy GPS output over USART1
#DEFS += -DUSART1PROXY

FP_FLAGS	?= -msoft-float -mfloat-abi=soft
ASM_FLAGS	?= -mthumb -mcpu=cortex-m3 -mfix-cortex-m3-ldrd
ARCH_FLAGS	= $(ASM_FLAGS) $(FP_FLAGS)

###############################################################################
# Executables
#PREFIX		?= arm-none-eabi
# gcc from arm web site 
PREFIX		?= /opt/bin/arm-none-eabi
TOOLCHLIB	?= /opt/arm-none-eabi/lib
RM			:= rm -f
RMDIR		:= rmdir
CC			:= $(PREFIX)-gcc
# don't replace ld with gcc: the binary size would be much greater!!
LD			:= $(PREFIX)-ld
AR			:= $(PREFIX)-ar
AS			:= $(PREFIX)-as
SIZE 		:= $(PREFIX)-size
OBJCOPY		:= $(PREFIX)-objcopy
OBJDUMP		:= $(PREFIX)-objdump
GDB			:= $(PREFIX)-gdb
STFLASH		:= $(shell which st-flash)
STBOOT		:= $(shell which stm32flash)
DFUUTIL		:= $(shell which dfu-util)

###############################################################################
# Source files
OBJDIR 		= mk
SRC			:= $(wildcard *.c)
OBJS		:= $(addprefix $(OBJDIR)/, $(SRC:%.c=%.o))
STARTUP		= $(OBJDIR)/startup.o
OBJS 		+= $(STARTUP)
# dependencies: we need them to recompile files if their headers-dependencies changed
DEPS		:= $(OBJS:.o=.d)

INC_DIR ?= ../inc

INCLUDE 	:= -I$(INC_DIR)/Fx -I$(INC_DIR)/cm
LIB_DIR		:= $(INC_DIR)/ld

###############################################################################
# C flags
CFLAGS		+= -O2 -g -D__thumb2__=1 -MD
CFLAGS		+= -Wall -Wextra -Wshadow 
CFLAGS		+= -fno-common -ffunction-sections -fdata-sections -fno-stack-protector
CFLAGS		+=  $(ARCH_FLAGS)

###############################################################################
# Linker flags
LDFLAGS		+= --static -nostartfiles -nostdlibs 
LDFLAGS		+= -L$(LIB_DIR) -L$(TOOLCHLIB)
LDFLAGS		+= -T$(LDSCRIPT)

###############################################################################
# Used libraries
LDLIBS		+=  -lc $(shell $(CC) $(CFLAGS) -print-libgcc-file-name)

DEFS		+= -DSTM32$(FAMILY) -DSTM32$(MCU) -DSTM32F10X_$(DENSITY)

ELF		:= $(OBJDIR)/$(BINARY).elf
LIST	:= $(OBJDIR)/$(BINARY).list
BIN		:= $(BINARY).bin
HEX		:= $(BINARY).hex

all: $(OBJDIR)/RELEASE
all: bin list size
release: all

debug: CFLAGS += -DEBUG -Werror
debug: TARGET := DEBUG
debug: $(OBJDIR)/DEBUG
debug: bin list size

$(OBJDIR)/DEBUG: 
	make clean
$(OBJDIR)/RELEASE:
	make clean

elf: $(ELF)
bin: $(BIN)
hex: $(HEX)
list: $(LIST)

ifneq ($(MAKECMDGOALS),clean)
-include $(DEPS)
endif

$(OBJDIR):
	mkdir $(OBJDIR)

$(STARTUP): $(INC_DIR)/startup/vector.c
	$(CC) $(CFLAGS) $(DEFS) $(INCLUDE) -o $@ -c $<

$(OBJDIR)/%.o: %.c
	@echo "  CC      $<"
	$(CC) $(CFLAGS) $(DEFS) $(INCLUDE) -o $@ -c $<

$(BIN): $(ELF)
	@echo "TARGET: $(TARGET)"
	@> $(OBJDIR)/$(TARGET)
	@echo "  OBJCOPY $(BIN)"
	$(OBJCOPY) -Obinary $(ELF) $(BIN)

$(HEX): $(ELF)
	@echo "  OBJCOPY $(HEX)"
	$(OBJCOPY) -Oihex $(ELF) $(HEX)

$(LIST): $(ELF)
	@echo "  OBJDUMP $(LIST)"
	$(OBJDUMP) -S $(ELF) > $(LIST)

$(ELF): $(OBJDIR) $(OBJS) $(LDSCRIPT)
	@echo "  LD      $(ELF)"
	$(LD) $(LDFLAGS) $(OBJS) $(LDLIBS) -o $(ELF)

size: $(ELF)
	$(SIZE) $(ELF)    

clean:
	@echo "  CLEAN"
	@$(RM) $(HEX)
	@$(RM) -rf $(OBJDIR) 2>/dev/null || true


flash: $(BIN)
	@echo "  FLASH  $(BIN)"
	$(STFLASH) --reset write $(BIN) 0x8000000

boot: $(BIN)
	@echo "  LOAD $(BIN) through bootloader"
	$(STBOOT) -b$(BOOTSPEED) $(BOOTPORT) -w $(BIN)

dfuboot: $(BIN)
	@echo "  LOAD  $(BIN) THROUGH DFU"
	$(DFUUTIL) -a0 -D $(BIN) -s 0x08000000

.PHONY: clean flash boot

 

 

Изменено пользователем Eddy_Em

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Какая среда?

Чем плох встроенный в среду вариант?

 

Например, в keil так:

1.jpg.347634fb4b3b000b6b91bdb2aa0cfc6d.jpg

Вполне удобно.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 minutes ago, Forger said:

Чем плох встроенный в среду вариант?

Тем, что его нет, очевидно! Мне лень заморачиваться с cmake. Да и все равно я собираю в командной строке, а не клавосочетанием в IDE! В отдельном терминале приятней выхлоп смотреть, нежели в маленьком окошке, которое IDE предоставляет.

2020.01.16_01:50:28.png

Изменено пользователем Eddy_Em

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 minutes ago, Eddy_Em said:

 нежели в маленьком окошке, которое IDE предоставляет.

 

Это зависит от размера мониторов и их количества.

Если моник один, то мне очень удобен широкоформатный, привык и не могу работать на обычных. Никаких крохотных окон.

Мне лично гораздо удобнее исправлять ошибки, щелкая на них и среда открывает соотв. файл в соотв. месте.

Но вообще - это все вкусовщина ))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вкусовщина, конечно. Я вообще в случае, когда надо удаленно немножко кода поправить, запускаю mcedit или nano, чтобы не париться с монтированием по sshfs и запуском IDE… Да и qt-creator в качестве IDE я совсем недавно начал использовать. До этого много лет на geany сидел, а он как бы и не IDE вовсе…

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

7 minutes ago, Eddy_Em said:

Да и qt-creator в качестве IDE я совсем недавно начал использовать. До этого много лет на geany сидел, а он как бы и не IDE вовсе…

Ну надо же, а я так на geany и сижу (причем специально на каком-то древнем, ибо вид свежего меня оскорбляет). А qt-creator тормознут...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 1/12/2020 at 7:52 PM, haker_fox said:

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

IEEE, SPIE предлагают одновременно шаблоны для статей в формате MS Word и стилевые файлы для LaTeX. Там же есть примеры с выходными файлами в формате pdf. При наличии математических формул (не очень простых) явно LaTeX выигрывает. Некоторые издательства (например) и конференции (ещё пример) требуют оформление в LaTeX'е.  Сфер примения много.

Сделать оформление не по правилам используя MS Word (LibreOffice) значительно проще (стиль абзаца использовали неверно), чем используя LaTeX (Вы только смысловую часть делаете, оформление текста не Ваше дело). Некоторым не нравится, что нет явного WYSIWYG (но да, есть специальные среды с этим режимом).

LaTeX (TeX) является кроссплатформенным (Win, Mac, Linux, Dos) и поэтому перенос файлов не представляет проблемы.

Quote

И прочитав пару-тройку раз книжку "Все про ТеХ" Дональда нашего Кнута, можно самому всякие штуки крутые выворачивать.

Не читайте эту книгу не познакомившись с LaTeX (TeX) по другим книгам! Её действительно надо читать не раз, Eddy_Em здесь абсолютно прав.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Извиняюсь, что поздно написал, информация на этом форуме оказалась весьма полезной! Огромное спасибо хочу Сказать https://electronix.ru/forum/index.php?app=core&module=members&controller=profile&id=4140 ( Владиславу) за помощь в освоении создания проекта в Keil на assembler! Я получил доп баллы в рейтинг , а затем смог сдать экзамен на отлично!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...