Getting Started
These instructions will get you a copy of the project up and running on your local
machine (Adafruit Feather STM32F405 Express board) for development and testing purposes.
Prerequisites
- Adafruit Feather STM32F405 Stackable Feather board with STM32F405 MCU runs at a blistering 168 MHz. If you want to debug C and assembler programs you need an ST-Link debugger/programmer.
- Terminal emulator application for PC, e.g.:
- PuTTY - Windows and Linux
- Tera Term - Windows
- Realterm - Windows
- minicom, microcom, screen - Linux
- Use the built in Eclipse console (but no LF)
Flash the Mecrisp-Cube
binary (
MecrispCubeF405.bin
) or the
util-binary (
MecrispCubeF405Util.bin
) to the Feather Board.
- Connect the BOOTP (BO Pin) to 3.3V
- Connect the Feather Board USB to the PC
- Program the binary with the STMCubeProgrammer
- Disconnect the BOOTP (BO Pin)
- Reset or power cycle the Feather board
Start the terminal emulator application on the PC.
Check for the serial communication port (e.g. for Linux
/dev/ttyACM0
).
I set the putty terminal configuration to
- Implicit CR in every LF
- Local echo: Auto
- Local line editing: Auto
- Keyboard Backspace: Control-H
- Keyboard Function: Keys VT100
- Remote character set: CP850
Mecrisp-Stellaris RA 2.5.4 by Matthias Koch.
Mecrisp-Cube 1.4.3 for STM32F405, 31/768 KiB RAM/FLASH dictionary (C) 2021 peter@spyr.ch
* Firmware Package STM32Cube F4 V1.26.0, USB-CDC (C) 2021 STMicroelectronics
* CMSIS-RTOS V2 FreeRTOS wrapper, FreeRTOS Kernel V10.3.1 (C) 2020 Amazon.com
* FatFs for serial flash and microSD - Generic FAT fs module R0.12c (C) 2017 ChaN
* tiny vi - part of BusyBox (C) 2000, 2001 Sterling Huxley
include 0:/etc/rc.local
23 5 / .[CR] 4 ok.
: hello ." World" ;[CR] ok.
hello[CR] World ok.
Additional Tools and Local Filesystem
Populate a microSD with the contents of
sdcard. Put the microSD into the F405 slot and reset or power cycle the board.
The directory should look like this:
ls -l 1:[CR]
drw- 0 2021-04-18T18:12:38 boot
drw- 0 2021-03-21T18:47:52 etc
drw- 0 2021-03-21T18:47:54 fsr
drw- 0 2021-03-21T18:47:54 home
drw- 0 2021-03-21T18:47:56 man
-rwa 7219 2021-01-08T19:42:36 README.md
ok.
You can use the local CLI commands like
mkfs
,
mkdir
and
cp
to create a filesystem on the serial flash and fill it with files and folders. But this is tedious job because I haven't yet implemented a recursive copy for MecrispCube. But there is prepared disk image
(for details see
MicroSdBlocks#Serial_Flash) on microSD and the tool
dd
. You can copy the disk image to the drive 0: (this takes about 2 Minutes):
dd 1:/boot/fd-2MiB.img 0:[CR]
ok.
mount 0:[CR]
ok.
ls 0:[CR]
man fsr README.md boot
etc home
ok.
The Mecrisp have some tools bundled in its distribution e.g. assembler, disassembler, dump, float. I put those tools and some more into the folder
/fsr
. With the "init.fs script" I compile my favorite ones into the flash directory:
compiletoflash[CR] ok.
include /etc/init.fs[CR]
init.fs Loading started
RAM Dictionary: 392991 KiB
utils.fs loading ...
conditional.fs loading ...
dump.fs loading ...
disassembler-m3.fs loading ...
float.fs loading ...
threads.fs loading ...
RAM Dictionary: 392981 KiB
init.fs finished ok.
For example, the word disassember is available now:
see dump[CR]
080405F0: B500 push { lr }
080405F2: F7C2 bl 08002A3E --> cr
080405F4: FA24
080405F6: CF08 ldmia r7 { r3 }
080405F8: F013 ands r2 r3 #F
080405FA: 020F
080405FC: F847 str r3 [ r7 #-4 ]!
080405FE: 3D04
08040600: 2A00 cmp r2 #0
08040602: D000 beq 08040606
08040604: 3610 adds r6 #10
08040606: CF08 ldmia r7 { r3 }
08040608: F847 str r6 [ r7 #-4 ]!
Installing
A step by step series of examples that tell you how to get a development env running
Install the IDE
STM32CubeIDE,
it is Eclipse and GCC based.
STM32CubeMX
is included in the IDE, you need a stand alone installation only if
you do not want to use the STM32CubeIDE.
Get the sources from github:
psi@homer:~> git clone --branch F405 https://github.com/spyren/Mecrisp-Cube
Klone nach 'Mecrisp-Cube' ...
remote: Enumerating objects: 1157, done.
remote: Counting objects: 100% (1157/1157), done.
remote: Compressing objects: 100% (620/620), done.
remote: Total 3183 (delta 720), reused 934 (delta 525), pack-reused 2026
Empfange Objekte: 100% (3183/3183), 41.60 MiB | 6.96 MiB/s, Fertig.
Löse Unterschiede auf: 100% (2100/2100), Fertig.
Import the project into the IDE:
File -> Import -> General -> Existing Projects into Workspace -> Select root directory
Copy project into workspace
Browse to Mecrisp-Cube directory
Generate code from the STM32CubeMX
MecrispCubeF405.ioc
file:
Project -> Generate Code
Restore changed source files
$ git status
{list of changed files}
$ git restore {files to restore}
Select the Build Configuration (Debug if you want to debug the project) and Build the project:
Project -> Build Configurations -> Set Active -> Debug/Release
Project -> Build Project