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