Commit graph

179 commits

Author SHA1 Message Date
Sean Cross
cd19fcba57 emulation: ec: i2c: allow reading multiple registers
Previously, the code would only allow for reading one register at a
time. This caused that one register to be duplicated repeatedly.

As a result, readings such as Voltage were incorrect.

Signed-off-by: Sean Cross <sean@xobs.io>
2022-04-20 21:26:58 +08:00
Sean Cross
a70aee7bad loader: move loader into main workspace
Add the loader into the main workspace, removing it from its own
sub-workspace. We can do this now that we can specify the linker script
in `build.rs`.

This improves IDE support, and should shrink disk storage requirements.

Signed-off-by: Sean Cross <sean@xobs.io>
2022-03-22 02:09:18 +08:00
Sean Cross
84c0896823 linux-server: update versatile system
Signed-off-by: Sean Cross <sean@xobs.io>
2022-03-02 21:08:22 +08:00
Sean Cross
e507c474d6 wf200: add binary file
Signed-off-by: Sean Cross <sean@xobs.io>
2022-03-02 20:51:35 +08:00
Sean Cross
768a7c4b0d emulation: add WF200 ethernet implementation
This adds a working Ethernet implementation based on the WF200. It
currently gets connected to a Linux machine running a udhcpd server,
however it could also get connected to a TUN/TAP connection on Linux or
Mac.

Signed-off-by: Sean Cross <sean@xobs.io>
2022-02-23 21:44:01 +08:00
Sean Cross
9c1255bdd7 emulation: split Com emulation into three files
The COM bus is fundamentally three things: The SoC, the EC, and the glue
that binds the two together.

Now that we have the `EnsureTypeIsLoaded` trick, split the file into
three different groups.

Signed-off-by: Sean Cross <sean@xobs.io>
2022-02-18 09:07:13 +08:00
Sean Cross
317f3136aa emulation: complete initial emulation of spinor/flash
Emulate both the SPINOR block as well as the OSPI flash attached to it.

With this change, the PDDB can now be initialized and resets itself
properly. Additionally, data persists across virtual reboots.

Data does not persist across runs of the emulator. That will follow in
an upcoming patch.

Signed-off-by: Sean Cross <sean@xobs.io>
2022-02-17 18:03:45 +08:00
Sean Cross
88512da693 emulation: keyboard: add key injection functions
It is now possible to inject keys, strings, and lines of text.

Signed-off-by: Sean Cross <sean@xobs.io>
2022-02-14 17:51:56 +08:00
Sean Cross
d44cae2eae xous-release: silence GPIO range
Signed-off-by: Sean Cross <sean@xobs.io>
2022-02-14 16:37:33 +08:00
Sean Cross
ed4dfd4dc1 emulation: com: update HOLD as part of Transmit
Previously, the HOLD signal was updated in a different clock domain from
the transmission signal. This could result in the HOLD bit being set
even if there was no data available.

Update the HOLD bit if it's present as part of the Transmit cycle.

Signed-off-by: Sean Cross <sean@xobs.io>
2022-02-14 13:52:43 +08:00
Sean Cross
11783a050e emulation: i2c: implement Reset bit on I2C
Signed-off-by: Sean Cross <sean@xobs.io>
2022-02-14 13:41:50 +08:00
Sean Cross
c392d8df90 emulation: BQ27421: implement more registers
This gets the gas gauge showing more data.

Signed-off-by: Sean Cross <sean@xobs.io>
2022-02-14 13:41:15 +08:00
Sean Cross
49e1eb19c0 emulation: connect EC
Connect the EC to the SoC. This allows for emulating both the EC and SoC
in tandem. Messages flow via a 16-bit bus. When data is not available,
`0xdddd` is returned.

There is a HOLD line that goes from the EC to the SoC. This is tied to
the inverse of presence of data in the EC FIFO -- when it's empty, HOLD
is `1`, and when there is data it's `0`.

