|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
如果你让他去用linux搭建一个web服务器,做一个linux网关,他就什么都不会了.他们把时间都浪费在了版本的转换上了.
platform:s3c2440+linux2.6.18
在linux2.6.18中,sd卡的驱动有很多的bug.比方,没有写回护的功效.
在驱动的模块中预留了写回护的函数,可是没有完成,代码也只要几行,只需加上往编译一下就OK了.
staticstructmmc_host_opss3c2410sdi_ops={
.request=s3c2410sdi_request,
.set_ios=s3c2410sdi_set_ios,
.get_ro=s3c2440_get_ro,//sdcardReadOnlyFlag.
};
完成函数以下:
staticints3c2440_get_ro(structmmc_host*mmc)
{
structs3c2410sdi_host*host=mmc_priv(mmc);
unsignedlongflags;
intpresent;
spin_lock_irqsave(&host->complete_lock,flags);
present=read_gpio_bit(S3C2410_GPB0);
present&=0x01;
spin_unlock_irqrestore(&host->complete_lock,flags);
returnpresent;
}
另有一些就是热插拔的和中止检测口,只需设置一下就能够用了.
对照贫苦的是对SD卡写操纵,只需写略微年夜点的文件到SD卡就会堕落,打印出以下信息:
[IRQ]csta=00000a19dsta=00000002fsta=00002200dcnt=00008000
[IRQ]csta=00000a19dsta=00000002fsta=00002200dcnt=00007000
[IRQ]csta=00000a19dsta=00000002fsta=00002200dcnt=00007000
[IRQ]csta=00000a19dsta=00000002fsta=00002200dcnt=00007000
对照一般传送打印出来的信息,很分明程序是在这里挂失落了.
厥后跟踪代码发明,当写一个4096(512*8)的数据时,只写了第一个512byte就不往下写了,以是dcnt一向为7000,呈现这个征象的缘故原由是由于程序对host->pio_words这个变量赋的值为128,经由过程host->pio_words--递加到0时就不进进
while(sdi_fsta&S3C2410_SDIFSTA_TFDET&&host->pio_words)这个轮回了,
以是host->pio_words=sdi_bsize>>2;这一行应改成
host->pio_words=mrq->data->blocks*(sdi_bsize>>2);
如许对SD卡的写操纵就办理了.但写的速率不是很快.
另有一个成绩,好比cp一个文件到SD卡上,是否是起首先将这个文件写到SDRAM上,然后umount的时分再将SDRAM中的内容真正写SD卡上??我umount的时分会过量一会才呈现终真个提醒符,依据写进文件的巨细断定umount的工夫?
厥后查了一下材料,Linux文件体系更新是一个庞大的历程,当用户程序对文件体系举行修正今后,比方举行了写操纵,文件数据把修正纪录在内核缓冲中,在数据没有写到磁盘的时分,仍然可以实行用户历程,一切数据的改动都在inode的内容中失掉反应。磁盘的数据更新实践上是异步举行的,很有大概在写操纵已完成很长工夫今后才真正对磁盘的数据举行更新。sync命令强迫把磁盘缓冲的一切数据写进磁盘,假如在没有把磁盘缓冲区的信息写进磁盘之前停止体系,则磁盘的文件体系就会处在一个不不乱的形态。而在一般形式下即便没有对分区举行umount的操纵,在重启之前体系会挪用sync命令强迫把磁盘缓冲的一切数据写进磁盘,而在抢救形式下必需对所挂的分区举行umount的操纵,体系才会挪用sync命令强迫把磁盘缓冲的一切数据写进磁盘,请在抢救形式下的伴侣注重这个成绩。实在“reboot-n(Don’tsyncbeforerebootorhalt)”在重启之前不必sync命令强迫把磁盘缓冲的一切数据写进磁盘,就很能申明成绩。
以是要cp完以后要实行sync命令将缓冲区的内容写到磁盘中,然后再umount就不会呈现延时了.
s3c2440SD卡(forLINUX)驱动代码下载地点:
http://handhelds.org/cgi-bin/cvsweb.cgi/linux/kernel26/drivers/mmc/s3c2440mci.c
</p>
看不懂man文档的人.在linux中,命令可分为系统基本命令和应用程序命令.系统基本命令是所有的unix类系统都支持的命令,走到哪都不变,只要是unix类系统上就肯定有. |
|