Linux驅動學習之Linux-2.6.20.4核心移植

來源:互聯網
上載者:User

標籤:linux核心   移植   arm   

最近一段時間一直在學習向TQ2440開發板移植核心、移植驅動。真心覺得這方面的知識有很大的難度。但是從另一角度去看,難度越大,能力提升的空間就越大!!

1、解壓源碼

從網上下載一個Linux 核心,我是用的是Linux-2.6.20.4。然後用命令解壓。建議解壓到“/home/使用者名稱”目錄下。我的核心源碼存放在:

2、添加對ARM的支援

因為所用的是TQ2440開發板,屬於ARM9。因此要在系統中添加對ARM的支援。

方法:進入核心源碼目錄,

修改“Makefile”檔案,將193行的“ARCH ?=(SUBARCH)”與194行“CROSS_COMPILE?=”將其修改為()


也可以在第一次使用“make menuconfig”時使用“make  ARCH=arm  CROSS_COMPILE=arm-linux-  menuconfig ”來代替。記得有一次忘記了修改對ARM的支援,結果在配置的時候好多的選項都沒有,一開始還以為是核心的原因,於是重新下載了核心,結果還是一樣。愚蠢的錯誤啊!!!!貼出來,刺激一下自己!

修改前的配置菜單:


修改後的配置菜單:


3、交叉編譯器環境搭建4、時鐘頻率修改

TQ2440使用的是12MHz的外部時鐘源,而相應的設定檔中是16.9344MHz,開啟下面的檔案:


修改下面的函數:


5、修改機器碼

在TQ2440使用的uboot中設定的機器碼是168,所以核心這裡需要修改機器碼,否則會出現不能啟動的情況。此參數儲存在核心源碼的“arch/arm/tools/mach-tupes”中。在編譯第一個核心的時候,核心能成功下載到開發板上,但是就是無法啟動。剛開始還認為是核心編譯太大的原因,裁剪了很多的東西之後,還是無法啟動。經一個隊友提示“是否改了機器碼”,我還很自信的說“已經改過了”,到了最後查看一下檔案,機器碼木有改啊~~~~~~~~~~~


6、Nand Flash 驅動移植

進入核心源碼“arch/arm/plat-s3c24xx/common-smdk.c”,修改如下兩個位置的代碼(修改後的)

如:

(1)


(2)


然後開啟


修改第752行的代碼:


7、添加對yaffs的支援

可以通過命令來擷取yaffs的源碼:git clone git://www.alcphl.co.uk/yaffs2

然後進入到yaffs2目錄下,打補丁到核心中,使用下面的命令:

./patch-ker.sh c m /home/xg/linux_arm/linux-2.6.30.4/(核心所在的目錄)












聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.