Inhoudsopgave:

Begin met het ontwikkelen van STM32 op Linux: 4 stappen
Begin met het ontwikkelen van STM32 op Linux: 4 stappen

Video: Begin met het ontwikkelen van STM32 op Linux: 4 stappen

Video: Begin met het ontwikkelen van STM32 op Linux: 4 stappen
Video: What is FOC? (Field Oriented Control) And why you should use it! || BLDC Motor 2024, Juli-
Anonim
Image
Image
Download alles wat je nodig hebt
Download alles wat je nodig hebt

In deze Instructable laat ik je zien hoe gemakkelijk het is om STM32-programma's op Linux te ontwikkelen. Ik begon Linux 2 jaar geleden als mijn hoofdmachine te gebruiken en ben nog niet in de steek gelaten. Alles werkt sneller en beter dan Windows. Natuurlijk is het af en toe wat minder handig, maar het dwingt je om dingen dieper te leren zodat je er gebruik van kunt maken.

Hoe dan ook, in deze instructable gaat een deel van een serie die ik hier start EN op youtube over hoe je ermee moet beginnen. Zorg ervoor dat je ook mijn YouTube-video bekijkt, waar ik alles als één segment uitleg en je naast me kunt coderen.

In deze serie laat ik je zien hoe je kunt ontwikkelen met alleen een teksteditor zoals Kladblok, SublimeText of Atom, zodat je geen propriëtaire software of IDE nodig hebt. Dit is zo kaal als het maar kan en het is verrassend eenvoudig.

Stap 1: Download alles wat je nodig hebt

Je moet drie delen downloaden om alles te laten werken:

  • GCC-compiler voor ARM
  • STM32-firmwarebestanden
  • St-link hulpprogramma
  • Voorbeeldproject

Compiler is het belangrijkste stuk software dat onze C-code compileert met alle andere bibliotheekbestanden in machinetaal die onze stm32-controller kan begrijpen. Download de laatste voorgecompileerde versie van deze compiler.

De map met STM32-firmware is degene die alle opstart- en kernbestanden bevat die nodig zijn voor de werking van de hoofdprocessor. We zullen Standard Peripheral Library gebruiken die door HAL is overtroffen. Ik hou meer van StPeriphLibrary omdat bedrijven die aan deze processors werken ze gebruiken omdat het robuust en ouder is en wordt ondersteund. Het is ook stoerder. Het vermindert niet het werk dat u moet doen om een randapparaat te initialiseren of een LED in te schakelen, maar het dwingt u dus om te leren hoe deze processors werken. Daarmee heb je meer kennis van innerlijke werking, waardoor je elke taak kunt programmeren.

Het laatste stukje software om te downloaden is st-link utility. Het wordt onderhouden op github en wordt gebruikt om gecompileerde binaire bestanden naar de processor over te dragen met behulp van stlink IC op het bord dat dient als een SWD / JTAG-programmeur/debugger.

Ik heb ook een voorbeeldprojectmap verstrekt waar ik het later over heb en die je kunt downloaden. Het bevindt zich in de eerste VIDEO1-map.

Stap 2: Software installeren

Software installeren
Software installeren
Software installeren
Software installeren

Nadat je alle bestanden hebt gedownload, raad ik je aan ze in een gemeenschappelijke map te plaatsen, omdat ze allemaal samen voor hetzelfde doel worden gebruikt. Ik heb alle mappen in een map met de naam "Embedded" in mijn HOME-directory geplaatst.

We beginnen met de gemakkelijkste, de STM32-bibliotheken. De map die u hebt gedownload, kunt u daar gewoon laten staan. Zorg ervoor dat u rondkijkt om te zien waar de juiste bestanden zijn opgeslagen. Daarom kunt u het belangrijkste MakeFile wijzigen en bewerken, zodat het met uw platform werkt.

