pFFh is a programming language that allows you to launch applications on embedded systems safely, quickly and comfortably. pFFh runs on the target system, combining operation as a command interpreter and code compiler. We can say that pFFh behaves like an operating system on the board under development.
All pFFh needs is a serial or USB-serial channel to communicate, and through it, receive and process console commands, either from a keyboard or from files sent from a desktop computer.
At present, pFFh is implemented for the PIC18FxxQ4x/Q7x family of microcontrollers. The code has been run and tested on the PIC18F16Q40, PIC18F16Q41, PIC18F57Q43 and PC18F56Q71 "Curiosity Nano” boards.
Features
- pFFh runs exclusively and completely on the controller, and via a serial channel it interfaces with a console terminal.
- pFFh enters interpreter mode, as a command shell, allowing you to compile new functions/routines/variables/constants called “words”, that can be defined, tested, redefined, and debugged without recompiling or restarting the whole program, while in command shell. The compilation writes directly to Flash Program Memory.
- When an application is ready, the application word can be set as the start defered word, so that on the next boot it will be executed.
- pFFh allows saving in Hexadecimal Object File Format (IntelHex), both the complete system or an application, so that it can be written later on a new board by a programmer.
- pFFh is a “Forth-2012 System”, providing all of the Core word set and Exceptions word set. And provides subsets of the Core extension, Double-Number, Exception extension, Facility, Locals, Programming-Tools, Search-Order, and String word sets.
- The Flash Program Memory is divided into Code space and Name space. Within the code space there is an area for the application and a separate area for the system (the command shell). Other spaces are the Data space and EEProm space.
- pFFh suport local variables.
- Assembler support that allows you to compile machine code with the PIC18F family assembler mnemonics, as well as disassembly of what is written in Flash Program Memory.
- 'TermFF' (available on sourceforge) provides a development environment as well as a serial console for pFFh, and allows various pFFh builds to be writed directly through the 'Curiosity Nano' boards without having to perform any code compilation process.


