移植2.6.16內(nèi)核到at91rm9200
1、下載、安裝
從 www.kernel.org 上下載Linux2.6.16版的kernel,解壓到 /usr/src/arm/linux-2.6.16
從http://maxim.org.za/AT91RM9200/2.6/ 上下載針對rm9200的補(bǔ)丁,文件名:2.6.16-at91.patch.gz,復(fù)制到 /usr/src/arm/linux-2.6.16,然后在命令行界面中執(zhí)行 zcat 2.6.16-at91.patch.gz |patch -p1
從http://www.aleph1.co.uk/cgi-bin/viewcvs.cgi/yaffs2.tar.gz?view=tar下載YAFFS2補(bǔ)丁 yaffs2.tar.gz 解壓縮后到文件目錄下運行 sh patch-ker.sh ../linux-2.6.16 把YAFF2加到內(nèi)核中去;
下載GCC編譯器,文件名:arm-linux-gcc-3.4.1.tar.bz2,解壓到 /usr/local/arm/3.4.1
2、修改
打開內(nèi)核原代碼根目錄下的Makefile,找到如下兩行:
ARCH ?=$(SUBARCH)
CROSS_COMPILE ?=
修改為:
ARCH ?=arm
CROSS_COMPILE ?=/usr/local/arm/3.4.1/bin/arm-linux-
3、編譯內(nèi)核
執(zhí)行如下命令:
make at91rm9200dk_defconfig
make xconfig
make
以上是基本的移植步驟,所有移植過程的第一步,以下是我自已移植過程:
1),在make xconfig 時改
boot_option
ZBOOT_BASE_ADDRESS 0X21000000
ZBOOT_ROM_BSS 0X21100000
否則不能動行
其它的可以按 at91rm9200dk 的配置編譯
2),添加devfs文件系統(tǒng)
vi fs/Kconfig
找到menu "Pseudo filesystems"
添加如下語句:
config DEVFS_FS
bool "/dev file system support (OBSOLETE)"
default y
config DEVFS_MOUNT
bool "Automatically mount at boot"
default y
depends on DEVFS_FS
保存退出后編譯下載后就可以在 開發(fā)板上的 /proc 目錄下的filesystems里看到了
[root@AT91RM9200DK /proc]$cat filesystems
nodev sysfs
nodev rootfs
nodev bdev
nodev proc
nodev sockfs
nodev pipefs
nodev futexfs
nodev tmpfs
nodev inotifyfs
nodev eventpollfs
nodev devpts
ext2
cramfs
nodev ramfs
nodev devfs
nodev jffs2
3),修改NAND的分驅(qū)表
在arch/mach-at91rm9200/board-dk中
改dk-nand-patition[]{
}
下的代碼為自已想要的分驅(qū)方式
4),修改NOR的分驅(qū)表
在driver/mtd/maps/physmap.c中
添加一個自已的分驅(qū)表后將其引用到physmap_set_patition()中
5),添加9200的串口驅(qū)動
這個更簡單
改arch/mach-at91rm9200/board-dk.c
.nr_tty = 5,
.tty_map = {4,3,2,1,0}
就把2個串口改為5個了,其對應(yīng)驅(qū)動在相關(guān)目錄下都有詳盡的代碼!
需要的是一個認(rèn)真的態(tài)度和不懈的努力!
這也只是個入門,還有更多的東西要學(xué)習(xí)!