From: Ray Dudu <raydudu@gmail.com>
To: linux-mips@linux-mips.org
Subject: Re: uboot for MIPS: need help to skip relocate uboot and start uboot from RAM
Date: Thu, 03 Mar 2011 14:46:36 +0200 [thread overview]
Message-ID: <4D6F8DAC.20807@gmail.com> (raw)
In-Reply-To: <AANLkTi=9X9Bm9H4FSHm9+W_o-UOa25AEL947aPk4pNRy@mail.gmail.com>
Hi,
I'm not so familira with uboot, however, I done proprietary booter
implementation for my company. Similar functionality was required, for
different purposes actually, but it doesn't change the idea.
So in my booter code I done simple check of code location. In case when
the code detects that it is already in RAM, it skips memory/caches
initialization and self coping. Some useful pieces of code:
Supporting function.
------CUT-HERE--------
LEAF(set_ra)
jr ra
nop
END(set_ra)
------CUT-HERE--------
Actually the check:
------CUT-HERE--------
bal set_ra /* first get the current program counter */
nop
move t0, ra
li t1, 0x10000000
and t1, t1, t0
bne zero, t1, 1f /* code in ROM/flash */
nop
li s3,0 /* code in RAM */
b 2f
nop
1:
/* jump to system initialization and code coping routine here */
2:
/* continue normal boot */
------CUT-HERE--------
I suppose you can do similar in u-boot and it will be quite generic
solution. Such code can be executed from RAM and FLASH without need to
reconfigure and rebuild.
03.03.11 12:16, Pandurang Kale написав(ла):
> Hello Everyone,
>
> We have MIPS based development board and I am trying to get the uboot up
> and running on it.
> We have a primary bootloader which check for the valid mod-image stored
> on the flash. This mod-image consist of header, uboot and linux kernel.
> Depending on the recent, active and stable imagethe primary bootloader
> first copies the uboot image. and later on we would copy the kernel
> image from uboot.
>
> But when primary bootloader copies the uboot image to the RAM and passes
> the control to the uboot, uboot (MIPS version of start.S and
> arch/mips/lib/borad.c) tries to relocate the
> already copied image from RAM (the primary bootloader copied it to start
> of the RAM+1MB address) to top of the RAM (0x87fc0000) region thinking
> that the uboot image is stored in flash.
>
> All I need to do is skip the uboot relocate code in MIPS version of
> uboot startup as the primary bootloader has already relocated the uboot
> from Flash to RAM and set up the stack pointer and other global data
> appropriately, which it does after relocation.
> I can see there is a switch for ARM processor,
> CONFIG_SKIP_RELOCATE_UBOOT, which skips the relocation of uboot code and
> tries to run the uboot from RAM. I
> cannot see a similar switch implemented for MIPS and didnt find any
> related thread anywhere in mailing list or on net.
>
> Do we have similar ARM like switch to SKIP the RELOCATION? If not has
> anyone done this before?
>
> I would really appreciate if you can guide me to overcome this issue to
> run the uboot cleanly skipping the relocation.
>
> Thanks in advance,
> Pandu
--
Best regards,
RD18-UANIC
next prev parent reply other threads:[~2011-03-03 12:46 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-03-03 10:16 uboot for MIPS: need help to skip relocate uboot and start uboot from RAM Pandurang Kale
2011-03-03 12:46 ` Ray Dudu [this message]
2011-03-03 12:50 ` Sergei Shtylyov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4D6F8DAC.20807@gmail.com \
--to=raydudu@gmail.com \
--cc=linux-mips@linux-mips.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.