TI中文支持网
TI专业的中文技术问题搜集分享网站

am335x 内核启动问题

我们用TMDXEVM3358作为参考做的一个板子,之前用的SDK太旧,需要更新到最新的SDK。我修改了u-boot里关于eeprom的代码:

ep->header = 0xEE3355AA;

strlcpy(ep->name, "A335X_SK", TI_EEPROM_HDR_NAME_LEN + 1);//这里不太确定用A335X_SK,还是应该填写其他的?一直不知道如何让系统调用evm.dtb,而不是调用evmsk.dtb

编译宏用的是:

UBOOT_MACHINE=am335x_evm_config

另外SD卡的管脚已经确认。内核启动到这里就不动了,不知道为啥!

1.196870] libphy: 4a101000.mdio: probed
[ 1.200935] davinci_mdio 4a101000.mdio: phy[1]: device 4a101000.mdio:01, driver NS DP83848C 10/100 Mbps PHY
[ 1.211549] cpsw 4a100000.ethernet: Detected MACID = 54:4a:16:ce:25:a9
[ 1.218357] cpsw 4a100000.ethernet: device node lookup for pps timer failed
[ 1.225511] cpsw 4a100000.ethernet: cpts: overflow check period 500 (jiffies)
[ 1.233771] cpsw 4a100000.ethernet: cpsw: Detected MACID = 54:4a:16:ce:25:ab
[ 1.242330] mousedev: PS/2 mouse device common for all mice
[ 1.248410] i2c /dev entries driver
[ 1.253791] cpuidle: enable-method property 'ti,am3352' found operations
[ 1.261473] omap_hsmmc 48060000.mmc: Got CD GPIO
[ 1.268773] ledtrig-cpu: registered to indicate activity on CPUs
[ 1.277849] NET: Registered protocol family 10
[ 1.283831] sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver
[ 1.290592] NET: Registered protocol family 17
[ 1.295456] Key type dns_resolver registered
[ 1.299994] omap_voltage_late_init: Voltage driver support not added
[ 1.343700] tps65910 0-002d: No interrupt support, no core IRQ
[ 1.350663] tps65910 0-002d: Error in configuring external control EN1
[ 1.357270] tps65910 0-002d: Failed to initialise ext control config
[ 1.363786] vrtc: supplied by vbat
[ 1.367398] vrtc: failed to enable
[ 1.370825] tps65910 0-002d: failed to register tps65910-pmic regulator
[ 1.377537] tps65910-pmic: probe of tps65910-pmic failed with error -121
[ 1.385091] omap_i2c 44e0b000.i2c: bus 0 rev0.11 at 400 kHz
[ 1.391520] omap_hsmmc 48060000.mmc: Got CD GPIO
[ 1.544382] omap_hsmmc 48060000.mmc: Got CD GPIO
[ 1.550831] input: gpio_buttons0 as /devices/platform/gpio_buttons0/input/input0
[ 1.559812] omap_hsmmc 48060000.mmc: Got CD GPIO
[ 1.565670] hctosys: unable to open rtc device (rtc0)
[ 1.568259] lis3_reg: disabling
[ 1.568266] ALSA device list:
[ 1.568270] No soundcards found.
[ 1.584840] Waiting for root device PARTUUID=088ac1f4-02…
[ 2.273518] random: fast init done
[ 184.914669] random: crng init done

lin yang39:

补充下我用SDK是ti-processor-sdk-linux-am335x-evm-04.03.00.05,

yongqing wang:

回复 lin yang39:

实时这个补丁:e2e.ti.com/…/0001_2D00_Hardcode_2D00_EEPROM_2D00_board_2D00_name_2D00_to_2D00_A335BNLT.patch

lin yang39:

回复 yongqing wang:

谢谢,可是这个已经改过了,

Shine:

请问板子在之前老版本的SDK上更改EEPROM是好的?只是换到新版本的SDK上才出现这个问题?

