On 13-12-20 01:56 AM, Ravi Rao wrote: > Hi Paul, > Thanks a lot for your help. I disabled many of the fs that I was not > using from the .config and got the uImage size down to 2.5MB and now the > card boots up with 3.4.36 kernel. > > > ~ # uname -a > Linux hd12 3.4.36-yocto-standard #4 PREEMPT Fri Dec 20 00:17:47 CST 2013 > ppc unknown
Good stuff, glad you got it working. Paul. -- > > Regards, > Ravi.. > > On 12/19/13 15:48, Paul Gortmaker wrote: >> [Re: [linux-yocto] ERROR: Failed to allocate 0x3dbd bytes below 0x800000.] >> On 19/12/2013 (Thu 15:24) Ravi Rao wrote: >> >>> Hi Paul, >>> Appreciate the feed back. My responses are in line below.. >>> >>> >>> On 12/19/13 09:30, Paul Gortmaker wrote: >>> >>> On 13-12-18 11:50 PM, Ravi Rao wrote: >>> >>> Hi All, >>> We have a custom Board which is based on mpc8349EMDS which is >>> based on e300. >>> I got the Toolchain downloaded using poky-dora-10.0.0 project which >>> supports e300 core >>> Now when I cross compile Linux kernel ver 2.6.32 the system boots >>> up and >>> works fine. >>> But when I cross compile Linux kernel ver 3.X the target reboots >>> just >>> after uncompressing the kernel with the error >>> ERROR: Failed to allocate 0x3dbd bytes below 0x800000. >>> device tree - allocation error >>> I am using the same device tree for both kernel versions !!! >>> >>> Why would you use the old device tree on the new kernel? The >>> 8349EMDS is in mainline IIRC, and hence you aren't tied to the >>> old dts file. >>> >>> I am not using old device tree. I created one which is based on >>> mpc834x_mds.dts in 3.4.36 kernel. Attaching it for your ref.. >>> When I use this newly created one with 2.6.32 kernel it works fine. Hence I >>> mentioned I was using the same device tree for both kernels!! >> OK, so new dts works on the old kernel. Good to know; I'd got the >> impression you were using the old dts on the new kernel.... >> >>> What is the u-boot version? >>> >>> U-Boot 2009.08 (Nov 11 2013 - 12:37:05) MPC83XX >> Not super new, but not so ancient as to probably be the problem. >> >>> >>> How much difference in size is there between the two uImage? >>> >>> -rw-rw-r-- 1 platform33 platform33 4055829 Dec 19 14:21 uImage4hd12_3x >>> -rw-r--r-- 1 platform33 platform33 1653704 Dec 13 13:30 uImage4hd12_2x >>> Is it this size diff causing this issue ?? >>> Any idea what may be the reason for increase in 2.5 MB ??? >> Ouch. That is a _huge_ difference. I think objdump and nm are your >> friends here -- or even "file" -- with that size difference, I wonder if >> you've stripped the newer image... >> >>> >>> Does the 3.x image work if you turn off some stuff to reduce >>> the size? (you can turn off essentially all device drivers >>> other than serial for this test) >>> >>> I tried using a dts with just serial ports and that failed too!! >> No, you misunderstand ; the idea was to strip options from the kernel >> config file to reduce vmlinux/uImage size; you never want to remove >> entries from a dts, as if they aren't used, they are inert. >> >>> >>> What happens if you take a default yocto mpc8315 BSP, and enable >>> the mpc8349EMDS in that kernel config (one kernel can support >>> multiple mpc83xx boards, IIRC -- haven't booted one for a while...) >>> >>> I tried enabling CONFIG_MPC834x_MDS=y in .config but I still have the same >>> error >> OK, well your giant increase in uImage size is probably the root cause; >> you need to figure out what happened there. >> >> Good luck, >> Paul. >> -- >> >>> Paul. >>> -- >>> >>> >>> Any Idea what may be causing this ?? >>> Regards, >>> Ravi.. >>> >>> ********** Console Dump ************ >>> => run nfsboot >>> Speed: 100, full duplex >>> Using TSEC1 device >>> TFTP from server 167.254.232.11; our IP address is 167.254.213.35; >>> sending through gateway 167.254.213.254 >>> Filename 'hd12_images/uImage4hd12'. >>> Load address: 0x1000000 >>> Loading: >>> ################################################################# >>> >>> ################################################################# >>> >>> ################################################################# >>> >>> ################################################################# >>> ################# >>> done >>> Bytes transferred = 4054972 (3ddfbc hex) >>> Speed: 100, full duplex >>> Using TSEC1 device >>> TFTP from server 167.254.232.11; our IP address is 167.254.213.35; >>> sending through gateway 167.254.213.254 >>> Filename 'hd12_images/dtb4hd12.dtb'. >>> Load address: 0xc00000 >>> Loading: # >>> done >>> Bytes transferred = 3517 (dbd hex) >>> WARNING: adjusting available memory to 30000000 >>> ## Booting kernel from Legacy Image at 01000000 ... >>> Image Name: Linux-3.4.36-yocto-standard >>> Created: 2013-12-18 19:26:38 UTC >>> Image Type: PowerPC Linux Kernel Image (gzip compressed) >>> Data Size: 4054908 Bytes = 3.9 MB >>> Load Address: 00000000 >>> Entry Point: 00000000 >>> Verifying Checksum ... OK >>> ## Flattened Device Tree blob at 00c00000 >>> Booting using the fdt blob at 0xc00000 >>> Uncompressing Kernel Image ... OK >>> ERROR: Failed to allocate 0x3dbd bytes below 0x800000. >>> device tree - allocation error >>> Resetting the board? >>> >>> >>> >>> _______________________________________________ >>> linux-yocto mailing list >>> linux-yocto@yoctoproject.org >>> https://lists.yoctoproject.org/listinfo/linux-yocto >>> >>> >>> /* >>> * MPC8349E MDS Device Tree Source >>> * >>> * Copyright 2005, 2006 Freescale Semiconductor Inc. >>> * >>> * This program is free software; you can redistribute it and/or modify it >>> * under the terms of the GNU General Public License as published by the >>> * Free Software Foundation; either version 2 of the License, or (at your >>> * option) any later version. >>> */ >>> >>> /dts-v1/; >>> >>> / { >>> model = "MPC8349EMDS"; >>> compatible = "MPC8349EMDS", "MPC834xMDS", "MPC83xxMDS"; >>> #address-cells =<1>; >>> #size-cells =<1>; >>> >>> aliases { >>> ethernet0 =&enet0; >>> ethernet1 =&enet1; >>> serial0 =&serial0; >>> serial1 =&serial1; >>> pci0 =&pci0; >>> >>> }; >>> >>> cpus { >>> #address-cells =<1>; >>> #size-cells =<0>; >>> >>> PowerPC,8349@0 { >>> device_type = "cpu"; >>> reg =<0x0>; >>> d-cache-line-size =<32>; >>> i-cache-line-size =<32>; >>> d-cache-size =<32768>; >>> i-cache-size =<32768>; >>> timebase-frequency =<0>; // from bootloader >>> bus-frequency =<0>; // from bootloader >>> clock-frequency =<0>; // from bootloader >>> }; >>> }; >>> >>> memory { >>> device_type = "memory"; >>> reg =<0x00000000 0x40000000>; // 1G at 0 >>> }; >>> >>> soc8349@e0000000 { >>> #address-cells =<1>; >>> #size-cells =<1>; >>> device_type = "soc"; >>> compatible = "simple-bus"; >>> ranges =<0x0 0xe0000000 0x00100000>; >>> reg =<0xe0000000 0x00000200>; >>> bus-frequency =<0>; >>> >>> wdt@200 { >>> device_type = "watchdog"; >>> compatible = "mpc83xx_wdt"; >>> reg =<0x200 0x100>; >>> }; >>> >>> i2c@3000 { >>> #address-cells =<1>; >>> #size-cells =<0>; >>> cell-index =<0>; >>> compatible = "fsl-i2c"; >>> reg =<0x3000 0x100>; >>> interrupts =<0xe 0x8>; >>> interrupt-parent =< &ipic>; >>> dfsrr; >>> >>> temp-sensor@4a { >>> compatible = "dallas,ds1631"; >>> reg =<0x4a>; >>> }; >>> >>> rtc@51 { >>> compatible = "nxp,pcf8563"; >>> reg =<0x51>; >>> }; >>> >>> eeprom@52 { >>> compatible = "at24,24c32"; >>> reg =<0x52>; >>> }; >>> >>> eeprom@53 { >>> compatible = "at24,24c32"; >>> reg =<0x53>; >>> }; >>> }; >>> >>> i2c@3100 { >>> #address-cells =<1>; >>> #size-cells =<0>; >>> cell-index =<1>; >>> compatible = "fsl-i2c"; >>> reg =<0x3100 0x100>; >>> interrupts =<15 0x8>; >>> interrupt-parent =<&ipic>; >>> dfsrr; >>> >>> }; >>> >>> >>> enet0: ethernet@24000 { >>> #address-cells =<1>; >>> #size-cells =<1>; >>> cell-index =<0>; >>> device_type = "network"; >>> model = "TSEC"; >>> compatible = "gianfar"; >>> reg =<0x24000 0x1000>; >>> ranges =<0x0 0x24000 0x1000>; >>> local-mac-address = [ 00 00 0e 11 22 80 ]; >>> interrupts =<32 0x8 33 0x8 34 0x8>; >>> interrupt-parent =<&ipic>; >>> phy-handle =<&phy1>; >>> >>> }; >>> >>> mdio@24520 { >>> #address-cells =<1>; >>> #size-cells =<0>; >>> compatible = "fsl,gianfar-mdio"; >>> reg =<0x24520 0x20>; >>> >>> /* Vitesse 8201 */ >>> phy1: ethernet-phy@1 { >>> reg =<0x1>; >>> }; >>> phy2: ethernet-phy@2 { >>> reg =<0x2>; >>> }; >>> >>> }; >>> >>> enet1: ethernet@25000 { >>> #address-cells =<1>; >>> #size-cells =<1>; >>> cell-index =<1>; >>> device_type = "network"; >>> model = "TSEC"; >>> compatible = "gianfar"; >>> reg =<0x25000 0x1000>; >>> ranges =<0x0 0x25000 0x1000>; >>> local-mac-address = [ 00 00 0e 11 22 81 ]; >>> interrupts =<35 0x8 36 0x8 37 0x8>; >>> interrupt-parent =<&ipic>; >>> /* Vitesse 7385 isn't on the MDIO bus */ >>> phy-handle =<&phy2>; >>> }; >>> >>> >>> >>> serial0: serial@4500 { >>> cell-index =<0>; >>> device_type = "serial"; >>> compatible = "ns16550"; >>> reg =<0x4500 0x100>; >>> clock-frequency =<0>; >>> interrupts =<0x9 0x8>; >>> interrupt-parent =< &ipic>; >>> }; >>> >>> serial1: serial@4600 { >>> cell-index =<1>; >>> device_type = "serial"; >>> compatible = "ns16550"; >>> reg =<0x4600 0x100>; >>> clock-frequency =<0>; >>> interrupts =<0xa 0x8>; >>> interrupt-parent =< &ipic>; >>> }; >>> /* IPIC >>> * interrupts cell =<intr #, sense> >>> * sense values match linux IORESOURCE_IRQ_* defines: >>> * sense == 8: Level, low assertion >>> * sense == 2: Edge, high-to-low change >>> */ >>> ipic: pic@700 { >>> interrupt-controller; >>> #address-cells =<0>; >>> #interrupt-cells =<2>; >>> reg =<0x700 0x100>; >>> built-in; >>> device_type = "ipic"; >>> }; >>> }; >>> >>> pci0: pci@e0008500 { >>> interrupt-map-mask =<0xf800 0 0 0x7>; >>> interrupt-map =< >>> /* IDSEL 0x18 - */ >>> 0xC000 0x0 0x0 0x1&ipic 0x12 0x8 /* Broadcom */ >>> 0xC000 0x0 0x0 0x2&ipic 0x12 0x8 /* Broadcom */ >>> 0xC000 0x0 0x0 0x3&ipic 0x12 0x8 /* Broadcom */ >>> 0xC000 0x0 0x0 0x4&ipic 0x12 0x8 /* Broadcom */ >>> /* 0xC800 0x0 0x0 0x1&ipic 19 0x8 test */ >>> >; >>> >>> interrupt-parent =< &ipic>; >>> interrupts =<66 0x8>; >>> bus-range =<0x0 0x0>; >>> ranges =< >>> /* 0x42000000 0x0 0xa0000000 0xa0000000 0x0 0x10000000 >>> */ >>> 0x02000000 0x0 0x80000000 0x80000000 0x0 0x01000000 >>> 0x01000000 0x0 0x00000000 0xe3000000 0x0 0x01000000>; >>> clock-frequency =<66666666>; >>> #interrupt-cells =<1>; >>> #size-cells =<2>; >>> #address-cells =<3>; >>> reg =<0xe0008500 0x100 /* internal registers */ >>> 0xe0008300 0x8>; /* config space access >>> registers */ >>> compatible = "fsl,mpc8349-pci"; >>> device_type = "pci"; >>> }; >>> }; >>> /* >>> * MPC8349E MDS Device Tree Source >>> * >>> * Copyright 2005, 2006 Freescale Semiconductor Inc. >>> * >>> * This program is free software; you can redistribute it and/or modify it >>> * under the terms of the GNU General Public License as published by the >>> * Free Software Foundation; either version 2 of the License, or (at your >>> * option) any later version. >>> */ >>> >>> /dts-v1/; >>> >>> / { >>> model = "MPC8349EMDS"; >>> compatible = "MPC8349EMDS", "MPC834xMDS", "MPC83xxMDS"; >>> #address-cells =<1>; >>> #size-cells =<1>; >>> >>> aliases { >>> serial0 =&serial0; >>> serial1 =&serial1; >>> >>> }; >>> >>> cpus { >>> #address-cells =<1>; >>> #size-cells =<0>; >>> >>> PowerPC,8349@0 { >>> device_type = "cpu"; >>> reg =<0x0>; >>> d-cache-line-size =<32>; >>> i-cache-line-size =<32>; >>> d-cache-size =<32768>; >>> i-cache-size =<32768>; >>> timebase-frequency =<0>; // from bootloader >>> bus-frequency =<0>; // from bootloader >>> clock-frequency =<0>; // from bootloader >>> }; >>> }; >>> >>> memory { >>> device_type = "memory"; >>> reg =<0x00000000 0x40000000>; // 1G at 0 >>> }; >>> >>> soc8349@e0000000 { >>> #address-cells =<1>; >>> #size-cells =<1>; >>> device_type = "soc"; >>> compatible = "simple-bus"; >>> ranges =<0x0 0xe0000000 0x00100000>; >>> reg =<0xe0000000 0x00000200>; >>> bus-frequency =<0>; >>> >>> >>> serial0: serial@4500 { >>> cell-index =<0>; >>> device_type = "serial"; >>> compatible = "ns16550"; >>> reg =<0x4500 0x100>; >>> clock-frequency =<0>; >>> interrupts =<0x9 0x8>; >>> interrupt-parent =< &ipic>; >>> }; >>> >>> serial1: serial@4600 { >>> cell-index =<1>; >>> device_type = "serial"; >>> compatible = "ns16550"; >>> reg =<0x4600 0x100>; >>> clock-frequency =<0>; >>> interrupts =<0xa 0x8>; >>> interrupt-parent =< &ipic>; >>> }; >>> /* IPIC >>> * interrupts cell =<intr #, sense> >>> * sense values match linux IORESOURCE_IRQ_* defines: >>> * sense == 8: Level, low assertion >>> * sense == 2: Edge, high-to-low change >>> */ >>> ipic: pic@700 { >>> interrupt-controller; >>> #address-cells =<0>; >>> #interrupt-cells =<2>; >>> reg =<0x700 0x100>; >>> built-in; >>> device_type = "ipic"; >>> }; >>> >>> }; >>> >>> }; _______________________________________________ linux-yocto mailing list linux-yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/linux-yocto