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