I want to develop my custom Operating System for VIM4

Which system do you use? Android, Ubuntu, OOWOW or others?

I’m interested in building my own OS for the VIM4, since it seems like it might be possible something basic working with hardware acceleration for graphics (which I think I can work off of the panfrost code in order to achieve). In order to even start to approach this, I was wondering if you could release the documentation for VIM4 like you have with the VIM3 (dl.khadas.com - Index of /Hardware/VIM3/Datasheet/), especially the datasheet for the A311D2, and ideally some information on how to interface with the STM32, like if it was shown in schematics.

Also, if you were feeling extra generous, could you drop me any useful links to code samples that would be relevant, or a quick-start tutorial on how to boot via u-boot on the khadas re: file layout on an sdcard, as I haven’t worked with it before. Or even how to potentially load it via oowow!

For reference, my current main OS is Arch linux just to provide a driver interface for the DRM and HID devices and on top I have my own OpenGL based UI and programming language. I only need a very simple file interface, on top of which I have my own caching layer, so a proper file system isn’t necessarily required, as I’d likely just be deploying a btree based database on top of that.

So if I could achieve:

  • interfacing with the STM, I can interface my keyboard via the custom controller I’ve already built for it, and bypass the immediate need for a USB stack (although eventually I would like to add that).
  • porting the panfrost code or at the very least being able to draw some triangles and set up 3 framebuffers
  • get my code booting

then I would be able to get quite a lot of the functionality I need to just be able to work remotely to function, and on a low power device that I can gradually expand the functionality of by implementing more features.

I think the VIM4 could be a very practical low powered remote device for when I don’t want to deal with the heat, complexity, or lower battery life of a laptop for simple tasks like programming and watching videos/browsing the web, but in order to maximize that potential, I think writing my own OS is the best way to do that.

In the meantime, my VIM4 is arriving today and I’ll test out my current system on the linux 5.4 software. I’ve already got it working on the pi4, but the VIM4 would be a very nice upgrade in lots of ways (like actually being able to potentially render at 4k60hz without aggressive dirty caching. the memory bandwidth of the rpi4 definitely can’t support blitting the screen at 4k60fps)

VIM4 requires the vendor 5.4 bsp kernel and panfrost isn’t really usable until 5.11, so to use panfrost you will need a huge backport of DRM code. The panfrost driver itself will be relatively simple to copy/paste into an earlier kernel but it depends on some non-trivial and invasive memory architecture changes. I’ve seen a few people talk about doing this for (non-Amlogic) projects, but no reports of serious activity or success. From a non-Amlogic perspective there is nothing special about Linux 5.4 so any developer with common sense will evaluate the hundreds of man-hours of hard graft and say “nah, might as well rebase on 5.15” which will probably be easier and faster.

TL/DR; Your app might run fine on a VIM4, but sadly using mali blobs not panfrost.

@chewitt What SoC vendor do you recommend trying. We are trying to go forward and everything seems to get stuck in the mud.

VIM4 will be better long-term for a desktop OS, but creating and maintaining your own OS is a rather massochistic task. If you want to develop things I highly recommend taking an existing distro and use it to do some developing as the drudge work of maintaining a distro (esp. a rolling release one like Arch or Manjaro) will consume your time.

VIM3 is a step down in CPU performance (and there are challenges with media codecs) but if FOSS open-ness and panfrost support is important for development its A311D chip has stronger upstream support. The ‘Edge’ board which uses RK3399 is a further step down in CPU but still has grunt and the RK3399 has reached the age where upstream media support is strong.

If FOSS support is not so important mali blobs are available or VIM4 and should support OpenGLES (not OpenGL) needs fine.

I wasn’t looking for an opinion on the feasibility. I’m going to do it anyway. And fyi, I’ve been programming for 14 years, so I’m well aware of the complexity.

The panfrost project has reverse engineered the ISA for the G52. I’d be using it as a reference, not a port. I’m gonna rewrite all of it from scratch.

Also, thanks for implying I lack common sense. Please don’t reply on this thread anymore. Your replies aren’t helpful.

All I need, is documentation.

I run a successful custom distro that depends on FOSS mali support so I’m an avid follower of related topics. I look forward to reading about your panfrost rewrite in a future phoronix article :slight_smile:

I am looking for a board that will be in production for several more years. Its just too expensive to get stuff ready for Industrial use and the have the board sunset soon after. Not going to wait a couple of years for the OS to stabilize then try to bring it to market and have the board only be in production another year or so, it just does not make sense at all. We have wasted so much time already messing around with the OS issues its not even close to being funny.

Please check here:

Source code:

Docs:

https://docs.khadas.com/linux/vim4/#VIM4

2 Likes

Thank you very much! I’ll read it over after work and update here as I make progress over the next few months if I have more questions.

At a glance, it’s exactly what I was looking for.

1 Like