Forum: Mikrocontroller und Digitale Elektronik mecrisp-stellaris forth


von Schorsch X. (bastelschorsch)


Lesenswert?

Spielt noch irgendwer im Moment damit rum ? Ich hab es z.B. auf 
STM32L432 am laufen und bin recht angetan davon.

Gruß Schorsch

von Vincent H. (vinci)


Lesenswert?

Ja, großartiges Projekt, super freundliche Entwickler! Schade, dass 
Forth wohl nicht (mehr?) so bekannt ist... Ich persönlich sehe hier eine 
wundervolle Niesche für extrem schnelle Skripts. Es gibt einfach 
Dinge, die lassen sich mit eLua und Co nicht erschlagen.

Ich verwende eine selbstgeschriebene, stark abgespeckte (dafür noch 
kleinere und schnellere :p ) Variante als Bibliothek zu C/C++. Mit einer 
Standalone Version via Terminal könnte ich persönlich nicht so viel 
anfangen. Fakt ist jedoch, dass ich ohne Mecrisp Forth nie in jener 
Tiefe verstanden hätte...

von Schorsch X. (bastelschorsch)


Lesenswert?

Hallo Vincent,
hast du das als Zusatz für einen ARM gemacht ?

von Vincent H. (vinci)


Lesenswert?

Schorsch X. schrieb:
> Hallo Vincent,
> hast du das als Zusatz für einen ARM gemacht ?

Für einen M4 ja. Im Prinzip ersetze ich die Terminal Hooks aus mecrisp 
durch Forths "evaluate" word, dass einen kompletten String im Ganzen 
auswertet. Das evaluate word lasst sich dann aus C/C++ heraus aufrufen 
(evaluate(const char*). Zusätzlich hab ich einige Beschränkungen 
eingefüht, die das parsen vereinfachen... etwa die Unterstützung für 
Escape-Characters gestrichen, nur Kleinbuchstaben, usw. usf.

von Jean J. (jonjo)


Lesenswert?

spiele damit auf meinem stm32f746 disco board herum.
feine Sache.

von Christoph K. (chriskuku)


Lesenswert?

Ja, ich "spiele gerade damit rum". Vor ein paar Tagen schickte mir ein 
freundlicher User hier ein STM32F411 (Nucleo) kit und ich habe gerade 
erfolgreich unter MacOS das Kit geflasht mit dem 
mecrisp-stellaris-2.5.42a/stm32f411.
1
$ sudo port install stlink
2
$ cd /Users/kuku/Downloads/mecrisp-stellaris-2.5.4a/stm32f411
3
$ st-flash erase
4
st-flash 1.6.1
5
2020-08-11T19:55:13 INFO: stm32f411re: 128 KiB SRAM, 512 KiB flash in at least 16 KiB pages.
6
Mass erasing......
7
$ st-flash write mecrisp-stellaris-stm32f411.bin 0x8000000
8
st-flash 1.6.1
9
2020-08-11T19:56:06 INFO: stm32f411re: 128 KiB SRAM, 512 KiB flash in at least 16 KiB pages.
10
file mecrisp-stellaris-stm32f411.bin md5 checksum: 10b8f8cb4243708b8a996331e07221f2, stlink checksum: 0x00150cd3
11
2020-08-11T19:56:06 INFO: Attempting to write 15104 (0x3b00) bytes to stm32 address: 134217728 (0x8000000)
12
EraseFlash - Sector:0x0 Size:0x4000 2020-08-11T19:56:06 INFO: Flash page at addr: 0x08000000 erased
13
2020-08-11T19:56:06 INFO: Finished erasing 1 pages of 16384 (0x4000) bytes
14
2020-08-11T19:56:06 INFO: Starting Flash write for F2/F4/L4
15
2020-08-11T19:56:06 INFO: Successfully loaded flash loader in sram
16
enabling 32-bit flash writes
17
size: 15104
18
2020-08-11T19:56:06 INFO: Starting verification of write complete
19
2020-08-11T19:56:07 INFO: Flash written and verified! jolly good!
20
$

Jetzt würde ich gerne mit dem Board(FORTH) über serielle Leitung 
kommunizieren. Habe zwar ein USB/Seriell-Interface angeschlossen, aber 
an welchen UART schieße ich die Terminalleitungen an? Baudrate?

In dem Usart1.fs Modul finde ich

pa9 - tx
pa10 - rx

und 115200 APB1 50 MHz

Aber das sind ja sicher TTL Pegel? Aber ich glaube, die tun es auch noch 
so gerade, oder? An der Steckerleiste des Nucleo sehe ich auch

TX/D1
RX/D0

Habe mal meinen USB-Serialconverter FTDI angeschlossen, kermit 
gestartet,
SET LINE /dev/cu.usbserial-ftDEOE92
SET SPEED 115200
SET CARRIER-WATCH OFF
CONNECT

tut sich noch nichts.

P.S. Ich muß noch ein bißchen das README studieren. Melde mich wieder.

: Bearbeitet durch User
von Christoph K. (chriskuku)


Lesenswert?

Meine Vorgehensweise mittels eines extra USB-Seriell Adapters war 
falsch. Das Nucleo hat - wahrscheinlich wie viele Boards dieser Art - 
eine virtuelle COM-Schnittstelle, die man mit picocom/minicom anspricht.

Dazu muß man dann den jeweiligen UART-Pin (Rx/Tx) mit der UART-Bridge 
des Nucleo verbinden und sowas hier im Terminal (macOS) eingeben:


$ picocom -b 115200 /dev/cu.usbmodem141103 --imap lfcrlf,crcrlf --omap 
delbs,crlf
picocom v3.1

port is        : /dev/cu.usbmodem141103
flowcontrol    : none
baudrate is    : 115200
parity is      : none
databits are   : 8
stopbits are   : 1
escape is      : C-a
local echo is  : no
noinit is      : no
noreset is     : no
hangup is      : no
nolock is      : no
send_cmd is    : sz -vv
receive_cmd is : rz -vv -E
imap is        : crcrlf,lfcrlf,
omap is        : crlf,delbs,
emap is        : crcrlf,delbs,
logfile is     : none
initstring     : none
exit_after is  : not set
exit is        : no

Type [C-a] [C-h] to see available commands
Terminal ready
  ok.
  ok.
: hello ." hello world" ;  ok.
hello hello world ok.


Es funktioniert!

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.