初级会员
- 积分
- 110
- 金钱
- 110
- 注册时间
- 2015-1-13
- 在线时间
- 15 小时
|
1金钱
因为linux系统不擅长,所以采用裸核;EMMC初始化后进行读写,读写基地址为0或者较小值就读写一致,高于8M就读写失败(返回1)是什么原因:
开发板上带emmc但没有讲解emmc读写的例程和使用教程呢?
有没有做过类似研究的。
s32 Status;
//初始化
EMMC_Config= XSdPs_LookupConfig(XPAR_PS7_SD_0_DEVICE_ID);
Status = XSdPs_CfgInitialize(&ps7_EMMC, EMMC_Config, EMMC_Config->BaseAddress); //默认时钟400K,块512字节,
if (Status != XST_SUCCESS)
{
print("EMMC Config failed !\n\r");
return XST_FAILURE;
}
Status=XSdPs_MmcCardInitialize(&ps7_EMMC);
if (Status != XST_SUCCESS)
{
print("EMMC Config failed !\n\r");
return XST_FAILURE;
}
Status=XSdPs_Change_ClkFreq(&ps7_EMMC,EMMC_CLK);
Status=XSdPs_Select_Card(&ps7_EMMC);
Status=XSdPs_SetBlkSize(&ps7_EMMC,XSDPS_BLK_SIZE_512_MASK); //设置每次读写块的大小,512字节一个块
Status=XSdPs_Get_Mmc_ExtCsd(&ps7_EMMC,Emmc_ExtCsd);
//写入
Status = XSdPs_WritePolled(&ps7_EMMC, 0x800000, 1, WR_Buf); //地址、块的数量、数据
//读取
Status = XSdPs_ReadPolled(&ps7_EMMC, 0x800000, 1, RD_Buf);
|
|