De tweede gemakkelijkste is de compiler. U hoeft er ook niets aan te doen, maar we zullen de compiler een globaal toegankelijke functie maken, zodat u de compiler vanuit elke map kunt aanroepen, ongeacht het pad. Alle stappen kunnen in terminal of in gui worden gedaan, maar ik gebruik graag terminal, want als je ervaring opdoet, wordt het sneller en gemakkelijker en ik moedig je aan om terminal meer te gebruiken, als je er bang voor bent. Dit zijn de stappen:

  1. Ga naar je thuismap "/home/YOURUSERNAME/" of "~/" of typ cd in terminal
  2. open bestand ".bashrc" door te typen: nano.bashrc
  3. scrol omlaag naar het einde van het bestand en voeg deze regel toe: export PATH=$PATH:~/Embedded/gcc-arm-none-eabi-8-2018-q4/bin
  4. afsluiten door op te slaan: CTRL+X, klik op Y, ENTER
  5. opdracht uitvoeren: source.bashrc om terminalbronnen te vernieuwen
  6. controleer of alles werkt door te typen: arm-none-eabi-gcc --version, het zou de nieuwste versie van de compiler moeten weergeven

Om st-link te installeren, pakt u het archief dat u hebt gedownload uit in de map Embedded. Volg dan deze stappen:

  1. Uitvoeren: maak
  2. Ga naar de map "build/Release": cd build/Release
  3. Typ ls en u ziet twee uitvoerbare bestanden genaamd "st-flash" en "st-util"
  4. Verplaats die twee naar de bovenliggende map stlink: mv st-flash st-util../../
  5. U kunt, als u deze twee functies wilt gebruiken, het ".bashrc"-bestand opnieuw globaal bewerken door toe te voegen:

    export PATH=$PATH:~/Embedded/stlink/

Dat is alles! Je hebt alles wat je nodig hebt. Pak nu je favoriete teksteditor. Gebruik gewoon een standaard, een slimmere zoals SublimeText of Atom, dat is wat ik gebruik.

Stap 3: Een voorbeeldproject opzetten

Een voorbeeldproject opzetten
Een voorbeeldproject opzetten

We zullen nu een voorbeeldproject maken dat u kunt gebruiken om elk project te starten. Het is als een sjabloon waarbij alle hoofdinstellingen al zijn afgehandeld.

Je kunt het downloaden op mijn MEGA, de link staat in de eerste stap van deze instructable en onder elke YouTube-video van mij. Binnenin bevindt zich het lege main.c-bestand samen met enkele opstartbestanden voor deze processor en de Makefile. Makefile is degene die de C-compiler vertelt waar de arm-compiler te vinden is, hoe te compileren en waar alle bibliotheken zijn. Om deze geschikte bestanden voor uw project te krijgen, kunt u naar de STM32-bibliotheekmap gaan en controleren op een "project" of "voorbeelden"-mappen. Binnenin zul je deze bestanden zien en kopiëren: main.c, Makefile en XXX_conf.h, system_XXX.c. Ook heb je het stm32_flash.ld linker-bestand nodig dat te vinden is in de map:

"/FLASH_Program/TrueSTUDIO/FLASH_Program/" in de voorbeeldmap of zoek gewoon naar het bestand.

Makefile kan online worden gevonden of uit mijn map worden gekopieerd, maar je zult een paar dingen moeten veranderen. Laten we eens kijken naar mijn make-bestand en wat je zou kunnen veranderen.

# Pad naar stlink-map voor het uploaden van code naar board

