(.))
Anyway, it's not clear to me why a 32 bit processor would not be able to boot a kernel larger than 8 MB
append="initrd=isoroot.gz ramdisk_size=xxxxxxx root=/dev/ram0"
Everything else goes via INITRD and RAMDISK_SIZE like:
This is typically a problem of relocations not being resolved properly during linking the kernel. Relative jumps end up in nirvana instead of the right target address. Watch out for linker warnings during the final stage of the kernel build
Everything else goes via INITRD and RAMDISK_SIZE like:
There is no initrd or similars, the kernel mounts an hard-drive.
If the kernel size is > 8MB, it doesn't boot, it doesn't show anything, it simply freezes without any clue.
If the kernel size is <= 8Mbyte, it boots correctly.
If the kernel size is > 8MB, it doesn't boot, it doesn't show anything, it simply freezes without any clue.
If the kernel size is <= 8Mbyte, it boots correctly.
If you can boot the minimal one why are you bothering with the larger?
I'd be focusing on the bootloader
image loaded from 0x00800000
SP=0x03eb1b80
kernel_size = 7411084 bytes
copying 256 bytes from kernel-image at 0x0080f000 to elfheader
elf_info.loadsize = 0x00700e68
elf_info.memsize = 0x0074234c
allocating 7611212 bytes for the new kernel
copying ...
from = 0x0081f000
to = 0x00000000
size = 7343720
flush_cache, 32Mbyte flushed
cmdline: uboot bootargs overridden
cmdline=[console=ttyS0,115200 root=/dev/sda2 rootfstype=ext2 rw init=/sbin/init ]
Finalizing device tree... flat tree at 0xf23b80
ft_addr=0xf23b80
my tp1: success
my tp2: success
my tp3: success
invalidate_cache 0x00000000+0x02000000
my tp4: (point of no return)
calling kentry()...
kernelinfo version 5.2.1
kernelinfo compiled by DiTBho@minerva
kernelinfo compiled with gcc version 9.3.0
kernelinfo build ticket #66 PREEMPT Sat Sep 18 2021
I've seen relocations fail also on Arm v8, when the rootfs was linked into the kernel. But then the kernel completely failed to link.
load_addr="0x00900000"
exec_addr="0x901b00"
#lsprettysize output/kernel.uImage
7. 4 Mbyte output/kernel.uImage
image loaded from 0x00900000
SP=0x03eb1b80
kernel_size = 7411084
copying 256 bytes from kernel-image at 0x0090f000 to elfheader
elf_info.loadsize = 0x00700e68
elf_info.memsize = 0x0074234c
allocating 7611212 bytes for the new kernel
copying ...
from = 0x0091f000
to = 0x00000000
size = 7343720
flush_cache, 32Mbyte flushed
cmdline: uboot bootargs overridden
cmdline=[console=ttyS0,115200 root=/dev/sda2 rootfstype=ext2 rw init=/sbin/init ]
Finalizing device tree... flat tree at 0x1023b80
ft_addr=0x1023b80
my tp2: success
my tp3: success
invalidate_cache 0x00000000+0x02000000
my tp4: (point of no return)
calling kentry()...
-> park the uImage at 0x0010.0000
-> bootm, unroll into binary image at 0x0080.0000 (this exposes the boot-wrapper and the elf header)
Have you considered following sense and documentation and not placing your image where it will get overwritten?
Have you considered following sense and documentation and not placing your image where it will get overwritten?
There is no documentation
for a lot of reasons we cannot use the memory above 0x00x0.0000 without modifying u-boot (again).
A little light googling also suggests there may well be an 8M limit on kernel size depending on your u-boot and kernel configurations, but I'm not feeling like diving too deep into an embedded platform I don't need.
A little light googling also suggests there may well be an 8M limit on kernel size depending on your u-boot and kernel configurations, but I'm not feeling like diving too deep into an embedded platform I don't need.
Where? What?
-> park the uImage at 0x0010.0000
1M.
-> park the uImage at 0x0010.0000
1M.
double checked, in my post I typed 0x0010.0000 but it is 0x0001.0000
Okay, and if you're writing to 0x800000 later you're clobbering any image bigger than 0x7F0000.
# Round the size to next higher MB limit
round_size=$(((strip_size + 0xfffff) & 0xfff00000))
round_size=0x$(printf "%x" $round_size)
link_addr=$(printf "%d" $link_address)
text_start="-Ttext $link_address"
Well, this is the point where you will need to spike the startup code with uart output, to see where it runs into the woods.
I'd be focusing on the bootloader. And ignoring PKTKS who can't even tell you're not dealing with an x86.