
Hi, all,
I'm tying to porting the kernel (2.6.25) to the mpc8247 platform, use the u-boot (1.3.2) after run the command:
tftp 300000 uImage; tftp 600000 mpc8247.dtb; bootm 300000 - 600000
the output like this:
[snip] Uncompressing Kernel Image ... OK Booting using the fdt at 0x600000
then, hanging...
and this is my mpc8247.dts, reference to mgcoge.dts and ep8248e.dts from www.denx.de. -------------------------------------------------------------------------------------------------------- / { model = "MPC8247"; compatible = "fsl,mpc8247"; #address-cells = <1>; #size-cells = <1>;
aliases { ethernet0 = ð0; serial0 = &scc1; };
cpus { #address-cells = <1>; #size-cells = <0>;
PowerPC,8247@0 { device_type = "cpu"; reg = <0>; d-cache-line-size = <20>; i-cache-line-size = <20>; d-cache-size = <4000>; i-cache-size = <4000>; bus-frequency = <0>; timebase-frequency = <0>; clock-frequency = <0>; }; };
memory { device_type = "memory"; reg = <0 0>; };
localbus@fb010100 { compatible = "fsl,mpc8247-localbus", "fsl,pq2-localbus"; #address-cells = <2>; #size-cells = <1>; reg = <fb010100 40>;
ranges = <0 0 fb000000 00800000>;
flash@0,0 { compatible = "cfi-flash"; reg = <0 0 800000>; #address-cells = <1>; #size-cells = <1>; bank-width = <2>; device-width = <2>; };
};
soc@fb000000 { #address-cells = <1>; #size-cells = <1>; device_type = "soc"; compatible = "fsl,mpc8247", "fsl,pq2-soc"; ranges = <00000000 fb000000 00053000>; reg = <fb000000 00053000>;
cpm@119c0 { #address-cells = <1>; #size-cells = <1>; compatible = "fsl,mpc8247-cpm", "fsl,cpm2"; reg = <119c0 30>; ranges;
muram@0 { #address-cells = <1>; #size-cells = <1>; ranges = <0 0 10000>;
data@0 { compatible = "fsl,cpm-muram-data"; reg = <0 2000 9800 800>; }; };
brg@119f0 { compatible = "fsl,mpc8272-brg", "fsl,cpm2-brg", "fsl,cpm-brg"; reg = <119f0 10 115f0 10>; };
/* Monitor port/SCC1 */ scc1: serial@11a00 { device_type = "serial"; compatible = "fsl,mpc8247-smc-uart", "fsl,cpm2-smc-uart"; reg = <11a00 20 8000 100>; interrupts = <28 8>; interrupt-parent = <&PIC>; fsl,cpm-brg = <1>; fsl,cpm-command = <8c00000>; };
mdio@10d60 { device_type = "mdio"; compatible = "fsl,mpc8247-mdio-bitbang", "fsl,mpc8272-mdio-bitbang", "fsl,cpm2-mdio-bitbang"; reg = <10d60 14>; #address-cells = <1>; #size-cells = <0>; fsl,mdio-pin = <1d>; fsl,mdc-pin = <7>;
PHY0: ethernet-phy0 { device_type = "ethernet-phy"; interrupt-parent = <&PIC>; interrupts = <3b 8>; reg = <0>; };
PHY1: ethernet-phy1 { device_type = "ethernet-phy"; interrupt-parent = <&PIC>; interrupts = <3a 8>; reg = <3>; }; };
eth0: ethernet@11300 { device_type = "network"; compatible = "fsl,mpc8272-scc-enet", "fsl,cpm2-scc-enet"; reg = <11300 20 8400 100 11390 1>; mac-address = [ 00 00 00 00 00 00 ]; interrupts = <20 8>; interrupt-parent = <&PIC>; phy-handle = <&PHY0>; rx-clock = <9>; tx-clock = <a>; linux,network-index = <0>; fsl,cpm-command = <12000300>; };
eth1: ethernet@11320 { device_type = "network"; compatible = "fsl,mpc8272-scc-enet", "fsl,cpm2-scc-enet"; reg = <11320 20 8500 100 113b0 1>; mac-address = [ 00 00 00 00 00 00 ]; interrupts = <21 8>; interrupt-parent = <&PIC>; phy-handle = <&PHY1>; rx-clock = <d>; tx-clock = <e>; linux,network-index = <1>; fsl,cpm-command = <16200300>; };
usb@11b60 { #address-cells = <1>; #size-cells = <0>; compatible = "fsl,mpc8247-usb", "fsl,cpm2-usb"; reg = <11b60 18 8b00 100>; interrupt-parent = <&PIC>; interrupts = <b 8>; fsl,cpm-command = <2e600000>; }; };
PIC: interrupt-controller@10c00 { compatible = "fsl,mpc8247-pic", "fsl,pq2-pic"; #interrupt-cells = <2>; interrupt-controller; reg = <10c00 28>; }; };
chosen { linux,stdout-path = "/soc/cpm/serial@11a00"; }; }; ---------------------------------------------------------------------------------------------------------
I have use the method by lighting the led, and found out the kernel hang at the call at bl call_setup_cpu (in ../kernel/head_32.S). In fact, it hang at the function setup_common_caches (in ../kernel/cpu_setup_6xx.S), I think it show that the kernel can not enable the I-caches and D-caches.
Why? Please help me, thanks!