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.

am3352是否支持emmc5.1

Other Parts Discussed in Thread: AM3352

am3352,之前用的emmc4.41,sdk是am335x-evm-sdk-src-06.00.00.00,可以从tf卡启动;

但是现在改用emmc5.1后,sdk没变,从tf卡启动时,报错:mmc1:unrecognised EXT_CSD revision 8.

看起来应该是识别不了新版emmc,请教这个问题该怎么解决?am3352是否支持emmc5.1呢?

  • 看了一下官方最新sdk应该是 am335x-sdk 08_00_00_00,好像也是不支持emmc5.1的

  • 你是接到MMC1这个接口么?驱动需要修改下, 请参考:

    http://www.deyisupport.com/question_answer/dsp_arm/sitara_arm/f/25/t/73278.aspx?pi2132219853=2

  • 你好,意思是只改SDK06里面的\drivers\mmc\core\mmc.c这个文件就行了吧

    但内核或者驱动的其他部分不需要对应修改吗,这样会不会存在其他问题,谢谢

  • 我的板子上tf卡接在MMC0接口,emmc接在MMC1接口,现在设备上emmc是空的,系统从tf卡启动,但是内核启动日志中

    显示只能发现mmc1,导致一直卡在rootfs那里,这个问题的原因是emmc5.1的必须接在MMC1接口上吗?谢谢

  • 你好,前面可能表述不太清楚,我再描述一下问题:

    (1)am3352,emmc4.41(emmc未烧录程序),tf卡接在MMC0接口,sdk是6.0,可以从tf卡正常启动;

    (2)将emmc改为emmc5.1(emmc未烧录程序),其他硬件都没变,软件也是一样的,但从tf卡启动不了,看内核启动日志,只发现了

    emmc设备,标记为mmcblk0:mmc1,没有发现tf卡,但tf卡的uboot设置的rootfs是mmcblk0p2,所以卡死

    在这里了。

    请问是什么原因?比较急,谢谢

  • 再和你确认下,你最终是想从哪里启动?tf卡还是eMMC?

    emmc接到mmc1上是正确的,我给你发的那个驱动也是要修改的。

  • 我是想从tf卡启动,驱动已经改了,现在的问题是我不知道为啥换了新版本eMMC后,从tf卡

    启动就卡死了?具体现象就是我上一个回复里面描述的。谢谢

  • 你看一下我给你发的文档,如果要使用emmc,需要内核加载驱动,并且格式化烧录文件系统,emmc5.51还要修改那块代码。

    很奇怪你为什么不直接从emmc启动?

  • 你好,是这样的。

    1、我的是新板子,流程是这样,想先从tf卡启动,然后启动后有自动脚本会向emmc烧写内核、文件系统那些,完成后再从emmc启动;

    2、你说的“emmc5.51还要修改那块代码“,是指的tf卡上的内核程序还要修改吗?那具体怎么修改啊?

    谢谢

  • 1. 你想做的这些东西参考我这个文档就是了:http://www.deyisupport.com/question_answer/dsp_arm/sitara_arm/f/25/t/73278.aspx

    2. 就是修改这个文档里所说的:

    目前市面上的eMMC更多的都是eMMC v5.0的,如果是SDK06及以前的版本,需要修改驱动文件\drivers\mmc\core\mmc.c中的mmc_read_ext_csd()函数如下:

    static int mmc_read_ext_csd(struct mmc_card *card, u8 *ext_csd)
    {
    int err = 0, idx;
    unsigned int part_size;
    u8 hc_erase_grp_sz = 0, hc_wp_grp_sz = 0;
    BUG_ON(!card);
    ・・・
    card->ext_csd.rev = ext_csd[EXT_CSD_REV];
    // if (card->ext_csd.rev > 6) {
    if (card->ext_csd.rev > 7) {
    pr_err("%s: unrecognised EXT_CSD revision %d¥n",
    mmc_hostname(card->host), card->ext_csd.rev);
    err = -EINVAL;
    goto out;
    }
    ・・・
    }

  • 你好,我们的生产流程不会在pc上用usb烧,我们是先插入tf卡启动,然后自动烧录emmc的方式,所以你的烧录方式不大适用。

    还有有几个疑问:

    1、mmc.c中之前就已经按照你说的那样改了,emmc也在tf卡的uboot中用mmc命令格式化了;

    2、从tf卡启动后的日志如下:

      ……

    [ 1.389373] print_constraints: DCDC1: 900 <--> 1800 mV at 1500 mV
    [ 1.398925] print_constraints: DCDC2: 900 <--> 3300 mV at 1100 mV
    [ 1.408386] print_constraints: DCDC3: 900 <--> 1500 mV at 1100 mV
    [ 1.417785] print_constraints: LDO1: 1000 <--> 3300 mV at 1800 mV
    [ 1.427215] print_constraints: LDO2: 900 <--> 3300 mV at 3300 mV
    [ 1.436523] print_constraints: LDO3: 1800 <--> 3300 mV at 1800 mV
    [ 1.445983] print_constraints: LDO4: 1800 <--> 3300 mV at 3300 mV
    [ 1.454101] omap_hsmmc.0: alias fck already exists
    [ 1.460021] omap_hsmmc.1: alias fck already exists
    [ 1.465972] omap_i2c.3: alias fck already exists
    [ 1.471710] omap_i2c omap_i2c.3: bus 3 rev2.4.0 at 100 kHz
    [ 1.482604] registered am33xx_sr device
    [ 1.490631] mtdoops: mtd device (mtddev=name/number) must be supplied
    [ 1.498413] omap2-nand driver initializing
    [ 1.503204] OneNAND driver initializing
    [ 1.510131] CAN device driver interface
    [ 1.514251] CAN bus driver for Bosch D_CAN controller 1.0
    [ 1.562561] davinci_mdio davinci_mdio.0: davinci mdio revision 1.6
    [ 1.569152] davinci_mdio davinci_mdio.0: detected phy mask fffffffe
    [ 1.576995] davinci_mdio.0: probed
    [ 1.580627] davinci_mdio davinci_mdio.0: phy[0]: device 0:00, driver SMSC LAN8710/LAN8720
    [ 1.590087] usbcore: registered new interface driver zd1201
    [ 1.596435] usbcore: registered new interface driver cdc_ether
    [ 1.603027] usbcore: registered new interface driver cdc_eem
    [ 1.609375] usbcore: registered new interface driver dm9601
    [ 1.615417] cdc_ncm: 04-Aug-2011
    [ 1.619201] usbcore: registered new interface driver cdc_ncm
    [ 1.625274] Initializing USB Mass Storage driver...
    [ 1.630950] usbcore: registered new interface driver usb-storage
    [ 1.637390] USB Mass Storage support registered.
    [ 1.643310] mousedev: PS/2 mouse device common for all mice
    [ 1.651519] omap_rtc am33xx-rtc: rtc core: registered am33xx-rtc as rtc0
    [ 1.658752] am33xx-rtc: already running
    [ 1.663299] i2c /dev entries driver
    [ 1.668395] Linux video capture interface: v2.00
    [ 1.674072] usbcore: registered new interface driver uvcvideo
    [ 1.680175] USB Video Class driver (1.1.1)
    [ 1.688751] OMAP Watchdog Timer Rev 0x01: initial timeout 60 sec
    [ 1.697723] cpuidle: using governor ladder
    [ 1.703277] cpuidle: using governor menu
    [ 1.713104] omap4_aes_mod_init: loading AM33X AES driver
    [ 1.718963] omap4-aes omap4-aes: AM33X AES hw accel rev: 3.02
    [ 1.726348] omap4_aes_probe: probe() done
    [ 1.731079] omap4_sham_mod_init: loading AM33X SHA/MD5 driver
    [ 1.737487] omap4-sham omap4-sham: AM33X SHA/MD5 hw accel rev: 4.03
    [ 1.781860] omap4_sham_probe: probe() done
    [ 1.791595] usbcore: registered new interface driver usbhid
    [ 1.797607] usbhid: USB HID core driver
    [ 1.803497] usbcore: registered new interface driver snd-usb-audio
    [ 1.813781] ALSA device list:
    [ 1.816955] No soundcards found.
    [ 1.820556] oprofile: hardware counters not available
    [ 1.826019] oprofile: using timer interrupt.
    [ 1.830596] nf_conntrack version 0.5.0 (3957 buckets, 15828 max)
    [ 1.837951] ip_tables: (C) 2000-2006 Netfilter Core Team
    [ 1.843872] TCP cubic registered
    [ 1.847320] NET: Registered protocol family 17
    [ 1.852050] can: controller area network core (rev 20090105 abi 8)
    [ 1.858825] NET: Registered protocol family 29
    [ 1.863555] can: raw protocol (rev 20090105)
    [ 1.868103] can: broadcast manager protocol (rev 20090105 t)
    [ 1.874237] Registering the dns_resolver key type
    [ 1.879333] VFP support v0.3: implementor 41 architecture 3 part 30 variant c rev 3
    [ 1.887512] ThumbEE CPU extension supported.
    [ 1.892150] mux: Failed to setup hwmod io irq -22
    [ 1.898498] Power Management for AM33XX family
    [ 1.903625] Trying to load am335x-pm-firmware.bin (60 secs timeout)
    [ 1.910522] Copied the M3 firmware to UMEM
    [ 1.915100] Cortex M3 Firmware Version = 0x181
    [ 1.921234] create_regulator: DCDC2: Failed to create debugfs directory
    [ 1.929290] smartreflex smartreflex: am33xx_sr_probe: Driver initialized
    [ 1.937530] mmc1: new high speed MMC card at address 0001
    [ 1.951873] clock: disabling unused clocks to save power
    [ 1.958526] mmcblk0: mmc1:0001 8GME4R 7.28 GiB
    [ 1.963989] mmcblk0boot0: mmc1:0001 8GME4R partition 1 4.00 MiB
    [ 1.970520] mmcblk0boot1: mmc1:0001 8GME4R partition 2 4.00 MiB
    [ 1.979827] mmcblk0: unknown partition table
    [ 1.989288] mmcblk0boot1: unknown partition table
    [ 1.997894] mmcblk0boot0: unknown partition table
    [ 2.027404] Detected MACID=a0:f6:fd:59:2a:4e
    [ 2.034210] cpsw: Detected MACID = a0:f6:fd:59:2a:50
    [ 2.041687] omap_rtc am33xx-rtc: setting system clock to 2000-01-01 01:00:27 UTC (946688427)
    [ 2.051879] VFS: Cannot open root device "mmcblk0p2" or unknown-block(179,2)
    [ 2.059478] Please append a correct "root=" boot option; here are the available partitions:
    [ 2.068389] b300 7634944 mmcblk0 driver: mmcblk
    [ 2.074096] b310 4096 mmcblk0boot1 (driver?)
    [ 2.079742] b308 4096 mmcblk0boot0 (driver?)
    [ 2.085418] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(179,2)

    [ 2.094421] Backtrace:
    [ 2.097076] [<c0017dbc>] (dump_backtrace+0x0/0x10c) from [<c0413448>] (dump_stack+0x18/0x1c)
    [ 2.106079] r6:00008001 r5:c04f5ee0 r4:c063dd88 r3:c05f4b0c
    [ 2.112152] [<c0413430>] (dump_stack+0x0/0x1c) from [<c0413644>] (panic+0x64/0x194)
    [ 2.120361] [<c04135e0>] (panic+0x0/0x194) from [<c0596c88>] (mount_block_root+0x174/0x228)
    [ 2.129272] r3:00000004 r2:00000000 r1:cf01df40 r0:c04f5ee0
    [ 2.135314] r7:c04f5f48
    [ 2.138061] [<c0596b14>] (mount_block_root+0x0/0x228) from [<c0596ef0>] (mount_root+0xc8/0xe8)
    [ 2.147247] [<c0596e28>] (mount_root+0x0/0xe8) from [<c059707c>] (prepare_namespace+0x16c/0x1c0)
    [ 2.156585] r4:c063b0e0
    [ 2.159301] [<c0596f10>] (prepare_namespace+0x0/0x1c0) from [<c05968fc>] (kernel_init+0xf4/0x120)
    [ 2.168731] r5:c05d05c4 r4:c05d05c4
    [ 2.172576] [<c0596808>] (kernel_init+0x0/0x120) from [<c00412c4>] (do_exit+0x0/0x65c)
    [ 2.181030] r5:c0596808 r4:00000000

    从上面的日志看,只发现了emmc,没有发现tf卡,是否表明该问题和emmc没有关系,是tf卡的硬件问题?

    谢谢

  • 你仔细看我给你的文档,后面有SD卡的烧写方式。

    你是用SDK06做的么?

  • 你好,是sdk06

    你文档中说“可将 SDK06 自带的 prebuild image 中的 MLO,u-boot.img,uImage 以及上一章提到的用于烧写 eMMC 的文件系统烧写到 SD 卡中”,

    这个prebuild image的内容在哪里获取?谢谢

  • 在sdk_6.0_bin中已经找到prebuild image,但是没法直接用,因为我们的板子上没有eeprom,所以启动时就报“Could not read the EEPROM”,

    还得从sdk6.0源码编译这些东西,编译时跳过EEPROM的检查,编译生成的文件在之前的emmc4.41的板子上是验证过可以正常从tf卡起来的,

    但现在不能在emmc5.1的板子上从tf卡启动。

    能从之前发出的内核启动日志中看出可能是什么原因吗?谢谢

  • 至于你给的log信息中,只能看出在挂fs的时候挂了,缺失了kernel启动前面的log部分,那段里面有关于fs挂载的环境设置,这个看不到,不确定你的挂载环境变量是否设置的正确。

    不过,你现在主要问题应该是不能从TF卡启动,而且貌似你rootfs里面的东西没被识别。这个TF卡根据你的描述应该是一直在MMC0上放着的,没道理只认得第一个分区。所以现在uboot里面访问一下你的rootfs分区中的文件,看看是否能正常的访问,如果不行的话,重新格式化下你的tf再来挂试试。

    另外,看你是从tf启动往eMMC里面进行烧录的,不是已经有现成的脚本可以使用吗?参考如下:

    https://github.com/RobertCNelson/tools/blob/master/scripts/beaglebone-black-copy-microSD-to-eMMC.sh

  • 问题已经解决了,原因是tf卡线路的一个电阻接错了,替换后就好了。

    谢谢