Signed-off-by: Sean Cross <sean@xobs.io>
2022-02-14 12:28:40 +08:00
Sean Cross
fbbb2120ab com: working on getting com functioning
Signed-off-by: Sean Cross <sean@xobs.io>
2022-02-13 10:59:47 +08:00
Piotr Zierhoffer
e21e55807e Update Renode models with new ClockEntry API 2022-02-04 04:04:37 +01:00
Sean Cross
4a44d8d32d emulation: csproj: update targetframework to 2.1
The targetframework tag is now 2.1, in accordance with the upstream C#
code from Microsoft.

Signed-off-by: Sean Cross <sean@xobs.io>
2022-01-26 12:51:19 +08:00
Sean Cross
96d241acfd emulation: memlcd: reduce dirty bit count to 2 bytes
Previously, the memlcd had 22 bytes of dirty bits following a line. This
was reduced to 2 bytes, but the logic checking the dirty bytes had not
been updated.

Reduce the dirty byte count to 2 bytes.

Signed-off-by: Sean Cross <sean@xobs.io>
2022-01-26 12:48:04 +08:00
bunnie
40dcd28b23 move the devboot line 2022-01-25 18:22:02 +08:00
bunnie
0d4ab0eb47 Revert "loader: move loader into main workspace"
This reverts commit 0d72454776.
2022-01-17 22:55:39 +08:00
Sean Cross
0d72454776 loader: move loader into main workspace
Add the loader into the main workspace, removing it from its own
sub-workspace. We can do this now that we can specify the linker script
in `build.rs`.

This improves IDE support, and should shrink disk storage requirements.

Signed-off-by: Sean Cross <sean@xobs.io>
2022-01-14 17:32:04 +08:00
bunnie
010856406d fix permissions 2021-10-27 23:06:13 +08:00
Sean Cross
63dc07d633 emulation: get more of the EC working
Signed-off-by: Sean Cross <sean@xobs.io>
2021-09-27 19:42:04 +08:00
Sean Cross
45d8124418 Merge branch 'main' of github.com:betrusted-io/xous-core 2021-09-15 17:18:14 +08:00
bunnie
74e2f3f2d2 add a trace debug print in engine emulation for correlation
against cycle-accurate verilog simulator.
2021-09-07 05:08:56 +08:00
bunnie
3c67e7a89b update csharp docs 2021-09-06 21:11:27 +08:00
Sean Cross
ac81da5ecf emulation: watchdog: fix watchdog timer
This causes it to actually work.

Signed-off-by: Sean Cross <sean@xobs.io>
2021-08-30 15:30:59 +08:00
Sean Cross
b8c23af4fd emulation: fix betrustedsoci2c implementation
This fixes the RTC, which gets things working again.

Signed-off-by: Sean Cross <sean@xobs.io>
2021-08-30 15:12:13 +08:00
Sean Cross
9f46fbdcb3 emulation: map soc_csr.bin to flash
This is required in order to get the keys, which are used by the
firmware now.

Signed-off-by: Sean Cross <sean@xobs.io>
2021-08-30 13:32:41 +08:00
Sean Cross
a3d69684c8 Merge branch 'main' of github.com:betrusted-io/xous-core 2021-08-30 12:36:40 +08:00
Sean Cross
5aaf166541 emulation: implement partial ec i2c
This implements some i2c functionality on the EC. Additionally, it
implements the Betrusted watchdog.

Signed-off-by: Sean Cross <sean@xobs.io>
2021-08-30 12:36:04 +08:00
bunnie
dcc22a910f update renode.svd with extra register for susres 2021-08-29 22:58:57 +08:00
bunnie
e407e77b4f unbreak renode build 2021-08-24 23:38:26 +08:00
Sean Cross
66a68f1757 emulation: use riscv32imac-unknown-xous-elf loader
Use the new target for the loader.

Signed-off-by: Sean Cross <sean@xobs.io>
2021-08-18 18:23:09 +08:00
Sean Cross
5ec4da0f8f emulation: use riscv32imac-unknown-xous-elf
The path to the generated file has changed. Update it.