lin yang39:

回复 Shine:

是的,旧版本的SDK没有那么多型号,也没有用设备树,是可以用的。硬件没问题。

lin yang39:

回复 yongqing wang:

strlcpy(ep->name, "—–", TI_EEPROM_HDR_NAME_LEN + 1);//这里应该填写什么才能让系统调用am335x-evm.dtb

lin yang39:

回复 Shine:

这两天一直卡在这里,依然没什么特殊进展。不过我看内核代码发现是卡在:
init/do_mounts.c
函数void __init prepare_namespace(void)的:/* wait for any asynchronous scanning to complete */if ((ROOT_DEV == 0) && root_wait) {printk(KERN_INFO "Waiting for root device %s…\n",saved_root_name);while (driver_probe_done() != 0 ||(ROOT_DEV = name_to_dev_t(saved_root_name)) == 0)msleep(100);/////////////////////////////////////////////////////////////////死循环在这里,说明条件一直不满足async_synchronize_full();}
继续跟踪发现driver_probe_done()是满足的,是(ROOT_DEV = name_to_dev_t(saved_root_name)) == 0)不满足。
这个函数一直跟踪下去发现是如下函数一直返回异常:
static int match_dev_by_uuid(struct device *dev, const void *data)
{const struct uuidcmp *cmp = data;struct hd_struct *part = dev_to_part(dev);
if (!part->info)/////////这里一直不满足。goto no_match;
if (strncasecmp(cmp->uuid, part->info->uuid, cmp->len))goto no_match;
return 1;
no_match:return 0;
}
通过阅读代码,大概知道是内核启动时没有分区信息,但LOG里没有发现类似异常信息.TI技术支持大牛有什么建议吗?后面不知道怎么弄了!
另外MMC的porbe函数omap_hsmmc_probe执行是OK的,么有什么异常。疑问是为什么hd_struct的info一直为空呢?哪里出了问题?

lin yang39:

回复 lin yang39:

我将while (driver_probe_done() != 0 ||
(ROOT_DEV = name_to_dev_t(saved_root_name)) == 0)
msleep(100);这里强制打开,启动系统出现崩溃,long如下:
[2.675866] VFS: Cannot open root device "PARTUUID=46c14ca8-02" or unknown-block(0,0): error -6
[2.684681] Please append a correct "root=" boot option; here are the available partitions:
[2.693077] 010065536 ram0 [2.696697](driver?)
[2.699071] 010165536 ram1 [2.702655](driver?)
[2.705053] 010265536 ram2 [2.708639](driver?)
[2.711008] 010365536 ram3 [2.714604](driver?)
[2.716975] 010465536 ram4 [2.720560](driver?)
[2.722928] 010565536 ram5 [2.726523](driver?)
[2.728894] 010665536 ram6 [2.732477](driver?)
[2.734889] 010765536 ram7 [2.738474](driver?)
[2.740843] 010865536 ram8 [2.744441](driver?)
[2.746812] 010965536 ram9 [2.750396](driver?)
[2.752765] 010a65536 ram10 [2.756447](driver?)
[2.758818] 010b65536 ram11 [2.762489](driver?)
[2.764869] 010c65536 ram12 [2.768540](driver?)
[2.770909] 010d65536 ram13 [2.774591](driver?)
[2.776961] 010e65536 ram14 [2.780631](driver?)
[2.783001] 010f65536 ram15 [2.786716](driver?)
[2.789092] Kernel panic – not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
[2.797399] —[ end Kernel panic – not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
[3.513362] random: fast init done
[129.583408] random: crng init done

lin yang39:

回复 Shine:

发现我的情况和论坛上,e2e.ti.com/…/609875
也就是说有更好的屏蔽或者忽略电源管理这块功能吗?

赞(0)
未经允许不得转载:TI中文支持网 » am335x 内核启动问题
分享到: 更多 (0)