Емельянов Эдуард Владимирович (eddy_em) wrote,
Емельянов Эдуард Владимирович
eddy_em

STM32

Сегодня из Чип-и-Дипа пришли-таки ко мне комплектующие. До этого я уже немного искал, как же работать с STM32. Нашел множество примеров, наиболее выдающиеся вот: раз, два. Первый (и подобные ему) сразу отметаем, т.к. требует Eclipse. Второй вроде бы подходит.
Накачал я много чего разного, но решил начать со сборки простейшего проекта по второй статье.


Итак, начал я с того, что установил stlink и средства разработки под arm:

yaourt -S stlink
yaourt -S arm-none-eabi

Далее я скачал образец разработки для STM32:

git clone https://github.com/h0rr0rrdrag0n/stm32vldiscovery-linux-template

И подправил Makefile (в дальнейшем, возможно, попробую cmake):

BIN=stm32vldiscovery-linux-template

TOOLS_PATH=/usr/arm-none-eabi
TOOLS_PREFIX=arm-none-eabi-
TOOLS_VERSION=4.5.1

CFLAGS=-c -mcpu=cortex-m3 -mthumb -Wall -O0 -mapcs-frame -D__thumb2__=1 
CFLAGS+=-msoft-float -gdwarf-2 -mno-sched-prolog -fno-hosted -mtune=cortex-m3 
CFLAGS+=-march=armv7-m -mfix-cortex-m3-ldrd -ffunction-sections -fdata-sections 
CFLAGS+=-I./cmsis -I./stm32_lib -I.
ASFLAGS=-mcpu=cortex-m3 -I./cmsis -I./stm32_lib -gdwarf-2 -gdwarf-2
LDFLAGS=-static -mcpu=cortex-m3 -mthumb -mthumb-interwork -Wl,--start-group 
LDFLAGS+=-L$(TOOLS_PATH)/lib/thumb2 -lc -lg -lstdc++ -lsupc++ -lgcc -lm 
#LDFLAGS+=--section-start=.text=0x8000000
LDFLAGS+=-Wl,--end-group -Xlinker -Map -Xlinker $(BIN).map -Xlinker 
LDFLAGS+=-T ./stm32_lib/device_support/gcc/stm32f100rb_flash.ld -o $(BIN).elf

#CC=$(TOOLS_PATH)/bin/gcc
#AS=$(TOOLS_PATH)/bin/as
#SIZE=$(TOOLS_PATH)/bin/size
CC=$(TOOLS_PREFIX)gcc
AS=$(TOOLS_PREFIX)as
SIZE=$(TOOLS_PREFIX)size

CMSISSRC=./cmsis/core_cm3.c
STM32_LIBSRC=./stm32_lib/system_stm32f10x.c ./stm32_lib/stm32f10x_it.c
STM32_LIBSRC+=./stm32_lib/stm32f10x_rcc.c ./stm32_lib/stm32f10x_gpio.c
SRC=main.c

OBJ=core_cm3.o system_stm32f10x.o stm32f10x_it.o startup_stm32f10x_md_vl.o
OBJ+=stm32f10x_rcc.o stm32f10x_gpio.o
OBJ+=main.o

all: ccmsis cstm32_lib cc ldall
	$(SIZE) -B $(BIN).elf

ccmsis: $(CMSISSRC)
	$(CC) $(CFLAGS) $(CMSISSRC)

cstm32_lib: $(STM32_LIBSRC)
	$(CC) $(CFLAGS) $(STM32_LIBSRC)
	$(AS) $(ASFLAGS) ./stm32_lib/device_support/gcc/startup_stm32f10x_md_vl.S -o startup_stm32f10x_md_vl.o

cc: $(SRC)
	$(CC) $(CFLAGS) $(SRC)

ldall:
	$(CC) $(OBJ) $(LDFLAGS)

.PHONY: clean load

clean:
	rm -f 	$(OBJ) $(BIN).map
#$(BIN).elf
	make clean -C ./stlink/build/

load: $(BIN).elf
	st-util -p 1234 $(BIN).elf
#	./flashing_stm32vldiscovery.sh $(BIN).elf


Запускаем make:

