仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 712|回复: 8
打印 上一主题 下一主题

[其他Linux] 带来一篇技能:Linux2.6.18 SD卡驱动的修改

[复制链接]
简单生活 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 16:51:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

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类系统上就肯定有.
飘灵儿 该用户已被删除
沙发
发表于 2015-1-18 17:09:39 | 只看该作者
上课传授的不仅仅是知识,更重要的是一些道理,包括一些做人的道理,讲课时也抓住重点,循序渐进,让同学理解很快;更可贵的是不以你过去的成绩看问题.
老尸 该用户已被删除
板凳
发表于 2015-1-27 13:24:07 | 只看该作者
其次,Linux简单易学,因为我们初学者只是学的基础部分,Linux的结构体系非常清晰,再加上老师循序渐进的教学以及耐心的讲解,使我们理解起来很快,短期内就基本掌握了操作和运行模式。
莫相离 该用户已被删除
地板
发表于 2015-2-5 11:48:15 | 只看该作者
上课传授的不仅仅是知识,更重要的是一些道理,包括一些做人的道理,讲课时也抓住重点,循序渐进,让同学理解很快;更可贵的是不以你过去的成绩看问题.
灵魂腐蚀 该用户已被删除
5#
发表于 2015-2-11 19:18:18 | 只看该作者
尽我能力帮助他人,在帮助他人的同时你会深刻巩固知识。
蒙在股里 该用户已被删除
6#
发表于 2015-3-2 18:08:57 | 只看该作者
一定要学好命令,shell是命令语言,命令解释程序及程序设计语言的统称,shell也负责用户和操作系统之间的沟通。
爱飞 该用户已被删除
7#
发表于 2015-3-11 05:21:54 | 只看该作者
即便是非英语国家的人发布技术文档,Linux也都首先翻译成英语在国际学术杂志和网络上发表。
小魔女 该用户已被删除
8#
发表于 2015-3-17 21:10:55 | 只看该作者
掌握在Linux系统中安装软件,在安装Linux工具盘后大致日常所需的软件都会有,一般网络提供下载的软件都会有安装说明。
海妖 该用户已被删除
9#
发表于 2015-3-25 03:33:20 | 只看该作者
为了更好的学习这门课程,我不仅课上认真听讲,课下也努力学习,为此还在自己的电脑上安装了Ubuntu系统。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-30 09:48

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表