#2 JavaSDR - broken dependency on SoapySDRJava
~phlash commented on SoManyBugs todo
Yet another DOOM port, this one specifically to be loaded on the TiDAL badge as a standard python module and integrated to the application manager.
This is experimental code, not a polished application, as such it has sharp edges that may cause you problems - take note and use caution:
pyboard.py
assuming a real serial port).
If you know how to speed up pyboard.py
or if a different tool/technique is
faster to copy over to flash, please make it so!doom.bin
file. If you don't know what this means, you probably need to read some of
the documentation about the TiDAL badge.
There was a plan to back up the partition first, but it doesn't fit on the
flash storage along with the WAD..Makefile
after an initial install to speed things up. If you think
this could work better (file size/hashes to avoid copying?), please make it so :)Seriously... ok: https://knowyourmeme.com/memes/it-runs-doom
A much better question:
^ I had made about 4000LoC changes, to remove declared data and static variables
since micropython's .mpy
format doesn't support either. This turned out to
be a huge waste of effort, as I now build a separate application binary that
does support such things, and load it myself.
doomloader.mpy
loadable python module
and providing the uPython dynamic module API.python3-pyelftools
package (on my Debian system)First, ensure you have the Xtensa GCC cross-compiler for you host system installed (unpacked) somewhere easy to refer to by environment variable.
Second, clone this project, and yank those submodules (but not recursive!):
% cd <project dir>
% git submodule init --update
Thirdly, check you can access the TiDAL badge python REPL via serial port
as this is how we'll be loading the test app (with the pyboard.py
program
from the micropython project).
Building should now work via GNU make, provided it's told where to find the Xtensa GCC:
% make COMPILER=<path to xtensa top level>
..or..
% export COMPILER=<path to xtensa top level>
% make
Installing the built module and wrapper python looks like this:
% make install
<..or..>
% micropython/tools/pyboard.py --no-soft-reset -f mkdir /apps/Doom
% micropython/tools/pyboard.py --no-soft-reset -f cp __init__.py :/apps/Doom/
% micropython/tools/pyboard.py --no-soft-reset -f cp doomloader.mpy :/apps/Doom/
% micropython/tools/pyboard.py --no-soft-reset -f cp build/doom.bin :/apps/Doom/
% micropython/tools/pyboard.py --no-soft-reset -f cp DOOM1.WAD :/apps/Doom/
Debugging is by resetting the badge, then connecting your favourite serial
terminal program (I like minicom
) to the TiDAL badge REPL, before selecting
Doom
app on the badge screen...
phlashboot
is a test program to ensure I can build/install/run a very simple
program on a bare metal device, and/or as an application in an OTA slot.
memstuff
is my investigation of the workings of ESP32S3 memory mapping/caching
to make very sure I understand it, and see how it's used by micropython, so I can
do vile things without causing harm...
romread
and supporting bits is a .mpy
module for poking about in memory..binsegments
is a trivial display program for ESP-IDF format .bin
files that
are loaded from bootstrap or an OTA partition.After a month of effort on and off, it seems to work..