Hello experts,
Could really use some help....
I'm trying to bring up a custom iMX6 Solo board based on iMX6DL Sabre Platform. The board is really similar to the SabreSD. Main differences are UART1 pin-muxing and DDR size configuration. Besides that, just removal of peripherals on the board.
The board has an eMMC, and I'm trying to rebuild MFGTool U-Boot and Linux Kernel in order to program it. Using LTIB (L3.0.35_4.1.0_130816_source. tar.gz), based on u-boot-2009.08/board/freescale/mx6q_sabresd, I updated DCD in flash_header.S and fixed IOMux settings. Then I fixed the pin-muxing for Linux Kernel in arch/arm/mach-mx6/board-mx6dl_sabresd.h. U-boot and Linux build successfully (For Linux I use imx6_updated_defconfig). U-Boot loads successfully, and Kernel starts loading but stops after "i.MXC CPU frequency driver" (full log below).
What could be the problem?
Sincerely,
Erez
Console log:
-----------------
U-Boot 2009.08 (Oct 02 2014 - 17:21:50)
CPU: Freescale i.MX6 family TO1.2 at 792 MHz
Thermal sensor with ratio = 188
Temperature: 42 C, calibration data 0x5a75265f
mx6q pll1: 792MHz
mx6q pll2: 528MHz
mx6q pll3: 480MHz
mx6q pll8: 50MHz
ipg clock : 66000000Hz
ipg per clock : 66000000Hz
uart clock : 80000000Hz
cspi clock : 60000000Hz
ahb clock : 132000000Hz
axi clock : 198000000Hz
emi_slow clock: 99000000Hz
ddr clock : 396000000Hz
usdhc1 clock : 198000000Hz
usdhc2 clock : 198000000Hz
usdhc3 clock : 198000000Hz
usdhc4 clock : 198000000Hz
nfc clock : 24000000Hz
Board: iMX6DL-SabreSD customized board [POR ]
Boot Device: MMC
I2C: ready
DRAM: 256 MB
MMC: FSL_USDHC: 0
Using default environment
In: serial
Out: serial
Err: serial
Net: No ethernet found.
Hit any key to stop autoboot: 0
## Booting kernel from Legacy Image at 10800000 ...
Image Name: Linux-3.0.35-2666-gbdde708
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 3165528 Bytes = 3 MB
Load Address: 10008000
Entry Point: 10008000
Verifying Checksum ... OK
## Loading init Ramdisk from Legacy Image at 10c00000 ...
Image Name: uboot initramfs rootfs
Image Type: ARM Linux RAMDisk Image (gzip compressed)
Data Size: 4545326 Bytes = 4.3 MB
Load Address: 00000000
Entry Point: 00000000
Verifying Checksum ... OK
Loading Kernel Image ... OK
OK
Starting kernel ...
Uncompressing Linux... done, booting the kernel.
Linux version 3.0.35-2666-gbdde708 (erez@ubuntu) (gcc version 4.6.2 20110630 (prerelease) (Freescale MAD -- Linaro 2011.07 -- Built at 2011/08/10 09:20) ) #1 SMP PREEMPT Fri Oct 3 17:14:26 IDT 2014
CPU: ARMv7 Processor [412fc09a] revision 10 (ARMv7), cr=10c53c7d
CPU: VIPT nonaliasing data cache, VIPT aliasing instruction cache
Machine: Freescale i.MX 6Quad/DualLite/Solo Sabre-SD Board
Memory policy: ECC disabled, Data cache writealloc
CPU identified as i.MX6DL/SOLO, silicon rev 1.2
PERCPU: Embedded 7 pages/cpu @8082e000 s5184 r8192 d15296 u32768
Built 1 zonelists in Zone order, mobility grouping on. Total pages: 32256
Kernel command line: console=ttymxc0,115200 rdinit=/linuxrc enable_wait_mode=off
PID hash table entries: 512 (order: -1, 2048 bytes)
Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
Memory: 128MB = 128MB total
Memory: 118124k/118124k available, 144020k reserved, 0K highmem
Virtual kernel memory layout:
vector : 0xffff0000 - 0xffff1000 ( 4 kB)
fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB)
DMA : 0xf4600000 - 0xffe00000 ( 184 MB)
vmalloc : 0x90800000 - 0xf2000000 (1560 MB)
lowmem : 0x80000000 - 0x90000000 ( 256 MB)
pkmap : 0x7fe00000 - 0x80000000 ( 2 MB)
modules : 0x7f000000 - 0x7fe00000 ( 14 MB)
.init : 0x80008000 - 0x8003a000 ( 200 kB)
.text : 0x8003a000 - 0x805aea70 (5587 kB)
.data : 0x805b0000 - 0x805fe800 ( 314 kB)
.bss : 0x805fe824 - 0x80629774 ( 172 kB)
SLUB: Genslabs=13, HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
Preemptible hierarchical RCU implementation.
NR_IRQS:624
MXC GPIO hardware
sched_clock: 32 bits at 3000kHz, resolution 333ns, wraps every 1431655ms
Set periph_clk's parent to pll2_pfd_400M!
arm_max_freq=1GHz
MXC_Early serial console at MMIO 0x2020000 (options '115200')
bootconsole [ttymxc0] enabled
Console: colour dummy device 80x30
Calibrating delay loop... 1581.05 BogoMIPS (lpj=7905280)
pid_max: default: 32768 minimum: 301
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
hw perfevents: enabled with ARMv7 Cortex-A9 PMU driver, 7 counters available
Brought up 1 CPUs
SMP: Total of 1 processors activated (1581.05 BogoMIPS).
print_constraints: dummy:
NET: Registered protocol family 16
print_constraints: vddpu: 725 <--> 1300 mV at 700 mV fast normal
print_constraints: vddcore: 725 <--> 1300 mV at 1150 mV fast normal
print_constraints: vddsoc: 725 <--> 1300 mV at 1200 mV fast normal
print_constraints: vdd2p5: 2000 <--> 2775 mV at 2400 mV fast normal
print_constraints: vdd1p1: 800 <--> 1400 mV at 1100 mV fast normal
print_constraints: vdd3p0: 2625 <--> 3400 mV at 3000 mV fast normal
hw-breakpoint: found 6 breakpoint and 1 watchpoint registers.
hw-breakpoint: 1 breakpoint(s) reserved for watchpoint single-step.
hw-breakpoint: maximum watchpoint size is 4 bytes.
L310 cache controller enabled
l2x0: 16 ways, CACHE_ID 0x410000c8, AUX_CTRL 0x02050000, Cache size: 524288 B
bio: create slab <bio-0> at 0
mxs-dma mxs-dma-apbh: initialized
print_constraints: SPKVDD: 4200 mV
print_constraints: vmmc: 3300 mV
SCSI subsystem initialized
spi_imx imx6q-ecspi.0: probed
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
mc_pfuze 1-0008: ID: 0,Full lay: 1 ,Metal lay: 1
mc_pfuze 1-0008: FAB: 0 ,FIN: 0
print_constraints: PFUZE100_SW1A: 300 <--> 1875 mV at 1300 mV
print_constraints: PFUZE100_SW1B: 300 <--> 1875 mV at 300 mV
print_constraints: PFUZE100_SW1C: 300 <--> 1875 mV at 1300 mV
print_constraints: PFUZE100_SW2: 800 <--> 3950 mV at 3150 mV
print_constraints: PFUZE100_SW3A: 400 <--> 1975 mV at 1500 mV
print_constraints: PFUZE100_SW3B: 400 <--> 1975 mV at 1500 mV
print_constraints: PFUZE100_SW4: 800 <--> 3950 mV at 3300 mV
print_constraints: PFUZE100_SWBST: 5000 <--> 5150 mV at 5000 mV
print_constraints: PFUZE100_VSNVS: 1200 <--> 3000 mV at 1800 mV
print_constraints: PFUZE100_VREFDDR: at 750 mV
print_constraints: PFUZE100_VGEN1: 800 <--> 1550 mV at 1200 mV
print_constraints: PFUZE100_VGEN2: 800 <--> 1550 mV at 1500 mV
print_constraints: PFUZE100_VGEN3: 1800 <--> 3300 mV at 1800 mV
print_constraints: PFUZE100_VGEN4: 1800 <--> 3300 mV at 1800 mV
print_constraints: PFUZE100_VGEN5: 1800 <--> 3300 mV at 2500 mV
print_constraints: PFUZE100_VGEN6: 1800 <--> 3300 mV at 2800 mV
imx-ipuv3 imx-ipuv3.0: IPU DMFC NORMAL mode: 1(0~1), 5B(4,5), 5F(6,7)
Advanced Linux Sound Architecture Driver Version 1.0.24.
Bluetooth: Core ver 2.16
NET: Registered protocol family 31
Bluetooth: HCI device and connection manager initialized
Bluetooth: HCI socket layer initialized
Bluetooth: L2CAP socket layer initialized
Bluetooth: SCO socket layer initialized
max17135 2-0048: PMIC MAX17135 for eInk display
i2c-core: driver [max17135] using legacy suspend method
i2c-core: driver [max17135] using legacy resume method
Switching to clocksource mxc_timer1
NET: Registered protocol family 2
IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
TCP established hash table entries: 4096 (order: 3, 32768 bytes)
TCP bind hash table entries: 4096 (order: 3, 49152 bytes)
TCP: Hash tables configured (established 4096 bind 4096)
TCP reno registered
UDP hash table entries: 128 (order: 0, 4096 bytes)
UDP-Lite hash table entries: 128 (order: 0, 4096 bytes)
NET: Registered protocol family 1
RPC: Registered named UNIX socket transport module.
RPC: Registered udp transport module.
RPC: Registered tcp transport module.
RPC: Registered tcp NFSv4.1 backchannel transport module.
Unpacking initramfs...
Freeing initrd memory: 4436K
PMU: registered new PMU device of type 0
Static Power Management for Freescale i.MX6
wait mode is disabled for i.MX6
cpaddr = 90820000 suspend_iram_base=908b4000
PM driver module loaded
IMX usb wakeup probe
cpu regulator mode:ldo_bypass
_regulator_get: get() with no identifier
mx6_cpu_regulator_init: failed to get pu regulator
i.MXC CPU frequency driver
Hi Erez
did you updated DDR calibration settings in flash_header.S
https://community.freescale.com/docs/DOC-96412
also one can try to run Uboot/Linux with kernel command line:
ldo_active=on, maxcpus=1
Best regards
igor
Hi Igor,
Thanks for the answer.
I did update the DDR parameters in the plugin. But, using the 'correct' parameters causes UBoot not to load.
These same parameters work well with another version of Uboot and pass stress-testing at >500MHz. So, this is really weird.
In any case-- I'm discontinuing this effort for now.