[U-Boot] Instructions in TEXT section can not load data from other section

jrjr jason622 at hotmail.com
Wed Mar 17 10:49:15 CET 2010


Because I want to use LED controlled by OR3 to debug the code,so I don't want to clear OR0.

You remind me, so I enable the "Calculate absolute address in FLASH and jump there  " part,

It seems that I get close to the point:  jump to "in_flash:" failed.

Here is the start.S part:

    /* Calculate absolute address in FLASH and jump there        */
    /*--------------------------------------------------------------*/

    lis    r3, CONFIG_SYS_MONITOR_BASE at h
    ori    r3, r3, CONFIG_SYS_MONITOR_BASE at l
    addi    r3, r3, in_flash - _start + EXC_OFF_SYS_RESET
    mtlr    r3
    blr

in_flash:
    ...
    ...

The disassemble part :

fff80158:    3c 60 ff f8     lis     r3,-8
fff8015c:    60 63 00 00     ori     r3,r3,0       /*r3 is 0xfff80000 */
fff80160:    38 63 01 6c     addi    r3,r3,364 /*   0xfff8016c    */
fff80164:    7c 68 03 a6     mtlr    r3
fff80168:    4e 80 00 20     blr

fff8016c <in_flash>:

And my text_base is 0xfff80000.  
Something is wrong with the "absolute address" and "relative address",   I am not sure about
that. Expect for your advise. 

--JRJR

> Subject: RE: [U-Boot] Instructions in TEXT section can not load data from other	section
> To: jason622 at hotmail.com
> CC: u-boot at lists.denx.de
> From: joakim.tjernlund at transmode.se
> Date: Wed, 17 Mar 2010 09:48:42 +0100
> 
> jrjr <jason622 at hotmail.com> wrote on 2010/03/17 09:45:08:
> >
> > And I have made some change in cpu/mpc8260/start.S, I removed following lines:
> >
> > #ifndef CONFIG_SYS_RAMBOOT
> >     /* When booting from ROM (Flash or EPROM), clear the        */
> >     /* Address Mask in OR0 so ROM appears everywhere        */
> >     /*--------------------------------------------------------------*/
> >
> >     lis    r3, (CONFIG_SYS_IMMR+IM_REGBASE)@h
> >     lwz    r4, IM_OR0 at l(r3)
> >     li    r5, 0x7fff
> >     and    r4, r4, r5
> >     stw    r4, IM_OR0 at l(r3)
> >
> >     /* Calculate absolute address in FLASH and jump there        */
> >     /*--------------------------------------------------------------*/
> >
> >     lis &nbs p;  r3, CONFIG_SYS_MONITOR_BASE at h
> >     ori    r3, r3, CONFIG_SYS_MONITOR_BASE at l
> >     addi    r3, r3, in_flash - _start + EXC_OFF_SYS_RESET
> >     mtlr    r3
> >     blr
> >
> > in_flash:
> > #endif    /* CONFIG_SYS_RAMBOOT */
> >
> > Becasue I don't think I need to clear the Address Mask in OR0, Is there anything wrong?
> 
> uhh, Why did you remove that? It is vital code, especially the
> /* Calculate absolute address in FLASH and jump there  */ part.
> 
 		 	   		  
_________________________________________________________________
MSN十年回馈,每位用户可免费获得价值25元的卡巴斯基反病毒软件2010激活码,快来领取!
http://kaba.msn.com.cn/?k=1


More information about the U-Boot mailing list