Merge "sim/config: Update bug TODO"
diff --git a/platforms/smc.repl b/platforms/smc.repl index 10a03f2..f7b0e1c 100644 --- a/platforms/smc.repl +++ b/platforms/smc.repl
@@ -57,12 +57,12 @@ RxTimeoutIRQ -> smc_plic@7 RxParityErrorIRQ -> smc_plic@8 -// RV_TIMER_SMC, timer for Kata kernel. +// RV_TIMER_SMC, timer for Cantrip kernel. timer_smc: Timers.OpenTitan_Timer@ sysbus 0x50010000 frequency: 24000000 IRQ -> cpu1@5 -// Timer for Kata software timer service. +// Timer for Cantrip software timer service. timer_smc_sw: Timers.OpenTitan_Timer@ sysbus 0x50030000 frequency: 24000000 IRQ -> smc_plic@31
diff --git a/shodan.resc b/shodan.resc index 4c49ea7..f0136bc 100644 --- a/shodan.resc +++ b/shodan.resc
@@ -43,8 +43,8 @@ # Load the tarball of CAmkES components, cpio bundle of built-in files, and the seL4 kernel $tar ?= @out/ext_flash_release.tar -$cpio ?= @out/ext_builtins_release.cpio -$kernel ?= @out/kata/riscv32-unknown-elf/release/kernel/kernel.elf +$cpio ?= @out/cantrip/riscv32-unknown-elf/release/ext_builtins.cpio +$kernel ?= @out/cantrip/riscv32-unknown-elf/release/kernel/kernel.elf sysbus LoadBinary $tar 0x44000000 sysbus LoadBinary $cpio 0x46000000 sysbus LoadSymbolsFrom $kernel
diff --git a/shodan_infrastructure/DoubleBufferDMA.cs b/shodan_infrastructure/DoubleBufferDMA.cs index 686e011..4034335 100644 --- a/shodan_infrastructure/DoubleBufferDMA.cs +++ b/shodan_infrastructure/DoubleBufferDMA.cs
@@ -54,13 +54,16 @@ } var data = RegisteredPeripheral.ReadFrame(); + var size = horizontalSize.Value * verticalSize.Value; + // Restore bottom 3 bits of address. + var addr1 = rxBuffer1Address.Value << 3; - if(data.Length != rxBufferSize.Value) + if(data.Length != size) { - this.Log(LogLevel.Warning, "Received {0} bytes from the device, but RX DMA stream is configured for {1} bytes. This might indicate problems in the driver", data.Length, rxBufferSize.Value); + this.Log(LogLevel.Warning, "Received {0} bytes from the device, but RX DMA stream is configured for {1} bytes. This might indicate problems in the driver", data.Length, size); } - - Machine.SystemBus.WriteBytes(data, rxBuffer1Address.Value); + + Machine.SystemBus.WriteBytes(data, addr1); // TODO(jesionowski): re-enable double buffer once sw supports it // if(use_buffer1) { @@ -78,38 +81,39 @@ public GPIO Trigger { get; } public GPIO IRQ { get; } - public long Size => 0x100; + public long Size => 0x1000; private void DefineRegisters() { - Registers.RxBufferSize.Define(this) - .WithValueField(0, 32, out rxBufferSize, name: "RX_SIZE") + Registers.HorizontalSize.Define(this) + .WithValueField(0, 15, out horizontalSize, name: "HORIZONTAL_SIZE") + ; + + Registers.VerticalSize.Define(this) + .WithValueField(0, 14, out verticalSize, name: "VERTICAL_SIZE") ; Registers.RxBufferBaseAddress1.Define(this) - .WithValueField(0, 32, out rxBuffer1Address, name: "ADDR1") + .WithValueField(3, 29, out rxBuffer1Address, name: "ADDR1") ; Registers.RxBufferBaseAddress2.Define(this) - .WithValueField(0, 32, out rxBuffer2Address, name: "ADDR2") - ; - - Registers.Configuration.Define(this) - .WithReservedBits(0, 32) + .WithValueField(3, 29, out rxBuffer2Address, name: "ADDR2") ; } private bool use_buffer1 = true; private IValueRegisterField rxBuffer1Address; private IValueRegisterField rxBuffer2Address; - private IValueRegisterField rxBufferSize; + private IValueRegisterField horizontalSize; + private IValueRegisterField verticalSize; private enum Registers { - Configuration = 0x0, - RxBufferSize = 0x4, - RxBufferBaseAddress1 = 0x8, - RxBufferBaseAddress2 = 0xc, + HorizontalSize = 0x410, + VerticalSize = 0x414, + RxBufferBaseAddress1 = 0xe08, + RxBufferBaseAddress2 = 0xf30, } } }