Hello,
I am currently troubleshooting an issue on my T4240RDB and I would like to get ftrace up and running. I have used the bitbake to enable ftrace via:
bitbake virtual/kernel -c menuconfig
enable Kernel Hacking->Tracers->Kernel Function Tracer
bitbake fsl-image-full
extract fsl-image-full.tar.gz to my rootfs
On boot time, I get the following error on u-boot: "ERROR: image is not a fdt - must RESET the board to recover" (full output log is below)
This is proceeded by an automatic reboot, so we end up in an infinite reboot loop.
I have recovered the system by running
bitbake virtual/kernel -c clean -f
bitbake fsl-image-full
extract fsl-image-full.tar.gz to my rootfs
I believe (based on searching similar issues) that my kernel uImage is now too large to fit in the memory space allocated for it and it is squashing something else when it is uncompressed. Unfortunately, I am unfamiliar with the workings of u-boot for this target. Can someone help me resolve this issue?
Here is the full output from U-Boot:
U-Boot 2013.01QorIQ-SDK-V1.5 (Jun 05 2014 - 16:58:13)
CPU0: T4240E, Version: 2.0, (0x82480020)
Core: E6500, Version: 2.0, (0x80400120)
Clock Configuration:
CPU0:1666.667 MHz, CPU1:1666.667 MHz, CPU2:1666.667 MHz, CPU3:1666.667 MHz,
CPU4:1666.667 MHz, CPU5:1666.667 MHz, CPU6:1666.667 MHz, CPU7:1666.667 MHz,
CPU8:1666.667 MHz, CPU9:1666.667 MHz, CPU10:1666.667 MHz, CPU11:1666.667 MHz,
CCB:733.333 MHz,
DDR:933.333 MHz (1866.667 MT/s data rate) (Asynchronous), IFC:183.333 MHz
FMAN1: 733.333 MHz
FMAN2: 733.333 MHz
QMAN: 366.667 MHz
PME: 533.333 MHz
L1: D-cache 32 kB enabled
I-cache 32 kB enabled
Reset Configuration Word (RCW):
00000000: 16070019 18101916 00000000 00000000
00000010: 70701050 00448c00 0c020000 f5000000
00000020: 00000000 ee0000ee 00000000 000287fc
00000030: 00000000 50000000 00000000 00000028
Board: T4240RDB, SERDES Reference Clocks: SERDES1=100MHz SERDES2=156.25MHz SERDES3=100MHz SERDES4=100MHz
I2C: ready
SPI: ready
DRAM: Initializing....using SPD
Detected UDIMM 9JSF25672AZ-2G1K1
Detected UDIMM 9JSF25672AZ-2G1K1
Detected UDIMM 9JSF25672AZ-2G1K1
4 GiB left unmapped
DDR: 6 GiB (DDR3, 64-bit, CL=13, ECC on)
DDR Controller Interleaving Mode: 3-way 4KB
Flash: 128 MiB
L2: 2048 KB enabled
enable l2 for cluster 1 fec60000
enable l2 for cluster 2 feca0000
Corenet Platform Cache: 1536 KB enabled
Using SERDES1 Protocol: 28 (0x1c)
Using SERDES2 Protocol: 56 (0x38)
Using SERDES3 Protocol: 2 (0x2)
Using SERDES4 Protocol: 10 (0xa)
SRIO1: disabled
SRIO2: disabled
NAND: 2048 MiB
MMC: FSL_SDHC: 0
PCIe1: Root Complex, no link, regs @ 0xfe240000
PCIe1: Bus 00 - 00
PCIe2: disabled
PCIe3: Root Complex, no link, regs @ 0xfe260000
PCIe3: Bus 01 - 01
PCIe4: Root Complex, no link, regs @ 0xfe270000
PCIe4: Bus 02 - 02
In: serial
Out: serial
Err: serial
Warning: SERDES2 expects reference clock 125MHz, but actual is 156.25MHz
Net: Fman1: Uploading microcode version 106.4.10
Failed to connect
Failed to connect
Fman2: Uploading microcode version 106.4.10
FM1@DTSEC1, FM1@DTSEC2, FM1@DTSEC3, FM1@DTSEC4, FM1@TGEC1, FM1@TGEC2, FM2@DTSEC1, FM2@DTSEC2, FM2@DTSEC3, FM2@DTSEC4, FM2@TGEC1, FM2@TGEC2
Hit any key to stop autoboot: 0
Using FM1@DTSEC1 device
TFTP from server 192.168.1.20; our IP address is 192.168.1.50
Filename 't4240rdb/boot/uImage'.
Load address: 0x1000000
Loading: #################################################################
#################################################################
#################################################################
#################################################################
#################################################################
########################
11.4 MiB/s
done
Bytes transferred = 5118125 (4e18ad hex)
Using FM1@DTSEC1 device
TFTP from server 192.168.1.20; our IP address is 192.168.1.50
Filename 't4240rdb/boot/t4240rdb.dtb'.
Load address: 0xc00000
Loading: #####
9.6 MiB/s
done
Bytes transferred = 60481 (ec41 hex)
WARNING: adjusting available memory to 30000000
## Booting kernel from Legacy Image at 01000000 ...
Image Name: Linux-3.12.19-rt30-QorIQ-SDK-V1.
Created: 2015-05-07 18:57:24 UTC
Image Type: PowerPC Linux Kernel Image (gzip compressed)
Data Size: 5118061 Bytes = 4.9 MiB
Load Address: 00000000
Entry Point: 00000000
Verifying Checksum ... OK
## Flattened Device Tree blob at 00c00000
Booting using the fdt blob at 0x00c00000
Uncompressing Kernel Image ... OK
ERROR: image is not a fdt - must RESET the board to recover.
Solved! Go to Solution.
Increase $fdtaddr so that it doesn't get overwritten by uncompressing the kernel. I usually use 1fc0000.
Increase $fdtaddr so that it doesn't get overwritten by uncompressing the kernel. I usually use 1fc0000.
In which file and part I must change $fdtaddr ?
I have the same error with T2080RDB
Flattened Device Tree blob at 00c00000
Booting using the fdt blob at 0xc00000
Uncompressing Kernel Image ... OK
ERROR: image is not a fdt - must RESET the board to recover.
I have changed the file T208xRDB.h
#define CONFIG_LINUX \
"setenv bootargs root=/dev/ram rw " \
"console=$consoledev,$baudrate $othbootargs;" \
"setenv ramdiskaddr 0x02000000;" \
"setenv fdtaddr 0x01fc0000;"
was:
- "setenv fdtaddr 0x00c00000;" \
and even sandbox.h:
@@ -177,7 +177,7 @@
#define MEM_LAYOUT_ENV_SETTINGS \
"bootm_size=0x10000000\0" \
"kernel_addr_r=0x1000000\0" \
- "fdt_addr_r=0xc00000\0" \
+ "fdt_addr_r=0x1fc0000\0" \
but boot using fdt blob at 0xc00000 and not 01fc0000
How I can setenv fdtaddr inside T208XRDB.h file as I have done manually from terminal?
Done manually:
=> printenv fdtaddr
fdtaddr=0x00c00000
=> setenv fdtaddr 0x00e00000
=> printenv fdtaddr
fdtaddr=0x00e00000
=> boot
That did the trick. Thanks Scott!