Message ID | 1451385354-55472-9-git-send-email-yanmiaobest@gmail.com |
---|---|
State | Superseded |
Delegated to: | Bin Meng |
Headers | show |
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. 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 > > CPU Microcode > ------------- > -- Regards, Bin
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
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 CPU Microcode -------------
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(-)