還是先來吐槽:本來我是在上一個星期的周末已經把 Linux2.6.34.11 的驅動已經成功的移植到, OK6410 的開發板上的,並且能夠啟動主機上的NFS 根文件系統, 可是我在周一的時候,開始學習LCD 的驅動程序, 在修改內核文件的時候,有幾處錯誤修改,將原來自己做的2.6.34.11 的內核源碼 搞的亂七八糟的,在這裡還是自己在修改內核的時候沒有提注重注釋, 並且沒有記錄下來自己的操作步驟,以至於我沒辦法,恢復2.6.34 的內核, 所以也就只能重新先開始最基礎的內核移植了。 這次我選擇的是2.6.36.2 的內核, 誰知到一開始移植就出現一大堆問題。在這裡我不得不說,飛凌開發人員對內核修改的代碼,管理真的是太扯了,自己在注銷任何一個設備是沒有一點點注釋,就把這個設備原有的線性地址分配給其它設備了,讓我讓我們這些菜鳥干看著一大堆的報錯信息頂個什麼用, 真的是傷不起。好了不亂扯了,現在開始記錄。
我的開發環境是:
VMware Ubuntu 10.10 。OK6410 A版 256M+2G 的開發板。 主機系統:XP。Uboot:飛凌提供的Uboot。
參考內核 :飛凌提供的 Forlinx 的2.6.36.2 內核
操作步驟 以下./ 均代表你的內核 根目錄
1、修改./Makefile191 ARCH ?=arm // 指定cpu類型, arm後面不要有空格,要不然編譯是會提醒ARCH 不能為一個目錄
192 CROSS_COMPILE ?=/usr/local/arm/4.2.2-eabi/usr/bin/arm-linux- // 指定交叉編譯器的路徑,按照你自己的進行指定路徑2、修改./arch/arm/mach-s3c64xx/mach-smdk6410.c 1) nandflash 驅動,修改方法
加載頭文件
#include <linux/mtd/mtd.h>
#include <linux/mtd/partitions.h>
#include <plat/nand.h> //這些頭文件放在./arch/arm/plat-samsung/include/ 下面
添加nand 結構體