FermiOS: An OS development for Raspi 3

I have been looking at the peripherals to see what toys are hidden in silicon.

the Triple I2C controller and 15(!!) Software configurable DMA channels look fun :smiling_imp:

How experienced are you in this kind of stuff? Coz looks like a lot :stuck_out_tongue:
I am one helluva noob, just tryina learn shit.

@redgek Im half way through an EEE degree, so I understand most of the theory, but never get to play with this stuff…

My experience with embedded development starts at Arduinos and ends at trying to build rust programs for STMF103xx parts.

I am excited by this cos I feel like someone has just handed me the worlds fanciest microcontroller and said “have fun, don’t break it”. But instead of being a $300 dev board from ST or Xilinx its a $35 PC that I already own!

2 Likes

@redgek did you find any information on talking to the GPU?

Yeah, I used that to get the board serial. You talk with the VideoCore via the mailbox.

I just skimmed it to implement basic stuff. Still need to read on it.

1 Like

Mini-update:

Couldn’t fall asleep so decided to play around with message box to query stuff on Raspi:

Actual hardware:

QEMU:
image

As you can see, there are some quirks to iron out. Can’t read the clock rate on actual hardware… Also max clock rate should be 1.2 GHz on Raspi 3 B :man_shrugging:

Also need to factor some code :wink: :

Anyways, that was kinda fun, but I think I finally feel like sleeping.

That’s it for now.

Commit:

3 Likes

Super small update (won’t even bother writing in OP):

just refactored the mbox calls from main into separate functions. Didn’t even look into fixing the clock bug on real HW. :man_shrugging: gotta go write some thesis.

Commit:

1 Like

Another smol update (that I won’t bother to add to OP):

Just threw some ugly code together to test sending data over serial. The goal atm is to write a bootloader over serial.

image

Commit:

1 Like

Smol Update: FML Edition :expressionless::gun:

Half a day of work to realize I have faulty serial connection on real hardwre… (kept rewriting my code, kept thinking I am doing something wrong lol)

Redid the serial boot interface, as well as, wrote a script to actually upload the kernel over serial from host.

Commit:


code is shit, and needs refactor, hence why it’s in dev branch.

2 Likes

Not-an-update-update:

Ripped apart my Arduino breadboard USB 2 serial contraption. I am not sure if it’s the culprit, but I definitely get output cut at some point when using that.

But I went and ordered some stuff that might help me out:

  • Logic analyser
  • Multimeter
  • USB2UART
3 Likes

Sorry to hear about your tools letting you down,

Its great to see progress though. Keep at it man!

1 Like

It’s here my dudes!

5 Likes

4 Likes

Okay it seems like for some reason on real hardware it frequently experiences misalignment?

Analysing right now, I think the tools are paying for themselves lol.

4 Likes

Dude, this is all far beyond me, but I’m watching with intrigue.

This shit is amazing

2 Likes

same really lol, I just learn as I go :smile:

2 Likes

I’ve always been fascinated with kernel/OS development, but frankly, I am pulled in so many directions at work that I don’t have the time to focus.

jack of all trades, master of none sorta deal.

One of these days, I’ll spend some time going through the kenelnewbies guides and get working on that stuff, but for now, I’m happy with writing GTK applications in python. :stuck_out_tongue:

1 Like

How it looks like when it’s okay:

How it looks like when it’s broken:

So ehm, here’s the thing. Since raspi doesn’t have no restart button what I do is unplug and plug the usb back in… In theory it shouldn’t affect it, but I guess in real life it fucks with it way too much… :thinking:

Maybe I should add some command line type of thing to boot loader, so it restarts itself (not the actual pi for now, but maybe ( I think it’s done via the memory box request to the GPU))

Anyways, I think I will finish for today, gotta prepare for an exam tomorrow.

1 Like

I wanna do so much different stuff it’s very hard to focus on one. This thread exists so people can bug me about this and so I can focus on this project.

same here, tbh I don’t wanna specialize too much. Since I enjoy a lot of different stuff.

1 Like

Universal asynchronous receiver/transmitter

asynchronous
1 Like