IMX6DL 在Android4.4.2版本插入SD卡不能开机

最近在调试SD的时候,在板子开机之后两个SD卡座都是能正常读取的,但后来忘了把SD卡取下来,之后再开机,发现居然跑到半路就死机了,而且只有TF1有这现象,TF2插卡开机正常。

在TF1插入SD卡启动时的log:

U-Boot 2009.08-00705-g064ce51-dirty ( 7?.25 2015 - 14:45:07)

CPU: Freescale i.MX6 family TO1.2 at 792 MHz
Thermal sensor with ratio = 172
Temperature:   40 C, calibration data 0x54149e7d
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: i.MX6DL/Solo-SABRESD: unknown-board Board: 0x61012 [POR ]
Boot Device: MMC
I2C:   ready
DRAM:   1 GB
MMC:   FSL_ESDHC: 0,FSL_ESDHC: 1,FSL_ESDHC: 2,FSL_ESDHC: 3
*** Warning - bad CRC or MMC, using default environment

Error: no valid bmp image at 30000000
mxcfb: Error initializing panel.
In:    serial
Out:   serial
Err:   serial


U-Boot 2009.08-00705-g064ce51-dirty ( 7?.25 2015 - 14:45:07)

CPU: Freescale i.MX6 family TO1.2 at 792 MHz
Thermal sensor with ratio = 172
Temperature:   42 C, calibration data 0x54149e7d
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: i.MX6DL/Solo-SABRESD: unknown-board Board: 0x61012 [POR ]
Boot Device: MMC
I2C:   ready
DRAM:   1 GB
MMC:   FSL_ESDHC: 0,FSL_ESDHC: 1,FSL_ESDHC: 2,FSL_ESDHC: 3
*** Warning - bad CRC or MMC, using default environment

Error: no valid bmp image at 30000000
mxcfb: Error initializing panel.
In:    serial
Out:   serial
Err:   serial
## Unable to use MMC-MEDIA:1 for fatCard did not respond to voltage select!
MMC2 card init failed!
## normal startup! 
i2c: I2C1 SDA is low, start i2c recovery...
I2C1 Recovery success
Recovery key pressed
Recovery command file founded!
recovery on bootdev: 7
setup env for recovery..
Net:   got MAC address from IIM: 00:00:00:00:00:00
FEC0 [PRIME]
Hit any key to stop autoboot:  0 
kernel   @ 10808000 (4843080)
ramdisk  @ 11800000 (1050917)
kernel cmdline: 
	use boot.img command line:
	console=ttymxc0,115200 init=/init video=mxcfb0:dev=ldb,bpp=32 video=mxcfb1:off video=mxcfb2:off fbmem=10M fb0base=0x27b00000 vmalloc=400M androidboot.console=ttymxc0 androidboot.hardware=freescale androidboot.serialno=1b0e31d4e302a50e 

Starting kernel ...

