| This is a version of Mitch Bradley's C Forth system that |
| has been optimized for embedded use in semi-constrained |
| systems such as System On Chip processors. |
| |
| To port it to a new system, you will need to add some or all |
| of the following new directories and files: |
| |
| a) CPU-dependent code and compiler definitions in src/cpu/* |
| b) Platform-dependent code in src/platform/* |
| c) Application-specific code in app/* |
| d) Build directories for your versions in build/* |
| |
| There is a test build directory build/template . You can |
| copy that template directory to a new name as a starting |
| point for your version. |
| |
| Typing "make" in build/template will make a test version. |
| It builds a host image and a target image for the same |
| CPU as the host. The target image contains stub routines |
| for system I/O and startup, so it probably won't run, |
| but host image should work: |
| |
| $ cd build/template |
| $ make |
| $ ./forth app.dic |
| $ C Forth Copyright (c) 2008 FirmWorks |
| ok bye |
| $ |
| |
| The "forth" executable program is a version of the Forth core kernel |
| (the equivalent of "code words") that runs on the compilation host |
| system. It loads a "dictionary file" like "app.dic", which is a |
| machine-independent representation of a Forth dictionary containing |
| compiled colon definitions and other objects. |
| |
| The target executable "app.elf" (or its raw-binary equivalent |
| "app.img") contains both a target version of the executable program |
| and an embedded copy of "app.dic". To make it run on a real |
| target system, you would have to link it with appropriate startup |
| code and other necessary CPU and platform I/O routines for your |
| specific target. |
| |
| The host and target systems need not use the same CPU - the |
| target can be cross-compiled. |
| |
| Read the Makefile in the build/template to see how to configure |
| the CPU, the platform code, and the application code. |
| |
| There is some ARM-specific code in cpu/arm and subdirectories |
| thereof. At one point that code worked on an AT91SAM7 system, |
| but the build is currently broken as a result of a tree reorg. |