STM32

Oct. 9th, 2012 05:56 pm
eddy_em: (hram nauki)
[personal profile] eddy_em
Сегодня из Чип-и-Дипа пришли-таки ко мне комплектующие. До этого я уже немного искал, как же работать с 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...


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

This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

If you are unable to use this captcha for any reason, please contact us by email at support@dreamwidth.org

May 2025

S M T W T F S
    123
45678910
11121314151617
1819202122 2324
25262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated May. 24th, 2025 01:07 am
Powered by Dreamwidth Studios