嵌入式linux mtd,嵌入式linux MTD么的读写

哪位大哥写过嵌入式的MTD编程,也就是linux下对FLASH 的读写,看了一下驱动源代码

其中写函数如下:

static ssize_t mtd_write(struct file *file, const char *buf, size_t count,loff_t *ppos)

{

struct mtd_info *mtd = (struct mtd_info *)file->private_data;

char *kbuf;

size_t retlen;

size_t total_retlen=0;

int ret=0;

int len;

DEBUG(MTD_DEBUG_LEVEL0,"MTD_write\n");

if (*ppos == mtd->size)

return -ENOSPC;

if (*ppos + count > mtd->size)

count = mtd->size - *ppos;

if (!count)

return 0;

while (count) {

if (count > MAX_KMALLOC_SIZE)

len = MAX_KMALLOC_SIZE;

else

len = count;

kbuf=kmalloc(len,GFP_KERNEL);

if (!kbuf) {

printk("kmalloc is null\n");

return -ENOMEM;

}

if (copy_from_user(kbuf, buf, len)) {

kfree(kbuf);

return -EFAULT;

}

ret = (*(mtd->write))(mtd, *ppos, len, &retlen, kbuf);

if (!ret) {

*ppos += retlen;

total_retlen += retlen;

count -= retlen;

buf += retlen;

}

else {

kfree(kbuf);

return ret;

}

kfree(kbuf);

}

return total_retlen;

} /* mtd_write */

可是我在应用程序里该怎么调用呀?

int mtfbuf[10]={1,2,3,4};

write(mtdfd,mtdbuf,5);

然后再读出来

read(mtdfd,mtdbuf,5);

读出来的mtdbuf[0]怎么不等于1呀?

--------------------next---------------------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值