Hi Jean-Michel,
On 15/5/24 17:56, Jean-Michel Hautbois wrote:
Hi Michael,
On 14/05/2024 22:16, Michael Schmitz wrote:
Jean-Michel,
'BIV' is probably a bootinfo tag (Boot Info Version).
Thanks, it helped me, as I read the head.S file and finally progressed :-).
When dumping my vmlinux, I can see the entry point is *not* the load
address (it was in the old one):
vmlinux: file format elf32-m68k
Disassembly of section .text:
40001000 <_stext>:
40001000: 4ef9 4000 2000 jmp 40002000 <_start>
...
40002000 <_start>:
40002000: 4e71 nop
40002002: 46fc 2700 movew #9984,%sr
40002006: 203c 0104 0100 movel #17039616,%d0
4000200c: 4e7b 0002 movec %d0,%cacr
40002010: 4e71 nop
Now, when uboot starts the kernel, it is not doing anything (not sure if
it hangs or does not display anything on the console. And EARLY_PRINTK
is not valid for coldfire :-(. Not sure why, so any guidance here would
be appreciate too !
I will now check my platform file but at least I am not trying to
execute an instruction "0" :-).
Can you post your kernel .conig file?
Did you just start with your original 3.0.12 config and use that for 6.1.83?
Regards
Greg
Thanks,
JM
Cheers,
Michael
On 15/05/24 07:11, Jean-Michel Hautbois wrote:
Hello,
I have been on this for a long time now, and I think it is time to
ask for some help as the answer might be "easy" :-).
I'm trying to boot an upstream Linux kernel (version 6.1.83 from CIP)
on a custom board which already runs an old one (3.0.12).
I'm encountering an issue where the CPU fails to boot with an
"Unexpected exception" error when u-boot calls bootm.
-> bootm
## Booting kernel from Legacy Image at 41000000 ...
Image Name: Linux-6.1.83-cip18-rt10
Created: 2024-04-17 5:42:32 UTC
Image Type: M68K Linux Kernel Image (uncompressed)
Data Size: 5684872 Bytes = 5.4 MB
Load Address: 40001000
Entry Point: 40001000
Checksum: 6bc7660a
Verifying Checksum ... OK
Loading Kernel Image ... OK
OK
*** Unexpected exception ***
Vector Number: 5 Format: 04 Fault Status: 0
PC: 40001002 SR: 00002700 SP: 4fd5fcdc
D0: 00000000 D1: 00000003 D2: 4fdfa71c D3: 00000000
D4: 00000000 D5: 00000001 D6: 00000000 D7: 00000001
A0: 00000000 A1: 4fd71494 A2: 40001000 A3: 4fdfa690
A4: 4fd91b30 A5: 4fdf3600 A6: 4fd5fd64
*** Please Reset Board! ***
I tried to use different Load and Entry adress but this is not having
any effect.
Sadly, I can't use the (very) old toolchain to build my kernel, and I
can't build the old kernel with the toolchain I generated. It has
been done with buildroot and I can provide some information if this
is relevant.
To summarize:
- It has MMU enabled
- The cpu is passed with -mcpu=54418
- The architecture is passed with -march=isac
As the u-boot version I have can't be updated (at least not easily) I
need to provide a uImage, so I call mkimage for this when the vmlinux
file is generated.
I've compared the kernel image format with an older working kernel
image, and it seems the issue is related to the kernel image format.
```
$> hexdump -C uImage-3.0.12 |head
00000000 27 05 19 56 c6 4d 40 59 62 ac 6a be 00 2f a2 00
|'..V.M@Yb.j../..|
00000010 40 02 00 00 40 02 00 00 74 e8 ca f4 05 0c 02 00
|@...@...t.......|
00000020 4c 69 6e 75 78 2d 33 2e 30 2e 31 32 2d 72 74 33
|Linux-3.0.12-rt3|
00000030 33 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|3...............|
00000040 60 08 42 49 56 1a 00 00 00 00 4e f9 40 30 20 00
|`.BIV.....N.@0 .|
00000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|................|
*
00001040 4e f9 40 30 20 00 4e 56 00 00 9f fc 00 00 00 04 |N.@0
.NV........|
00001050 48 d7 00 01 20 2f 00 0c 4e 7b 00 03 4c d7 00 01 |H...
/..N{..L...|
00001060 df fc 00 00 00 04 4e 5e 4e 75 00 00 4e 75 4e 75
|......N^Nu..NuNu|
```
```
hexdump -C output/images/uImage |head
00000000 27 05 19 56 ab 1d 06 74 66 1f 61 48 00 56 be 88
|'..V...tf.aH.V..|
00000010 40 00 10 00 40 00 10 00 6b c7 66 0a 05 0c 02 00
|@...@...k.f.....|
00000020 4c 69 6e 75 78 2d 36 2e 31 2e 38 33 2d 63 69 70
|Linux-6.1.83-cip|
00000030 31 38 2d 72 74 31 30 00 00 00 00 00 00 00 00 00
|18-rt10.........|
00000040 7f 45 4c 46 01 02 01 00 00 00 00 00 00 00 00 00
|.ELF............|
00000050 00 02 00 04 00 00 00 01 40 00 20 00 00 00 00 34
|........@. ....4|
00000060 00 56 bb b8 00 00 00 26 00 34 00 20 00 04 00 28
|.V.....&.4. ...(|
00000070 00 12 00 11 00 00 00 01 00 00 00 00 40 00 00 00
|............@...|
00000080 40 00 00 00 00 39 d3 d0 00 39 d3 d0 00 00 00 05
|@....9...9......|
00000090 00 00 20 00 00 00 00 01 00 39 e0 00 40 39 e0 00 |..
......9..@9..|
```
I am a bit surprised by the information at offset 0x40. My kernel is
an ELF file, but the old one is a BIV file I don't even know what it
can be -_- !
I'm happy to provide any additional information or details that might
be helpful in resolving this issue.
Thanks in advance for any help !
JM