make && make clean
arm-none-eabi-gcc -c -mcpu=cortex-m3 -mthumb -Wall -O0 -mapcs-frame -D__thumb2__=1  -msoft-float -gdwarf-2 -mno-sched-prolog -fno-hosted -mtune=cortex-m3  -march=armv7-m -mfix-cortex-m3-ldrd -ffunction-sections -fdata-sections  -I./cmsis -I./stm32_lib -I. ./cmsis/core_cm3.c
arm-none-eabi-gcc -c -mcpu=cortex-m3 -mthumb -Wall -O0 -mapcs-frame -D__thumb2__=1  -msoft-float -gdwarf-2 -mno-sched-prolog -fno-hosted -mtune=cortex-m3  -march=armv7-m -mfix-cortex-m3-ldrd -ffunction-sections -fdata-sections  -I./cmsis -I./stm32_lib -I. ./stm32_lib/system_stm32f10x.c ./stm32_lib/stm32f10x_it.c ./stm32_lib/stm32f10x_rcc.c ./stm32_lib/stm32f10x_gpio.c
arm-none-eabi-as -mcpu=cortex-m3 -I./cmsis -I./stm32_lib -gdwarf-2 -gdwarf-2 ./stm32_lib/device_support/gcc/startup_stm32f10x_md_vl.S -o startup_stm32f10x_md_vl.o
arm-none-eabi-gcc -c -mcpu=cortex-m3 -mthumb -Wall -O0 -mapcs-frame -D__thumb2__=1  -msoft-float -gdwarf-2 -mno-sched-prolog -fno-hosted -mtune=cortex-m3  -march=armv7-m -mfix-cortex-m3-ldrd -ffunction-sections -fdata-sections  -I./cmsis -I./stm32_lib -I. main.c
arm-none-eabi-gcc core_cm3.o system_stm32f10x.o stm32f10x_it.o startup_stm32f10x_md_vl.o stm32f10x_rcc.o stm32f10x_gpio.o main.o -static -mcpu=cortex-m3 -mthumb -mthumb-interwork -Wl,--start-group  -L/usr/arm-none-eabi/lib/thumb2 -lc -lg -lstdc++ -lsupc++ -lgcc -lm  -Wl,--end-group -Xlinker -Map -Xlinker stm32vldiscovery-linux-template.map -Xlinker  -T ./stm32_lib/device_support/gcc/stm32f100rb_flash.ld -o stm32vldiscovery-linux-template.elf
arm-none-eabi-size -B stm32vldiscovery-linux-template.elf
   text	   data	    bss	    dec	    hex	filename
   6728	     56	    156	   6940	   1b1c	stm32vldiscovery-linux-template.elf
rm -f 	core_cm3.o system_stm32f10x.o stm32f10x_it.o startup_stm32f10x_md_vl.o stm32f10x_rcc.o stm32f10x_gpio.o main.o stm32vldiscovery-linux-template.map
make clean -C ./stlink/build/

и получаем файлик stm32vldiscovery-linux-template.elf.

Подключаю макетку к ST-LINK, включаю в USB. В директории /dev появилась ссылка: /dev/stlinkv2_1 -> bus/usb/005/006. Права на устройство udev выставил в 0666, так что, проблем с работой от пользователя быть не должно.

Запускаем make load и получаем фигвам:

make load
st-util -p 1234 stm32vldiscovery-linux-template.elf
non-option ARGV-elements: stm32vldiscovery-linux-template.elf 
2012-10-09T17:45:36 INFO src/stlink-usb.c: -- exit_dfu_mode
2012-10-09T17:45:36 INFO src/stlink-common.c: Loading device parameters....
2012-10-09T17:45:36 WARN src/stlink-common.c: unknown chip id! 0xe0042000
Chip ID is 00000000, Core ID is  00000000.
KARL - should read back as 0x03, not 60 02 00 00
init watchpoints
Listening at *:1234...


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

Tags: stm32, железяки
Subscribe

  • Чем бы таким заменить STM32F072C8T6?

    Полез сейчас на али цены посмотреть, а там… В среднем уже по 600-700 рублей за штучку просят! Вообще охамели. И это - гарантированно БУшные ведь!.. А…

  • Релюшки на CAN-шине

    Закончил с прошивкой для новой железяки. Как "наследница" USB-CAN переходника, она умеет все то же самое + несколько специфичных вещей (опрос…

  • Дохлый SSD

    Писал уже о китайском SSD, сдохшем за полтора месяца работы. Вот он, герой: Сегодня у нас опять работы с оптоволоконным спектрографом на цейссе,…

promo eddy_em august 17, 2019 12:33 3
Buy for 10 tokens
Юра намедни напечатал корпус для хронометра. Для первого блина получилось неплохо: И еще немного фотографий:
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic
  • 4 comments