Strange behavior with I2C on Sequoia board
Steven A. Falco
sfalco at harris.com
Thu Aug 21 23:27:23 EST 2008
Valentine Barshak wrote:
>
> Stefan Roese wrote:
>> On Thursday 21 August 2008, Sean MacLennan wrote:
>>>> That's all output from the wrapper, not the kernel. And the kernel
>>>> config doesn't make a difference at all to the wrapper. I wonder if
>>>> there is some weird size issue going on there or if whatever U-Boot
>>>> version you are using is doing odd things...
>>> Any chance something in the DTS could affect it? Maybe try commenting
>>> out the second IIC controller?
>>
>> Yes, I2C is generally working and should make a difference in Linux
>> kernel booting.
>>
>> It seems that your bootwrapper is somehow not copying the correct MAC
>> address to the device-tree. Not sure what's going wrong here. We
>> usually don't use the bootwrapper but boot the uImage directly from
>> U-Boot on all 4xx systems.
>>
>> You might want to debug the bootwrapper code, if possible drop the
>> bootwrapper and use the uImage with a newer, device-tree enabled
>> U-Boot version.
>>
>
> U-boot thinks that all memory above the first 8MB is out of reach for
> the kernel and puts kernel bootargs and boardinfo structure below 8MB as
> close as possible to this limit. Including the i2c driver into the
> kernel increases the kernel image size. So when u-boot unpacks the
> kernel to 0x400000 (Load Address: 00400000) it overwrites the kernel
> parameters. So when the kernel actually starts, it reads zeros instead
> of boardinfo (and mac addresses)
>
> The 8MB limit is set for all AMCC boards in include/configs/amcc-common.h:
> #define CFG_BOOTMAPSZ (8 << 20) /* Initial Memory map for Linux */
>
> I think this limit is obsolete and can be moved to at least 64MB.
> But you'll need to rebuild u-boot.
>
> Stefan, what do you think? Can we increase the default initial memory
> map for AMCC boards in the next u-boot release, since u-boot has all
> memory identity-mapped on ppc 44x?
>
Your diagnosis is correct! I changed the define from 8<<20 to 8<<21 and it now
boots. Previously the parameters were at 7ffe70, and this change moved them to
fffe70.
I would like to switch over to using a uImage rather than the cuboot.uImage.
But I have not figured out whether it is the U-boot build that converts the .dts
to a .dtb or if the kernel build should do that. Also, I have not figured out
whether the .dtb can remain part of the kernel image, as it is with the cuboot
kernel, or if the .dtb must be a separate image in a different part of the rom.
So basically, I understand the components, but I'm not yet sure how to glue it
all together.
Steve
More information about the Linuxppc-dev
mailing list