Sylphide OS: a general-purpose OS for microcontroller-based computers

(projects.freehackers.org)

67 points | by iamnothere 13 hours ago

5 comments

  • NooneAtAll5 11 hours ago
    > On top of that, Sylphide OS adds:

    > drivers for mouse, keyboard, display, storage and network

    and couple lines later

    > What you don't have yet, but definitely planned:

    > storage (microsd, usb) > network (ethernet, wifi)

    I'm not gonna be angry at false advertising, but OS attempts only become appropriate to discuss once you made drivers and actually ran stuff on physical hardware

    Before that point it's just one of the many dozens and dozens other half-efforted attempts at OS that have been done over and over to death by now

    • iamnothere 10 hours ago
      Well, given that it’s built on FreeRTOS, this stuff should be fairly cheap to implement. I think you’re being a little overly critical for an early stage project that fills an interesting niche (GUI OS for MCUs).
      • skew-aberration 5 hours ago
        It's so platform dependent though, for many FreeRTOS targets I think you're just gonna be integrating against a vendor specific stack
  • Rochus 10 hours ago
    > Olimex esp32-p4-pc, the flagship product: new, powerful

    That's a very cool board, but pretty tricky. Great idea to run an old Mac OS on it. I try on and off to port the Oberon System 3 to this board since I received it in February. The display already works pretty good, but still a lot of road blocks.

    • iamnothere 10 hours ago
      Oberon would be a great fit for this board, your efforts are appreciated.

      It’s amazing how these inexpensive “MCUs” (not even sure you can call them that) are overtaking old PCs now.

      • Rochus 10 hours ago
        Thanks, I hope I'll be able to get it done in a timely manner. Currently I have to decompose the statically linked inner core because it doesn't fit into the dedicated memory slot anymore. Did you also have issues with the ttyACM0 connection which starts to drop regularly under certain conditions?

        It's indeed amazing that these MCUs essentially correspond to or even exceed the performance of the original Ceres systems in the nineties. The Oberon System and also the later AOS/Bluebottle multi core system are particularly suited for today's MCUs because they don't assume an MMU.

        • iamnothere 10 hours ago
          Oh, I’m not the developer of this, I just follow these sorts of projects because I’m interested in alternative OSes and particularly OSes that run under constrained environments. I haven’t personally tested it. There’s several of these under development now, as well as many emulators; the ESP CYD (and clones) seems to be a favored target.
    • exe34 2 hours ago
      Hi, Could you say a few words what makes this board tricky? I've wanted to get one for a similar reason as the OP, although I'm thinking a scheme-like VM with GUI.
      • Rochus 38 minutes ago
        There were dozens of pretty complex challenges, too many to describe here. So just a few examples. First of all, I'm fully bare-metal, with no ESP-IDF (though I use it for studying). A major annoyance is the USB-JTAG flapping which is the same on both board copies and different hosts; so debugging is even more difficult; partly worked around by logging via additional TTL UART connection. It's worse right after power-on and after EN pulses, then stabilizes for ~tens of minutes; could be thermal/supply settling, or simply the burst of re-enumerations any reset causes. Then the LT8912B I2C is shared with HDMI DDC; a lot of time went to find the right drive strength so the LT inits with the cable is in. Also a couple of rev v1.0 silicon issues, e.g two-step cache writeback, dead GPSPI clock, etc. For the display, the Olimex demo was very helpful; dumping all DSI/bridge/GDMA/clock registers over JTAG became an important debugging tool. Now the SD card and display work more or less. Right now, I'm really struggling with the USB keyboard, which is a low-speed device behind the onboard FE1.1s hub; both ways of reaching it fail identically with a bare chhltd and no cause bit.
  • irdc 12 hours ago
    If it's running on MMU-less systems, I'd be interested in how it loads multiple programs into memory: does it need to relocate each program binary? If so, doesn't that preclude using execute-in-place (XIP)?
    • Arelius 12 hours ago
      Generally, running in a MMU without static task config would require relocatable binaries. I'm not sure why it'd preclude execute-in-place. As a relocatable binary should be executable from generally any address space. However I suspect that hardware without an MMU is not super likely to be able to support XIP.

      It is based on FreeRTOS, so it should be fairly well documented.

      • dvdkon 11 hours ago
        > I suspect that hardware without an MMU is not super likely to be able to support XIP.

        This seems strange to me. Don't most microcontrollers support executing directly from flash? Some even can't execute from RAM.

        Though I agree with the main point, you can compile code as "PIC" - position independent code, and not bother with (ELF) relocations except for linking.

        • ranger_danger 9 hours ago
          > Don't most microcontrollers support executing directly from flash?

          Yes... I presume they meant XIP for multiple programs at once, since you'd need an MMU for that.

          • dmitrygr 4 hours ago
            > since you'd need an MMU for that.

            Or PIC code... PalmOS 5 & 6 allowed multiple programs in same memory and they were simply compiled pic. MMU was not used

            Some architectures (ARM, RISCV, aarch64) are well suited for this kind of code. Others are extremely poorly suited (x86, MIPS), but all CAN do it

          • actionfromafar 9 hours ago
            Or the program use relative addressing.
    • topspin 8 hours ago
      "COM" programs as seen in MS DOS and earlier CP/M systems contain only relative addresses, and can run from any "segment" of RAM, as the addresses are relative to the value of a segment register. This was used to load "background" services, typically servicing hardware devices.

      MCUs with MMUs are starting to appear, such as the ESP32-S31.

  • karlkloss 8 hours ago
    On one hand: Cool!

    On the other hand: I have a lot of old hardware in my 'too good to go' garbage bin that can run a full fledged Linux, so what.

  • gaiya365 8 hours ago
    [flagged]