Organize this blog. Write python script to add forw/back links and such to pages. This would be useful for this "diary" of work as well as some others.
This list mostly summarizes work on my 64 bit ARM boards, but I don't want to forget my unfinished work on the Zynq. I have a Kyu port, but it needs an ethernet driver. And I want to work up a decent set of IO bitstreams that are documented and available.
As for my 4 different aarch 64 boards, I now have interrupts working for the H5, Fire3, and RK3328 at EL2. This achieves 3/4 of my goal. The GICv3 in the RK3399 is the unsolved issue with regard to interrupts (the other 1/4).
Although I never looked at it in 2025, I have done work in Kyu for the Fire3 and the H5. I should continue this, especially for the H5, since I never had working interrupts for the H5. The H5 ought to be quickly productive because the peripherals and drivers seem identical to the H3 where I have perhaps the best port of Kyu working.
Getting second processors to work is an unsolved problem for all of these arm64 boards. I suspect that the same methods I used for the H3 will work for the H5. The others (Fire3 and RK3328) need investigation and what looks like the most likely thing at this point is to use PSCI, which will be a learning exercise of its own.
What I set out to do was to get interrupts working for all of these boards. The RK3399 introduces the GICv3 and that is unfinished business. I should make a list of all the system registers that pertain to the GICv3, along with their purpose and equivalent memory mapped registers (which we do not have on the RK3399).
I want to find out how to get my code running at EL1. This may be required to use the GICv3, but I am not entirely sure of that.
I want to understand the MMU setup for the RK3399, as well as where ATF and U-boot are located. Does U-boot get rid of ATF (BL31?). I will need to set up my own MMU for EL1, though I can certainly just reuse the tables that U-Boot has already set up.
I should read more of the ARM documents. There are two "learn the architecture" on EL and EL switching, and probably others in this series.
*** Search on the macro "armv8_switch_to_el1_m". Who calls it, who calls that? Work up a reverse call tree to see what leads to this being used.
How do spin locks work?
Fix U-boot so that when I forget to plug in a network cable, it won't just try to "go" to the start adress. It is possible to test result codes in scripts.
Fix the h5 U-boot rapid timeout issue.
Get a nice table of ESR register EC values.
Consider a shared library of aarch64 (and someday aarch32) code. To avoid recreating the wheel and copying files.
What about those q0 floating point regs getting saved in printf and varargs calls?
Build linux from source, learn how to add printf statements. Use this on RK3399 to see how it starts secondary cores.
Tom's electronics pages / tom@mmto.org