首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 单片机 >

有关问题简单,回者有分——向/dev/mtdblock写入时遇到的有关问题

2012-12-23 
问题简单,回者有分——向/dev/mtdblock写入时遇到的问题本帖最后由 dongyang626 于 2012-11-14 09:33:40 编

问题简单,回者有分——向/dev/mtdblock写入时遇到的问题
本帖最后由 dongyang626 于 2012-11-14 09:33:40 编辑 各位好:
我现在kernel中升级系统(nor flash),目前做法是:使用dd命令,将镜像擦写至/dev/mtdblock*的
对应位置。(mtdblock2为rootfs扇区)
我发现向mtdblock写入数据,和实际FLASH被更新擦写是分开进行的。
一般在dd写入mtdblock几秒后,[mtdblockd]进程开始占用CPU,CPU一度到100%,此结束后,应该是
FLASH擦写完毕。
另,感觉[mtdblockd]进程的开始,是在我的程序执行完毕后才开始的(程序中用system()调用的dd),
如果我在程序中进行 sleep, 则在sleep时,[mtdblockd]也不会占用CPU

我现需要在dd后 读取/dev/mtdblock2中的内容,但[mtdblockd]在我的程序执行完毕后,才自己跑出
来占用CPU。 这样我在程序中无法读取更新过的mtdblock2的内容,无法验证其更新的正确性。
一直没看过MTD的实现原理,临时看有点无从下手, 请问如何能解决我目前遇到的问题?


[最优解释]
能否用同步读写操作试试。dd怎么实现的不了解。
[其他解释]
其实这是一个进程同步的问题。

system()调用系统命令,是在子进程中执行的。你当前的需求是要子进程执行完,主进程才能读数据。

你可以这样:
主进程fork出一个子进程,然后让子进程system(),主进程用wait等待这个子进程,就可以了。
[其他解释]
真的没人懂么,反正我是真的不懂,不懂的也敢来答呵,懂的赶紧都出来吧,不潜水了
回者有分,是不是真的,像我这样混的,也能有分?
[其他解释]

引用
mtdblockd]进程是在我的程序基本执行完了,才开始跑的! 

你试试在进程开始和main开始、结束处打印信息试试。
你只是觉得,验证过了吗。程序才不会那么做呢。它凭什么能那么做。
[其他解释]
路过,接分,,,
[其他解释]
我是来学习的。。。
[其他解释]
不懂 帮顶啦
[其他解释]
不懂,帮忙顶贴希望有会者给予解答
[其他解释]
帮忙顶贴肯定有分啦..  不过真心求正解啊...

我发现我发帖总是没人回...莫非是我没表达清楚意思? 
[其他解释]
引用:
能否用同步读写操作试试。dd怎么实现的不了解。


4楼是否说的是 sync?  
我用 system("sync");  可以实现对pdflush的调用么?
[其他解释]
其实这应该是一个“缓存和写磁盘”之间的问题(经分析、猜测也许大概应该是这样滴)
我这会在整理,弄完会把我的想法发上来。

对于system(),我这边的资料是这样介绍的:
(不能复制,纯手打...)system会调用fork()产生子进程,由子进程来调用/bin/sh -c  string来执行参数string字符串所代表的命令,此命令执行完后悔随即返回原调用的进程。
在调用system期间,GIGCHLD信号会被搁置,SIGINT,SIGQUIT信号则会被忽略。  ( 略去返回值部分讲解..) 

根据这段意思,result=system(dd if=... of=/dev/mtdblock2); 是返回了的,而且检测result也是执行正确的。
根据top观察cpu占用,也是这个样子滴! [mtdblockd]进程是在我的程序基本执行完了,才开始跑的! 

所以貌似6楼错了, 真心没这么简单啊~~~~
[其他解释]
该回复于2012-11-19 16:57:18被管理员删除
[其他解释]
引用:
引用
mtdblockd]进程是在我的程序基本执行完了,才开始跑的! 
你试试在进程开始和main开始、结束处打印信息试试。
你只是觉得,验证过了吗。程序才不会那么做呢。它凭什么能那么做。


验证过了,是我说的样子的。 
不光加了打印,而且使用top观察了。 
异步现象主要是因为系统缓存的存在。 具体看下面链接
[其他解释]


结贴较晚, 实在不好意思! 
关于问题的可能原因, 请参看以下两个链接。
http://blog.csdn.net/kofshower/article/details/7357968
http://os.chinaunix.net/a2009/0331/993/000000993381.shtml

热点排行