| Linux2.6 USB HOST驅動(dòng)于華恒開(kāi)發(fā)板上的移植(1) |
| 2007-5-24 13:56:00 |
| ――作者:blackmoon 上完鄭靈翔老師的emb課程受益頗多。學(xué)emb已經(jīng)兩年了,一直存在的感覺(jué)就是emb很麻煩,動(dòng)不動(dòng)就是兩個(gè)字“移植”。硬件,OS等隨便其中一個(gè)平臺不一樣都可能導致“移植”操作,沒(méi)辦法,普通的人很難在短時(shí)間內翻寫(xiě)所有的代碼,只能延用別人的代碼。不過(guò)好在Linux的代碼大多都是GPL的,不存在收費、版權的問(wèn)題。但是還是得看懂別人代碼,也許有人說(shuō)看代碼容易呀!至少我不是這么認為的……. 這次接到的課題是有關(guān)USB的,看題目寫(xiě)了很多,總結起來(lái)無(wú)非就是我文章的題目,再加個(gè)可以讀寫(xiě)U盤(pán)的要求。好了,來(lái)談?wù)勎覍@課題的一些心得。首先應該要清楚認識移植驅動(dòng)無(wú)非就是修改驅動(dòng)代碼、同時(shí)修改OS內核配置,不管是在Linux還是在ce中都是一樣,ucos就無(wú)所謂內核配置的問(wèn)題了(其實(shí)其他的OS我也不懂,呵呵)。首先進(jìn)入內核drivers/usb目錄,可以看到很多文件夾,憑借經(jīng)驗可知host是底層HCD的驅動(dòng)代碼所在,core自然就是USB核心層USBD的代碼,其他的如music、input、storage等是設備層的驅動(dòng)。(如果對USB驅動(dòng)的分層結構還不懂的,可以參考一些其他的書(shū)籍,我就不多說(shuō)了) 其中,我所要關(guān)心的就三個(gè)文件夾,host、storage和core?;旧弦部梢源_定storage和core文件夾里面得代碼是不需要修改的,它們和硬件層無(wú)關(guān)。進(jìn)入host,可以看到很多ehci,ohci,uhci開(kāi)頭的文件。由于開(kāi)發(fā)板采用的是S3C2410,所以基本上就可以把目標鎖定在ohci上,可以看到有ohci-s3c2410.c文件,確定內核包自帶對2410的支持。能不能直接使用,初步看代碼好像都沒(méi)有問(wèn)題。存著(zhù)僥幸的心里,我直接進(jìn)行內核配置。切到主目錄下,利用make xmu_hharm9_defconfig命令進(jìn)行默認配置,接著(zhù)執行make xconfig,進(jìn)入內核配置界面。 (1)確保General setup ---> Configure standard …….中的Support for hot-pluggable devices是選上(我都是用打勾將模塊直接編進(jìn)內核,下面雷同)的,要使用U盤(pán)就得使內核支持設備的熱插拔。 (2)到Device Drivers à SCSI device supprot中 ![]() 因為在linux中會(huì )U盤(pán)設備將被模擬成SCSI設備,所以要使內核能夠支持SCSI設備。 (3)到Device Drivers à USB support中 ![]() ![]() (4)到File systemsà DOS/FAT/NT Filesystems中 ![]() |
聯(lián)系客服