Uncompressing Linux... done, booting the kernel.
Initializing cgroup subsys cpu
Linux version 3.0.35-06497-gcc45965 (robin@robin-virtual-machine) (gcc version 4.6.x-google 20120106 (prerelease) (GCC) ) #1 SMP PREEMPT Sat May 16 17:57:16 CST 2015
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
Ignoring unrecognised tag 0x54410008
Memory policy: ECC disabled, Data cache writealloc
CPU identified as i.MX6DL/SOLO, silicon rev 1.2
PERCPU: Embedded 7 pages/cpu @c133e000 s6528 r8192 d13952 u32768
Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 208128
Kernel command line: console=ttymxc0,115200 init=/init video=mxcfb0:dev=ldb,bpp=32 video=mxcfb1:off video=mxcfb2:off fbmem=10M fb0base=0x27b00000 vmalloc=400M androidboot.console=ttymxc0 androidboot.hardware=freescale androidboot.serialno=1b0e31d4e302a50e
PID hash table entries: 2048 (order: 1, 8192 bytes)
Dentry cache hash table entries: 65536 (order: 6, 262144 bytes)
Inode-cache hash table entries: 32768 (order: 5, 131072 bytes)
Memory: 379MB 378MB 64MB = 821MB total
Memory: 819512k/819512k available, 229064k reserved, 441344K highmem
Virtual kernel memory layout:
    vector  : 0xffff0000 - 0xffff1000   (   4 kB)
    fixmap  : 0xfff00000 - 0xfffe0000   ( 896 kB)
    DMA     : 0xfbe00000 - 0xffe00000   (  64 MB)
    vmalloc : 0xd9800000 - 0xf2000000   ( 392 MB)
    lowmem  : 0xc0000000 - 0xd9000000   ( 400 MB)
    pkmap   : 0xbfe00000 - 0xc0000000   (   2 MB)
    modules : 0xbf000000 - 0xbfe00000   (  14 MB)
      .init : 0xc0008000 - 0xc0047000   ( 252 kB)
      .text : 0xc0047000 - 0xc0910584   (8998 kB)
      .data : 0xc0912000 - 0xc09ac470   ( 618 kB)
       .bss : 0xc09ac494 - 0xc0b34fbc   (1571 kB)
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=800MHz
MXC_Early serial console at MMIO 0x2020000 (options '115200')
bootconsole [ttymxc0] enabled
Calibrating delay loop... 1581.05 BogoMIPS (lpj=7905280)
pid_max: default: 32768 minimum: 301
Security Framework initialized
SELinux:  Initializing.
Mount-cache hash table entries: 512
Initializing cgroup subsys debug
Initializing cgroup subsys cpuacct
Initializing cgroup subsys freezer
CPU: Testing write buffer coherency: ok
hw perfevents: enabled with ARMv7 Cortex-A9 PMU driver, 7 counters available
CPU1: Booted secondary processor
Brought up 2 CPUs
SMP: Total of 2 processors activated (3162.11 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 
ram_console: got buffer at 3ff00000, size 100000
ram_console: uncorrectable error in header
ram_console: no valid data in buffer (sig = 0x00000000)
console [ram-1] enabled
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 0x32050000, Cache size: 524288 B
bio: create slab 
   
   
    
     at 0
mxs-dma mxs-dma-apbh: initialized
print_constraints: SPKVDD: 4200 mV 
print_constraints: vmmc: 3300 mV 
vgaarb: loaded
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
Freescale USB OTG Driver loaded, $Revision: 1.55 $
mc_pfuze 1-0008: recv failed!:-5,0
mc_pfuze: probe of 1-0008 failed with error -1
mxc_mipi_csi2 mxc_mipi_csi2: i.MX MIPI CSI2 driver probed
mxc_mipi_csi2 mxc_mipi_csi2: i.MX MIPI CSI2 dphy version is 0x3130302a
MIPI CSI2 driver module loaded
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_regulator_init abort: EPDC not enabled
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: 16384 (order: 4, 65536 bytes)
TCP established hash table entries: 65536 (order: 7, 524288 bytes)
TCP bind hash table entries: 65536 (order: 7, 786432 bytes)
TCP: Hash tables configured (established 65536 bind 65536)
TCP reno registered
UDP hash table entries: 256 (order: 1, 8192 bytes)
UDP-Lite hash table entries: 256 (order: 1, 8192 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.
PCI: CLS 0 bytes, default 32
Unpacking initramfs...
Freeing initrd memory: 1024K
PMU: registered new PMU device of type 0
Static Power Management for Freescale i.MX6
wait mode is enabled for i.MX6
cpaddr = d9820000 suspend_iram_base=d98b4000
PM driver module loaded
iMX6 PCIe PCIe RC mode imx_pcie_pltfm_probe entering.
   
   
每次都一样,跑到这就死了..........


后来拿正常启动的log做比较,发现不插SD和插SD卡启动的内核居然还不是同一个,两个内核的编译日期都不同:
不插SD卡的启动log
Starting kernel ...

Uncompressing Linux... done, booting the kernel.
[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Linux version 3.0.35-06504-g68784b2-dirty (robin@robin-virtual-machine) (gcc version 4.6.x-google 20120106 (prerelease) (GCC) ) #29 SMP PREEMPT Mon Jul 27 09:48:34 CST 2015
[    0.000000] CPU: ARMv7 Processor [412fc09a] revision 10 (ARMv7), cr=10c53c7d
[    0.000000] CPU: VIPT nonaliasing data cache, VIPT aliasing instruction cache


插入SD卡的启动log
Starting kernel ...

Uncompressing Linux... done, booting the kernel.
Initializing cgroup subsys cpu
Linux version 3.0.35-06497-gcc45965 (robin@robin-virtual-machine) (gcc version 4.6.x-google 20120106 (prerelease) (GCC) ) #1 SMP PREEMPT Sat May 16 17:57:16 CST 2015
CPU: ARMv7 Processor [412fc09a] revision 10 (ARMv7), cr=10c53c7d
CPU: VIPT nonaliasing data cache, VIPT aliasing instruction cache

后来在《Android User's Guide》中发现uboot参数需要设置



比较两种启动方式的uboot参数,启动果然不一样,把插入SD启动的uboot中的参数bootcmd改为
U-Boot > setenv fastboot_dev mmc3 [eMMC as fastboot deivce]

U-Boot > setenv bootcmd booti mmc3      [Load the boot.img from eMMC]

U-Boot > saveenv

U-Boot > run bootcmd 

发现也能正常启动了


但关机后又不能启动了,所以还得重新编译下uboot,把   #define CONFIG_ANDROID_RECOVERY 屏蔽掉重新编译就Ok了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值