環境:Win7+virsualBox+ubuntu12.04+ok6410開發板html
http://www.kernel.org/
tar -xvf linux-3.12.7-tar.xz
sudo chmod -R 777 linux-3.12.7/*
wu@wu-VirtualBox:/opt/linux-3.12.7/arch/arm/mach-s3c64xx$ cp smdk6410.c ok6410.c
wu@wu-VirtualBox:/opt/linux-3.12.7/arch/arm/mach-s3c64xx$ gedit Kconfig
找到:MACH_SMDK6410,複製一份smdk6410的配置信息粘貼到下面
config MACH_SMDK6410 bool "SMDK6410" select CPU_S3C6410 select HAVE_S3C2410_WATCHDOG if WATCHDOG select S3C64XX_SETUP_FB_24BPP select S3C64XX_SETUP_I2C1 select S3C64XX_SETUP_IDE select S3C64XX_SETUP_KEYPAD select S3C64XX_SETUP_SDHCI select S3C64XX_SETUP_USB_PHY select S3C_DEV_FB select S3C_DEV_HSMMC select S3C_DEV_HSMMC1 select S3C_DEV_I2C1 select S3C_DEV_RTC select S3C_DEV_USB_HOST select S3C_DEV_USB_HSOTG select S3C_DEV_WDT select SAMSUNG_DEV_ADC select SAMSUNG_DEV_BACKLIGHT select SAMSUNG_DEV_IDE select SAMSUNG_DEV_KEYPAD select SAMSUNG_DEV_PWM select SAMSUNG_DEV_TS help Machine support for the Samsung SMDK6410 config MACH_OK6410 bool "OK6410" select CPU_S3C6410 select HAVE_S3C2410_WATCHDOG if WATCHDOG select S3C64XX_SETUP_FB_24BPP select S3C64XX_SETUP_I2C1 select S3C64XX_SETUP_IDE select S3C64XX_SETUP_KEYPAD select S3C64XX_SETUP_SDHCI select S3C64XX_SETUP_USB_PHY select S3C_DEV_FB select S3C_DEV_HSMMC select S3C_DEV_HSMMC1 select S3C_DEV_I2C1 select S3C_DEV_RTC select S3C_DEV_USB_HOST select S3C_DEV_USB_HSOTG select S3C_DEV_WDT select SAMSUNG_DEV_ADC select SAMSUNG_DEV_BACKLIGHT select SAMSUNG_DEV_IDE select SAMSUNG_DEV_KEYPAD select SAMSUNG_DEV_PWM select SAMSUNG_DEV_TS help Machine support for the Forlinux OK6410
wu@wu-VirtualBox:/opt/linux-3.12.7/arch/arm/mach-s3c64xx$ gedit mach-ok6410.c
把文件中全部的smdk6410改爲ok6410,而後找到:MACHINE_START,修改爲下面,注意大小寫。linux
MACHINE_START(OK6410, "OK6410")
wu@wu-VirtualBox:/opt/linux-3.12.7/arch/arm/mach-s3c64xx$ gedit Makefile
添加以下配置:ubuntu
# Machine support
obj-$(CONFIG_MACH_OK6410) += mach-ok6410.o
wu@wu-VirtualBox:/opt/linux-3.12.7/arch/arm/tools$ gedit mach-types
找到smdk6410,修改成:(注意大小寫)架構
//smdk6410 MACH_SMDK6410 SMDK6410 1626
ok6410 MACH_OK6410 OK6410 1626
wu@wu-VirtualBox:/opt/linux-3.12.7$ gedit Makefile
找到這行:工具
//ARCH ?= $(SUBARCH) //CROSS_COMPILE ?= $(CONFIG_CROSS_COMPILE:"%"=%)
ARCH ?= arm
CROSS_COMPILE ?= arm-linux-
也能夠不修改,在運行make命令的時候加上後綴如:make ARCH=arm CROSS_COMPILE=arm-linux-this
wu@wu-VirtualBox:/opt/linux-3.12.7$ cp arch/arm/configs/s3c6400_defconfig .config
a) Kernel Features---->確保Use the ARM EABI to compile the Kernel和Allow old ABI binaries to run with this Kernel (EXPERIMENTAL) 這兩項選中。spa
b) 選擇本身剛纔的配置ok6410開發板code
c) 點擊enter輸入本身交叉編譯器的路徑,(我這裏沒有輸入,是在編譯命令後面加入了後綴,沒什麼問題)htm
d)選擇圖中藍色一行,點擊enterblog
e) 選擇串口0:
make uImage
其餘問題:
爲何是uImage ,uboot只支持uImage格式的內核鏡像,貌似飛凌提供的uboot也能夠啓動zImage,感興趣能夠試試,能夠查看 http://kmoving.blog.163.com/blog/static/20504919720123151533819/ 裏面的介紹。
還有一點必須使用uboot自帶的工具mkimage給zImge加頭信息,不然寫入到nandflash中沒法啓動內核,這個多是我用本身移植的uboot緣由,在這篇文章中提到--http://www.cnblogs.com/lucky-tom/p/3531487.html ,完全弄明白的朋友請給我留言哇。