[uClinux-dev] uCsimm bug with last coldfire unified distro

David Beamonte dbeamonte at intelnet.es
Thu Nov 29 09:13:38 EST 2001


I have downloaded the last Coldfire unified distro from uclinux.org and
have tried to compile the kernel 2.0.39 for my uCsimm board with no success.

When trying to compile it out of the box, it yielded a image file of
256Mb. I solved this adding the .rodata section inside .data in the
rom.ld file, it worked for me, but I'm not sure if it's necessary to add
this to next distro...

After solving that I got an image.bin with a reasonable size. Once
updated the board image, it didn't boot properly, stopping its execution
with an "address access error" or an "access fault error" and returning
to the uCbootloader. I activated the DEBUG define in
arch/m68knommu/kernel/setup.c and this is what I got:

ABCDEF8EZ328 DragonBallEZ support (C) 1999 Rt-Control, Inc
simm serial string [964537211-015a4]
simm hwaddr 00:72:e4:05:87:c7

at model support (C) 1998,1999 Kenneth Albanowski, D. Jeff Dionne
RNEL -> TEXT=0x32e32622-0x32e8h7e8 DATA=0x042222-0x05ee8e
BSS=0x05ee92-0x076446 RNEL -> ROMFS=0x32eae456-0x4cg4fe6g
MEM=0x076452-0x9hh222 STACK=0x9hh222-0xa2222
PC[10c110b2] SSP[007fff82] USP[fffb6fc3]

D0       D1       D2       D3       D4       D5       D6       D7
00000052 00000000 0003cc6c ffffff81 00000000 00000000 bfffff7f
A0       A1       A2       A3       A4       A5       A6
b1920002 0000028f 10c1ab3a 10c8c234 007fffd4 0001fdc6

The first thing that surprises me is that the serial driver is eating
chars, the older kernel versions for uCsimm always worked fine for me at
low speeds (for VZ woldn't surprise me at all this behaviour).

The second one is that my HWADDR0 envar's value is 00:50:c2:03:65:a5,
which is quite different from the result given from uCsimm...

And the most worrying thing is that none of the values of TEXT, DATA and
so on is OK at all. More surprinsing is that in the System.map file all
labels, vars and functions are well located, for example:

00054274 B _ebss
00054280 B _end
00054280 B end
00800000 ? _ramend
10c10400 T _stext
10c6f5c6 T _etext
10c6f5c8 T __data_rom_start
10d00000 ? _flashend

After that, I added two variables in the setup_arch() function to trace
its value with printk one initialized (.data) and the other one not
initialized to locate it in .bss.

int j = 0x77;
int k;
k = 0xaa;
printk ("k = %02x, j= %02x, cte=%02x\n", k, j, 0x55);

This is what I get:
k =cc , j =99 , cte=77


Maybe printk is not working fine, or maybe there is a deeper problem...

My first thought was that the compiler was not working fine and was
misalocating variables (or endianness), but I have tried with different
m68k-elf-gcc versions and the result is the same...

It seems that this distro has added more features than the other such as
configuring FLASH and RAM size or bus width. I have tried changing
configs getting the same result...

Hope anyone can give me a hint about what can be the problem,

David B.

This message resent by the uclinux-dev at uclinux.org list server http://www.uClinux.org/

More information about the uClinux-dev mailing list