| Notes for the MIPS architecture port of U-Boot | |
| Toolchains | |
| ---------- | |
| http://www.denx.de/wiki/DULG/ELDK | |
| ELDK < DULG < DENX | |
| http://www.emdebian.org/crosstools.html | |
| Embedded Debian -- Cross-development toolchains | |
| http://buildroot.uclibc.org/ | |
| Buildroot | |
| Known Issues | |
| ------------ | |
| * Cache incoherency issue caused by do_bootelf_exec() at cmd_elf.c | |
| Cache will be disabled before entering the loaded ELF image without | |
| writing back and invalidating cache lines. This leads to cache | |
| incoherency in most cases, unless the code gets loaded after U-Boot | |
| re-initializes the cache. The more common uImage 'bootm' command does | |
| not suffer this problem. | |
| [workaround] To avoid this cache incoherency, | |
| 1) insert flush_cache(all) before calling dcache_disable(), or | |
| 2) fix dcache_disable() to do both flushing and disabling cache. | |
| * Note that Linux users need to kill dcache_disable() in do_bootelf_exec() | |
| or override do_bootelf_exec() not to disable I-/D-caches, because most | |
| Linux/MIPS ports don't re-enable caches after entering kernel_entry. | |
| TODOs | |
| ----- | |
| * Probe CPU types, I-/D-cache and TLB size etc. automatically | |
| * Secondary cache support missing | |
| * Initialize TLB entries redardless of their use | |
| * R2000/R3000 class parts are not supported | |
| * Limited testing across different MIPS variants | |
| * Due to cache initialization issues, the DRAM on board must be | |
| initialized in board specific assembler language before the cache init | |
| code is run -- that is, initialize the DRAM in lowlevel_init(). | |
| * centralize/share more CPU code of MIPS32, MIPS64 and XBurst | |
| * support Qemu Malta |