
Hi Bin,
2015-12-30 12:04 GMT+08:00 Bin Meng bmeng.cn@gmail.com:
Hi Miao,
On Tue, Dec 29, 2015 at 6:35 PM, Miao Yan yanmiaobest@gmail.com wrote:
Document the usage of 'fw' command
Signed-off-by: Miao Yan yanmiaobest@gmail.com
Changes in v2:
- various cleanup
doc/README.x86 | 36 +++++++++++++++++++++++++++++++++--- 1 file changed, 33 insertions(+), 3 deletions(-)
diff --git a/doc/README.x86 b/doc/README.x86 index 1271e5e..0687dc1 100644 --- a/doc/README.x86 +++ b/doc/README.x86 @@ -295,9 +295,39 @@ show QEMU's VGA console window. Note this will disable QEMU's serial output. If you want to check both consoles, use '-serial stdio'.
Multicore is also supported by QEMU via '-smp n' where n is the number of cores -to instantiate. Currently the default U-Boot built for QEMU supports 2 cores. -In order to support more cores, you need add additional cpu nodes in the device -tree and change CONFIG_MAX_CPUS accordingly. +to instantiate. U-Boot uses fw_cfg interface provided by QEMU to detect certain +system information, such as cpu number, so 'n' can be any number allowed by +QEMU.
+The fw_cfg interface in QEMU also provides information about kernel data, initrd +,command-line arguments and more. U-Boot supports directly accessing these informtion +from fw_cfg interface, this saves the time of loading them from hard disk or +network again, through emulated devices. To use it , simply providing them in +QEMU command line:
+$ qemu-system-i386 -nographic -bios path/to/u-boot.rom -m 1024 -kernel /path/to/bzImage
- -append 'root=/dev/sda1 console=ttyS0' -initrd /path/to/initrd -smp 8
+Note: -initrd and -smp are both optional
+Then start QEMU, in U-Boot command line use the following U-Boot command to setup kernel:
- => fw
+fw - QEMU firmware interface
+Usage: +fw <command>
- list : print firmware(s) currently loaded
- cpus : print online cpu number
- load <addr> : load kernel (if any) to address <addr>
+=> fw load +loading kernel to address 01000000, initrd 015dd010
+Here the kernel (bzImage) is loaded to 01000000 and initrd is to 0x15dd010. Then, 'zboot' +can be used to boot the kernel:
+=> zboot 01000000 - 015dd010
This still does not work. The last parameter (initrd_size) should not be omitted. Please enhance the 'fw load' command to print out the initrd size.
OK.
Did you test the initrd? Kernel does not boot with initird, showing
[ 3.092767] Unpacking initramfs... [ 3.094766] Initramfs unpacking failed: junk in compressed archive
Seems the default load address is overwritten during the process, which somehow impacts initramfs.
I will change that to 02000000 by default, and also initrd_start needs to be page size aligned. I'll fix that too.
CPU Microcode
--
Regards, Bin