(担心回复uboot跑步起来的帖子会使得管理员看不见,所以新建此帖)
硬件 :自己设计的板子(参照英蓓特SBC8600B和官网am335xevm)
软件:ubuntu10.04 sdk6.0
现象: uboot2011.09可以运行,串口正常打印消息
uboot2013.01不能运行,串口不能打印消息
之前一直在试是不是新的uboot的ddr参数没有配置好,结果当我用此论坛测试DDR参数的MLO,英贝特SBC8600的MLO(与我的板子DDR厂家型号都不一样)串口都能打印东西出来,打印消息类似
U-Boot SPL 2013.01 (Sep 24 2014 - 21:58:36)
Texas Instruments Revision detection unimplemented
因为MLO是在cpu内部sram运行的,会配置debug uart0 ,然后在函数preloader_console_init()中打印以上信息,接着再配置ddr ,因此可以判断就算ddr没有配对,也能打印消息的
所以我认为是MLO文件没有正确运行起来,通常来讲,在串口打印第一个消息之前只有2个外设需要配置,一个是mmc/SD,一个是串口,仔细比对了2个uboot这部分代码的区别,就只有新的uboot里少了一个 {OFFSET(mcasp0_aclkr), (MODE(4) | RXACTIVE)}, /* MMC0_WP */的配置?
以下是新uboot的mmc配置:
static struct module_pin_mux mmc0_pin_mux_sk_evm[] = {
{OFFSET(mmc0_dat3), (MODE(0) | RXACTIVE | PULLUP_EN)}, /* MMC0_DAT3 */
{OFFSET(mmc0_dat2), (MODE(0) | RXACTIVE | PULLUP_EN)}, /* MMC0_DAT2 */
{OFFSET(mmc0_dat1), (MODE(0) | RXACTIVE | PULLUP_EN)}, /* MMC0_DAT1 */
{OFFSET(mmc0_dat0), (MODE(0) | RXACTIVE | PULLUP_EN)}, /* MMC0_DAT0 */
{OFFSET(mmc0_clk), (MODE(0) | RXACTIVE | PULLUP_EN)}, /* MMC0_CLK */
{OFFSET(mmc0_cmd), (MODE(0) | RXACTIVE | PULLUP_EN)}, /* MMC0_CMD */
{OFFSET(spi0_cs1), (MODE(5) | RXACTIVE | PULLUP_EN)}, /* MMC0_CD */
{-1},
};
我的编译环境应该没有问题,我的硬件应该至少在MLO运行阶段串口是好的,除此之外,uart的代码新旧uboot差别较大,不过个人感觉应该都没有问题。
今天晚上查的代码没法调试,明天看看。