This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

DM3730 boot from uSD on MMC2 and eMMC in MMC1

Other Parts Discussed in Thread: DM3730

I trying boot my custom board from MMC2.

MLO loaded and it throws an error:

U-Boot SPL 2013.01.01 (Sep 17 2013 - 13:15:53)
OMAP SD/MMA: 0
mmc_init_setup: timedout waiting for ics!
spl: mmc init failed: err - -19
### ERROR ### Please RESET the board ###

This MLO and u-boot from beagleboard-xm.

May be I need modify something in source?

Does DM3730 support boot from eMMC chip on MMC1?

  • Michael,

    eMMC support might be difficult on DM3730. You can check the initialization chapter in the DM3730 documentation. By default the MMC port used in beagleboard is mmc1 right? May be you'll have to try to see the MUX configuration of all the pins in X-loader.

  • I add:

    ti-sdk-beagleboard-06.00.00.00/board-support/u-boot-2012.04.01-pspmainline/board/ti/beagle/beagle.c

    #if defined(CONFIG_GENERIC_MMC) && !defined(CONFIG_SPL_BUILD)
    int board_mmc_init(bd_t *bis)
    {
        printf("%s: ENTER. \n", __func__);

        omap_mmc_init(0);
        omap_mmc_init(1);
        return 0;
    }
    #endif

    In mux config i add:

        MUX_VAL(CP(MMC2_CLK),        (IDIS | PTU | EN  | M0)) /*MMC2_CLK*/\
        MUX_VAL(CP(MMC2_CMD),        (IEN  | PTU | EN  | M0)) /*MMC2_CMD*/\
        MUX_VAL(CP(MMC2_DAT0),        (IEN  | PTU | EN  | M0)) /*MMC2_DAT0*/\
        MUX_VAL(CP(MMC2_DAT1),        (IEN  | PTU | EN  | M0)) /*MMC2_DAT1*/\
        MUX_VAL(CP(MMC2_DAT2),        (IEN  | PTU | EN  | M0)) /*MMC2_DAT2*/\
        MUX_VAL(CP(MMC2_DAT3),        (IEN  | PTU | EN  | M0)) /*MMC2_DAT3*/\
        MUX_VAL(CP(MMC2_DAT4),        (IEN  | PTU | EN  | M0)) /*MMC2_DAT4*/\
        MUX_VAL(CP(MMC2_DAT5),        (IEN  | PTU | EN  | M0)) /*MMC2_DAT5*/\
        MUX_VAL(CP(MMC2_DAT6),        (IEN  | PTU | EN  | M0)) /*MMC2_DAT6*/\
        MUX_VAL(CP(MMC2_DAT7),        (IEN  | PTU | EN  | M0)) /*MMC2_DAT7*/\

    And now when I boot from MMC1 I see:

    OMAP3 beagleboard.org # mmc list
    OMAP SD/MMC: 0
     OMAP SD/MMC: 1

    But:

    OMAP3 beagleboard.org # mmc dev 1
    mmc_send_cmd: timedout waiting on cmd inhibit to clear
    mmc_send_cmd: timedout waiting on cmd inhibit to clear
    mmc_send_cmd: timedout waiting on cmd inhibit to clear
    Card did not respond to voltage select!
    mmc1(part 0) is current device

    Output does not depend plugged card or not.

    Wen I boot from MMC2:

    U-Boot SPL 2012.04.01-gd0c6795-dirty (Sep 18 2013 - 18:11:30)
    Texas Instruments Revision detection unimplemented
    OMAP SD/MMC: 0
    timed out in wait_for_bb: I2C_STAT=1000
    mmc_send_cmd: timedout waiting on cmd inhibit to clear
    mmc_send_cmd: timedout waiting on cmd inhibit to clear
    mmc_send_cmd: timedout waiting on cmd inhibit to clear
    Card did not respond to voltage select!
    spl: mmc init failed: err - -17
    ### ERROR ### Please RESET the board ###

    Can anybody help me? 

  • Michael,

    Can you print the command sequence and arguments first? Can you go through the eMMC spec and try to see whether the commands are following the spec. I'm saying this because there are differences between MMC and eMMC specification. 

    And a quick step is to try commenting off the voltage select command. 

  • Thanks for help!

    Use eMMC is my second task. My first task is use uSD card on MMC1 and MMC2.

    When I boot from MMC1 and try detect card on MMC2 I get error.

    But if I boot from MMC2, ROM boot program detect card and booted MLO correct.

    I compare  signal on MMC_CMD line when boot from MMC2 and when I try detect card from u-boot and they different.

  • I solved problem with uSD on MMC1 and MMC2.

    Add boot from MMC2:

    ----------------------- arch/arm/cpu/armv7/omap3/board.c -----------------------
    index 1fee574..70ffef0 100644
    @@ -72,7 +72,7 @@ u32 omap_boot_mode(void)
     {
         switch (omap_boot_device()) {
         case BOOT_DEVICE_MMC2:
    -        return MMCSD_MODE_RAW;
    +        return MMCSD_MODE_FAT;
         case BOOT_DEVICE_MMC1:
             return MMCSD_MODE_FAT;
             break;
     
     /******************************************************************************

    --------------------------- board/ti/beagle/beagle.c ---------------------------
    index 69a7b4e..8380546 100644
    @@ -480,7 +480,10 @@ void set_muxconf_regs(void)
     #if defined(CONFIG_GENERIC_MMC) && !defined(CONFIG_SPL_BUILD)
     int board_mmc_init(bd_t *bis)
     {
    +    printf("%s: ENTER. \n", __func__);
    +
         omap_mmc_init(0);
    +    omap_mmc_init(1);
         return 0;
     }
     #endif

    --------------------------- board/ti/beagle/beagle.h ---------------------------
    index c0a94a9..1ad843c 100644
    @@ -208,17 +208,27 @@ const omap3_sysinfo sysinfo = {
         MUX_VAL(CP(MMC1_DAT5),        (IEN  | PTU | EN  | M0)) /*MMC1_DAT5*/\
         MUX_VAL(CP(MMC1_DAT6),        (IEN  | PTU | EN  | M0)) /*MMC1_DAT6*/\
         MUX_VAL(CP(MMC1_DAT7),        (IEN  | PTU | EN  | M0)) /*MMC1_DAT7*/\
    - /*Wireless LAN */\
    -    MUX_VAL(CP(MMC2_CLK),        (IEN  | PTU | EN  | M4)) /*GPIO_130*/\
    -    MUX_VAL(CP(MMC2_CMD),        (IEN  | PTU | EN  | M4)) /*GPIO_131*/\
    -    MUX_VAL(CP(MMC2_DAT0),        (IEN  | PTU | EN  | M4)) /*GPIO_132*/\
    -    MUX_VAL(CP(MMC2_DAT1),        (IEN  | PTU | EN  | M4)) /*GPIO_133*/\
    -    MUX_VAL(CP(MMC2_DAT2),        (IEN  | PTU | EN  | M4)) /*GPIO_134*/\
    -    MUX_VAL(CP(MMC2_DAT3),        (IEN  | PTU | EN  | M4)) /*GPIO_135*/\
    -    MUX_VAL(CP(MMC2_DAT4),        (IEN  | PTU | EN  | M4)) /*GPIO_136*/\
    -    MUX_VAL(CP(MMC2_DAT5),        (IEN  | PTU | EN  | M4)) /*GPIO_137*/\
    -    MUX_VAL(CP(MMC2_DAT6),        (IEN  | PTU | EN  | M4)) /*GPIO_138*/\
    -    MUX_VAL(CP(MMC2_DAT7),        (IEN  | PTU | EN  | M4)) /*GPIO_139*/\
    + /*MMC2 */\
    +    MUX_VAL(CP(MMC2_CLK),        (IEN  | PTU | EN  | M0)) /*MMC2_CLK*/\
    +    MUX_VAL(CP(MMC2_CMD),        (IEN  | PTU | EN  | M0)) /*MMC2_CMD*/\
    +    MUX_VAL(CP(MMC2_DAT0),        (IEN  | PTU | EN  | M0)) /*MMC2_DAT0*/\
    +    MUX_VAL(CP(MMC2_DAT1),        (IEN  | PTU | EN  | M0)) /*MMC2_DAT1*/\
    +    MUX_VAL(CP(MMC2_DAT2),        (IEN  | PTU | EN  | M0)) /*MMC2_DAT2*/\
    +    MUX_VAL(CP(MMC2_DAT3),        (IEN  | PTU | EN  | M0)) /*MMC2_DAT3*/\
    +    MUX_VAL(CP(MMC2_DAT4),        (IEN  | PTU | EN  | M0)) /*MMC2_DAT4*/\
    +    MUX_VAL(CP(MMC2_DAT5),        (IEN  | PTU | EN  | M0)) /*MMC2_DAT5*/\
    +    MUX_VAL(CP(MMC2_DAT6),        (IEN  | PTU | EN  | M0)) /*MMC2_DAT6*/\
    +    MUX_VAL(CP(MMC2_DAT7),        (IEN  | PTU | EN  | M0)) /*MMC2_DAT7*/\
     (IEN  | PTU | EN  | M4)) /*GPIO_139*/\
      /*Bluetooth*/\
         MUX_VAL(CP(MCBSP3_DX),        (IEN  | PTD | DIS | M1)) /*UART2_CTS*/\
         MUX_VAL(CP(MCBSP3_DR),        (IDIS | PTD | DIS | M1)) /*UART2_RTS*/\

  • HI!

    Now I want boot linux from uSD on MMC1 and prepare eMMC on MMC2.

    I add in board-omap3beagle.c:

    static struct omap2_hsmmc_info mmc[] = {
        {
            .mmc        = 1,
            .caps        = MMC_CAP_4_BIT_DATA,
            .gpio_wp    = -EINVAL,
            .deferred    = true,
        },
        {
            .name        = "eMMC 8GB",
            .mmc        = 2,
            .caps        = MMC_CAP_4_BIT_DATA,
            .gpio_wp    = -EINVAL,
            .gpio_cd    = 4,
            .nonremovable    = true,
            .ocr_mask    = MMC_VDD_32_33 | MMC_VDD_33_34,
        },
        {}    /* Terminator */
    };

    start log:

    [    0.000000] Booting Linux on physical CPU 0
    [    0.000000] Linux version 3.6.6 (michael@michael-xUbuntu) (gcc version 4.3.3 (GCC) ) #12 Fri Sep 20 11:47:13 EEST 2013
    [    0.000000] CPU: ARMv7 Processor [413fc082] revision 2 (ARMv7), cr=10c53c7d
    [    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
    [    0.000000] Machine: OMAP3 Beagle Board
    [    0.000000] Reserving 12582912 bytes SDRAM for VRAM
    [    0.000000] Memory policy: ECC disabled, Data cache writeback
    [    0.000000] OMAP3630 ES1.2 (l2cache iva sgx neon isp 192mhz_clk )
    [    0.000000] Clocking rate (Crystal/Core/MPU): 26.0/400/800 MHz
    [    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 125184
    [    0.000000] Kernel command line: console=ttyO2,115200n8 mpurate=auto buddy=none camera=none vram=12M omapfb.mode=dvi:640x480MR-16@60 omapdss.def_dt
    [    0.000000] PID hash table entries: 2048 (order: 1, 8192 bytes)
    [    0.000000] Dentry cache hash table entries: 65536 (order: 6, 262144 bytes)
    [    0.000000] Inode-cache hash table entries: 32768 (order: 5, 131072 bytes)
    [    0.000000] Memory: 493MB = 493MB total
    [    0.000000] Memory: 487308k/487308k available, 36980k reserved, 0K highmem
    [    0.000000] Virtual kernel memory layout:
    [    0.000000]     vector  : 0xffff0000 - 0xffff1000   (   4 kB)
    [    0.000000]     fixmap  : 0xfff00000 - 0xfffe0000   ( 896 kB)
    [    0.000000]     vmalloc : 0xe0800000 - 0xff000000   ( 488 MB)
    [    0.000000]     lowmem  : 0xc0000000 - 0xe0000000   ( 512 MB)
    [    0.000000]     pkmap   : 0xbfe00000 - 0xc0000000   (   2 MB)
    [    0.000000]     modules : 0xbf000000 - 0xbfe00000   (  14 MB)
    [    0.000000]       .text : 0xc0008000 - 0xc069ce5c   (6740 kB)
    [    0.000000]       .init : 0xc069d000 - 0xc06ddc68   ( 260 kB)
    [    0.000000]       .data : 0xc06de000 - 0xc0754800   ( 474 kB)
    [    0.000000]        .bss : 0xc0754824 - 0xc0ca9460   (5460 kB)
    [    0.000000] NR_IRQS:474
    [    0.000000] IRQ: Found an INTC at 0xfa200000 (revision 4.0) with 96 interrupts
    [    0.000000] Total of 96 interrupts on 1 active controller
    [    0.000000] OMAP clockevent source: GPTIMER12 at 32768 Hz
    [    0.000000] sched_clock: 32 bits at 32kHz, resolution 30517ns, wraps every 131071999ms
    [    0.000000] OMAP clocksource: 32k_counter at 32768 Hz
    [    0.000000] Console: colour dummy device 80x30
    [    0.000000] Lock dependency validator: Copyright (c) 2006 Red Hat, Inc., Ingo Molnar
    [    0.000000] ... MAX_LOCKDEP_SUBCLASSES:  8
    [    0.000000] ... MAX_LOCK_DEPTH:          48
    [    0.000000] ... MAX_LOCKDEP_KEYS:        8191
    [    0.000000] ... CLASSHASH_SIZE:          4096
    [    0.000000] ... MAX_LOCKDEP_ENTRIES:     16384
    [    0.000000] ... MAX_LOCKDEP_CHAINS:      32768
    [    0.000000] ... CHAINHASH_SIZE:          16384
    [    0.000000]  memory used by lock dependency info: 3695 kB
    [    0.000000]  per task-struct memory footprint: 1152 bytes
    [    0.000579] Calibrating delay loop... 459.01 BogoMIPS (lpj=1794048)
    [    0.081329] pid_max: default: 32768 minimum: 301
    [    0.081604] Security Framework initialized
    [    0.081695] Mount-cache hash table entries: 512
    [    0.084625] CPU: Testing write buffer coherency: ok
    [    0.085266] Setting up static identity map for 0x804cd500 - 0x804cd558
    [    0.122039] dummy:
    [    0.123565] NET: Registered protocol family 16
    [    0.124237] DMA: preallocated 256 KiB pool for atomic coherent allocations
    [    0.124908] GPMC revision 5.0
    [    0.125061] gpmc: irq-20 could not claim: err -22
    [    0.132507] OMAP GPIO hardware version 2.5
    [    0.142700] omap_mux_init: Add partition: #1: core, flags: 0
    [    0.144470] OMAP3 Beagle Rev: xM C
    [    0.155456] _omap_mux_get_by_name: Could not find signal uart4_rx.uart4_rx
    [    0.160247] Reprogramming SDRC clock to 400000000 Hz
    [    0.160278] dpll3_m2_clk rate change failed: -22
    [    0.160858] Found NAND on CS0
    [    0.160888] Registering NAND on CS0
    [    0.161956] hw-breakpoint: debug architecture 0x4 unsupported.
    [    0.173645]  omap-mcbsp.2: alias fck already exists
    [    0.174285]  omap-mcbsp.3: alias fck already exists
    [    0.177062] OMAP DMA hardware revision 5.0
    [    0.223937] bio: create slab <bio-0> at 0
    [    0.286895] omap-dma-engine omap-dma-engine: OMAP DMA engine driver
    [    0.290863] SCSI subsystem initialized
    [    0.292816] usbcore: registered new interface driver usbfs
    [    0.293243] usbcore: registered new interface driver hub
    [    0.293914] usbcore: registered new device driver usb
    [    0.305267] omap_i2c omap_i2c.1: bus 1 rev1.4.0 at 2600 kHz
    [    0.312164] twl 1-0048: PIH (irq 7) chaining IRQs 320..328
    [    0.312561] twl 1-0048: power (irq 325) chaining IRQs 328..335
    [    0.314392] twl4030_gpio twl4030_gpio: gpio (irq 320) chaining IRQs 336..353
    [    0.315460] beagle_twl_gpio_setup: call omap_hsmmc_late_init(mmc);
    [    0.315460] omap_hsmmc_late_init: ENTER
    [    0.320831] vdd_mpu_iva: 600 <--> 1450 mV normal
    [    0.322326] vdd_core: 600 <--> 1450 mV normal
    [    0.323974] VMMC1: 1850 <--> 3150 mV at 3150 mV normal standby
    [    0.325744] VDAC: 1800 mV normal standby
    [    0.327301] VDVI: 1800 mV normal standby
    [    0.329040] VSIM: 1800 <--> 3000 mV at 1800 mV normal standby
    [    0.330902] VAUX3: 1800 mV normal standby
    [    0.332855] VAUX4: 1800 mV normal standby
    [    0.345733] omap_i2c omap_i2c.3: bus 3 rev1.4.0 at 100 kHz
    [    0.359222] omap_i2c omap_i2c.2: bus 2 rev1.4.0 at 400 kHz
    [    0.362335] omap-iommu omap-iommu.0: isp registered
    [    0.365844] Switching to clocksource 32k_counter
    [    0.456420] NET: Registered protocol family 2
    [    0.457824] TCP established hash table entries: 16384 (order: 5, 131072 bytes)
    [    0.458343] TCP bind hash table entries: 16384 (order: 7, 589824 bytes)
    [    0.464721] TCP: Hash tables configured (established 16384 bind 16384)
    [    0.464874] TCP: reno registered
    [    0.464874] UDP hash table entries: 256 (order: 2, 20480 bytes)
    [    0.465118] UDP-Lite hash table entries: 256 (order: 2, 20480 bytes)
    [    0.465759] NET: Registered protocol family 1
    [    0.466705] RPC: Registered named UNIX socket transport module.
    [    0.466735] RPC: Registered udp transport module.
    [    0.466735] RPC: Registered tcp transport module.
    [    0.466735] RPC: Registered tcp NFSv4.1 backchannel transport module.
    [    0.467681] NetWinder Floating Point Emulator V0.97 (double precision)
    [    0.469116] omap_dsp_init: 600000 bytes @ 9ee00000
    [    0.601165] VFS: Disk quotas dquot_6.5.2
    [    0.601257] Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
    [    0.602996] NFS: Registering the id_resolver key type
    [    0.603393] Key type id_resolver registered
    [    0.603393] Key type id_legacy registered
    [    0.603515] jffs2: version 2.2. (NAND) (SUMMARY)  �ʩ 2001-2006 Red Hat, Inc.
    [    0.603881] msgmni has been set to 951
    [    0.606323] io scheduler noop registered
    [    0.606353] io scheduler deadline registered
    [    0.606384] io scheduler cfq registered (default)
    [    0.609283] OMAP DSS rev 2.0
    [    0.638153] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled
    [    0.643249] omap_uart.0: ttyO0 at MMIO 0x4806a000 (irq = 72) is a OMAP UART0
    [    0.644622] omap_uart.1: ttyO1 at MMIO 0x4806c000 (irq = 73) is a OMAP UART1
    [    0.645629] omap_uart.2: ttyO2 at MMIO 0x49020000 (irq = 74) is a OMAP UART2
    [    1.321899] console [ttyO2] enabled
    [    1.326782] omap_uart.3: ttyO3 at MMIO 0x49042000 (irq = 80) is a OMAP UART3
    [    1.356170] brd: module loaded
    [    1.371978] loop: module loaded
    [    1.379760] mtdoops: mtd device (mtddev=name/number) must be supplied
    [    1.387084] No NAND device found
    [    1.390747] No NAND device found
    [    1.394683] OneNAND driver initializing
    [    1.409301] usbcore: registered new interface driver asix
    [    1.415435] usbcore: registered new interface driver cdc_ether
    [    1.421966] usbcore: registered new interface driver cdc_eem
    [    1.428344] usbcore: registered new interface driver smsc75xx
    [    1.434814] usbcore: registered new interface driver smsc95xx
    [    1.441223] usbcore: registered new interface driver net1080
    [    1.447540] usbcore: registered new interface driver cdc_subset
    [    1.454162] usbcore: registered new interface driver zaurus
    [    1.460449] usbcore: registered new interface driver cdc_ncm
    [    1.468078] usbcore: registered new interface driver cdc_wdm
    [    1.473999] Initializing USB Mass Storage driver...
    [    1.479583] usbcore: registered new interface driver usb-storage
    [    1.485931] USB Mass Storage support registered.
    [    1.491638] usbcore: registered new interface driver libusual
    [    1.498168] usbcore: registered new interface driver usbtest
    [    1.505371] mousedev: PS/2 mouse device common for all mice
    [    1.515411] input: twl4030_pwrbutton as /devices/platform/omap_i2c.1/i2c-1/1-0049/twl4030_pwrbutton/input/input0
    [    1.528259] twl_rtc twl_rtc: Enabling TWL-RTC
    [    1.536468] twl_rtc twl_rtc: rtc core: registered twl_rtc as rtc0
    [    1.544097] i2c /dev entries driver
    [    1.550537] Driver for 1-wire Dallas network protocol.
    [    1.558380] omap_wdt: OMAP Watchdog Timer Rev 0x31: initial timeout 60 sec
    [    1.566467] twl4030_wdt twl4030_wdt: Failed to register misc device
    [    1.573120] twl4030_wdt: probe of twl4030_wdt failed with error -16
    [    1.583465] omap_hsmmc omap_hsmmc.1: Failed to get debounce clk
    [    1.589782] omap-dma-engine omap-dma-engine: allocating channel for 48
    [    1.596710] omap-dma-engine omap-dma-engine: allocating channel for 47
    [    1.648956] omap_hsmmc omap_hsmmc.0: Failed to get debounce clk
    [    1.655242] omap-dma-engine omap-dma-engine: allocating channel for 62
    [    1.662109] omap-dma-engine omap-dma-engine: allocating channel for 61
    [    1.719512] mmc0: new high speed MMC card at address 0001
    [    1.727325] mmcblk0: mmc0:0001 MMC08G 7.26 GiB
    [    1.732513] mmcblk0boot0: mmc0:0001 MMC08G partition 1 16.0 MiB
    [    1.739044] mmcblk0boot1: mmc0:0001 MMC08G partition 2 16.0 MiB
    [    1.750213]  mmcblk0: unknown partition table
    [    1.758697]  mmcblk0boot1: unknown partition table
    [    1.766906]  mmcblk0boot0: unknown partition table
    [    2.051239] usbcore: registered new interface driver usbhid
    [    2.057159] usbhid: USB HID core driver
    [    2.061187] oprofile: hardware counters not available
    [    2.066497] oprofile: using timer interrupt.
    [    2.071594] TCP: cubic registered
    [    2.075073] Initializing XFRM netlink socket
    [    2.079681] NET: Registered protocol family 17
    [    2.084411] NET: Registered protocol family 15
    [    2.089447] Key type dns_resolver registered
    [    2.094085] VFP support v0.3: implementor 41 architecture 3 part 30 variant c rev 3
    [    2.109924] ThumbEE CPU extension supported.
    [    2.114410] beagle_cam_init: ENTER
    [    2.142639] clock: disabling unused clocks to save power
    [    2.151672] fbcvt: 640x480@60: CVT Name - .307M3-R
    [    2.167327] Console: switching to colour frame buffer device 80x30
    [    2.180572] VDAC: incomplete constraints, leaving on
    [    2.186340] gpio-keys gpio-keys: No IRQ specified
    [    2.191314] gpio-keys: probe of gpio-keys failed with error -22
    [    2.199310] twl_rtc twl_rtc: setting system clock to 2011-12-23 01:17:12 UTC (1324603032)
    [    2.211181] VFS: Cannot open root device "mmcblk0p2" or unknown-block(179,2): error -6
    [    2.219543] Please append a correct "root=" boot option; here are the available partitions:
    [    2.228363] b300         7618560 mmcblk0  driver: mmcblk
    [    2.233978] b310           16384 mmcblk0boot1  (driver?)
    [    2.239532] b308           16384 mmcblk0boot0  (driver?)
    [    2.245208] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(179,2)

    Why is MMC2 detect first rather than MMC1 where correct partition table?

    I remove eMMC and boot linux. It is booed.

    This is my uSD card:

    ls /dev/mmcblk*
    /dev/mmcblk0    /dev/mmcblk0p1  /dev/mmcblk0p2

    now I insert eMMC to MMC2 port and push User button on Beagleboard:

    [  176.195770] mmc0: new high speed MMC card at address 0001
    [  176.205749] mmcblk1: mmc0:0001 MMC08G 7.26 GiB
    [  176.222259] mmcblk1boot0: mmc0:0001 MMC08G partition 1 16.0 MiB
    [  176.230255] mmcblk1boot1: mmc0:0001 MMC08G partition 2 16.0 MiB
    [  176.254882]  mmcblk1: unknown partition table
    [  176.265747]  mmcblk1boot1: unknown partition table
    [  176.285583]  [  176.469024] mmcblk1: error -84 transferring data, sector 0, nr 8, cmd response 0x900, card status 0xb00
    [  176.479003] mmcblk1: retrying using single block read
    [  176.659851] mmcblk1: error -84 transferring data, sector 888, nr 8, cmd response 0x900, card status 0xb00
    [  176.669982] mmcblk1: retrying using single block read
    [  176.858795] FAT-fs (mmcblk1): bogus number of reserved sectors
    [  176.865081] FAT-fs (mmcblk1): Can't find a valid FAT filesystem
    [  176.874694] EXT4-fs (mmcblk1): VFS: Can't find ext4 filesystem
    [  176.882965] EXT3-fs (mmcblk1): error: can't find ext3 filesystem on dev mmcblk1.
    [  176.893402] EXT2-fs (mmcblk1): error: can't find an ext2 filesystem on dev mmcblk1.
    [  176.908935] cramfs: wrong magic
    [  176.915100] FAT-fs (mmcblk1): bogus number of reserved sectors
    [  176.921356] FAT-fs (mmcblk1): Can't find a valid FAT filesystem
    [  177.056671] mmcblk1boot1: error -84 transferring data, sector 0, nr 32, cmd response 0x900, card status 0xb00
    [  177.067199] mmcblk1boot1: retrying using single block read
    [  177.526794] FAT-fs (mmcblk1boot0): bogus number of reserved sectors
    [  177.533355] FAT-fs (mmcblk1boot0): Can't find a valid FAT filesystem
    [  177.548553] EXT4-fs (mmcblk1boot0): VFS: Can't find ext4 filesystem
    [  177.563140] FAT-fs (mmcblk1boot1): bogus number of reserved sectors
    [  177.569885] FAT-fs (mmcblk1boot1): Can't find a valid FAT filesystem
    [  177.578277] EXT3-fs (mmcblk1boot0): error: can't find ext3 filesystem on dev mmcblk1boot0.
    [  177.587615] EXT4-fs (mmcblk1boot1): VFS: Can't find ext4 filesystem
    [  177.596069] EXT2-fs (mmcblk1boot0): error: can't find an ext2 filesystem on dev mmcblk1boot0.
    [  177.605957] EXT3-fs (mmcblk1boot1): error: can't find ext3 filesystem on dev mmcblk1boot1.
    [  177.617431] EXT2-fs (mmcblk1boot1): error: can't find an ext2 filesystem on dev mmcblk1boot1.
    [  177.629791] cramfs: wrong magic
    [  177.634399] FAT-fs (mmcblk1boot0): bogus number of reserved sectors
    [  177.641113] FAT-fs (mmcblk1boot0): Can't find a valid FAT filesystem
    [  177.674560] cramfs: wrong magic
    [  177.679504] FAT-fs (mmcblk1boot1): bogus number of reserved sectors
    [  177.686218] FAT-fs (mmcblk1boot1): Can't find a valid FAT filesystem

    ls /dev/mmcblk*
    /dev/mmcblk0       /dev/mmcblk0p2     /dev/mmcblk1boot0
    /dev/mmcblk0p1     /dev/mmcblk1       /dev/mmcblk1boot1

    mmcblk1 is eMMC.

    fdisk -l /dev/mmcblk1

    Disk /dev/mmcblk1: 7801 MB, 7801405440 bytes
    4 heads, 16 sectors/track, 238080 cylinders, total 15237120 sectors
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk identifier: 0x00000000

    Disk /dev/mmcblk1 doesn't contain a valid partition table

    Now I want create partition but error occurred:

    fdisk /dev/mmcblk1
    Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
    Building a new DOS disklabel with disk identifier 0x16a71a89.
    Changes will remain in memory only, until you decide to write them.
    After that, of course, the previous content won't be recoverable.

    Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

    Command (m for help): n
    Command action
       e   extended
       p   primary partition (1-4)
    p
    Partition number (1-4, default 1):
    Using default value 1
    First sector (2048-15237119, default 2048):
    Using default value 2048
    Last sector, +sectors or +size{K,M,G} (2048-15237119, default 15237119):
    Using default value 15237119

    Command (m for help): w
    The partition table has been alt[  694.069091] mmcblk1: error -84 transferring data, sector 0, nr 8, cmd response 0x900, card status 0xd00
    ered!

    [  694.080322] end_request: I/O error, dev mmcblk1, sector 0
    [  694.086791] Buffer I/O error on device mmcblk1, logical block 0
    [  694.093109] lost page write due to I/O error on mmcblk1
    Calling ioctl() to re-read parti[  695.133911]  mmcblk1: unknown partition table
    tion table.

    Error closing file

    What I miss?

    May be it is a problem with physical connection to eMMC.

    BR

  • My eMMC is MTFC8GLVEA-4M IT MMC standard version 4.41-compliant.

    In sprugn4r said:

    NOTE: MMC/e.MMC compliancy versus the Multimedia Card System Specification, v4.3 (or v4.4):
    Full compliance with the MMC command/response sets and MMC bus testing procedure, as
    defined in the Multimedia Card System Specification, v4.2, does not prevent the use of
    e.MMC version 4.3 (or 4.4) devices with the OMAP36xx, because e.MMC devices are
    backward compatible. Only the e.MMC version 4.3 (or 4.4) boot operation is not supported in
    the OMAP36xx. Boot operation in the OMAP36xx follows the TI booting scheme, ID booting
    from standard memory array.

    Does it mean that I can use MTFC8GLVEA-4M to store data but can't boot from here?

  • Yes, it won't be able to support booting from eMMC but store data. 

  • Can I use eMMC version 4.3 (or 4.4) to boot from MMC2 port?

  • 4.3 will be safer. I'm not really sure about 4.4 support, since OMAP3 is older.

  • I successfully boot from MTFC8GLVEA-4M eMMC on MMC1.


    But one problem was:
    if sysboot config is USB-UART3-MMC1-MMC2. bootloader doesn't load MLO from fat partition.
    if sysboot config is MMC1-USB-UART3. bootloader load MLO from fat partition.

  • Michael2,

     

    So you were able to boot from eMMC when using a FAT partition correct?  This would make sense since your device supports the 4.2 specification.  I'm not sure why it behaves different for the two different sysboot configs.  You could hook up the JTAG debugger and use CCS to see at least where the boot ROM code is ending up.