12 comments

[ 2.8 ms ] story [ 41.7 ms ] thread
With they had something like this for the esp32-cam. With a touchscreen, you could make a wireless pda
> This microcontroller-focused operating system is the continuation of RetroBSD, a 2.11BSD-based OS targeting only the MIPS-based PIC32MX7. DiscoBSD is multi-platform, as it also supports Arm Cortex-M4 STM32F4 devices.

So is RetroBSD inactive, or is this an extension/fork to add more hardware targets?

This is great - I like RTEMS but I was looking for something like DiscoBSD when I found it Any comments on developing with either would be most appreciated
> I like RTEMS

Samesame ;)

For them that are confused 2bsd is best thought of as 16 bit bsd, and as such it's development carried on for far longer than would be thought.

I have to admit I am not sure why you need a 16 bit os for a 32 bit processer like the pic32. Best I can come up with is that because 16 bit is such a constrained memory space it runs well on small microcontrollers.

It's not 16-bit as such. But since it's small enough to fit in 16-bit, it's small enough to fit on the small memory available on pic32.

It's like what if you have an 80386. It can run Linux (which is 32 bit). But your 80386 only has 1 megabyte of RAM. Then you can run Minix! Minix is available both in 32 bit and 16 bit versions. You could run the 16 bit, but then you get all the 16-bit limitations, so you can run the 32 bit version of Minix. Still small, but you get the added benefits of larger integers and larger address space.

The latter, but also 2.11bsd does not have virtual memory, and thus does not require an MMU. It was written with the segmentation features of a PDP-11 in mind, which so happen to adapt to PIC32 as it has kernel/user separation and memory protection via a kseg/useg segmentation (as opposed to a TLB with individual page protections).
Wow this is really cool! Seems to use flash and some ram for the kernel, and run userspace code from ram.

But iiih it's K&R C:

    long
    strtol(nptr, endptr, base)
      const char *nptr;
      char **endptr;
      register int base;
    {
Is this expected given the heritage? I know nothing about BSDs basically.

Edit: code formatting.