Chinaunix

标题: UBOOT中添加MMC.SD程序 [打印本页]

作者: hezhaoaqiang    时间: 2012-09-06 11:28
标题: UBOOT中添加MMC.SD程序
本帖最后由 hezhaoaqiang 于 2012-09-06 11:29 编辑

我从官网上下载了最新的bootloader,在lib_arm下的mmc_initialize()函数跳转到mmc.c中,函数如下
/*board.c*/
#ifdef CONFIG_GENERIC_MMC  //配置文件中有定义
    puts("MMC: hezhao test mmc init \n");
    mmc_initialize (gd->bd);              /* go init the MMC */
#endif       
/*mmc.c*/
static int __def_mmc_init(bd_t *bis)
{
        puts("def_mmc_init--board_mmc_init\n");

        return -1;
}
int cpu_mmc_init(bd_t *bis) __attribute__((weak, alias("__def_mmc_init")));
int board_mmc_init(bd_t *bis) __attribute__((weak, alias("__def_mmc_init")));

int mmc_initialize(bd_t *bis)
{
        int ret = 0;  //我定义的一个测试变量
       
        INIT_LIST_HEAD (&mmc_devices);
        cur_dev_num = 0;
       
        ret = board_mmc_init(bis);

        printf("the test ret result is : %d\n", ret);
               
        print_mmc_devices(',');

        return 0;
}

同时执行到此调用  board_mmc_init()函数,
#ifdef CONFIG_DAVINCI_MMC
static struct davinci_mmc mmc_sd0 = {
        .reg_base        = (struct davinci_mmc_regs *)DAVINCI_MMC_SD0_BASE,
        .input_clk        = 121500000,
        .host_caps        = MMC_MODE_4BIT,
        .voltages        = MMC_VDD_32_33 | MMC_VDD_33_34,
        .version        = MMC_CTLR_VERSION_2,
};

int board_mmc_init(bd_t *bis)
{
        int err;

        /* Add slot-0 to mmc subsystem */
                err = davinci_mmc_init(bis, &mmc_sd0);

        if(err)
                return err;

        return err;
}

#endif
经过我的测试,此程序 board_mmc_init()一直是返回 -1,不能进入Davinci_mmc_init()程序,对我的am1808进行初始化。不知道什么原因造成的。寻求高手求解……先谢谢各位了~~

作者: hezhaoaqiang    时间: 2012-09-06 11:42
我的板子用的是am1808,根据hawkboard的开发板做的。用的都是TI提供的一套东西,来对此进行开发。
问题补充:

UBOOT中MMC/SD的开发,他支持很多的芯片,那么在命令行中(common目录下),怎么调用不同的mmc初始化文件。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2