Hello all,
I am currently facing an issue to build OpenFirmware for ARM. Let’s start
with some explanations :
My goal is to have a Forth interpreter running on a barebone ARM device.
I’ve tried some, like ForthOS (which runs on x86 only) and another one
designed for the Raspberry Pi which is far for being complete.
So, I’ve been following two of your official tutorials :
- https://www.openfirmware.info/Building_OFW_for_QEMU
- https://www.openfirmware.info/Building_OFW_for_ARM
Got to say the first one worked well, except it is not stated that
“subversion” is required, but we can easily find it out by ourselves. At
the end, I got OpenFirmware running and have been able to type some Forth
commands on the interpreter.
Then, I tried to reproduce this with ARM Qemu. Fell on the second tutorial,
which is somewhat less detailed than the first one, but optionnal
configuration on the first one should also be viable for the ARM’s one.
Well, my issue comes when executing the “make” command inside
“openfirmware/cpu/x86/pc/emu/build”.
Here is what I get :
*jacky@debiannos:~/openfirmware/cpu/arm/mmp2/build$ make*
*./build ofw.rom*
*--- Rebuilding sp.img*
*--- Cmd: ${HOSTDIR}/forth ${HOSTDIR}/../build/builder.dic ../sp.bth*
*--- Rebuilding fw.img*
*--- Cmd: ${HOSTDIR}/armforth ${BP}/cpu/arm/build/basefw.dic ../fw.bth*
*sh: 1: /home/jacky/openfirmware/cpu/x86/Linux/armforth: not found*
*Makefile:22: recipe for target 'ofw.rom' failed*
*make: *** [ofw.rom] Error 1*
*jacky@debiannos:~/openfirmware/cpu/arm/mmp2/build$ *
At first I tought it was due to script’s or environment’s variable like
${HOSTDIR} as this was the line causing the error. It seemed those
variables were correctly replaced in the script itself, as a previous line
is well executed using this same variable. Next, I’ve been looking for
openfirmware/cpu/x86/Linux/armforth file. As the error states, this file is
not present in the cpu/x86/Linux folder. In fact, there is a file named
like this, but it has an extension .qemu (the complete file name is
armforth.qemu. So I tough about a simple mistake, and renamed it (in fact,
I copied it to avoid other errors) into armforth.
Once renamed, I did “make clean”, and relaunched a “make”. The previous
error disappeared, the script went farther, but still did not complete :
*jacky@debiannos:~/openfirmware/cpu/arm/mmp2/build$ make*
*./build ofw.rom*
*--- Rebuilding sp.img*
*--- Cmd: ${HOSTDIR}/forth ${HOSTDIR}/../build/builder.dic ../sp.bth*
*--- Rebuilding fw.img*
*--- Cmd: ${HOSTDIR}/armforth ${BP}/cpu/arm/build/basefw.dic ../fw.bth*
*${BP}/cpu/arm/mmp2/rootnode.fth:32: io2-va ?*
*${BP}/cpu/arm/mmp2/rootnode.fth:36: io-va ?*
*${BP}/cpu/arm/mmp2/mmuon.fth:12: fw-mem-va ?*
*${BP}/cpu/arm/mmp2/mmuon.fth:12: page-table-offset ?*
*${BP}/cpu/arm/mmp2/mmuon.fth:13: page-table-va ?*
*Makefile:22: recipe for target 'ofw.rom' failed*
*make: *** [ofw.rom] Error 1*
*jacky@debiannos:~/openfirmware/cpu/arm/mmp2/build$*
These errors appears to be forth-related, as if some words were not
defined. Maybe is it due to the *basefw.dic *dictionnary… To be honest, I
can’t think about any other solutions. Maybe I will dig into these forth
files but I am afraid it will be a loss of time as I am a real beginner to
Forth.
Here’s what I tried :
- Executing make as root. Same issue.
- Executing it on another distro (Ubuntu 14.x). Same issue.
- Tried different Qemu versions (don’t ask me why… I tried the 4.7
one on the official website, and the maintained one on github’s Qemu repo.
Forgot to mention this has been has been tested on both a clean Ubuntu and
a clean Debian VM using VMWare. Yes, I am emulating an emulator. ;)
Also, I'd be glad if you have any other solutions to run a Forth
interpreter on a bare-metal ARM machine, either emulated or not.
Thanks in advance, for your work, for your help, and for reading this.
Regards,
- John