[U-Boot] A question in lowlevel_init.S

krrish53 b_vamsi_krishna at yahoo.co.in
Mon Jan 24 01:00:13 CET 2011


Hi Albert,

Thanks for your response. 
Albert ARIBAUD wrote:
> 
> Hi Vamsi,
> Thanks for your response. Sorry for not mentioning the file name. its here
> uboot/arch/arm/cpu/arm920t/at91rm9200/lowlevel_init.S and also in
> uboot/board/samsung/smdk2410/lowlevel_init.S. My doubt is that as of now
> no relocation happened and the code is still being executed from flash
> rite, why would TEXT_BASE required in fetching the values from flash. This
> really confuses me. 
> 
> Let me tell my understanding about. When the system starts u-boot.bin
> resides in the flash and starts executing start.S(by figuring out the
> entry point from u-boot.lds). And from u-boot.lds, the text section starts
> at 0x0000000 and other sections follow it. I really dont understand here
> the necessity of considering TEXT_BASE for writing SMRDATA values into
> registers as there is no RAM in the picture yet. This is the I would
> greatly appreciate a little detailed response.
> 
>  Thanks very much. 
> 
> Le 22/01/2011 05:18, krrish53 a écrit :
>>
>> Hello everybody,
>> I have a question pertaining to almost every lowlevel_init.S. The code
>> goes
>> like
>>
>> /*make r0 relative the current location so that it*/
>> /*reads SMRDATA out of flash rather than memory*/
>> ldr r0,=SMRDATA
>> ldr r1,_TEXT_BASE
>> sub r10,r0,r1
>>
>> I couldn't relate the code to comments made ahead of that(how does
>> TEXT_BASE
>> - addrof(SMRDATA) yield the location of SMRDATA in flash. I totally dint
>> get
>> it.  Please enlighten me. I  greatly appreciate any response.
> 
> It would be easier if you gave the precise source code origin, filename 
> and location of the code you're mentioning. I took the u-boot-arm 
> current master branch, and could not exactly find any occurrence of "sub 
> r10, r0, r1" so I looked for an appraoching sequence, and found e.g. 
> arch/arm/cpu/arm926ejs/at91/lowlevel_init.S, line 63. Is this what you 
> meant?
> 
> 	/* memory control configuration */
> 	/* this isn't very elegant, but	 what the heck */
> 	ldr	r0, =SMRDATA
> 	ldr	r1, _MTEXT_BASE
> 	sub	r0, r0, r1
> 	add	r2, r0, #80
> 
> If so, the code does not compute TEXT_BASE - SMRDATA, rather the reverse 
> : SMRDATA - TEXT_BASE, .i.e. the relative address of SMRDATA with 
> respect to the image start (depending on START_FROM_MEM, in Flash or 
> physical RAM). I assume #80 is an absolute base address of the actual 
> SMRDATA, but I'm no at91 specialist.
> 
>> Thanks,
>> Vamsi
> 
> Amicalement,
> -- 
> Albert.
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot
> 
> 

-- 
View this message in context: http://old.nabble.com/A-question-in-lowlevel_init.S-tp30734554p30744824.html
Sent from the Uboot - Users mailing list archive at Nabble.com.



More information about the U-Boot mailing list