Nastavenie prostredia Code::Blocks pre vývoj na platforme STM

Z kiwiki
Prejsť na: navigácia, hľadanie

Obsah

Účel

Pre vývoj softvéru pre mikrokontroléry (STM, Cypress, ...) existuje viacero vývojových prostredí. Bohužiaľ, skoro všetky výhradne pre OS Windows. Pre OS GNU/Linux tak zostáva asi ten najlepší spôsob zostavenia programu - ručne, resp. pomocou Makefile, kde sa dajú konkrétne nastaviť jednotlivé kroky zostavovania.

Poznámka: prostredie Code::Blocks umožňuje nastavenie kompilátora pre ARM procesory, avšak zostavený kód nie vždy korektne fungoval na danom mikrokontroléri.

Postup nastavenia prostredia

Inštalácia

Inštalácia Code::Blocks

apt-get install codeblocks

Inštalácia kompilátora gcc pre ARM architektúru:

apt-get install gcc-arm-none-eabi, libnewlib-arm-none-eabi

Globálne nastavenie kompilátora v prostredí Code::Blocks

  • Spusti Code::Blocks
  • menu: Settings -> Compiler...
    • v zobrazenom dialógu vybrať "Global compiler settings"
    • V hornej časti vybrať "Selected compiler" riadok: "GNU GCC Compiler for ARM"
    • následne vybrať záložku "Toolchain executables"
      • Compilers's instalation directory: /usr
      • C commpiler: arm-none-eabi-gcc
      • C++ compiler: arm-none-eabi-g++
      • Linker for dynamic libs: arm-none-eabi-gcc
      • Linker for static libs: arm-none-eabi-ar
      • Resource compiler: - (nič)
      • Make program: make
  • potvrdiť OK

Príprava Makefile pre projekt

Pre prípravu kostry projektu som vychádzal z projektu: https://github.com/kred/cortex-skeleton ktorý som upravil do nasledujúcej podoby.

V adresári projektu sa nachádzajú:

A) Adresáre s knižnicami

  • bin - adresár s výstupnými zostavenými súbormi
  • device - všetky zdrojové kódy CMSIS a StdPeriphDriver
  • linker - obsahuje súbor loadera pre procesor STMF030F4

B) používateľské adresáre:

  • inc - pre .h súbory
  • src - pre .c súbory

C) Pravidlá zostavenia kódu

  • súbor Makefile sa skladá z 2 častí:
    • Makefile: obsahuje nastvenie adresárov a súborov, ktoré sa majú v procese zostavenia pripojiť k projektu
    • cortex-skeleton.mk : obsahuje pravidlá pre kompiláciu a zostavenie kódu


Súbory na stiahnutie

Kostra projektu so súborom Makefile STMF0project.zip

Nastavenie prostredia Code::Blocks

  • Vytvoríme si nový, prázdny projekt: File->New->Project->Empty project
  • V okne sprievodcu zadefinujeme názov, umiestnenie. Sprievodcu odklikať do konca.
  • Zobrazíme si vlastnosti projektu: Project->Propeties
    • na prvej záložke zaškrnúť pole "This is custom Makefile", čo spôsobí, že proces zostavenia nášho programu sa bude riadiť pripraveným súborom Makefile.
  • Do adresára novovytvoreného projektu prekopírujeme pripravenú kostru projektu
  • Aby sa v strome projektu zobrazovali súbory, je potrebné ich pridať do projektu. Toto nemá žiadny vplyv na kompiláciu a zostavenie, je to len nastavenie viditeľnosti súborov v IDE.
    • Pravé tlačidlo na projekt, vyberieme "add files recursively..."
      • Vybrať adresár device. Potvrdiť 2x.
      • postup opakujeme pre adresár inc
      • postup opakujeme pre adresár src

Nahranie (Flash) programu do uC

  • v menu Tools vyberieme "Configure Tools..."
  • pridáme nový nástroj: tlačidlo Add
    • Name: Flash (alebo akokoľvek chceme)
    • Executable: make
    • Parameters: -f $(MAKEFILE) flash
    • Working directory: $(PROJECT_DIR)
    • Launching options: (2) Launch tool hidden with standard output redirect

Toolbary v prostredí sa nedajú meniť, môžeme však tomuto príkazu priradiť klávesovú skratku cez: Settings->Editor->Keyboard shortcuts->Tools->

Poznámka: ak nie je menu Tools dostupné, je potrebné nainštalovať balíček codeblocks-contrib, ktorý obsahuje všetky pluginy.

Úprava súboru Makefile

Čo je treba v súbore makefile zmeniť:

  • cestu FLASH_PATH, ku programu stm32flash
  • cestu COMM_PORT k rozhraniu, ku ktorému je pripojený mikrokontrolér

Čo je treba doplniť:

  • V prípade, že do projektu pridáte nový .c súbor, je potrebné pridať do do zoznamu (CSRC) prekladaných súborov.

