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

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

Nancy Wang:

dts文件中有没有做相应的配置?自制的板子是参考的开发板设计的吗?

jiawei zhang:

回复 Nancy Wang:

我用的是ti-sdk-am335x-evm-06.00.00.00-Linux-x86-Install.bin
dts文件夹下只有一个makefile。。。

Nancy Wang:

回复 jiawei zhang:

arch\arm\dts\am335x-evm.dts没有吗?

jiawei zhang:

回复 Nancy Wang:

没有

jiawei zhang:

回复 jiawei zhang:

我现在用官网下载的ti-sdk-am335x-evm-06.00.00.00-Linux-x86-Install.bin 放到开发板上 启动到uboot后
发送指令:mmc dev 1 同样也是在读首个寄存器地址的时候跑飞。。。

yongqing wang:

回复 jiawei zhang:

你是参看哪款板子做的?

jiawei zhang:

回复 yongqing wang:

TMDSSK3358 – AM335x Starter Kit紫色的那个开发板
我用开发板原装自带的uboot 在紫色的这个开发板上使用 的时候
当我在uboot下 发送 mmc dev 1 这个指令的时候也是同样的现象都是跑到这个地方飞了
用的sdk版本是ti-sdk-am335x-evm-06.00.00.00-Linux-x86-Install.bin
设备树下也没有相关的配置地方。。。

yongqing wang:

回复 jiawei zhang:

出错提示信息是啥

jiawei zhang:

回复 yongqing wang:

readl(&mmc_base->sysconfig)读到这个mmc1的寄存器地址 就卡住了
这个问题很好复现 只要用3358那个紫色的官方开发板直接上电跑uboot输入mmc dev 1 就能复现

赞(0)
未经允许不得转载:TI中文支持网 » 请问我想用am3352的mmc1连接emmc,读寄存器死机是什么原因?
分享到: 更多 (0)