OpenEdv-开源电子网

标题: 裸跑 emmc读写高地址失败问题 [打印本页]

作者: kl_upc    时间: 2020-8-12 15:52
标题: 裸跑 emmc读写高地址失败问题
因为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);




作者: xiaotaotao    时间: 2020-8-12 15:52
kl_upc 发表于 2020-8-13 09:17
咱们例程不能增加emmc读写这块的例程吗

不是有SD卡读写吗?  这俩是一样的啊  分区、格式化、挂载
作者: 正点原子    时间: 2020-8-13 01:52
帮顶
作者: kl_upc    时间: 2020-8-13 09:17
正点原子 发表于 2020-8-13 01:52
帮顶

咱们例程不能增加emmc读写这块的例程吗
作者: kl_upc    时间: 2020-8-13 10:04
xiaotaotao 发表于 2020-8-13 09:25
不是有SD卡读写吗?  这俩是一样的啊  分区、格式化、挂载

你测试过吗?emmc裸跑不支持文件系统吧
作者: xiaotaotao    时间: 2020-8-13 15:57
kl_upc 发表于 2020-8-13 10:04
你测试过吗?emmc裸跑不支持文件系统吧

可以支持的
作者: kl_upc    时间: 2020-8-15 08:54
xiaotaotao 发表于 2020-8-13 15:57
可以支持的

把sd的文件系统示例,在emmc上用不行啊
作者: kl_upc    时间: 2020-8-15 09:27
xiaotaotao 发表于 2020-8-13 15:57
可以支持的

有没有个简单的例程,文件系统实现读写emmc
作者: kl_upc    时间: 2020-8-17 14:05
本帖最后由 kl_upc 于 2020-8-18 09:23 编辑

利用文件系统格式化一下




欢迎光临 OpenEdv-开源电子网 (http://47.111.11.73/) Powered by Discuz! X3.4