09-13-2019, 09:21 AM
(09-13-2019, 08:31 AM)Der Geist der Maschine Wrote:(09-13-2019, 12:24 AM)MikeInMass Wrote:(08-24-2019, 04:37 PM)Der Geist der Maschine Wrote:(08-24-2019, 09:18 AM)fire219 Wrote: At this point, most if not all of the boards(+laptops+Pinephone) can run almost completely libre. The issues in that regard are largely isolated to WiFi/BT driver blobs, and the initial stage 1 bootloader (which does DRAM initialization).
When it comes to the pinebook pro, I think you mean the stage 2 loader - that's the binary blob which is does the DDR init and loads uboot. There is a stage 1 loader, but it resides in ROM and can never be replaced.
Rockchip's documentation is somewhat cryptic. Some time ago I tried to understand the boot process and made notes. You can read about it on my website (click my "website icon" below).
I'd be excited about a libre ARM64 product in form factor more extensible than the Librem phone that someone mentioned. And I think an open source-- or at least transparent-- bootloader and boot process would be appealing to many coreboot/libreboot users and others focused primarily on security who mistrust the Intel ME. So I wanted to understand what aspects of the boot process are still opaque.
Thanks for your notes, Der Geist der Maschine! I also found Rockchip's documentation a little cryptic, but from looking at "Build Rockchip U-Boot" it's documented that make.sh creates a "pre-loader", a "trust image", and a u-boot image.
Taking the RK3399 as an example, inputs to this process are the binary blobs like rk3399_ddr_800MHz_v1.23.bin for SDRAM initialization; rk3399_usbplug_v1.19.bin for USB; and files that create the "trust" image, e.g. rk3399_bl31_v1.29.elf. These files are processed by executables in the "tools" directory such as trust_merger; there's no source provided for these.
Is open sourcing this toolchain part of Pine64's eventual roadmap? Or is it too heavily encumbered by licensing or trade secrets or whatever for that to be realistic?
And what about the Stage 1 loader in ROM? It would be very exciting to get something like stage0 in there.
I'd be very interested in any thoughts, or pointers to places to learn more. Thanks!
First off, what I write in this thread is to best of my understanding. I might be wrong from time to time.
These binary blobs are provided by Rockchip. I doubt Pine64 has access to the source.
The ROM is internal to the SOC and memory mapped to the the address of the start address of the CPU execution. You can't replace that with your own ROM (or flash or whatever). The memory mapping as well as the contents of the ROM are programmed at time of manufacturing the SOC.
What is not very helpful for this discussion, but I would like to point out that other ARM SOCs are more open source friendly. At work, we use the AST2500 from a Taiwanese company named Aspeed. Here, the memory controller is memory mapping a spi flash to the start address of the CPU execution. What's there is plain u-boot which is doing everything like initing RAM and loading the kernel and device tree. IMHO, that's very elegant and I got disappointed when I looked at Rockchip's way of booting up the SOC. Well, that way better/more transparent than our current computers
Thanks again, Der Geist der Maschine! In my mind I had been conflating Rockchip and Pine64; it is helpful to understand what is provided by which company.
It will be interesting to see how far transparency can get in the ARM64 world.