Instal Flash FORTH on Arduino card
published: 19 May 2019 / updated 1 June 2019
Preamble
FORTH is a programming language in its own right. It has the distinction of being extremely compact. The FORTH flash version for ARDUINO occupies about 12 kilobytes in flash memory on any ARDUINO board.
Knowing that the majority of ARDUINO cards have at least 32 KB of flash memory, it leaves a free space of 20 kilobytes for programs in FORTH language.
FORTH has the particularity that at least half of the language is written in FORTH. FORTH has an expandable dictionary by you when you are programming.
When you type a word, in FORTH language, it will be executed immediately.
When you type a word definition, this word will be compiled. This is a one-pass compilation, only doing call to no external library. The compiled code will be part of the FORTH dictionary just like the words pre-defined.
The compiled FORTH code can not work without the FORTH kernel.
So that your code written in FORTH language works on a blank ARDUINO card, it will be necessary beforehand to install a version of the FORTH language.
What is the place of applications in FORTH?
Our first tests of programs, the example of the flashing LED for example, show that the equivalent program compiled in FORTH occupies 2 to 4 times less space in flash memory than its equivalent program written in C language.
FORTH is THE alternative solution to the C language because:
- FORTH has an interpreter accessible from a terminal connected to the ARDUINO board
- Program adjustments are easy to make in situ (on the card)
- the definition of very short words is instantaneous. Each word is immediately executable via the interpreter
- FORTH is a multitasking language: Multi-tasking apps on ARDUINO
...FORTH has no limit except those of your imagination...
Where to find Flash FORTH
Go here: Github FlashForth development.
Click on Clone or Download. In the small window that opens, click Download ZIP.
Save the ZIP file. Normally, the ZIP file must arrive in the download folder. Once downloaded,
unzip the content into the directory of your choice. Open the folder named flashforth-master
:
The files we are interested in installing Flash FORTH on the ARDUINO board are in the
subfolder avr / hex
:
- ff_mega.hex is the hex file to install on ARDUINO Mega board
- ff_uno.hex is the hex file to install on ARDUINO Uno board
It seems (to be verified) that the version for ARDUINO Uno also works on ARDUINO Nano.
Instal Flash FORTH
Several websites indicate sometimes complex procedures for installing Flash FORTH - or any other hex file - on an Arduino board only through the serial link connected to the PC. This process implies that the ARDUINO card has an operational bootloader.
However, once Flash FORTH is installed, there is no longer the bootloader of origin. It becomes impossible to reinstall thebootloader or any other program ... including FORTH if there are malfunctions of FORTH.
That's why it's imperative to have a reliable and proven solution to install or reinstall any program on the ARDUINO card (s) that you will have to use.
The AVRISP USB programmer
The AVRISP USB programmer allows you to install any ARDUINO compatible program on a card Arduino:
The AVRISP programmer on Amazon: Compatible Atmel AT AVR ISP mk2 MKII ATMEL AVR Programmer USB AVRISP XPII In-System Programmer Supports AVR Studio 4/5/6/7
But before using it, you have to download the program Atmel Studio 7.0
Instal Atmel Studio
The AtmelStudio program is available here.
Go down the page until you see this:
Instal Atmel Studio.
Even if you only program in C language, Atmel Studio is an essential tool in the list useful programs to develop on ARDUINO. AVR Studio or Atmel Studio is the same thing.
FlashForth has been tested on Atmega 2560, 128 and 328.
FlashForth should also work on Atmegas 168 and 644.
FlashForth has been tested on Arduino Duemilanove, Mega 2560 R3 and Uno R3.
Instal Flash FORTH
If your ARDUINO board is connected to a PC serial port, disconnect the board and find a separate power supply.
Run Atmel Studio. And:
- connect the AVRSIP USB programmer to the ARDUINO board (see photo 1)
- connect the AVRSIP USB programmer to the PC via the USB cable 2
- connect the ARDUINO board to a separate power supply3
Until then, if everything went well, the programmer should display two green LEDs.
Now, start Atmel Studio:
A window opens. We will select various parameters:
- Tool: selec AVRISP mkII
- Device: select ATmega2560 (or your card if it's not a ATmega2560)
- Interface: select ISP
The click on Apply. After Apply, on the same line, click on sur Read. If all goes well, the Device Signature and Target Voltage boxes fill up. It's a very good sign!
On the right side, the menu is completed with different choices. Click on Fuses:
You have three named fields EXTENDED, HIGH et LOW:
- for the file ff_mega.hex, you must enter the values
E:0xff H:0xdc L:0xff
- for the file ff_uno.hex, you must enter the values
E:0xff H:0xda L:0xff
This is done, in the side menu, click Memories. In the fiels Flash (xxx KB), specify the location of the HEX format file to be transferred to the ARDUINO, ff_mega.hex for a ARDUINO Mega card, ff_uno.hex for an ARDUINO Uno or compatible card:
Then click on the button marked Program. The programmer must have a LED that turns red. The transfer takes about 30 seconds.
ATTENTION
From now on, your ARDUINO card no longer has the bootloader. You will not be able more inject programs written in C language, except to restore a bootloader.
The AVRISP programmer will have to be used again:
- in case of a FORTH crash (yes, it can happen)
- restrestore the bootloader: Flasher le bootloader d’une carte Arduino
- inject any other program written in ARDUINO compatible machine language
- inject another version of the FORTH language: Ressources Arduino et Forth
The AVRISP programmer will be needed to inject FORTH on all cards where you want to run programs written in FORTH.
That's it. You can now stop Atmel Studio and unplug the ARDUINO board from its external power supply and the AVRISP programmer.
We will now see how to communicate with the FORTH language installed on your ARDUINO board: Communiquer avec Flash Forth