硅天下科技

硅天下科技

1个粉丝

38

问答

0

专栏

9

资料

硅天下科技  发布于  2020-08-27 15:56:40
采纳率 0%
38个问答
3155

海思3559A EMMC读写API接口说明

   
一、Uboot阶段

1.1、mmc工具

uboot命令行阶段可以使用mmc命令进行读写
示例:(1)  read   

               mmc read 0 0x42000000 0x400  0x400

               md 0x42000000 0x100

           (2)write

               mmc write 0x42000000 0x0 0x800


1.2、 API接口

  参考cmd/mmc.c文件,有emmc的读写接口
示例:

struct mmc *mmc;

uint32_t *p =(uint32_t *)0x42000000;

uint32_t magic[10] = {0};

mmc = init_mmc_device(0x0, false);

blk_dread(mmc_get_blk_desc(mmc), 0x39800, 0x1, p);

printf("boot: read emmc magic =0x%x\n", *p);

二、Linux阶段

       由于EMMC是块设备,所以linux可以直接通过标准read write接口操作即可
eMMC 分区 读写样例

static int realrwdata(rwinfo *info)
{
    int device_fd = -1;
    device_fd = open(info->path, O_RDWR | O_SYNC);
    if (device_fd < 0) {
        return -1;
    }

    lseek(device_fd, info->rw_offset, SEEK_SET);

if(info->rw_type == DATA_W)
    info->data_size = write(device_fd, (char*)info->data_buf, info->rw_size);
else if(info->rw_type == DATA_R)
   info->data_size = read(device_fd, (char*)info->data_buf, info->rw_size);

    fsync(device_fd);
    close(device_fd);
    return info->data_size;
}

我来回答
回答1个
时间排序
认可量排序

wer

0个粉丝

2

问答

0

专栏

0

资料

wer 2022-09-29 11:43:56
认可0

0x39800 是表示从哪开始呢 这个是从分区的第一个算?

或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
+ 添加网盘链接/附件

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
相关问答
无更多相似问答 去提问
举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

易百纳技术社区