New flavors for Mecrisp-Cube:
If you need a really fast MCU (ARM Cortex M7 @ 480 MHz) then the MecrispCubeH74x could be the right Mecrisp-Cube Forth for you. The STM32H747 has even a second Core, a Cortex M4.
Mecrisp-Cube Instant real-time programming with Forth.
Sources on
The standard Mecrisp-Cube features like RTOS, Filesystem, USB, etc.
These instructions will get you a copy of the project up and running on your local machine (STM's NUCLEO-H743ZI board) for development and testing purposes.
Flash the Mecrisp-Cube binary (
MecrispCubeH743.bin
) or the util-binary (
MecrispCubeH743Util.bin
) to 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
Mecrisp-Stellaris RA 2.5.4 by Matthias Koch. Mecrisp-Cube 1.5.0 for STM32H7 Nucleo, 288/1024 KiB RAM/FLASH dictionary (C) 2022 peter@spyr.ch * Firmware Package STM32Cube H7 V1.10.0, USB-CDC (C) 2021 STMicroelectronics * CMSIS-RTOS V2 FreeRTOS wrapper, FreeRTOS Kernel V10.3.1 (C) 2020 Amazon.com * FatFs for internal flash and microSD - Generic FAT fs module R0.12c (C) 2017 ChaN * tiny vi - part of BusyBox (C) 2000, 2001 Sterling HuxleyMecrisp-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.
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 ]!
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 H743 https://github.com/spyren/Mecrisp-Cube Cloning into 'Mecrisp-Cube'... remote: Enumerating objects: 4969, done. remote: Counting objects: 100% (47/47), done. remote: Compressing objects: 100% (34/34), done. remote: Total 4969 (delta 13), reused 47 (delta 13), pack-reused 4922 Receiving objects: 100% (4969/4969), 69.43 MiB | 3.54 MiB/s, done. Resolving deltas: 100% (3481/3481), done. Updating files: 100% (213/213), done.
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 MecrispCubeH743.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
This Arduino Portenta H7 development board follows the Arduino MKR form factor, but enhanced with the Portenta family 80 pin high-density connector.
Why should I use this board? It is less powerful than a Raspberry Pi and is even more expensive! The Raspi draws much more current and therefore cannot be operated with a battery.
No Board Support Package yet.
https://docs.arduino.cc/hardware/portenta-h7
The much smaller board Arduino Nicla Vision equipped with a 2MP camera.
No Board Support Package yet.
This work by Peter Schmid is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.
I | Attachment | History | Action | Size | Date | Who | Comment![]() |
---|---|---|---|---|---|---|---|
![]() |
ABX00042-pinout.png | r1 | manage | 372.1 K | 2022-03-06 - 15:41 | PeterSchmid | |
![]() |
ABX00045_02.front_1000x750.webp | r1 | manage | 118.2 K | 2022-03-06 - 15:41 | PeterSchmid | |
![]() |
Arduino-Nicla-Vision.webp | r1 | manage | 178.9 K | 2022-06-26 - 21:10 | PeterSchmid | |
![]() |
NUCLEO-H743ZI2-header.jpg | r1 | manage | 84.3 K | 2022-03-06 - 15:04 | PeterSchmid | |
![]() |
NUCLEO-H743ZI2.jpg | r1 | manage | 1692.9 K | 2022-03-06 - 15:04 | PeterSchmid | |
![]() |
nucleo_h743zi2_morpho_left_2019_10_9.png | r1 | manage | 458.5 K | 2022-03-06 - 17:14 | PeterSchmid | |
![]() |
nucleo_h743zi2_morpho_right_2019_10_9.png | r1 | manage | 399.1 K | 2022-03-06 - 17:14 | PeterSchmid | |
![]() |
nucleo_h743zi2_zio_left_2019_10_9.png | r1 | manage | 498.7 K | 2022-03-06 - 17:14 | PeterSchmid | |
![]() |
nucleo_h743zi2_zio_right_2019_10_9.png | r1 | manage | 423.5 K | 2022-03-06 - 17:14 | PeterSchmid | |
![]() |
pinout_legend_2017-06-28-2.png | r1 | manage | 33.9 K | 2022-03-06 - 17:14 | PeterSchmid | |
![]() |
portenta-h7-pinout.png | r1 | manage | 372.1 K | 2022-06-09 - 19:49 | PeterSchmid |