Signed-off-by: Sean Cross <sean@xobs.io>
2021-08-04 10:14:56 +08:00
Sean Cross
9e1fec4d78 emulation: update offset of xous.img
This image file should get loaded onto SPI flash rather than into RAM,
since RAM gets cleared by the bootloader now.

Place it at a location that matches real hardware.

Signed-off-by: Sean Cross <sean@xobs.io>
2021-08-02 18:16:01 +08:00
Sean Cross
bb9472816f emulation: add spinor_soft_int and wfi
These two peripherals are required to run the current build.

Signed-off-by: Sean Cross <sean@xobs.io>
2021-08-02 17:10:10 +08:00
bunnie
fe581d23ac update renode svd 2021-07-18 18:52:07 +08:00
Sean Cross
d248ab3cc7 emulation: engine: always update registers on write
These registers get reset when the hardware is reset, however the engine
may still be running. Ensure it's not running when the device is reset.

Signed-off-by: Sean Cross <sean@xobs.io>
2021-07-15 18:23:36 +08:00
Sean Cross
3f1593e56e emulation: engines: cache registers in RAM
Don't consult RAM every time we want to read a register. This improves
performance at the cost of potentially having stale registers.

Signed-off-by: Sean Cross <sean@xobs.io>
2021-07-15 18:10:38 +08:00
Sean Cross
20c91866dd emulation: add keystore and engine to loaded files
These blocks are now supported as emulation targets.

Signed-off-by: Sean Cross <sean@xobs.io>
2021-07-15 16:41:23 +08:00
Sean Cross
e15b3e9cc1 emulation: regenerate betrusted-soc.repl
Signed-off-by: Sean Cross <sean@xobs.io>
2021-07-15 15:57:53 +08:00
Sean Cross
50c5e1290d memlcd: implement vram
Now that peripherals handle memory themselves, we need a special block
to handle video memory.

Signed-off-by: Sean Cross <sean@xobs.io>
2021-07-15 15:56:49 +08:00
Sean Cross
9b43b7e475 emulation: engine: remove unused properties
These properties and variables were unused, and should be removed.

Signed-off-by: Sean Cross <sean@xobs.io>
2021-07-15 15:56:18 +08:00
Sean Cross
5ae1e437ab sha512: fix length and 512/256 calculation
The length is now correctly calculated, and the engine properly
completes.

Additionally, a bulk 512/256 implementation has been written that works
well enough, but will fall over if asked to compute a large amount of
data.

Signed-off-by: Sean Cross <sean@xobs.io>
2021-07-15 15:55:13 +08:00
Sean Cross
4790686dd9 engine: pass all checks with engine check
This fixes bugs in SUB, XOR, MUL, NOT, and gets register windows working.

Signed-off-by: Sean Cross <sean@xobs.io>
2021-07-15 11:28:53 +08:00
Sean Cross
acc981638e engine: only 4 tests are failing
Signed-off-by: Sean Cross <sean@xobs.io>
2021-07-15 09:24:19 +08:00
Sean Cross
fd5e07b983 emulation: add broken engine implementation
Signed-off-by: Sean Cross <sean@xobs.io>
2021-07-13 22:25:46 +08:00
Sean Cross
4b619bb0a9 emulation: update trng peripherals
The register mapping for the TRNG has changed. Update these peripherals
to reflect the latest shuffle.

Signed-off-by: Sean Cross <sean@xobs.io>
2021-07-13 22:24:04 +08:00
Sean Cross
4864d6bae7 emulation: implement sha512
This implements the sha512 block.

Signed-off-by: Sean Cross <sean@xobs.io>
2021-07-13 22:22:31 +08:00
Sean Cross
dfcc62b96a emulation: add keyrom
This contains the default dev key.

Signed-off-by: Sean Cross <sean@xobs.io>
2021-07-13 22:22:03 +08:00