Skip to main content
jjonethal
Associate II
October 29, 2015
Question

FORTH Compiler for STM32 devices

  • October 29, 2015
  • 16 replies
  • 5780 views
Posted on October 29, 2015 at 10:36

If you want a development system on chip,

incremental software updates, test driven interactive developments this is worth a look:

Mecrisp Stellaris Forth compiler updated with support for a number of STM32 controllers

stm32f030f4, stm32f051, stm32f100, stm32f103, stm32f303, stm32f401, stm32f407, stm32f411, stm32f429, stm32L053c8, stm32L152

others comming soon

http://mecrisp.sourceforge.net/

#compiler #forth #interpreter #forth-mecrisp-stellaris
    This topic has been closed for replies.

    16 replies

    jjonethal
    jjonethalAuthor
    Associate II
    October 29, 2015
    Posted on October 29, 2015 at 10:38

    Here is the Website :

    http://mecrisp.sourceforge.net/

    jjonethal
    jjonethalAuthor
    Associate II
    October 29, 2015
    Posted on October 29, 2015 at 10:50

    Mecrisp Stellaris FORTH current version is here:

    https://sourceforge.net/projects/mecrisp/files/

    waclawek.jan
    Super User
    October 30, 2015
    Posted on October 30, 2015 at 23:43

    I downloaded and tried it on a STM32L053 DISCO... basic FORTH funcionality OK (push some numbers, pop them, add them, that's about all I can do in FORTH interactively :) )

    Some struggling with getting a terminal wait after each line when uploading the ''programs'', but finally both examples (blinky and e-paper example) worked as expected.

    Nice toy, thanks for the links! ;)

    JW

    PS. Oh, yes, and it's entirely written in that inhuman ARM Thumb-2 assembler, the author is CRAZY... :D

    jjonethal
    jjonethalAuthor
    Associate II
    November 2, 2015
    Posted on November 02, 2015 at 20:13

    There will be also a version with optimizer -RA- version that reduces much of the stack juggeling. Awesome work in assembly.

    There is currently active development on many different STM32 cortex parts.

    Next i will add a port for the new STM32L476 discovery board.

    It's not only a toy. You can do serious stuff with it. Some stm devices support incremental flash updates. It took me a while to figure out all the stuff in that package. Disassembler, dumper, assembler, all on chip.

    Im using teraterm with an upload script that supports include

    https://raw.githubusercontent.com/jjonethal/mecrisp-stellaris/jjo-wip/stm32f303/upload_include.ttl

    jjonethal
    jjonethalAuthor
    Associate II
    November 6, 2015
    Posted on November 06, 2015 at 10:49

    in forth all words and numbers have to be separated by spaces.

    Here some forth function example:

    new function : ''var3=var1+var2''

    indeed var3=var1+var2 is only one word. only space separates words.

    1 variable var1

    2 variable var2

    0 variable var3

    : var3=var1+var2 var1 @ var2 @ + var3 ! ;

    : - create a new word

    ; - end current function

    @ - get a word from address on stack

    ! - store a word to address

    compiletoflash - burn all following functions to flash

    compiletoram - put all following functions to ram

    eraseflash - remove my functions from flash

    . - the point prints and removes the top value from stack

    .s - show me the datastack

    this is what the compiler make from that:

    1 variable var1  ok.

      ok.

    2 variable var2  ok.

      ok.

    0 variable var3  ok.

      ok.

      ok.

      ok.

    : var3=var1+var2 var1 @ var2 @ + var3 ! ;  ok.

      ok.

    see var3=var1+var2

    20001056: F241  movw r0 #1000

    20001058: 0000

    2000105A: F2C2  movt r0 #2000

    2000105C: 0000

    2000105E: 6843  ldr r3 [ r0 #4 ]

    20001060: 6A02  ldr r2 [ r0 #20 ]

    20001062: 189B  adds r3 r3 r2

    20001064: 63C3  str r3 [ r0 #3C ]

    20001066: 4770  bx lr

     ok.

    jjonethal
    jjonethalAuthor
    Associate II
    November 6, 2015
    Posted on November 06, 2015 at 11:04

    new version RA-1.3a with optimizer online:

    http://sourceforge.net/projects/mecrisp/files/mecrisp-stellaris-ra-1.3a-experimental.tar.gz/download

    Kind Regards Jean

    jjonethal
    jjonethalAuthor
    Associate II
    November 18, 2015
    Posted on November 18, 2015 at 18:45

    Hi everyone,

    a new version of Mecrisp Forth has been published:

    http://sourceforge.net/projects/mecrisp/files/mecrisp-stellaris-ra-1.5-experimental.tar.gz/download

    now with support for the STM32L476 Disco board. Nice board

    with lots of components. Some demo code is also included.

    Terminal works via STLINK USB interface with 115200 baud.

    Have fun

    Jean
    Tesla DeLorean
    Guru
    November 18, 2015
    Posted on November 18, 2015 at 18:58

    What exactly is your association with this project?

    Tips, Buy me a coffee, or three.. PayPal Venmo (See Profile) Up vote any posts that you find helpful, it shows what's working..
    jjonethal
    jjonethalAuthor
    Associate II
    November 19, 2015
    Posted on November 19, 2015 at 20:07

    i did some adaptions to the mecrisp forth to let it run on my stm32 boards. So i did the

    stm32f411 nucleo  and the stm32l476 discovery adaptions.

    I'm using it for my hobby projects and to get in touch with new components.

    After playing around with it for a while i've found it pretty fun to code with it.

    It's open source, put the disassembler on board you can always have a look

    what's going on behind the scene. Matthias Koch is the brain behind this little gem.

    Give it a try.

    Tesla DeLorean
    Guru
    November 19, 2015
    Posted on November 19, 2015 at 21:51

    I did take a peek. Back in the early/mid 80s I reimplemented this

    http://www.acornelectron.co.uk/info_books/electron/acornsoft_adder/Forth.html

     to Native 6502 code, and tinkered a bit with the Z80 AMS-FORTH, with it's interesting decompiler.

    You should get yourself an STM32F469I-DISCO, it's got a lot of memory and expansion options.

    Tips, Buy me a coffee, or three.. PayPal Venmo (See Profile) Up vote any posts that you find helpful, it shows what's working..