How to install?
You'll need to install minimally a Mecrisp Forth software image. There is a modified binary image supplied in the github repository, which is the standard Mecrisp software, except built to recognize the larger Flash memory available in the Maple Mini clone device that we are using.
You'll need software to install a binary image into the STM32F103 part. Happily, there is a built-in bootloader which can be accessed via a serial port when you reset the processor with the BOOT0 pin high, and BOOT1 low. This can be accomplished on the Maple Mini clone by grounding the BOOT1 pin, and holding the "BUT" button down while pressing the RESET button. Then you can use a variety of different software that understands the on-chip bootstrap protocol. On Mac and Linux systems, you can use the stm32loader.py Python script for this purpose. This version of the script in the github repository has been slightly modified from other versions floating around to unlock the flash blocks in the event they we so set during some previous programming.
Once the Forth interpreter is installed, then you can load the all of the Forth source files, which can be compiled to the STM32F103CBT6 flash memory after the end of the Forth interpreter. You'll need a tool to transmit the Forth source code one line at a time. I use a program called SecureCRT on my Mac, along with a [https://github.com/lmamakos/fluke8050a-forth/blob/master/upload.py|Python script] to mediate the uploads that's also present in the git repo for this purpose. There are other ways to do this as described here.
Rather than load the source code, you can simply program a larger image which is the Mecrisp Forth interpreter along with the compiled Forth code stored in flash in one step. One such precompiled image v87.bin stored in the github repo.
In either case of loading just the bare Mecrisp Forth interpreter, or a pre-compiled application, you reset into the bootloader configuring the BOOT0 and BOOT1 signals as described. The the code is programmed into the microprocessor's flash memory using the stm32loader.py application like this, using the verbose option, and options to erase, write and verify:
$ ../stm32loader.py -p /dev/cu.SLAB_USBtoUART -e -w -v v87.bin Reading data from v87.bin Bootloader version 0x22 Chip id 0x410, STM32F1, performance, medium-density Writing 80896 bytes to start address 0x8000000 Write 256 bytes at 0x8000000 Write 256 bytes at 0x8000100 Write 256 bytes at 0x8000200 Write 256 bytes at 0x8000300 Write 256 bytes at 0x8000400 Write 256 bytes at 0x8000500 Write 256 bytes at 0x8000600 Write 256 bytes at 0x8000700 Write 256 bytes at 0x8000800 Write 256 bytes at 0x8000900 Write 256 bytes at 0x8000A00 Write 256 bytes at 0x8000B00 Write 256 bytes at 0x8000C00 Write 256 bytes at 0x8000D00 Write 256 bytes at 0x8000E00 Write 256 bytes at 0x8000F00 Write 256 bytes at 0x8001000 Write 256 bytes at 0x8001100 Write 256 bytes at 0x8001200 Write 256 bytes at 0x8001300 [...] Write 256 bytes at 0x8013600 Write 256 bytes at 0x8013700 Write 256 bytes at 0x8013800 Write 256 bytes at 0x8013900 Write 256 bytes at 0x8013A00 Write 256 bytes at 0x8013B00 Read 256 bytes at 0x8000000 Read 256 bytes at 0x8000100 Read 256 bytes at 0x8000200 Read 256 bytes at 0x8000300 Read 256 bytes at 0x8000400 Read 256 bytes at 0x8000500 Read 256 bytes at 0x8000600 Read 256 bytes at 0x8000700 Read 256 bytes at 0x8000800 Read 256 bytes at 0x8000900 Read 256 bytes at 0x8000A00 [...] Read 256 bytes at 0x8013400 Read 256 bytes at 0x8013500 Read 256 bytes at 0x8013600 Read 256 bytes at 0x8013700 Read 256 bytes at 0x8013800 Read 256 bytes at 0x8013900 Read 256 bytes at 0x8013A00 Read 256 bytes at 0x8013B00 Verification OK
When this completes, start up a terminal emulator on the same serial port pins at 115200 baud, reset the microprocessor and you should see something like these messages emitted:
If you enter a character during the count-down, the auto-start of the actual multimeter display is aborted. Alternatively, after it starts, entering a character will exit the display and you can explore the environment interactively at the Forth console.
Fluke 8050A Digital Multimeter (TFT LCD) Copyright (c) 2016 Louis Mamakos Louis.Mamakos@transsys.com http://wiki.transsys.com/8050a-tft Flash free: 51104, RAM free: 18628 Flash $000000 - $013BFF, 80896 bytes Vers: 87/f32800afd6a0/2016-10-30 [Pause..]10 9 8 7 6 5 4 3 2 1 0 Multimeter display begin. Any key to exit