Skip to content
This repository has been archived by the owner on Feb 10, 2021. It is now read-only.

SdbRegistry

Samuel A. Falvo II edited this page Apr 16, 2016 · 4 revisions

Device Families

Device IDs are always written in hexadecimal. All device IDs are scoped by the Kestrel-3 project's vendor ID of $C0C21E6D3B1EDF88.

Device Type Description
00000001 Interconnect The e emulated Kestrel-3 "motherboard" or SoC. The version field for this device indicates the version of e currently running the environment, written as $mmMMMrrr, where $mm is the major version in hexadecimal, $MMM is the minor version, and $rrr is the revision. The lowest supported value is $00003000, since any version prior to 0.3.0 lacks support for SDB emulation.
00000002 Device Reserved for the Kestrel-2's S16X4-family processing device. These are 16-bit processor cores capable of addressing 64KiB of RAM, with 4-bit opcodes packed 4-wide in a 16-bit instruction word. This reservation is made to support possible future re-application as I/O coprocessors. Version 0 is the original S16X4, version 1 is the S16X4A, version 2 is a future S16X4B, and so on.
00000003 Device The Kestrel-3 emulator, e, virtual "Red Tail Subset" microprocessor family. These processors offer a substantial subset of the RV64IS instruction set compatibility. Check specific device versions for known compatibility issues. e's virtual CPUs are intended to be upward compatible with standard RV64 instruction sets in general, and Red Tail CPUs in particular.
00000004 Device Kestrel-3 "Red Tail" family of processors. Red Tail describes a Verilog soft-core family of processors that is backward compatible with e's processor. Whereas device 3 CPUs are proper subsets of the RISC-V specifications, all Red Tails must conform with RISC-V specs as precisely as experience will allow.
00000005 Device RAM. Intended application for this device's RAM may be queried through the class field.
00000006 Device General Purpose Interface Adapter (GPIA-I). Version 0 describes the 16-bit part first used in the Kestrel-2. It consists of an input-only port at address 0, and an output-only port at address 2. Subsequent versions may offer enhancements to this ABI.
00000007 Device General Purpose Interface Adapter (GPIA-II). Version 0 describes the 64-bit part intended for use with Red Tail processors. It consists of an input-only port at address 0, and an output-only port at address 8. Subsequent versions may offer enhancements to this ABI.
00000008 Device Keyboard Interface Adapter (KIA-I and KIA-II). Version 0 describes the 8-bit KIA-I part intended for use with the Kestrel-2 and Kestrel-3. This device is used to accept input from PS/2 keyboards and mice. Version 1 describes the 10-bit KIA-II device, presently found only in the e emulator. The additional two bits lets the firmware running in the emulator respond to all keyboard events generated by the libSDL-2.0 graphics library used to emulate VGA.
00000009 Device ROM. Intended application for this device's RAM may be queried through the class field.

Classes

Unless otherwise documented, all classes below only specify ABI major and minor versions of 0.

Class Description
0001 RISC-V compatible core (or HART, for HARdware Thread). Exactly one HART device is required for each independently running core (physical or emulated). Device ID and optionally version fields indicates the make/model/compatibility of the core.
0002 Generic RAM. Used for any purpose.
0003 GPIA-II-compatible I/O interface, as wired for the Kestrel-3.
0004 KIA-compatible keyboard interface.
0005 KIA-compatible mouse interface.
0006 MGIA frame-buffer RAM. Can be used for any purpose; but remember that the contents of this RAM will appear on the screen in bitmapped form. NOTE: Since the MGIA offers no addressible registers, it is not described by a unique device ID. Rather, MGIA presence is determined by looking for a block of RAM with this specific class. abi_ver_minor can be 0 for MGIA-I or 1 for MGIA-II.
0007 SDB Configuration ROM. This can be implemented either as a genuine ROM or as a configuration-sensitive core that provides current configuration information in a manner compatible with SDB V1.1.
0008 Bootstrap firmware.
Clone this wiki locally