Minnesanteckningar för att komma igång med STM32F0xx Länkar att spana in\\ [[https://electronut.in/stm32-start/]] \\ [[https://freeelectron.ro/arm-cross-compiler-tutorial-stm32/]] och [[https://freeelectron.ro/bare-metal-stm32-led-blink/]] \\ [[https://web.eecs.umich.edu/~prabal/teaching/resources/eecs373/toolchain-notes.pdf]] \\ [[https://jacobmossberg.se/posts/2018/08/11/run-c-program-bare-metal-on-arm-cortex-m3.html]] === MSYS2 & OpenOCD === [[https://www.msys2.org/|MSYS2]] Kom ihåg att öppna via genvägen ''MSYS2 MinGW 64-bit'', annars fungerar inte PATH som det ska och paket som installeras med pacman kan inte hittas # pacman -Syuu # pacman -Ss openocd # pacman -S mingw-w64-x86_64-openocd-git # openocd -f "interface/stlink-v2.cfg" -f "target/stm32f0x.cfg" == För att flasha == Starta openocd $ openocd -f "interface/stlink-v2.cfg" -f "target/stm32f0x.cfg" Anslut med telnet $ telnet localhost 4444 > reset halt > stm32f0x mass_erase 0 stm32x mass erase complete > flash write_bank 0 bin/manualstuff1.bin 0 wrote 204 bytes from file bin/manualstuff1.bin to flash bank 0 at offset 0x00000000 in 0.040807s (4.882 KiB/s) === ARM GCC Toolchain === Ladda ner senaste [[https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads|GNU Arm Embedded Toolchain]] och installera. == ARM GCC Compiler == == ARM LD Linker == == ARM Objdump == $ arm-none-eabi-objdump.exe bin/manualstuff1.bin.elf -d == ARM GDB Debugger == Starta först openocd $ openocd -f "interface/stlink-v2.cfg" -f "target/stm32f0x.cfg" Starta sedan GDB och anslut till openocd-gdb-servern $ arm-none-eabi-gdb.exe bin/manualstuff1.bin.elf --eval-command="target remote localhost:3333" Fina kommandon hbr - hardware breakpoint i b - info breakpoint s - step si - step instruction x *0 - hexdump address 0 disassemble main - disassemble main i r - print registers i fr - frame info i var - variable symbol info i fu - function symbol info === CubeMX & STM32 standard peripherals library=== STM32CubeF0 [[https://www.st.com/en/embedded-software/stm32cubef0.html|STM32CubeF0]] STM32CubeMX [[https://www.st.com/en/development-tools/stm32cubemx.html|STM32CubeMX]] STM32CubeProg [[https://www.st.com/en/development-tools/stm32cubeprog.html|STM32CubeProg]] Standard peripherals library - [[https://www.st.com/en/embedded-software/stsw-stm32048.html|STSW-STM32048]]