Ukážka 1. časti súboru Makefile

PROJECT = usart
# cesta k suboru makefile
SKELETON_BASE = .
# uC, pre ktory sa robi preklad. Zatial je podporovana len tento typ.
DEVICE_MODEL = stm32f030f4
 
# ----------------- POUZIVATELSKE ADRESARE ----------------------
# cesta k uzivatelskym .c a .h suborom
SOURCE_DIR = $(SKELETON_BASE)/src
INCDIR = $(SKELETON_BASE)/inc
# vystupnu adresar, kde budu vesledne prelozne bin subory
OUTPUT_DIR = $(SKELETON_BASE)/bin
# cesta ku knizniciam STM
PERIPH_SOURCE_DIR = $(SKELETON_BASE)/device/STM32F0xx/peripherals/source
# -----------------------------------------------------------------
 
# --------------------  FLASHovanie kodu ----------------------------
# cesta k programu stm32flash, pomocou ktoreho sa nahra program do uC 
FLASH_PATH = /opt/stm/stm32flash/stm32flash 
# port, ku ktoremu je pripojene rozhranie pre nahravanie programu
COMM_PORT = /dev/ttyUSB0
#---------------------------------------------------------------------
 
 
# ---------------- ZOZNAM .c suborov na preklad ----------------------
# --------!!!!     SEM DOPLNIT SVOJE SUBORY        !!! ---------------
# --------------------------------------------------------------------
CSRC += $(SOURCE_DIR)/main.c \
		$(SOURCE_DIR)/stm32f0xx_it.c
# --------------------------------------------------------------------
 
# -----------------ZOZNAM .c suborov zo standardnych kniznic na preklad
CSRC += $(PERIPH_SOURCE_DIR)/stm32f0xx_adc.c \
		$(PERIPH_SOURCE_DIR)/stm32f0xx_can.c \
		$(PERIPH_SOURCE_DIR)/stm32f0xx_cec.c \
		$(PERIPH_SOURCE_DIR)/stm32f0xx_comp.c \
		$(PERIPH_SOURCE_DIR)/stm32f0xx_crc.c \
		$(PERIPH_SOURCE_DIR)/stm32f0xx_crs.c \
		$(PERIPH_SOURCE_DIR)/stm32f0xx_dac.c \
		$(PERIPH_SOURCE_DIR)/stm32f0xx_dbgmcu.c \
		$(PERIPH_SOURCE_DIR)/stm32f0xx_dma.c \
		$(PERIPH_SOURCE_DIR)/stm32f0xx_exti.c \
		$(PERIPH_SOURCE_DIR)/stm32f0xx_flash.c \
		$(PERIPH_SOURCE_DIR)/stm32f0xx_gpio.c \
		$(PERIPH_SOURCE_DIR)/stm32f0xx_iwdg.c \
		$(PERIPH_SOURCE_DIR)/stm32f0xx_i2c.c \
		$(PERIPH_SOURCE_DIR)/stm32f0xx_misc.c \
		$(PERIPH_SOURCE_DIR)/stm32f0xx_pwr.c \
		$(PERIPH_SOURCE_DIR)/stm32f0xx_rcc.c \
		$(PERIPH_SOURCE_DIR)/stm32f0xx_rtc.c \
		$(PERIPH_SOURCE_DIR)/stm32f0xx_spi.c \
		$(PERIPH_SOURCE_DIR)/stm32f0xx_syscfg.c \
		$(PERIPH_SOURCE_DIR)/stm32f0xx_tim.c \
		$(PERIPH_SOURCE_DIR)/stm32f0xx_usart.c \
		$(PERIPH_SOURCE_DIR)/stm32f0xx_wwdg.c 
 
# --------------------  DEVICE STMF030F4 ------------------------------
INCDIR += $(SKELETON_BASE)/device/STM32F0xx/core/Include $(SKELETON_BASE)/device/STM32F0xx/peripherals/include
SRCDIR += $(SKELETON_BASE)/device/STM32F0xx/core/Source
ASMSRC += $(SRCDIR)/startup_stm32f030.s
CSRC   += $(SRCDIR)/system_stm32f0xx.c
COPT   += -DSTM32F030 -DUSE_STDPERIPH_DRIVER -mthumb -mcpu=cortex-m0 -Os $(foreach dir, $(INCDIR), -I$(dir)) 
LIBS   +=
LINKER  = $(SKELETON_BASE)/linker/STM32F030F4.ld
 
include ./cortex-skeleton.mk

Spustenie kompilácie pomocou Makefile

Otvorte si terminál v adresári, kde sa nachádza súbor Makefile.

Spustenie prekladu a zostavenia kódu:

make all

Zmazanie preložených súborov a adresári bin:

make clean

napálenie preloženého kódu do mikrokontroléra:

make flash
Osobné nástroje
Menné priestory

Varianty
Operácie
Navigácia
Rýchle linky
Nástroje
Tlačiť/exportovať