* [U-Boot] at91rm9200 undef runtime error with eldk 5.0
@ 2011-07-13 6:13 zzs
2011-07-13 8:40 ` Wolfgang Denk
0 siblings, 1 reply; 13+ messages in thread
From: zzs @ 2011-07-13 6:13 UTC (permalink / raw)
To: u-boot
Hi, everybody:
I'am using a board similar to at91rm9200ek, u-boot version is v2011.03.
Early I use eldk4.2 to build u-boot, all things ok, but eldk 4.2 can't
compile busybox whith ubiattach enabled. So I change my toolchain to
eldk5.0 (eldk-eglibc-i686-arm-toolchain-gmae-5.0.tar.bz2,
poky-image-sato-sdk-armv5te.tar.gz). Now the make process all ok. But
when download u-boot.bin to the board. the code say:
-F- Undef detected
eldk5.0-armv5te CAN'T used for arm920t ??? Is this true?
anybody help me!
--
Best Regards,
zzs
^ permalink raw reply [flat|nested] 13+ messages in thread
* [U-Boot] at91rm9200 undef runtime error with eldk 5.0
2011-07-13 6:13 [U-Boot] at91rm9200 undef runtime error with eldk 5.0 zzs
@ 2011-07-13 8:40 ` Wolfgang Denk
2011-07-13 10:46 ` zzs
0 siblings, 1 reply; 13+ messages in thread
From: Wolfgang Denk @ 2011-07-13 8:40 UTC (permalink / raw)
To: u-boot
Dear zzs,
In message <20110713061040.GA5148@greatfirst.com> you wrote:
>
> I'am using a board similar to at91rm9200ek, u-boot version is v2011.03.
Is your code in mainline? Which board configuration si this?
[Otherwise: see http://article.gmane.org/gmane.linux.kernel.embedded/3534 ]
> Early I use eldk4.2 to build u-boot, all things ok, but eldk 4.2 can't
> compile busybox whith ubiattach enabled. So I change my toolchain to
Really? What are the exact problems? [Please post this on the ELDK
mailing list.]
> eldk5.0 (eldk-eglibc-i686-arm-toolchain-gmae-5.0.tar.bz2,
> poky-image-sato-sdk-armv5te.tar.gz). Now the make process all ok. But
> when download u-boot.bin to the board. the code say:
>
> -F- Undef detected
Is this the exact error message? And it gets printed by U-Boot?
Problem is, I cannot find any such text in mainline U-Boot.
> eldk5.0-armv5te CAN'T used for arm920t ??? Is this true?
The AT91RM9200 uses a ARM920 core, i. e. it belongs to the ARM9TDMI
family, ARMv4T architecture.
As the tool chain name "armv5te" clearly suggests, this is configured
for the ARMv5TE architecture (for example ARM9E, ARM10E, XScale
families).
So yes, this is configured for a more advanced architecture. OTOH, if
you provide correct compiler options, it should still work for U-Boot.
But the, I don't know your code...
Best regards,
Wolfgang Denk
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
Die Scheu vor Verantwortung ist die Krankheit unserer Zeit.
-- Otto von Bismarck
^ permalink raw reply [flat|nested] 13+ messages in thread
* [U-Boot] at91rm9200 undef runtime error with eldk 5.0
2011-07-13 8:40 ` Wolfgang Denk
@ 2011-07-13 10:46 ` zzs
2011-07-13 10:57 ` Wolfgang Denk
0 siblings, 1 reply; 13+ messages in thread
From: zzs @ 2011-07-13 10:46 UTC (permalink / raw)
To: u-boot
In message <20110713084043.1725516F12CE@gemini.denx.de> Wolfgang Denk wrote:
> > I'am using a board similar to at91rm9200ek, u-boot version is v2011.03.
>
> Is your code in mainline? Which board configuration si this?
my code not in mainline, but I test it using the code for at91rm9200ek
> > Early I use eldk4.2 to build u-boot, all things ok, but eldk 4.2 can't
> > compile busybox whith ubiattach enabled. So I change my toolchain to
>
> Really? What are the exact problems? [Please post this on the ELDK
> mailing list.]
Yes, it was. I will sent the error message to ELDK mailing list
>
> > eldk5.0 (eldk-eglibc-i686-arm-toolchain-gmae-5.0.tar.bz2,
> > poky-image-sato-sdk-armv5te.tar.gz). Now the make process all ok. But
> > when download u-boot.bin to the board. the code say:
> >
> > -F- Undef detected
>
> Is this the exact error message? And it gets printed by U-Boot?
> Problem is, I cannot find any such text in mainline U-Boot.
The message is printed after uboot.bin downloaded by my preloader, Maybe
this message was printed by the preloader code after it jump to uboot.
In my preloader some exception vector were setted to print message. So
it seems uboot.bin had some illegal asm code in it.
> > eldk5.0-armv5te CAN'T used for arm920t ??? Is this true?
>
> The AT91RM9200 uses a ARM920 core, i. e. it belongs to the ARM9TDMI
> family, ARMv4T architecture.
>
> As the tool chain name "armv5te" clearly suggests, this is configured
> for the ARMv5TE architecture (for example ARM9E, ARM10E, XScale
> families).
>
> So yes, this is configured for a more advanced architecture. OTOH, if
> you provide correct compiler options, it should still work for U-Boot.
> But the, I don't know your code...
My code is exactly same for at91rm9200ek at version v2011.03
So what compiler options should be use? I notice some u-boot compile
commandline has option '-march=armv4'. Why with this option it is still
generate wrong code
--
Best Regards,
zzs
^ permalink raw reply [flat|nested] 13+ messages in thread
* [U-Boot] at91rm9200 undef runtime error with eldk 5.0
2011-07-13 10:46 ` zzs
@ 2011-07-13 10:57 ` Wolfgang Denk
2011-07-13 11:20 ` zzs
2011-07-15 16:15 ` [U-Boot] eldk5.0 generate illegal instruction for at91rm9200 zzs
0 siblings, 2 replies; 13+ messages in thread
From: Wolfgang Denk @ 2011-07-13 10:57 UTC (permalink / raw)
To: u-boot
Dear zzs,
In message <20110713104600.GA17872@greatfirst.com> you wrote:
>
> > > -F- Undef detected
> >
> > Is this the exact error message? And it gets printed by U-Boot?
> > Problem is, I cannot find any such text in mainline U-Boot.
>
> The message is printed after uboot.bin downloaded by my preloader, Maybe
> this message was printed by the preloader code after it jump to uboot.
I don;t know your preloader, so I cannot help you with that.
> In my preloader some exception vector were setted to print message. So
> it seems uboot.bin had some illegal asm code in it.
Are you sure that your preloader analyses the binary image it loads
and that it would detect specific assembler code in it? I tend to
doubt that.
> So what compiler options should be use? I notice some u-boot compile
> commandline has option '-march=armv4'. Why with this option it is still
> generate wrong code
Thi sis a strong statement, based on somewhat weak facts. Why are you
so sure that there is any "wrong code" being generated? Please show
which exact instructions you are talking about.
Best regards,
Wolfgang Denk
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
Those who hate and fight must stop themselves -- otherwise it is not
stopped.
-- Spock, "Day of the Dove", stardate unknown
^ permalink raw reply [flat|nested] 13+ messages in thread
* [U-Boot] at91rm9200 undef runtime error with eldk 5.0
2011-07-13 10:57 ` Wolfgang Denk
@ 2011-07-13 11:20 ` zzs
2011-07-15 16:15 ` [U-Boot] eldk5.0 generate illegal instruction for at91rm9200 zzs
1 sibling, 0 replies; 13+ messages in thread
From: zzs @ 2011-07-13 11:20 UTC (permalink / raw)
To: u-boot
In message <20110713105743.0C2C116F12CE@gemini.denx.de> Wolfgang Denk wrote:
>
> > In my preloader some exception vector were setted to print message. So
> > it seems uboot.bin had some illegal asm code in it.
>
> Are you sure that your preloader analyses the binary image it loads
> and that it would detect specific assembler code in it? I tend to
> doubt that.
No, No, No it is impossibe, My preloader just set exception vector and
it jump to the message output code, It print out error message when a
undef instruction exception occurs.
>
>
> > So what compiler options should be use? I notice some u-boot compile
> > commandline has option '-march=armv4'. Why with this option it is still
> > generate wrong code
>
> Thi sis a strong statement, based on somewhat weak facts. Why are you
> so sure that there is any "wrong code" being generated? Please show
> which exact instructions you are talking about.
Because the code raised a 'undef instruction' exception, So I guess some
illegal code for arm920(may be legal for other armVs) exist.
I will try to objbump u-boot and analyses it later.
--
Best Regards,
zzs
^ permalink raw reply [flat|nested] 13+ messages in thread
* [U-Boot] eldk5.0 generate illegal instruction for at91rm9200
2011-07-13 10:57 ` Wolfgang Denk
2011-07-13 11:20 ` zzs
@ 2011-07-15 16:15 ` zzs
2011-07-15 17:22 ` Wolfgang Denk
2011-07-15 18:00 ` Wolfgang Denk
1 sibling, 2 replies; 13+ messages in thread
From: zzs @ 2011-07-15 16:15 UTC (permalink / raw)
To: u-boot
>
> > So what compiler options should be use? I notice some u-boot compile
> > commandline has option '-march=armv4'. Why with this option it is still
> > generate wrong code
>
> Thi sis a strong statement, based on somewhat weak facts. Why are you
> so sure that there is any "wrong code" being generated? Please show
> which exact instructions you are talking about.
>
Today I found the "wrong code" :
in u-boot v2011.03
drivers/serial/at91rm9200_usart.c:68:
us->US_BRGR = (AT91C_MASTER_CLOCK >> 4) / (unsigned)baudrate;
The correspond asm code :
2010c830: d1a01003 movle r1, r3
2010c834: eb001530 bl 20111cfc <__udivsi3>
2010c838: e5840020 str r0, [r4, #32]
and the __udivsi3 contain the "wrong code" :
20111cfc <__udivsi3>:
20111cfc: e2512001 subs r2, r1, #1 ; 0x1
20111d00: 012fff1e bxeq lr
20111d04: 3a000023 bcc 20111d98 <__udivsi3+0x9c>
20111d08: e1500001 cmp r0, r1
20111d0c: 9a00001a bls 20111d7c <__udivsi3+0x80>
20111d10: e1110002 tst r1, r2
20111d14: 0a00001b beq 20111d88 <__udivsi3+0x8c>
20111d18: e16f3f11 clz r3, r1 # ***this is the "wrong code"
20111d1c: e16f2f10 clz r2, r0
20111d20: e0432002 sub r2, r3, r2
I search the 'clz' instruction in ARM's manual and it says:
Usage
The CLZ instruction counts the number of leading zeroes in the value
in Rm and returns the result in Rd. The result value is 32 if no bits
are set in the source register, and zero if bit 31 is set. Condition
flags
This instruction does not affect the flags.
Architectures
This instruction is available in ARM architecture versions 5 and above.
But at91rm9200 is armv4.
Does this mean I can't use eldk5.0 for at91rm9200 ? If yes, How can I
use eldk4.2 to build the newest busybox? Because eldk4.2 can't build
busybox(with ubiattach enabled) due to it's too old kernel header
files(the error message had been sent to eldk list, but no response).
help me, please.
--
Best Regards,
zzs
^ permalink raw reply [flat|nested] 13+ messages in thread
* [U-Boot] eldk5.0 generate illegal instruction for at91rm9200
2011-07-15 16:15 ` [U-Boot] eldk5.0 generate illegal instruction for at91rm9200 zzs
@ 2011-07-15 17:22 ` Wolfgang Denk
2011-07-15 18:00 ` Wolfgang Denk
1 sibling, 0 replies; 13+ messages in thread
From: Wolfgang Denk @ 2011-07-15 17:22 UTC (permalink / raw)
To: u-boot
Dear zzs,
In message <20110715161531.GA5221@greatfirst.com> you wrote:
>
> Today I found the "wrong code" :
Very well - thanks.
> and the __udivsi3 contain the "wrong code" :
>
> 20111cfc <__udivsi3>:
> 20111cfc: e2512001 subs r2, r1, #1 ; 0x1
> 20111d00: 012fff1e bxeq lr
> 20111d04: 3a000023 bcc 20111d98 <__udivsi3+0x9c>
> 20111d08: e1500001 cmp r0, r1
> 20111d0c: 9a00001a bls 20111d7c <__udivsi3+0x80>
> 20111d10: e1110002 tst r1, r2
> 20111d14: 0a00001b beq 20111d88 <__udivsi3+0x8c>
> 20111d18: e16f3f11 clz r3, r1 # ***this is the "wrong code"
> 20111d1c: e16f2f10 clz r2, r0
> 20111d20: e0432002 sub r2, r3, r2
...
> Architectures
>
> This instruction is available in ARM architecture versions 5 and above.
>
>
> But at91rm9200 is armv4.
This is to be expected. It comes from using the GCC library routines
from ELDK, which are configured for an ARMv5TE architecture.
> Does this mean I can't use eldk5.0 for at91rm9200 ? If yes, How can I
You can use it, but you must make sure to rebuild the needed GCC
library routines as needed for your target.
See the USE_PRIVATE_LIBGCC make option, i. e. use:
USE_PRIVATE_LIBGCC=yes make ...
Best regards,
Wolfgang Denk
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
One of the advantages of being a captain is being able to ask for ad-
vice without necessarily having to take it.
-- Kirk, "Dagger of the Mind", stardate 2715.2
^ permalink raw reply [flat|nested] 13+ messages in thread
* [U-Boot] eldk5.0 generate illegal instruction for at91rm9200
2011-07-15 16:15 ` [U-Boot] eldk5.0 generate illegal instruction for at91rm9200 zzs
2011-07-15 17:22 ` Wolfgang Denk
@ 2011-07-15 18:00 ` Wolfgang Denk
2011-07-16 8:05 ` zzs
2011-07-16 8:10 ` Albert ARIBAUD
1 sibling, 2 replies; 13+ messages in thread
From: Wolfgang Denk @ 2011-07-15 18:00 UTC (permalink / raw)
To: u-boot
Dear zzs,
In message <20110715161531.GA5221@greatfirst.com> you wrote:
>
> Today I found the "wrong code" :
Thanks again for the feedback. I have documented this issue in the
ELDK FAQ section:
http://www.denx.de/wiki/view/ELDK-5/QuestionsAndAnswers#GCC_generates_illegal_opcodes_fo
Best regards,
Wolfgang Denk
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
In my experience the best way to get something done is to give it to
someone who is busy. - Terry Pratchett, _Going_Postal_
^ permalink raw reply [flat|nested] 13+ messages in thread
* [U-Boot] eldk5.0 generate illegal instruction for at91rm9200
2011-07-15 18:00 ` Wolfgang Denk
@ 2011-07-16 8:05 ` zzs
2011-07-16 8:30 ` Andreas Bießmann
2011-07-16 8:33 ` Wolfgang Denk
2011-07-16 8:10 ` Albert ARIBAUD
1 sibling, 2 replies; 13+ messages in thread
From: zzs @ 2011-07-16 8:05 UTC (permalink / raw)
To: u-boot
>
> Thanks again for the feedback. I have documented this issue in the
> ELDK FAQ section:
>
> http://www.denx.de/wiki/view/ELDK-5/QuestionsAndAnswers#GCC_generates_illegal_opcodes_fo
>
Yes. When using "USE_PRIVATE_LIBGCC=yes make my_board_name". It works
well. And the kernel works fine too because linux kernel has private libgcc
code too.
But when I examine the *.so files in eldk5.0, Almost all of them has
'clz' opcode. So if I use them in my aplication like busybox. It will
crash.
So I think the best way is to rebuild eldk5.0 for armv4. Did you tell
me how to configure eldk5.0 to build for armv4. And why eldk5.0 hasn't
a release for armv4, Is armv4 too old and has no value to support it?
--
Best Regards,
zzs
^ permalink raw reply [flat|nested] 13+ messages in thread
* [U-Boot] eldk5.0 generate illegal instruction for at91rm9200
2011-07-15 18:00 ` Wolfgang Denk
2011-07-16 8:05 ` zzs
@ 2011-07-16 8:10 ` Albert ARIBAUD
2011-07-16 8:34 ` Wolfgang Denk
1 sibling, 1 reply; 13+ messages in thread
From: Albert ARIBAUD @ 2011-07-16 8:10 UTC (permalink / raw)
To: u-boot
Le 15/07/2011 20:00, Wolfgang Denk a ?crit :
> Dear zzs,
>
> In message<20110715161531.GA5221@greatfirst.com> you wrote:
>>
>> Today I found the "wrong code" :
>
> Thanks again for the feedback. I have documented this issue in the
> ELDK FAQ section:
>
> http://www.denx.de/wiki/view/ELDK-5/QuestionsAndAnswers#GCC_generates_illegal_opcodes_fo
>
> Best regards,
>
> Wolfgang Denk
This would not happen for AT91 only, would it? Maybe the FAQ should
mention other arches / SoC families that might be hurt by the issue.
Amicalement,
--
Albert.
^ permalink raw reply [flat|nested] 13+ messages in thread
* [U-Boot] eldk5.0 generate illegal instruction for at91rm9200
2011-07-16 8:05 ` zzs
@ 2011-07-16 8:30 ` Andreas Bießmann
2011-07-16 8:33 ` Wolfgang Denk
1 sibling, 0 replies; 13+ messages in thread
From: Andreas Bießmann @ 2011-07-16 8:30 UTC (permalink / raw)
To: u-boot
Dear zzs213,
Am 16.07.2011 um 10:05 schrieb zzs:
> But when I examine the *.so files in eldk5.0, Almost all of them has
> 'clz' opcode. So if I use them in my aplication like busybox. It will
> crash.
you could just build your libc for target rootfs with -march=armv4.
> So I think the best way is to rebuild eldk5.0 for armv4.
That is another solution. Then you could use the libc from your toolchain for your rootfs, but I recomend to build your own in any way.
regards
Andreas Bie?mann
^ permalink raw reply [flat|nested] 13+ messages in thread
* [U-Boot] eldk5.0 generate illegal instruction for at91rm9200
2011-07-16 8:05 ` zzs
2011-07-16 8:30 ` Andreas Bießmann
@ 2011-07-16 8:33 ` Wolfgang Denk
1 sibling, 0 replies; 13+ messages in thread
From: Wolfgang Denk @ 2011-07-16 8:33 UTC (permalink / raw)
To: u-boot
Dear zzs,
In message <20110716080555.GA17211@greatfirst.com> you wrote:
>
> So I think the best way is to rebuild eldk5.0 for armv4. Did you tell
> me how to configure eldk5.0 to build for armv4. And why eldk5.0 hasn't
> a release for armv4, Is armv4 too old and has no value to support it?
This is actually off topic here. Please let's take this discussion to
the ELDK mailing list instead.
Best regards,
Wolfgang Denk
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
If I ever needed a brain transplant, I'd choose a teenager's because
I'd want a brain that had never been used.
^ permalink raw reply [flat|nested] 13+ messages in thread
* [U-Boot] eldk5.0 generate illegal instruction for at91rm9200
2011-07-16 8:10 ` Albert ARIBAUD
@ 2011-07-16 8:34 ` Wolfgang Denk
0 siblings, 0 replies; 13+ messages in thread
From: Wolfgang Denk @ 2011-07-16 8:34 UTC (permalink / raw)
To: u-boot
Dear Albert ARIBAUD,
In message <4E214769.3060606@aribaud.net> you wrote:
>
> > http://www.denx.de/wiki/view/ELDK-5/QuestionsAndAnswers#GCC_generates_illegal_opcodes_fo
...
> This would not happen for AT91 only, would it? Maybe the FAQ should
> mention other arches / SoC families that might be hurt by the issue.
It mentions that the problem comes from using a tool chain that is
configured for the ARMv5TE architecture for a processor that belongs
to another, less capable architecture (ARMv4T).
You always have to expect problems when using a tool chain that is set
up to support another architecture than the one you have.
Best regards,
Wolfgang Denk
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
It seems intuitively obvious to me, which means that it might be
wrong. -- Chris Torek
^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2011-07-16 8:34 UTC | newest]
Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-07-13 6:13 [U-Boot] at91rm9200 undef runtime error with eldk 5.0 zzs
2011-07-13 8:40 ` Wolfgang Denk
2011-07-13 10:46 ` zzs
2011-07-13 10:57 ` Wolfgang Denk
2011-07-13 11:20 ` zzs
2011-07-15 16:15 ` [U-Boot] eldk5.0 generate illegal instruction for at91rm9200 zzs
2011-07-15 17:22 ` Wolfgang Denk
2011-07-15 18:00 ` Wolfgang Denk
2011-07-16 8:05 ` zzs
2011-07-16 8:30 ` Andreas Bießmann
2011-07-16 8:33 ` Wolfgang Denk
2011-07-16 8:10 ` Albert ARIBAUD
2011-07-16 8:34 ` Wolfgang Denk
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox