Hi, There are also an option for supporting u-boot parameters in kernel config. Not sure if it helps.
Cheers On Sat, Jan 12, 2013 at 9:38 AM, Steve deRosier <deros...@gmail.com> wrote: > Hi all, > > I'm stuck trying to get Linux to boot from U-Boot on a Coldfire system and > I'd love some ideas of what to try next. > > I'm upgrading a uClinux system from a 2.4 kernel to 3.3. Additionally I'm > trying to upgrade the boot-loader from u-boot 1.1.6 to release 2012.07. The > board is based on a MCF5235EVB. I did the Linux upgrade first, and am > successfully getting the existing system boot loader to boot my upgraded > Linux 3.3 images. Now I've moved on to upgrading u-boot. > > I was able to get U-Boot to come up successfully and it recognizes my Linux > image and a bootm command starts just fine. It does the checks, > uncompresses, and goes to boot. I turned on the debug messages in U-Boot, > so I get the "## Transferring control to Linux (at address 0x20000) ..." > message, it goes and does the jump and then...nothing... > > Note that the exact same Linux image boots fine from 1.1.6. My 1.1.6 can > boot both the 2.4 legacy image as well as my new 3.3 image. > > Unfortunately I've got minimal visibility into the system (My BDM interface > is being a PITA, I've got assembly-only stepping, using CodeWarrior!!@#!@$!, > in flash only. Pretty much nothing else is functioning right at the > moment), so I've been relegated to debug-via-printf, which isn't terribly > useful at the interface between u-boot and linux. > > Through reading code, I see a huge discrepancy between how 1.1.6 and 2012.07 > starts the kernel. > > 1.1.6 uses a line: > theKernel (linux_argc, linux_argv, linux_env, 0); > > 2012.07: > /* > * Linux Kernel Parameters (passing board info data): > * sp+00: Ignore, side effect of using jsr to jump to kernel > * sp+04: ptr to board info data > * sp+08: initrd_start or 0 if no initrd > * sp+12: initrd_end - unused if initrd_start is 0 > * sp+16: Start of command line string > * sp+20: End of command line string > */ > (*kernel) (kbd, initrd_start, initrd_end, cmd_start, cmd_end); > > Clearly different... I'd assume that U-Boot's Linux starting magic is in > sync with the current Linux kernel, but if that's the case, and these are > actually as different as they appear, then the OLD U-Boot should have a > problem starting the NEW kernel also. For grins, I grafted on the old > sequence code into the new U-Boot, but that (as expected) failed also. > > I looked at the Coldfire startup code and it looks like it corrosponds to > the same comment in U-Boot, and interestingly it seems to discard the bd_t > structure that's passed in first. > > So far I think I've figured this out: > * The FDT isn't used on Coldfire targets. > * The Coldfire code discards the bd_t data passed in through u-boot. > * Something funky is going on keeping Linux from booting, and it happens > early enough that I can't see it in printk-land. > > If it makes a difference, for some reason we load kernel at 0x20000 and jump > to 0x20000. This is a legacy of the existing project, I've tried to change > it to 0x0, but that didn't help either. I had suspected it had to do with > where the old bootloader placed itself in RAM, but it shouldn't be an issue > with the new bootloader. > > For reference: > RAM: 0x00000000, 32MB > SRAM: 0x20000000 > MBAR: 0x40000000 > Flash: 0xFFC00000, 4mb (second flash module at 0xFF800000, but U-Boot > doesn't know about that one). Image is stored at 0xFFC40000 and uses an > initrd romfs immedately after the kernel > > Basic setup and design is similar to the 5235EVB. > > CONFIG_UBOOT, MTD_UCLINUX and MTD_UCLINUX_EBSS are all Y. > > I've been bashing my head against this wall all week, so I'd love it if > anyone's got some ideas. > > Thanks, > - Steve > > 5235IWI> bootm 0xffc40000 > ## Current stack ends at 0x01f2ca2c * kernel: cmdline image address = > 0xffc40000 > ## Booting kernel from Legacy Image at ffc40000 ... > Image Name: IWI 007 > Image Type: M68K Linux Kernel Image (gzip compressed) > Data Size: 2270515 Bytes = 2.2 MiB > Load Address: 00020000 > Entry Point: 00020000 > Verifying Checksum ... OK > kernel data at 0xffc40040, len = 0x0022a533 (2270515) > ## No init Ramdisk > ramdisk start = 0x00000000, ramdisk end = 0x00000000 > Uncompressing Kernel Image ... OK > kernel loaded at 0x00020000, end = 0x00470404 > ## cmdline at 0x01f2c520 ... 0x01f2c520 > ## kernel board info at 0x01f2c4e0 > memstart = 0x00000000 > memsize = 0x02000000 > flashstart = 0xFFC00000 > flashsize = 0x00400000 > flashoffset = 0x00000000 > sramstart = 0x20000000 > sramsize = 0x00010000 > mbar = 0x40000000 > cpufreq = 150 MHz > busfreq = 75 MHz > baudrate = 57600 bps > ## initrd_high = 0xffffffff, copy_to_ram = 1 > ramdisk load start = 0x00000000, ramdisk load end = 0x00000000 > ## Transferring control to Linux (at address 00020000) ... > > > > > > > > > _______________________________________________ > uClinux-dev mailing list > uClinux-dev@uclinux.org > http://mailman.uclinux.org/mailman/listinfo/uclinux-dev > This message was resent by uclinux-dev@uclinux.org > To unsubscribe see: > http://mailman.uclinux.org/mailman/options/uclinux-dev -- Quoc-Viet (Kevin) Nguyen _______________________________________________ uClinux-dev mailing list uClinux-dev@uclinux.org http://mailman.uclinux.org/mailman/listinfo/uclinux-dev This message was resent by uclinux-dev@uclinux.org To unsubscribe see: http://mailman.uclinux.org/mailman/options/uclinux-dev