LibreRPi – open source replacements for RPi firmware
github.com
github.com
Maybe I misread it, but it read like the VPU does more than the tiny necessary bootstrap to find an image, and chain load it. It reads like it has to do some timing critical initialisations of subsystems, but I cannot but think a CPU should be able to do this for itself, once it has some run state with a kernel in memory.
It's as if the VPU has to make the other bits of blobby hardware be alive, for the CPU to be able to see them. Most odd.
Oftentimes there are magic bits of this to do with ring states, and priviledge to alter ring at runtime. Maybe this is part of the story: the VPU initialises a specific ring state and some outer higher trust ring MUST be pre-initialised for the CPU ring state to be allowed to talk to it: it would violate the ring model, if the CPU did it.
The paragraph 'Does it boot Linux' should answer your questions
Yes, with some conditions. You can boot a very minimal version of Linux without the firmware and get it to work with UART and eMMC. Support for USB, DMA, and Ethernet are in the works, which will be sufficient for certain headless systems. Still, many other peripherals require bringup, such as video. Additionally, drivers for power management need to written.
So it isn't clear if this is code in the kernel, or code blobs still to be run in the VPU, and why."drivers" could refer to linux kernel, or the drivers as blob downloads, or VPU initialization.
https://github.com/librerpi/lk-overlay
Edit: The rpi-firmware repo has been replaced by the lk-overlay repo, which is much more flexible.
(From Broadcom's point of view, the VPU is the "real" computer with all the processing power, and the ARM is tacked on the side)
Thanks for a very useful observation. Clocking is fundamental to a lot of things, buses like the clock to be done right so I can believe booting requires good clocking and some bus initialisation.
This documentation is for the VideoCore IV. The BCM2711 SOC that is used in the Raspberry Pi 4 has a VideoCore VI.
This work and the processor under discussion is another core called the VPU that unfortunately gets confused because with the default firmware it runs the majority of the OpenGL driver stack, controlling the QPUs.
It’s diaeresis. (Not sure if ‘ae’ can be replaced by the umlaut here.)
still, neither are diuresis, which nobody wants
Thank you for enlightening me.
If diaeresis is too hard a word to deal with, we can just call it trema.
Although I'm a native french speaker TIL, thanks to you, that it's role was to inform that the letters are to be pronounced separately.
The diaeresis is very important in French (we call it tréma). Without this the word naïve instead of "na-iv" would sound "nev". The first name Loïc instead of "lo-ik" would be "looak" (it is even hard to say it loud for me). And many others.
Fortunately we still have the word for waters which is eaux and that we pronounce "o"
So we have several words that are pronounced "unexpectedly" (What You Read Is Not What You Pronounce). An example would be the name if the physicist Louis de Broglie, pronounced [dəbʁɔj]. OK, that's a family name so there is some history behind.
Then we have words that different people pronounce differently: ananas (pineapple) - some pronounce the "s", some do not. Or the village Avoriaz, same but for the "z". Or Chamonix.
But now that I think about this, what you are saying is indeed a thing. My wife's primary languages do not include French and she did not have, I think, major issues when choosing a pronunciation (she had Himalayas of other problems, though).
As someone who is only fluent in English but tried to study French for a couple weeks before visting Paris many years ago... Spoken French has institutionalized mumbling; what I read is you're supposed to form the final consonants of words with your mouth, but not voice them... Which ends up in practice with the consonants being pretty much voiced if the next word starts with a vowel and not if not... But I'm not surprised there's some variance.
The best written reference I could find (which sadly, I can't find again) was from a Hong Kong university where the writers seemed to have learned both English and French analytically rather than natively, so they would explain the rule for French and compare with the rule(s) for English and expose me to the rules I unconciously followed without knowing they existed.
Studying written and spoken French simultaneously was pretty helpful for me, otherwise it was too hard to fill in the ending letters of many words as needed.
You don't even need to search for older texts! The New Yorker actually uses the diaresis in their print edition. It's certainly a bit anachronistic, but I do think English spelling can be a bit obtuse to say the least, so the orthographic hint can sometimes be useful.
https://www.newyorker.com/culture/culture-desk/the-curse-of-...
https://www.arrantpedantry.com/2020/03/24/umlauts-diaereses-...
others like the 2d core default to the same mode, but can be re-configured to allow the arm to control it
there may be more peripherals that behave the same way, and require code on the VPU to help out
and like others said, changing the arm freq, from the arm core, could be dangerous, it may just lock up, because it turned its own clock off
> VideoCore chips can run complete applications - they are not simply video DSP chips that require a separate processor to supply and collect data. In practice though, they are often used like simple accelerators, as companies usually prefer to cautiously assimilate new technology rather than take a big risk in porting a large amount of application code from an existing ARM-based design.
For example one of earlier ones was used as GPU for Nokia N8
Isn't anyone going to talk about running random stuff on the VPU itself?! Given it's the thing used for 3D and stuff, I imagine it's going to be crazy fast at certain computations, much faster than the ARM is.
Untapped potential of all Raspberry Pies out there... maybe the VPU can be (ab)used to do stuff similar to what the Raspberry Pico can do.
https://www.youtube.com/watch?v=l7lIewA9fm4 is an example of a VPU accelerated mandelbrot, without the arm core even being turned on
for (int i=0; i<16; i++) { int temp = a[i] * b[i]; if (store) c[i] = temp; if (accumulate) accumulator[i] += temp; }
basically, the VPU can run this entire line of code in just 2 clock cycles, and this isnt even the 3d core, which is entirely seperate and more complex
https://gwolf.org/2022/04/how-is-the-free-firmware-for-the-r... https://news.ycombinator.com/item?id=31000725
AIUI, the VPU is in control of the computer, and the Arm is an accessory device. Only once the VPU has loaded its OS and it's running will the Arm be initialised, the kernel image loaded into RAM by the VPU, and then the Arm pointed at it. The OS continues to run and control the computer even once the Arm is running.
The VPU runs a proprietary RTOS called ThreadX, which is now owned by Microsoft.
i found that a bit limiting, with the lack of threads/drivers/modularity
thats why i ported little-kernel, to get the same level of features threadx likely offered, and then be able to expand the feature-set far more
with the lk-overlay codebase, you can drive the 2d and 3d cores from the VPU
you can output ntsc or vga video
you can turn on the arm core and boot linux
and you can map /dev/fb0 on the video output
and there are various cpu-independent features in LK like tga image decoding
If anything RPi seems like an outlier. Out of 9 different SBCs models I have at home only Rpi2b and Quartz64-A have proprietary firmware.
Something about the HDMI output on a Pi is just absolutely incompatible with the IP KVM's interface modules and it's maddeningly subtle because the Pis work _everywhere_ else.
https://github.com/christinaa/rpi-open-firmware/issues/37
Since then the project moved to a new maintainer (not me), who worked on it slowly but surely. They need new contributors though.