Hi Matt,
I’ve responded on list about the early unix development process as I understand it, but I
want to avoid discussing things that are not directly related to the history of Unix.
Hence this PM as well.
Where I'm trying to put this sort of knowledge
into use is I'm starting to spec out a kernel bootstrap for the RPi Pico and Pine64
Ox64 boards (ARM32 and RISCV64 respectively) that is not only sufficient to start a V7-ish
kernel on each, but that are ultimately based on the same design, varying literally only
where the hardware strictly necessitates it, but similar enough that reading the two
assembly files side by side yields essentially the exact same discrete operations.
I have a similar interest, working with early Unix and modern RiscV hardware for a compare
and contrast experience.
- My development targets are (i) an FPGA based RV32 SoC implementation, (ii) a Sipeed D1
RV64GC board and shortly (iii) a Pine64 Pinetab-V.
- My software targets are: (a) xv6-rv, (b) SysIII, (c) Linux, (d) experiments around
SysIII
Linux is for me a secondary target, just for comparison and to see if ideas are “Linux
capable”. I’m not overly interested in Arm at the moment.
My ideas are still evolving, but currently more or less along the below lines:
- Boot rom loads SPL, this is custom in each case and set by the SoC's designers.
- SPL initialises DRAM system and loads next stage. Unfortunately, this too would seem to
be quite system specific, but the BSP should provide the baseline for this. As BSP’s are
often a mess, milage may vary.
- The next stage is a hybrid of BBL, OpenSBI and Virtio. The idea is to provide a standard
abstraction layer that all of my software targets can work with. This idea is used for the
FPGA target and allows booting a Linux kernel with just the generic Virtio device drivers
(so far just disk and console).
- The last layer is the classical OS layer. If I get it right, each OS can run on all h/w
targets without customisation.
At the moment I’m playing with USB, and how that might layer into the structure of V7,
SysIII or 8th Edition -- and also the above.