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呢?
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.
你好,前面可能表述不太清楚,我再描述一下问题:
(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,所以卡死
在这里了。
请问是什么原因?比较急,谢谢
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卡的硬件问题?
谢谢
至于你给的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