TI论坛
直播中

xiaozeilang

13年用户 14经验值
擅长:基础元器件 操作系统/软件
私信 关注
[问答]

请问我想用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

回帖(1)

翁文奇

2020-7-8 16:07:01
这个可能是mmc1时钟没有打开,到clock.c中,使能时钟。
        /* MMC1*/
        writel(PRCM_MOD_EN, &cmper->mmc1clkctrl);
        while (readl(&cmper->mmc1clkctrl) != PRCM_MOD_EN)
                ;
举报

更多回帖

发帖
×
20
完善资料,
赚取积分