Looked into early RTC chips. The first one seems to have been the OKI MSM5832, which was used on a few S-100 boards around 1980. It has an awkward 4 bit interface though. If I get around to a new SBC I will probably use the MM58167. The software interface is always the same: a bank of byte registers with the time / alarm / config data (and sometimes 50-100 bytes of nvram).
@emard I am not sure which chip the ULX3S uses. The crowd supply page says MCP7940 but the schematic refers to the PCF8523. Both seem to have the same "bank of registers interface, though. If you can provide me with a verilog module that connects to the RTC chip and offers a bus interface similar to that of MM58167 to the CPU, I will integrate it with the Mini Cortex and write the Unix driver for it. I am not bothered if the registers don't match in number or meaning with the MM58167.
It would be fun to have shutdown -r
working on a V6 :^)
from nmigen import *
from nmigen_boards.ulx3s import *
class Blinky(Elaboratable):
def elaborate(self, platform):
led = platform.request("led", 0)
timer = Signal(26)
m = Module()
m.d.sync += timer.eq(timer + 1)
m.d.comb += led.o.eq(timer[-1])
return m
if __name__ == "__main__":
platform = ULX3S_85F_Platform()
platform.build(Blinky(), do_program=True)