Jump to content

Sita And Ganapti: A low level tool for chain loading code


WarFox
 Share

Recommended Posts

So this project isn't 100% complete, and it may be a bit before I complete it, but I wanted to share the code. The premise of this tool is to allow faster low level development doing bare metal programming on a Raspberri Pi 4B, and potentially faster development of an operating system/kernel. It can be a pain to write code, flash it to an SD card on another machine, then transfer it to the Pi4B, or with a USB. These two tools are meant to more streamline early development processes.

Sita

Sita is the name for a bare bones C-kernel that will facilitate several functions on the Pi4B. This is communicate over the serial port via UART and execute functions. Warning: The make file was written geared towards compiling it on an M1 MacbookAir.

Ganapati

Is essentially a communication program in rust to communicate with Sita over USB Serial connection via UART.

Agni

Agni is the name of the protocol I've cooked up to conduct this over. It is pretty basic. I even wrote a little bit of documentation for it in a repo that can be 'compiled' using MDBook.

Central Idea

Using the the agni protocol, one has 3 basic methods to call. A peek and poke like method from the days of when machine would ran Basic. You can read what is in a memory address and write to a specific memory address. Ideal for verifying things with registers since datasheets are not always as thorough as we will. Then having the ability to stream compiled binary code over and eventually jump to is and begin executing it. Sita would read it in and place it directly into RAM, jumping to the start address of the program.

Repositories

https://github.com/martintc/Sita

https://github.com/martintc/ganapati

https://github.com/martintc/Agni

Edited by WarFox
Added some more details
  • Great Work! 1
Link to comment
Share on other sites

Holy hell, this is awesome! It's been forever since I've done anything with a Pi, but I'll definitely need to try this out! I'm currently reading all of the md files in Agni, seriously, great work

Link to comment
Share on other sites

  • 3 weeks later...

Just a heads up for people curious. I just pushed some commits for a new Makefile for compiling on x86_64 using the GCC tool chain. To make it work, your going to have to install arm's gcc toolchain. You can get the linux binaries from arm. I then moved them on my machine to `/usr/bin`. However, you can change the path to where you want them to be.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...