[U-Boot] [PATCH 3/3] MIPS: bootm.c: add support for 'prep' and 'go' subcommands
Gabor Juhos
juhosg at openwrt.org
Mon Jan 7 21:31:32 CET 2013
2013.01.07. 20:44 keltezéssel, Gabor Juhos írta:
> 2013.01.07. 18:15 keltezéssel, Daniel Schwierzeck írta:
>> 2013/1/7 Gabor Juhos <juhosg at openwrt.org>:
>>> The bootm command supports subcommands since long time
>>> however those subcommands are not yet usable on MIPS.
>>>
>>> The patch is based on the ARM implementation, and it adds
>>> support for the 'prep' and 'go' subcommands only.
>>>
>>> Signed-off-by: Gabor Juhos <juhosg at openwrt.org>
>>> Cc: Daniel Schwierzeck <daniel.schwierzeck at googlemail.com>
>>> ---
>>> arch/mips/lib/bootm.c | 15 +++++++++++++--
>>> 1 file changed, 13 insertions(+), 2 deletions(-)
>>>
>>
>> thanks but how did you test it?
>
> I have tested it with the following commands:
>
> U-Boot> setenv serverip 192.168.1.254; setenv ipaddr 192.168.1.1
> U-Boot> tftp 0xa0800000 openwrt-ath79-uImage-initramfs-lzma.bin
> dup 1 speed 100
> Using eth0 device
> TFTP from server 192.168.1.254; our IP address is 192.168.1.1
> Filename 'openwrt-ath79-uImage-initramfs-lzma.bin'.
> Load address: 0xa0800000
> Loading: #################################################################
> #################################################################
> #################################################################
> #################################################################
> #################################################################
> #################################################################
> #################################################################
> ###########################################################
> done
> Bytes transferred = 2627082 (28160a hex)
> U-Boot> bootm loados
> Trying to execute a command out of order
> bootm - boot application image from memory
>
> U-Boot> bootm start 0xa0800000
> ## Booting kernel from Legacy Image at a0800000 ...
> Image Name: MIPS OpenWrt Linux-3.8-rc2
> Created: 2013-01-07 19:19:26 UTC
> Image Type: MIPS Linux Kernel Image (lzma compressed)
> Data Size: 2627018 Bytes = 2.5 MiB
> Load Address: 80100000
> Entry Point: 80100000
> Verifying Checksum ... OK
> U-Boot> bootm loados
> Uncompressing Kernel Image ... OK
> U-Boot> bootm prep
> U-Boot> bootm go
>
> Starting kernel ...
>
> Linux version 3.8.0-rc2 (juhosg at mag2) (gcc version 4.6.4 20121106 (prerelease)
> (Linaro GCC 4.6-2012.11) ) #24 Mon Jan 7 20:19:20 CET 2013
> bootconsole [early0] enabled
> CPU revision is: 00019374 (MIPS 24Kc)
> ...
>
>> I needed to fix a relocation problem in cmd_bootm.c [1] to make it
>> properly working.
>
> Hm, I think that I know why I did not notice that. I have tested it on a board
> which uses an old U-Boot version as the primary bootloader. Because lots of
> features are disabled in that I have compiled a more usable version and I'm
> using that as a 2nd stage loader. It is loaded to address 0x80060000 by the
> original bootloader. The Linux kernel uncompressed to 0x80100000 so it did not
> clobber the strings.
I have changed the load address of the kernel and it indeed fails:
U-Boot> setenv serverip 192.168.1.254; setenv ipaddr 192.168.1.1
U-Boot> tftp 0xa0800000 openwrt-ath79-uImage-initramfs-lzma.bin
dup 1 speed 100
Using eth0 device
TFTP from server 192.168.1.254; our IP address is 192.168.1.1
Filename 'openwrt-ath79-uImage-initramfs-lzma.bin'.
Load address: 0xa0800000
Loading: #################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
###########################################################
done
Bytes transferred = 2627551 (2817df hex)
U-Boot> bootm start 0xa0800000
## Booting kernel from Legacy Image at a0800000 ...
Image Name: MIPS OpenWrt Linux-3.8-rc2
Created: 2013-01-07 19:54:05 UTC
Image Type: MIPS Linux Kernel Image (lzma compressed)
Data Size: 2627487 Bytes = 2.5 MiB
Load Address: 80060000
Entry Point: 80060000
Verifying Checksum ... OK
U-Boot> bootm loados
Uncompressing Kernel Image ... OK
U-Boot> bootm prep
bootm - boot application image from memory
Usage:
bootm [addr [arg ...]]
- boot application image stored in memory
passing arguments 'arg ...'; when booting a Linux kernel,
'arg' can be the address of an initrd image
When booting a Linux kernel which requires a flat device-tree
a third argument is required which is the address of the
device-tree blob. To boot that kernel without an initrd image,
use a '-' for the second argument. If you do not pass a third
a bd_info struct will be passed instead
Sub-commands to do part of the bootm sequence. The sub-commands must be
issued in the order below (it's ok to not issue all sub-commands):
start [addr [arg ...]]
loados - load OS image
fdt - relocate flat device tree
cmdline - OS specific command line processing/setup
bdt - OS specific bd_t processing
prep - OS specific prep before relocation or go
go - start OS
U-Boot>
With your relocation patch the problem is gone.
-Gabor
More information about the U-Boot
mailing list