请问我想用am3352的mmc1连接emmc,读寄存器死机是什么原因?

请教各位大神!
      我现在有个am3352的自制板子,采用spIFlash启动。
      现又在mmc1接口上接了一个emmc,我修改uboot程序,现想实现一个最基本的通信
     第一步:mmc dev 1(切换到mmc1)
     第二部:mmcinfo
      现在卡在第一步就死机了
首先修改了mux
static struct module_pin_mux mmc1_pin_mux[] = {
        {OFFSET(gpmc_ad11), (MODE(2) | RXACTIVE | PULLUP_EN)},        /* MMC1_DAT3 */
        {OFFSET(gpmc_ad10), (MODE(2) | RXACTIVE | PULLUP_EN)},        /* MMC1_DAT2 */
        {OFFSET(gpmc_ad9), (MODE(2) | RXACTIVE | PULLUP_EN)},        /* MMC1_DAT1 */
        {OFFSET(gpmc_ad8), (MODE(2) | RXACTIVE | PULLUP_EN)},        /* MMC1_DAT0 */
        {OFFSET(gpmc_csn1), (MODE(2) | RXACTIVE | PULLUP_EN)},        /* MMC1_CLK */
        {OFFSET(gpmc_csn2), (MODE(2) | RXACTIVE | PULLUP_EN)},        /* MMC1_CMD */
        {OFFSET(gpmc_csn0), (MODE(7) | RXACTIVE | PULLUP_EN)},        /* MMC1_WP */
        {OFFSET(gpmc_advn_ale), (MODE(7) | RXACTIVE | PULLUP_EN)},        /* MMC1_CD */
        {OFFSET(mcasp0_aclkx), (MODE(6) | RXACTIVE| PULLUP_EN)},
        {-1},
};(注意这里用的GPMC_AD8-9-10-11引脚不是ad0。。。)



configure_module_pin_mux(mmc1_pin_mux);

定位 现在卡在了
mmc_init_setup这个函数
一到读mmc1的寄存器就挂了
static int mmc_init_setup(struct mmc *mmc)
{
        struct hsmmc *mmc_base = (struct hsmmc *)mmc->priv;
        unsigned int reg_val;
        unsigned int dsor;
        ulong start;
        mmc_board_init(mmc);
            writel(readl(&mmc_base->sysconfig) | MMC_SOFTRESET,
                &mmc_base->sysconfig);
        start = get_timer(0);
        while ((readl(&mmc_base->sysstatus) & RESETDONE) == 0) {
                if (get_timer(0) - start > MAX_RETRY_MS) {
                        printf("%s: timedout waiting for cc2!\n", __func__);
                        return TIMEOUT;
                }
        }。。。。。。。

。。。。。。。。。。。。

就到红色字体就挂了
请问可能是什么原因引起的???
我用的是ti-sdk-am335x-evm-06.00.00.00-Linux-x86-Install.bin

9 个回复