Update README.md
authorKristina Brooks <christinaa@users.noreply.github.com>
Wed, 8 Jun 2016 02:45:40 +0000 (03:45 +0100)
committerKristina Brooks <christinaa@users.noreply.github.com>
Wed, 8 Jun 2016 02:45:40 +0000 (03:45 +0100)
README.md

index 3e77e41..c5ff226 100755 (executable)
--- a/README.md
+++ b/README.md
@@ -14,19 +14,21 @@ You need Julian Brown's VC4 toolchain to build this (https://github.com/puppeh/v
 ## Technical Details\r
 The firmware is split into two parts, a VC4 part and and ARM part. The VC4 part initializes PLLC and moves VPU over to it, and then brings up UART. It then performs SDRAM initialization, making SDRAM available at `0xC0000000` (uncached alias). The ARM loader will do ARM initialization and then copy the ARM bootloader that's embedded in it to the alias. It will then map it to `0x0` in ARM's memory space and start ARM. The code under `arm_chainloader` is what will run on the ARM. \r
 \r
-The current makefiles in the ARM part of it aim at **RPi1** (ie. ARMv6) but they can be changed to ARMv7 if you want to build it for a newer model. I tested it on all RPi models and it works without any issues as far as I can tell (ARM can access peripherals and memory just fine as AXI supervisor).\r
+The current iteration of ARM chainloader (which I've still yet to commit) can actually initialize the eMMC controller and access the boot partition with a FAT driver. From here, it would be trivial to chainloaded the next stage bootloader *but* you still face the issues of missing a substantial portion of the drivers that were previously provided by the firmware.\r
+\r
+The current makefiles in the ARM part of it aim at **RPi1** (ie. ARMv6) but they can be changed to ARMv7 if you want to build it for a newer model. I tested it on all RPi models and it works without any issues as far as I can tell (ARM can access peripherals and memory just fine as AXI supervisor). However it cannot access any secure peripherals (OTP/SDRAM/etc) since they appear to be on a separate bus accessible only to VC4.\r
 \r
 **Beware:** This doesn't handle SMP at the moment so if you run this on RPi2 and above, all ARM cores will start executing the ARM bootloader code at the start which could cause problems. I will fix this soon.\r
 \r
-## Issues\r
+## Issues/Fixes\r
  * PLL rate on ARM is slow, it's a bit annoying. Need to tweak the PLL rate later.\r
- * Code that prints SDRAM capacity is a bit wrong, I need to fix it, but it makes no functional difference.\r
- * At the moment the ARM side of the bootloader doesn't do anything aside from printing a line to UART. I'm going to add an SDHOST driver to load the next stage bootloader to it at some point.\r
- * It only maps a small amount of memory at the moment. You can tweak it in `arm_loader.c` if you want.\r
+ * All SDRAM configurations (including 1GB work), however, I'm not certain whether they will be reliable or not . ARM detection works for all of the RPi models I got to test it on which was two RPi2s, 1 RPi1 and 1 RPi3.\r
+ * SD card support kind of works now, can parse MBR, parse the FAT boot partition but it still needs to pull off a next stage bootloader of it (possibly u-boot/LittleKernel or maybe even just start Linux straight from bootcode.bin).\r
+ * The VPU still needs some sort of a firmware since ARM can't access all registers by itself, at the moment I'm trying to figure out how the VC4 interrupt controller works and how I can wake the sleeping VPU from ARM and get it to do things via a mailbox.\r
 \r
 ## Does/Will it boot Linux?\r
 \r
-Eventually maybe. Since `start.elf` is responsible for clock and power management (all registers in the `cpr` block), these drivers will have to be rewritten on ARM (or even on the open source VC4) to have any meaningful peripherals working properly (for example HDMI/DMA/Pixel Valve/Whatever). UART and GPIOs do work though.\r
+Eventually maybe. Since `start.elf` is responsible for clock and power management (all registers in the `cpr` block), these drivers will have to be rewritten on ARM (or even on the open source VC4) to have any meaningful peripherals working properly (for example HDMI/DMA/Pixel Valve/Whatever). You can boot a very minimal version of Linux without the firmware and get it to work with UART and some USB devices, but you can expect half of the things to be broken (most importantly, video and DMA).\r
 \r
 ## Thanks To\r
  * **Herman Hermitage** for his VC4 documentation and for helping me with working out suitable ARM PLL configurations.\r
This page took 0.024176 seconds and 4 git commands to generate.