Skip to contentSkip to conversation

A question in lowlevel_init.S

U-Boot krrish53 5 participants 8 messages Jan 22, 2011 – Jan 24, 2011

lore
Share & tools
lore

krrish53

author
#0 lore raw

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.

Thanks,
Vamsi

Signature · 2 lines
View this message in context: http://old.nabble.com/A-question-in-lowlevel_init.S-tp30734554p30734554.html
Sent from the Uboot - Users mailing list archive at Nabble.com.
#1 lore raw

Hi Vamsi,

Le 22/01/2011 05:18, krrish53 a ?crit :

Quoted 11 lines

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

Quoted 3 lines

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.

Quoted 2 lines

Thanks,
Vamsi

Amicalement,

Signature · 1 line
Albert.
#2 lore raw

Dear Albert ARIBAUD,

Quoted 32 lines

Hi Vamsi,

Le 22/01/2011 05:18, krrish53 a ?crit :

Quoted 11 lines

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

Quoted 3 lines

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
Quoted 5 lines

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.

I am not aware of any AT91SAM9xxx systems right now that uses low-level init, it would only make sense for those that boot directly from NOR, without AT91BOOTSTRAP involved.
Since we also have no NAND_SPL for AT91, it might well be that only AT91RM9200 systems use low level init code...

To clarify, AT91BOOTSTRAP is the first code loaded by the SoC ROM into internal SRAM and therefore restricted in size to only 4k for some AT91 SoCs. This code has to init the SDRAM and load u-boot into SDRAM (hence the relocation stuff was not really needed for AT91).

Best Regards,
Reinhard

Best Regards,
Reinhard

#3 lore raw

Hi,

Quoted 3 lines · Reinhard Meyer

I am not aware of any AT91SAM9xxx systems right now that uses low-level init, it would only make sense for those that boot directly from NOR, without AT91BOOTSTRAP involved.

cpu9260 (at91sam9260 / 9g20 based) is using low-level init as it boots from NOR and is not using at91bootstrap.

Eric

#4 lore raw
Quoted 4 lines · Dear Eric B?nard

Hi,

Quoted 1 line · Reinhard Meyer

I am not aware of any

ADD: working

Quoted 6 lines
Quoted 3 lines

AT91SAM9xxx systems right now that uses low-level init, it would only make sense for those that boot directly from NOR, without AT91BOOTSTRAP involved.

cpu9260 (at91sam9260 / 9g20 based) is using low-level init as it boots from NOR and is not using at91bootstrap.

Those CPUs are broken since relocation was introduced. It would be nice to see them demonstrated working out of NOR with low level init enabled...

Best Regards,
Reinhard

author
#5 lore raw

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
Thanks for all your responses so far people.

Quoted 27 lines · Reinhard Meyer
Quoted 4 lines · Dear Eric B?nard

Hi,

Quoted 1 line · Reinhard Meyer

I am not aware of any

ADD: working

Quoted 7 lines
Quoted 3 lines

AT91SAM9xxx systems right now that uses low-level init, it would only make sense for those that boot directly from NOR, without AT91BOOTSTRAP involved.

cpu9260 (at91sam9260 / 9g20 based) is using low-level init as it boots from
NOR and is not using at91bootstrap.

Those CPUs are broken since relocation was introduced. It would be nice to see
them demonstrated working out of NOR with low level init enabled...

Best Regards,
Reinhard
_______________________________________________
U-Boot mailing list
U-Boot at lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Signature · 2 lines
View this message in context: http://old.nabble.com/A-question-in-lowlevel_init.S-tp30734554p30737145.html
Sent from the Uboot - Users mailing list archive at Nabble.com.
#6 lore raw
In reply to Reinhard Meyer

2011-01-22 11:19, Reinhard Meyer skrev:

Quoted 5 lines
Quoted 4 lines · Dear Eric B?nard

Hi,

Quoted 1 line · Reinhard Meyer

I am not aware of any

Quoted 8 lines

ADD: working

Quoted 5 lines
Quoted 3 lines

AT91SAM9xxx systems right now that uses low-level init, it would only make sense for those that boot directly from NOR, without AT91BOOTSTRAP involved.

cpu9260 (at91sam9260 / 9g20 based) is using low-level init as it boots from NOR and is not using at91bootstrap.

Those CPUs are broken since relocation was introduced. It would be nice to see them demonstrated working out of NOR with low level init enabled...

I do not think the term "NOR" flash is correct. "NOR" refers to the technology used in the memory cell, and both "SPI Flash" and "Dataflash" are "NOR" flashes. A better term is "parallel flash".

Atmel obsoleted all "parallel" flash during 2010, so don't expect any boards to contain "parallel" flash to come out in the future.

Looks like boards.cfg does not even contain most at91 boards for some reason, so MAKEALL does not even try to build them Think that should be fixed.

Quoted 6 lines

Best Regards,
Reinhard
_______________________________________________
U-Boot mailing list
U-Boot at lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Signature · 2 lines
Best Regards
Ulf Samuelsson
author
#7 lore raw
In reply to Albert ARIBAUD

Hi Albert,

Thanks for your response.

Quoted 70 lines · Albert ARIBAUD

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 :

Quoted 12 lines

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

Quoted 5 lines

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.

Quoted 2 lines

Thanks,
Vamsi

Amicalement,

Signature · 5 lines
Albert.
_______________________________________________
U-Boot mailing list
U-Boot at lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot
Signature · 2 lines
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.