Linux2.6 USB HOST驱动于华恒开发板上的移植(1) |
2007-5-24 13:56:00 |
――作者:blackmoon 上完郑灵翔老师的emb课程受益颇多。学emb已经两年了,一直存在的感觉就是emb很麻烦,动不动就是两个字“移植”。硬件,OS等随便其中一个平台不一样都可能导致“移植”操作,没办法,普通的人很难在短时间内翻写所有的代码,只能延用别人的代码。不过好在Linux的代码大多都是GPL的,不存在收费、版权的问题。但是还是得看懂别人代码,也许有人说看代码容易呀!至少我不是这么认为的……. 这次接到的课题是有关USB的,看题目写了很多,总结起来无非就是我文章的题目,再加个可以读写U盘的要求。好了,来谈谈我对这课题的一些心得。首先应该要清楚认识移植驱动无非就是修改驱动代码、同时修改OS内核配置,不管是在Linux还是在ce中都是一样,ucos就无所谓内核配置的问题了(其实其他的OS我也不懂,呵呵)。首先进入内核drivers/usb目录,可以看到很多文件夹,凭借经验可知host是底层HCD的驱动代码所在,core自然就是USB核心层USBD的代码,其他的如music、input、storage等是设备层的驱动。(如果对USB驱动的分层结构还不懂的,可以参考一些其他的书籍,我就不多说了) 其中,我所要关心的就三个文件夹,host、storage和core。基本上也可以确定storage和core文件夹里面得代码是不需要修改的,它们和硬件层无关。进入host,可以看到很多ehci,ohci,uhci开头的文件。由于开发板采用的是S3C2410,所以基本上就可以把目标锁定在ohci上,可以看到有ohci-s3c2410.c文件,确定内核包自带对2410的支持。能不能直接使用,初步看代码好像都没有问题。存着侥幸的心里,我直接进行内核配置。切到主目录下,利用make xmu_hharm9_defconfig命令进行默认配置,接着执行make xconfig,进入内核配置界面。 (1)确保General setup ---> Configure standard …….中的Support for hot-pluggable devices是选上(我都是用打勾将模块直接编进内核,下面雷同)的,要使用U盘就得使内核支持设备的热插拔。 (2)到Device Drivers à SCSI device supprot中 因为在linux中会U盘设备将被模拟成SCSI设备,所以要使内核能够支持SCSI设备。 (3)到Device Drivers à USB support中 (4)到File systemsà DOS/FAT/NT Filesystems中 |
没有评论:
发表评论