STLINK=~/Embedded/stlink # Plaats hier uw bronbestanden (*.c) SRCS=main.c system_stm32f4xx.c # Bibliotheken bronbestanden #SRCS += stm32f4xx_rcc.c #SRCS += stm32f4xx_gpio.c # Binaire bestanden worden gegenereerd met deze naam (.elf,.bin,.hex) PROJ_NAME=test # Plaats hier uw STM32F4-bibliotheekcodemap, verander YOURUSERNAME in de uwe STM_COMMON=/home/matej/Embedded/STM32F4-Discovery_FW_V1.1.0 # Compilerinstellingen. Bewerk CFLAGS alleen om andere header-bestanden op te nemen. CC=arm-none-eabi-gcc OBJCOPY=arm-none-eabi-objcopy # Compilervlaggen CFLAGS = -g -O2 -Wall -Tstm32_flash.ld CFLAGS += -DUSE_STDPERIPH_DRIVER CFLAGS += -mlittle-endian -mthumb -mthumb -mthumb cortex-m4 -mthumb-interwork CFLAGS += -mfloat-abi=hard -mfpu=fpv4-sp-d16 CFLAGS += -I. # Inclusief bestanden uit STM-bibliotheken CFLAGS += -I$(STM_COMMON)/Bibliotheken/CMSIS/Include CFLAGS += -I$(STM_COMMON)/Bibliotheken/CMSIS/ST/STM32F4xx/Include CFLAGS += -I$(STM_COMMON)/ Bibliotheken/STM32F4xx_StdPeriph_Driver/inc CFLAGS += -I$(STM_COMMON)/Utilities/STM32F4-Discovery # voeg opstartbestand toe om SRCS te bouwen += $(STM_COMMON)/Libraries/CMSIS/ST/STM32F4xx/Source/Templates/Truemplates/Truemplates s OBJS = $(SRCS:.c=.o) vpath %.c $(STM_COMMON)/Libraries/STM32F4xx_StdPeriph_Driver/src \. PHONY: proj all: proj proj: $(PROJ_NAME).elf $(PROJ_NAME).elf: $(SRCS) $(CC) $(CFLAGS) $^ -o $@ $(OBJCOPY) -O ihex $(PROJ_NAME).elf $(PROJ_NAME).hex $(OBJCOPY) -O binair $(PROJ_NAME).elf $(PROJ_NAME).bin clean: rm -f *.o $(PROJ_NAME).elf $(PROJ_NAME).hex $(PROJ_NAME).bin # Flash de STM32F4 branden: proj $(STLINK)/st-flash write $(PROJ_NAME).bin 0x80000000

  • U kunt de eerste regel bewerken om het pad naar de uw stlink-hulpprogrammamap te wijzigen
  • U kunt de regel wijzigen naar de bestemming van uw map met bibliotheken en UW GEBRUIKERSNAAM

    STM_COMMON=/home/YOURUSERNAME/Embedded/STM32F4-Discovery_FW_V1.1.0

  • Bekijk ook de sectie waar alle bibliotheken zijn gekoppeld. Dit kan veranderen afhankelijk van het platform dat u gebruikt, dus controleer op wijzigingen in de bestandsstructuur. Al het andere dat paden naar bepaalde bestanden bevat, zoals bij de volgende regel met het opstartbestand, kan worden gewijzigd.

Nadat je al deze dingen in de Makefile hebt bewerkt, kun je controleren of het werkt door een terminal in je map te openen en te typen: make. Als het alles probleemloos compileert, bent u klaar. Zo niet, kijk dan naar de compilerfouten en bewerk de Makefile.

Als ik Atom gebruik, plaats ik ook twee stukjes code naast elkaar. Meestal main.c en Makefile aan de linkerkant, omdat je Makefile maar één keer hoeft te bewerken en bibliotheken aan de rechterkant. U kunt op de afbeelding zien dat ik de map heb geopend met de.c- en.h-bestanden voor elke bibliotheek. Dit kun je allemaal zien in de video's.

Stap 4: Klaar

Afgewerkt!
Afgewerkt!

Nu je Makefile hebt geconfigureerd en de compiler werkt, kun je deze map voor alle projecten als sjabloon gebruiken, dus zorg ervoor dat je een kopie van deze map opslaat.

U kunt ook de st-flash- en st-info-programma's testen door uw ontwikkelbord aan te sluiten en in terminal te typen:

st-info --probe

Je kunt het platform zien dat de stlink-software herkent en de IC-familie samen met cache en andere dingen. U kunt typen:

st-info

om alle beschikbare parameters te zien.

Nu kunt u beginnen met programmeren. In de volgende instructable en video laat ik je de basis van GPIO en klokken zien. Deze twee vormen de basis voor al het andere, aangezien bijna alles waarmee het bord communiceert via GPIO is en alles op de klok werkt en je zult het patroon zien voor het programmeren van deze processors.

Tot die tijd, bedankt voor het bekijken van mijn instructable en mijn YouTube-video, als je dat nog niet hebt gedaan.

Aanbevolen: