/
Unibone inside the PDP-11/44
Unibone inside the PDP-11/44
The first experiments with the Unibone in the PDP..
Placed in the but last slot because that has NPR cut. Start the machine, connect to the Unibone and start the “demo.sh” program to check memory:
Have fun with UniBone !
Last login: Sun May 21 16:30:51 2023
root@unibone:~# ./demo.sh
iarg1=8, iarg2=15
[16:31:08.914926 Inf APP] Printing verbose output.
demo - QUniBone UNIBUS test application.
Version DBG v1.5.0, compile Feb 14 2023 15:41:35.
[16:31:08.919726 Inf APP] Registering Non-PRU GPIO pins.
[16:31:08.921075 Inf GPIOS] GPIO0 registers at 44E07000 - 44E07FFF (size = 1000)
[16:31:08.922746 Inf GPIOS] GPIO1 registers at 4804C000 - 4804CFFF (size = 1000)
[16:31:08.924158 Inf GPIOS] GPIO2 registers at 481AC000 - 481ACFFF (size = 1000)
[16:31:08.925505 Inf GPIOS] GPIO3 registers at 481AE000 - 481AEFFF (size = 1000)
[16:31:08.939466 Inf APP] Disable DS8641 drivers.
[16:31:08.953588 Inf APP] Leave SYSBOOT mode.
*** QUniBone UNIBUS technology demonstrator build Feb 14 2023 16:02:43
tg Test of single non-PRU GPIO pins
tp Test I2C paneldriver
tl Test of IO bus latches
bs Stimulate UNIBUS bus signals
tm Test Bus Master: access UNIBUS address range without PDP-11 CPU arbitration
ts Test shared DDR memory = UNIBUS memory as BUS SLAVE
ti Test Interrupts (needs physical PDP-11 CPU)
d Emulate devices, with PDP-11 CPU arbitration
dc Emulate devices and CPU, PDP-11 must be disabled.
m Full memory slave emulation with DMA bus master functions by PDP-11 CPU.
i Info, help
q Quit
>>>m
[16:31:10.326005 Inf APP] Connecting to PRU.
[16:31:10.330388 Inf DDRMEM] Shared DDR memory: 4194304 bytes available, 4194304 bytes needed.
[16:31:10.330759 Inf DDRMEM] Virtual (ARM Linux-side) address: 0xb4758000
[16:31:10.331002 Inf DDRMEM] Physical (PRU-side) address:9d100000
[16:31:10.331234 Inf DDRMEM] 4194304 bytes of UniBone memory allocated
[16:31:10.334128 Inf PRU] Loaded and started PRU code with id = 2
[16:31:10.438275 Inf APP] Registering non-PRU pins.
[16:31:10.440948 Inf GPIOS] GPIO0 registers at 44E07000 - 44E07FFF (size = 1000)
[16:31:10.443731 Inf GPIOS] GPIO1 registers at 4804C000 - 4804CFFF (size = 1000)
[16:31:10.446135 Inf GPIOS] GPIO2 registers at 481AC000 - 481ACFFF (size = 1000)
[16:31:10.448485 Inf GPIOS] GPIO3 registers at 481AE000 - 481AEFFF (size = 1000)
[16:31:10.459101 Inf APP] Disable DS8641 drivers.
[16:31:10.462364 Inf APP] Leave SYSBOOT mode.
[16:31:10.464873 Inf APP] Registering multiplex bus latches, initialized later by PRU code.
[16:31:10.467139 Inf APP] Initializing device register maps.
[16:31:10.470287 Inf QUNAPT] QUnibusAdapter: Registering device Test controller
[16:31:10.476300 Inf QUNAPT] QUNIBUSADAPTER::worker(0) started
[16:31:10.479491 Inf QUNAPT] Trying to set thread realtime priority = 50
[16:31:10.482496 Inf QUNAPT] Scheduling is at RT priority.
[16:31:10.482878 Inf QUNAPT] Thread priority is 50
UNIBUS devices are clients to PDP-11 CPU acting as NPR/INTR Arbitrator
(CPU active, console processor inactive).
CPU is physical or emulated.
Memory access as Bus Master with NPR/NPG/SACK handshake.
UniBone does not emulate memory.
***
*** Starting full UNIBUS master/slave logic on PRU
***
Device registers by IO page address:
io760200=reg[ 1] cur val=000000, writable=177777. active iopage reg with handle 1 linked to device Test controller reg[CSR]
io760202=reg[ 2] cur val=000000, writable=177777. active iopage reg with handle 2 linked to device Test controller reg[reg01]
io760204=reg[ 3] cur val=000000, writable=177777. active iopage reg with handle 3 linked to device Test controller reg[reg02]
io760206=reg[ 4] cur val=000000, writable=177777. active iopage reg with handle 4 linked to device Test controller reg[reg03]
io760210=reg[ 5] cur val=000000, writable=177777. active iopage reg with handle 5 linked to device Test controller reg[reg04]
io760212=reg[ 6] cur val=000000, writable=177777. active iopage reg with handle 6 linked to device Test controller reg[reg05]
io760214=reg[ 7] cur val=000000, writable=177777. active iopage reg with handle 7 linked to device Test controller reg[reg06]
io760216=reg[ 8] cur val=000000, writable=177777. active iopage reg with handle 8 linked to device Test controller reg[reg07]
io760220=reg[ 9] cur val=000000, writable=177777. active iopage reg with handle 9 linked to device Test controller reg[reg10]
io760222=reg[10] cur val=000000, writable=177777. active iopage reg with handle 10 linked to device Test controller reg[reg11]
io760224=reg[11] cur val=000000, writable=177777. active iopage reg with handle 11 linked to device Test controller reg[reg12]
io760226=reg[12] cur val=000000, writable=177777. active iopage reg with handle 12 linked to device Test controller reg[reg13]
io760230=reg[13] cur val=000000, writable=177777. active iopage reg with handle 13 linked to device Test controller reg[reg14]
io760232=reg[14] cur val=000000, writable=177777. active iopage reg with handle 14 linked to device Test controller reg[reg15]
io760234=reg[15] cur val=000000, writable=177777. active iopage reg with handle 15 linked to device Test controller reg[reg16]
io760236=reg[16] cur val=000000, writable=177777. active iopage reg with handle 16 linked to device Test controller reg[reg17]
io760240=reg[17] cur val=000000, writable=177777. active iopage reg with handle 17 linked to device Test controller reg[reg20]
io760242=reg[18] cur val=000000, writable=177777. active iopage reg with handle 18 linked to device Test controller reg[reg21]
io760244=reg[19] cur val=000000, writable=177777. active iopage reg with handle 19 linked to device Test controller reg[reg22]
io760246=reg[20] cur val=000000, writable=177777. active iopage reg with handle 20 linked to device Test controller reg[reg23]
io760250=reg[21] cur val=000000, writable=177777. active iopage reg with handle 21 linked to device Test controller reg[reg24]
io760252=reg[22] cur val=000000, writable=177777. active iopage reg with handle 22 linked to device Test controller reg[reg25]
io760254=reg[23] cur val=000000, writable=177777. active iopage reg with handle 23 linked to device Test controller reg[reg26]
io760256=reg[24] cur val=000000, writable=177777. active iopage reg with handle 24 linked to device Test controller reg[reg27]
io760260=reg[25] cur val=000000, writable=177777. active iopage reg with handle 25 linked to device Test controller reg[reg30]
io760262=reg[26] cur val=000000, writable=177777. active iopage reg with handle 26 linked to device Test controller reg[reg31]
io760264=reg[27] cur val=000000, writable=177777. active iopage reg with handle 27 linked to device Test controller reg[reg32]
io760266=reg[28] cur val=000000, writable=177777. active iopage reg with handle 28 linked to device Test controller reg[reg33]
io760270=reg[29] cur val=000000, writable=177777. active iopage reg with handle 29 linked to device Test controller reg[reg34]
io760272=reg[30] cur val=000000, writable=177777. active iopage reg with handle 30 linked to device Test controller reg[reg35]
io760274=reg[31] cur val=000000, writable=177777. active iopage reg with handle 31 linked to device Test controller reg[reg36]
io760276=reg[32] cur val=000000, writable=177777. active iopage reg with handle 32 linked to device Test controller reg[reg37]
Registered devices by handle:
Device #1 "Test controller" @io760200: 32 registers
Reg[ 0]@io760200: active dati dato, resetval=000000, writable=177777.
Reg[ 1]@io760202: active dati dato, resetval=000000, writable=177777.
Reg[ 2]@io760204: active dati dato, resetval=000000, writable=177777.
Reg[ 3]@io760206: active dati dato, resetval=000000, writable=177777.
Reg[ 4]@io760210: active dati dato, resetval=000000, writable=177777.
Reg[ 5]@io760212: active dati dato, resetval=000000, writable=177777.
Reg[ 6]@io760214: active dati dato, resetval=000000, writable=177777.
Reg[ 7]@io760216: active dati dato, resetval=000000, writable=177777.
Reg[ 8]@io760220: active dati dato, resetval=000000, writable=177777.
Reg[ 9]@io760222: active dati dato, resetval=000000, writable=177777.
Reg[10]@io760224: active dati dato, resetval=000000, writable=177777.
Reg[11]@io760226: active dati dato, resetval=000000, writable=177777.
Reg[12]@io760230: active dati dato, resetval=000000, writable=177777.
Reg[13]@io760232: active dati dato, resetval=000000, writable=177777.
Reg[14]@io760234: active dati dato, resetval=000000, writable=177777.
Reg[15]@io760236: active dati dato, resetval=000000, writable=177777.
Reg[16]@io760240: active dati dato, resetval=000000, writable=177777.
Reg[17]@io760242: active dati dato, resetval=000000, writable=177777.
Reg[18]@io760244: active dati dato, resetval=000000, writable=177777.
Reg[19]@io760246: active dati dato, resetval=000000, writable=177777.
Reg[20]@io760250: active dati dato, resetval=000000, writable=177777.
Reg[21]@io760252: active dati dato, resetval=000000, writable=177777.
Reg[22]@io760254: active dati dato, resetval=000000, writable=177777.
Reg[23]@io760256: active dati dato, resetval=000000, writable=177777.
Reg[24]@io760260: active dati dato, resetval=000000, writable=177777.
Reg[25]@io760262: active dati dato, resetval=000000, writable=177777.
Reg[26]@io760264: active dati dato, resetval=000000, writable=177777.
Reg[27]@io760266: active dati dato, resetval=000000, writable=177777.
Reg[28]@io760270: active dati dato, resetval=000000, writable=177777.
Reg[29]@io760272: active dati dato, resetval=000000, writable=177777.
Reg[30]@io760274: active dati dato, resetval=000000, writable=177777.
Reg[31]@io760276: active dati dato, resetval=000000, writable=177777.
sz Size memory: scan addresses from 0, show valid range
m [<startaddr> <endaddr>] memory range emulated by UniBone. No args = all upper. [octal]
e <addr> [n] EXAMINE the next <n> words at <addr>. [octal]
e EXAMINE single word from next <addr>
d <addr> <val> [<val> ..] DEPOSIT multiple <val> starting at <addr> [octal]
d <val> DEPOSIT <val> into next <addr>
xe Like EXAM, but local access to DDR memory. Only in emulated memory range.
xd Like DEPOSIT, local access to DDR memory. (CPU cache not updated!)
lb <filename> Load memory content from disk file, as binary image
ll <filename> Load memory content from MACRO-11 listing
lp <filename> Load memory content from Absolute Papertape image
lt <filename> Load memory content from "adr-value pairs" text file
s <filename> Save memory content to binary disk file
ta [<startaddr> <endaddr>] Test memory, addr into each word. Max <endaddr> = 757776
tr [<startaddr> <endaddr>] Test memory random
init Pulse UNIBUS INIT
pwr Simulate UNIBUS power cycle (ACLO/DCLO)
dbg c|s|f Debug log: Clear, Show on console, dump to File.
(file = qunibone.log.csv)
i Info about address tables
< <filename> Read command from <file>
q Quit
Current EXAM/DEPOSIT address is 000000
M>>>[16:31:10.496228 Inf tc] Test controller::worker(0) started
[16:31:10.499867 Inf tc] Trying to set thread realtime priority = 50
[16:31:10.502622 Inf tc] Scheduling is at RT priority.
[16:31:10.502998 Inf tc] Thread priority is 50
M>>>sz
Found valid addresses in range 0..757776.
Current EXAM/DEPOSIT address is 000000
M>>>e 0
EXAM 000000 -> 000000
Current EXAM/DEPOSIT address is 000000
M>>>d 0 123
DEPOSIT 000000 <- 000123
Current EXAM/DEPOSIT address is 000000
M>>>e 0
EXAM 000000 -> 000123
Current EXAM/DEPOSIT address is 000000
M>>>tr
Testing 0..757776 randomly (stop with ^C) ...
WRWRWRWRWRWRWRWRWR 10 WRWRWRWRWRWRWRWRWRWR 20 WRWRWRWRWRWRWRWRWRWR 30 WRWRWRWRW
RWRWRWRWRWR 40 WRWRWRWRWRWRWRWRWRWR 50 WRWRWRWRWRWRWRWRWRWR 60 WRWRWRWRWRWRWRWR
WRWR 70 WRWRWRWRWRWRWRWRWRWR 80 WRWRWRWRWRWRWRWRWRWR 90 WRWRWRWRWRWRWRWRWRWR
100 WRWRWRWRWRWRWRWRWRWR 110 WRWRWRWRWRWRWRWRWRWR 120 WRWRWRWRWRWRWRWRWRWR
130 WRWRWRWRWRWRWRWRWRWR 140 WRWRWRWRWRWRWRWRWRWR 150 WRWRWRWRWRWRWRWRWRWR
160 WRWRWRWRWRWRWRWRWRWR 170 WRWRWRWRWRWRWRWRWRWR 180 WRWRWRWRWRWRWRWRWRWR
190 WRWRWRWRWRWRWRWRWRWR 200 WRWRWRWRWRWRWRWRWRWR 210 WRWRWRWRWRWRWRWRWRWR
220 WRWRWRWRWRWRWRWRWRWR 230 WRWRWRWRWRWRWRWRWRWR 240 WRWRWRWRWRWRWRWRWRWR
250 WRWRWRWRWRWRWRWRWRWR 260 WRWRWRWRWRWRWRWRWRWR 270 WRWRWRWRWRWRWRWRWRWR
280 WRWRWRWRWRWRWRWRWRWR 290 WRWRWRWRWRWRWRWRWRWR 300 WRWRWRWRWRWRWRWRWRWR
310 WRWRWRWRWRWRWRWRWRWR 320 WRWRWR^[W^[^[^[^[RWRWRWRWRWRWR 330 WRWRWRWRWRWRWRWRWRWR
340 WR^C
All OK! Total 340 passes, split into 4807 block writes and 4984 block reads
Current EXAM/DEPOSIT address is 000000
This seems to work fine