noForth is completed!!
MSP
RISC-V
RP2040 (Pico)
Trekker: Willem Ouwerkerk
Look for 16-bit & 32-bit noForth, see website
See the Egel project for MSP430
De doelstellingen van de MSP ANSI Forth Werkgroep zijn allen gehaald!
- Het schrijven van een compacte Forth voor de MSP processoren! (Gedaan).
- Ten eerste voor de Launchpad (Klaar).
- Ten tweede voor een printje met FRAM aan boord (Klaar).
- Als derde voor een printje met de MSP430F149 (Klaar).
- Het schrijven van een werkende assembler en disassembler (Klaar).
- De compiler en de Forth zullen volledig vrij beschikbaar komen (Klaar).
- Schrijven van voorbeeld software voor de hardware van de MSP430 (Grotendeels klaar).
Dit was de werkplaats voor de MSP ANSI Forth Werkgroep.
OverMSP
16-bit Forth for MSP430 Launchpad
See noForth website
Note this is a report of the development of noForth
Over het ontwikkelen van MSP noForth
(About the development of noForth)
Onze interesse voor de MSP chips van Texas Instruments is veroorzaakt door de Launchpad.
MSP Launchpad
Dit zijn zeer krachtige doch goedkope bordjes.
Inmiddels zijn ze op voorraad bij de Forth gg, compleet voorzien van de stabiele 1210 noForth. Zie: MSP430 Ze werken met een seriele lijn via de USB die ook de voeding verzorgt. Zoals gebruikelijk wordt er gecommuniceerd met dit board via een seriele lijn, maar vanwege USB kan dit extra drivers vereisen.
Er is een uitstekende Nederlandse forth noForth. Zie onder.
Op de Launchpad kan ook de volgende Forth gezet worden van Duitse origine:
4E4th: http://www.somersetweb.com/4E4th/EN.html
Download: http://www.forth-ev.de/repos/4e4th/ Deze website bevat ook veel nuttige achtergrond informatie, met name over hoe je drivers moet installeren onder o.a. Windows 7 of Vista. Open http://www.4e4th.eu en klik op de balk aan de rechterkant, waar het zegt Treiber. Onder moderne Linux-en gaat dit allemaal automatisch.
Nog moderner maar niet bij ons verkrijgbaar is de FRAM starterkit: MSP-EXP430FR5739 Experimenter's Board.
Dit board is wat duurder maar bevat ook een drie-assige versnellings sensor,
8 leds, wat drukknoppen en extra connectors.
De Forth voor dit systeem, van onze Duitse vrienden is hier te vinden.
Download: http://www.forth-ev.de/repos/CF430FR/
Ons systeem heeft de naam noForth meegekregen van Nijhof, Ouwerkerk Forth.
Er is een disassembler genaamd DAS en de file ervan is hieronder vinden.
Een verslag van de lezing over de ontwikkeling van noForth door Willem.
De korte beschrijving van de MSP430 instructieset door Albert Nijhof.
Twee voorbeelden van de compacte code voor de MSP430:code Execute ( xt -- ) tos w mov sp )+ tos mov w )+ pc mov end-code code Lit ( -- x ) #2 sp sub tos sp ) mov ip )+ tos mov next end-code
In Duitsland is nog een Forth systeem voor de MSP430 te vinden genaamd Mecrisp:
Download: http://sourceforge.net/projects/mecrisp/files/
Hier enkele voorbeeld files die draaien op 4E4th versie 0.34 van 15 April:
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
1,1 All
Update 17-08-2012, noForth werkt
De noForth metacompiler en broncode zijn nu al zo goed, dat we een werkende Intel-Hex file kunnen produceren. Alle ingebouwde functionaliteit lijkt goed te werken. De source is nog wat te groot en er ontbreken nog wat handige woordjes als WORDS en DUMP. Ook woorden om op de I/O-poorten individuele bits te manipuleren ontbreken nog.Maar de belangrijke elementen werken; VALUE, VARIABLE, : (colon), MARKER, getal in- en uitvoer. Ook het compileren werkt als een speer. Voor het bijwerken van de dictonary in Flash hebben we FREEZE en TIDY, zij doen hun werk ook naar behoren.
FREEZE overschrijft de koude start waarden zodat het systeem met de laatst bekende waarden en woorden op zal starten. Wordt het systeem herstart zonder dat er een FREEZE gedaan, dan wordt alleen het niet bevroren gedeelte door TIDY verwijderd. Dat had de gebruiker eigenlijk zelf al moeten doen natuurlijk ;) Bij 4E4th wordt op zo'n moment alle bijgemaakte code verwijderd, dus ook de correcte reeds bevroren data en code!Ondertussen hebben we ook een werkende DUMP en WORDS daarnaast zijn de decompiler SEE, de disassembler DAS en de assembler WAS werkend gemaakt op noForth. Er zijn nog wat problemen bij de implementatie van MARKER. Daar moeten we nog goed naar kijken en eerste verbetering loste niet alle problemen op. Ondertussen zijn we de ANSI core-test aan het draaien, daar zijn we al wat kleine dingen bij tegen gekomen.Einde.
Update 29-08-2012, De noForth1208 betaversie is beschikbaar.
Het is zo ver een eerste betaversie is beschikbaar. Alles lijkt goed te werken en de ANSI core test wordt gehaald.
Hier wat documentatie en de noForth HEX-file. Schrik niet als hij onForth print, want die naam hanteren we voor de betaversie.Let op wijzig de noForth1208.TXT naar noForth1208.A43 voor de Lite FET-Pro430 programmer.
noForth: Zie ook noForth's website Een overzicht:
- noForth is geschreven 'from scratch'.
- Bevroren code is net zo veilig als de rest van de noForth code.
- Foutopvang met CATCH & THROW in noForth.
- Als er een fout onstaat tijdens het downloaden van een file, wordt de rest van de file niet meer gecompileerd maar weggegooid.
- Er is ongeveer 256 bytes RAM beschikbaar voor de gebruiker.
- Het Flash wordt economisch gebruikt.
- KEY?, KEY en EMIT zijn gevectored.
- Woorden die nodig zijn om het syteem te bouwen zitten in een aparte woordenlijst, die beschikbaar is!
- Zoeken en compileren snel (8 threads).
- Decompiler voor het inspecteren van het systeem.
- noForth heeft ook VALUE TO +TO INCR
- De prompt wordt gebruikt voor instelbare trace informatie.
- Het systeem gebruikt de floored deling.
- Het Flash geheugen wordt linear gebruikt, het start op C000 en eindigt op FFDE.
De files:
Vragen en opmerkingen: Willem Ouwerkerk, Albert Nijhof
Update 13-10-2012, is nu ook beschikbaar voor de MSP430FR5739.
MSP exp. board
Een deze dagen komt de definitieve versie van noForth beschikbaar voor de Launchpad. We hebben de code nog dichter naar de ANSI standaard toe kunnen brengen waardoor de verschillen in gebruik minimaal geworden zijn.
Daarnaast is er nu een functioneel identieke versie beschikbaar voor de MSP430FR5739. Dit is de chip met het nieuwe FerroRAM van TEXAS instruments, dat geen van nadelen van Flash geheugen heeft. Het is sneller en net als RAM overschrijfbaar, maar onthoudt wel de opgeslagen data! Hij heeft ook nog eens $0200 bytes extra RAM en andere aardige extra's. Beide versies worden uit een source gegenereerd, Marc Hartjes is bezig met een printje voor de MSP430F149 een chip met 60kByte Flash, 2 kByte RAM, 6 I/O-poorten en ADC!!! Op de bijeenkomst van 13 oktober licht hij zijn ontwerp toe.
Ontwikkelingen
De ontwikkelomgeving van noForth draait nu ook onder gforth op de ' Raspberry Pi ' zodat sprake is van een zeer goedkoop ontwikkel platform!!
De volgende stap is het schrijven van voorbeelden voor de ingebakken hardware van de MSP430:
- Gebruik van de timers voor o.a. PWM, compare- en capture interrupts, etc.
- UART voor RS232, SPI en I2C (master en slave).
- Watchdog.
- ADC.
- Comparator.
- I/O-pinnen (o.a. pin oscillator als capacitive schakelaar).
- Gebruik en setup van de verschillende oscillator's.
- Instellingen voor verminderen van het stroomverbruik.
- Gebruik van de interrupts.
- Aansluiten van bijzondere hardware.
Interesse, meld je aan bij: Willem Ouwerkerk
Einde.
Installation 4e4th on TI_launchpad under Linux
For the moment you may try 4e4th, an already existing Forth from the German FIG. This document describes the steps to get the 4e4th into the TI-Launchpad.
Linux version: Ubuntu 11.10 32 bits. If you use another linux distro your mileage may vary.
Use Ubuntu Software Center to
- Install package 'mspdebug'
- Install package 'minicom' and/or 'ckermit'
This example uses the terminal program minicom to test the connection to 4e4th on the Launchpad, when it is programmed.
Set the straps TXD and RXD in the TI_launchpad in hardware-position (HW on board).
Download the file: 4e4th.a43 from the internet:
http://www.forth-ev.de/repos/4e4th/Release0.34/Exe/4e4th.a43
Connect the TI-launchpad to the USB port.
Determine the device of the TI-Launchpad in a terminal:
Linux vesta 3.0.0-19-generic #33-Ubuntu SMP Thu Apr 19 19:05:57 UTC 2012 i686 athlon i386 GNU/Linux fransm@vesta:~$ ls -l /dev/ttyACM* crw-rw---- 1 root dialout 166, 0 2012-06-02 19:35 /dev/ttyACM0
Stop the modemmanager from grabbing the port:
sudo service --status-all ps -ef | grep modemmanager (first number is the PID) sudo stop modemmanager sudo kill <PID_modemmanager>
Program the 4e4th in the MSP430G2553:
sudo mspdebug rf2500 "prog 4e4th.a43"
Disconnect and reconnect the TI-Launchpad to reset the processor. Now there must be 3 leds burning on the TI launchpad:
green powerled green LED2 red LED1
Test the connection:
minicom -D /dev/ttyACM0 -b 9600 -o -w
Set port connection in software handshake mode with: ctrl-A, O, Serial port setup, (F=No G=Yes), Esc, Esc <Enter> ok
words <Enter>
S2? S2 GREEN RED P3 P2 P1 UNUSED MEM MEMTOP MEMBOT CGET CTOGGLE CCLR CLR CSET SET MS 1MS BIN PAGE AT-XY BELL .VER \ 2CONSTANT WIPE FACTORY COLD WARM BOOT SAVE VALID? APPCRC ITHERE crc (crc ccrc .S DUMP U.R WORDS MARKER FLALIGNED NOOP ENVIRONMENT? DEPTH MOVE WITHIN LEAVE +LOOP LOOP ENDLOOP DO L> >L REPEAT WHILE AGAIN UNTIL BEGIN ELSE THEN IF POSTPONE ['] ; : IMMEDIATE REVEAL HIDE ] [ RECURSE DOES> (DOES>) CREATE <BUILDS HEADER ( [CHAR] CHAR ' ABORT" ?ABORT ABORT QUIT EVALUATE INTERPRET ?NUMBER >NUMBER ?SIGN DIGIT? LITERAL FIND IMMED? NFA>CFA NFA>LFA WORD >COUNTED /STRING SOURCE IC, I, IALLOT IHERE C, , ALLOT HERE HEX DECIMAL . U. SIGN #> #S # >DIGIT <# HOLD UD* UD/MOD IWORD ." IS" (S") (IS") TYPE ACCEPT UMAX UMIN SPACES SPACE CR COUNT 2OVER 2SWAP 2DUP 2DROP 2! 2@ MIN MAX */ */MOD MOD / /MOD * FM/MOD SM/REM M* DABS ?DNEGATE DNEGATE ABS ?NEGATE S>D APPU0 INFOB COR #INIT UINIT BL TIBSIZE TIB S0 R0 L0 PAD CAPS APP NEWEST IDP LP HP LATEST 'SOURCE DP STATE BASE >IN U0 ,NONE !DEST ,DEST ,BRANCH ,EXIT !COLON ,JMP ,CALL ,CF !CF COMPILE, >BODY CHARS CHAR+ CELLS CELL+ CELL ALIGNED ALIGN ZERO KEY? KEY EMIT N= S= SCAN SKIP I->D CMOVE> CMOVE FILL UM/MOD UM* UNLOOP J I (+loop) (loop) (do) ?branch branch U> U< > < <> = 0< 0= RSHIFT LSHIFT 2/ 2* >< 1- 1+ NEGATE INVERT XOR OR AND - M+ +! + D->I IC! I! FLERASE C! C@ ! @ TUCK RP! RP@ SP! SP@ R@ R> >R NIP ROT OVER SWAP DROP ?DUP DUP USER CONSTANT VARIABLE EXIT lit EXECUTE ok
7 39 3 */ . <Enter> 91 ok
green cclr <Enter>
green cset <Enter>
red cclr <Enter>
red cset <Enter>
0 p1 ! <Enter>
Leave minicom with the keys ctrl-A, X, Yes
Study the documentation of 4e4th and enjoy.
With thanks to the excellent work of the German Forth Gesellschaft.