gpt4 book ai didi

linux - mmc写命令数据源从哪里来?

转载 作者:太空宇宙 更新时间:2023-11-04 11:21:18 25 4
gpt4 key购买 nike

我是引导加载程序领域的新手,我有一个问题,关于当我们发送写入命令时我们如何分配数据源,这与函数参数*src<有关/强>?我追踪了源代码,但找不到它在 C 代码中分配数据源的位置。

我自己回答:我发现当我们执行 #mmc write 1 0x4 2 时,参数表示 dev # 1, block # 4, count 2 如下函数的参数 mmc->block_dev.block_write(curr_device, blk, cnt, addr);

但是,我还是想知道,是否可以直接分配一个外部数据源?

mmc write 或mmc read 只能从内部存储器写入/读取吗?

是否可以分配外部数据源,例如 USB 端口或 SD 卡?

祝好。

static unsigned long mmc_bwrite(int dev_num, unsigned long start, lbaint_t blkcnt, const void *src){
int err;
struct mmc *mmc = find_mmc_device(dev_num);

if (!mmc) {
printf("MMC Device %d not found\n", dev_num);
return 0;
}

if (blkcnt > 1)
return mmc_bwrite_multi(mmc, start, blkcnt, src);
else if (blkcnt == 1)
return mmc_bwrite_single(mmc, start, src);

return 0;

我应该如何跟踪如下代码?

mmc->block_dev.block_write = mmc_bwrite;

最佳答案

src 是指向文件系统内部内存块的指针,如果您希望将数据从设备流式传输到 MMC,那么您将需要中间代码来缓冲该流内存并将其传递给高级文件系统写函数。您不应直接访问 mmc_write()

How should i trace code like below?

mmc->block_dev.block_write = mmc_bwrite;

那只是一个赋值,不是函数调用。 mmc_bwrite 是指向函数的指针:

mmc_bwrite(int dev_num, unsigned long start, lbaint_t blkcnt, const void *src)

这是一种在运行时将设备驱动程序实现 Hook 到文件系统的方法,而不是通过静态链接。在文件系统中,mmc_bwrite() 将通过 mmc->block_dev.block_write 而不是直接调用。所以

mmc->block_dev.block_write(curr_device, blk, cnt, addr);

实际上是对 mmc_bwrite() 的调用。

关于linux - mmc写命令数据源从哪里来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18101221/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com