使用starterware函数HSMMCSDBusWidthSet(SOC_MMCHS_1_REGS,HS_MMCSD_BUS_WIDTH_8BIT);//8位宽度
当第一个参数为SOC_MMCHS_0_REGS时能够执行函数,当为SOC_MMCHS_1_REGS,出现
No source available for "0x4030fc10"
请问这是什么原因?emmc是用MMC1管脚。
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
使用starterware函数HSMMCSDBusWidthSet(SOC_MMCHS_1_REGS,HS_MMCSD_BUS_WIDTH_8BIT);//8位宽度
当第一个参数为SOC_MMCHS_0_REGS时能够执行函数,当为SOC_MMCHS_1_REGS,出现
No source available for "0x4030fc10"
请问这是什么原因?emmc是用MMC1管脚。
在前面的配置中,有使能MMC1相关的时钟域吗?
GPMCClkConfig(); //PinMux Configuration //MMC1_D0~D7 pull_up mode2 HWREG(SOC_CONTROL_REGS + CONTROL_CONF_GPMC_AD(8)) =0x00000012; HWREG(SOC_CONTROL_REGS + CONTROL_CONF_GPMC_AD(9)) =0x00000012; HWREG(SOC_CONTROL_REGS + CONTROL_CONF_GPMC_AD(10)) =0x00000012; HWREG(SOC_CONTROL_REGS + CONTROL_CONF_GPMC_AD(11)) =0x00000012; HWREG(SOC_CONTROL_REGS + CONTROL_CONF_GPMC_AD(12)) =0x00000012; HWREG(SOC_CONTROL_REGS + CONTROL_CONF_GPMC_AD(13)) =0x00000012; HWREG(SOC_CONTROL_REGS + CONTROL_CONF_GPMC_AD(14)) =0x00000012; HWREG(SOC_CONTROL_REGS + CONTROL_CONF_GPMC_AD(15)) =0x00000012;
//MMC1_CLK no_pull mode2 HWREG(SOC_CONTROL_REGS + CONTROL_CONF_GPMC_CSN(1)) =0x0000000A; //MMC1_CMD pull_up mode2 HWREG(SOC_CONTROL_REGS + CONTROL_CONF_GPMC_CSN(2)) =0x00000012;
HSMMCSDModuleClkConfig(); HSMMCSDBusPower(SOC_MMCHS_1_REGS, HS_MMCSD_BUS_POWER_ON);//emmc power on
HSMMCSDBusVoltSet(SOC_MMCHS_1_REGS,HS_MMCSD_BUS_VOLT_3P3);//power 3.3v
//clock 400kHZ or less HSMMCSDIntClock(SOC_MMCHS_1_REGS, HS_MMCSD_INTCLOCK_ON);
SysDelayTimerSetup();//系统延时时钟开启,定时器7 Sysdelay(1);//delay 1ms for (i=0; i<74; i++);//wait for 74 more clock cycles
HSMMCSDCommandSend(SOC_MMCHS_1_REGS, HS_MMCSD_CMD(MMCHS_CMD_INDX_CMD0, HS_MMCSD_CMD_TYPE_NORMAL, HS_MMCSD_NO_RESPONSE, HS_MMCSD_CMD_DIR_WRITE) ,0x00000000,NULL,MMCHS_BLK_BLEN_SHIFT,0);//send CMD0 ->IDLE State
Sysdelay(10);//延时 HSMMCSDCommandSend(SOC_MMCHS_1_REGS, HS_MMCSD_CMD(MMCHS_CMD_INDX_CMD1, HS_MMCSD_CMD_TYPE_NORMAL, HS_MMCSD_48BITS_BUSY_RESPONSE, HS_MMCSD_CMD_DIR_WRITE) ,0x00FF8000,NULL,MMCHS_BLK_BLEN_SHIFT,0);//send CMD1 Idle State->Ready State
HSMMCSDResponseGet(SOC_MMCHS_1_REGS,Response);//Receive R3 正确返回: 0x80FF8080和0x80FF8000 两种情况 while (Response[0]>>31 != 0x1)//busy { Emmc_Cmd1Send(); }
MMC1相关的时钟域是用哪个函数打开的?是需要在boot启动的时候进行操作吗?
你不是在调试MMC1的APP么,看截图的状态有些问题,截图里的指针是停在了内部的internal ram地址中?
你load完.out的程序后,指针能够停止在main函数处吗?可以单步跟踪debug吗?
MMC1clock的使能在CM_PER中,偏移量为0xF4h.
HWREG(0x44E00000 + 0xF4) = 0x00000002;
打开时钟后,可以对MMC1进行访问和操作。多谢Steven帮忙
HWREG(0x44E00000 + 0xF4) = 0x00000002;
打开mmc1时钟后。可以对MMC1进行访问和函数操作。多谢Steven帮忙