手把手教你移植linux核心---------OK6410(一)
配置資訊:
移植核心:linux-3.3.5 可以從 http://www.kernel.org/ 下載純正的版本
編譯環境:vmware下ubuntu11.04
交叉編譯版本:4.3.2
準備工作:
一塊OK6410開發板,交叉網線,串列埠線一根。
在ubuntu根目錄下建立forlinx檔案,將核心拷貝至該目錄下。
確保你的ubuntu已經安裝libncures5-dev(安裝方法 #sudo apt-get install libncurses5-dev)。
由於移植核心工作要頻繁的測試所編譯的核心執行情況,所以最好配置NFS服務和使用帶有tftp網路功能的uboot。
http://download.csdn.net/detail/laoylhuli/4520015本人測試可以在ok6410上使用tftp下載
移植步驟:
1.解壓核心
解壓核心
[email protected]:/forlinx# tar zxvf linux-3.3.5.tar.gz
########################################################################################################在arch/arm/mach-s3c64xx/目錄下的mach-smdk6410.c 複製一份在當前檔案下命名為mach-ok6410.c
[email protected]:/forlinx/linux-3.3.5/arch/arm/mach-s3c64xx# cp mach-smdk6410.c mach-ok6410.c
########################################################################################################有了ok6410開發板的bsp檔案之後,修改當前目錄下的Kconfig檔案,將我們的bsp檔案新增到核心配置中
找到[email protected]:/forlinx/linux-3.3.5/arch/arm/mach-s3c64xx# gedit Kconfig
config MACH_SMDK6410
bool "SMDK6410"
select CPU_S3C6410
select SAMSUNG_DEV_ADC
select S3C_DEV_HSMMC
select S3C_DEV_HSMMC1
select S3C_DEV_I2C1
select SAMSUNG_DEV_IDE
select S3C_DEV_FB
select S3C_DEV_RTC
select SAMSUNG_DEV_TS
select S3C_DEV_USB_HOST
select S3C_DEV_USB_HSOTG
select S3C_DEV_WDT
select SAMSUNG_DEV_BACKLIGHT
select SAMSUNG_DEV_KEYPAD
select SAMSUNG_DEV_PWM
select HAVE_S3C2410_WATCHDOG if WATCHDOG
select S3C64XX_SETUP_SDHCI
select S3C64XX_SETUP_I2C1
select S3C64XX_SETUP_IDE
select S3C64XX_SETUP_FB_24BPP
select S3C64XX_SETUP_KEYPAD
help
Machine support for the Samsung SMDK6410
複製一下,建立OK6410配置config MACH_OK6410
bool "OK6410"--------------------------此處注意大小寫
select CPU_S3C6410
select SAMSUNG_DEV_ADC
select S3C_DEV_HSMMC
select S3C_DEV_HSMMC1
select S3C_DEV_I2C1
select SAMSUNG_DEV_IDE
select S3C_DEV_FB
select S3C_DEV_RTC
select SAMSUNG_DEV_TS
select S3C_DEV_USB_HOST
select S3C_DEV_USB_HSOTG
select S3C_DEV_WDT
select SAMSUNG_DEV_BACKLIGHT
select SAMSUNG_DEV_KEYPAD
select SAMSUNG_DEV_PWM
select HAVE_S3C2410_WATCHDOG if WATCHDOG
select S3C64XX_SETUP_SDHCI
select S3C64XX_SETUP_I2C1
select S3C64XX_SETUP_IDE
select S3C64XX_SETUP_FB_24BPP
select S3C64XX_SETUP_KEYPAD
help
Machine support for the Forlinx OK6410
儲存退出
########################################################################################################
由於機器碼ID必須和uboot的ID一致,所修改arch/arm/tools/mach-types檔案,在283行找到
smdk6410 MACH_SMDK6410 SMDK6410 1626
把它改成
ok6410 MACH_OK6410 OK6410 1626
儲存退出
########################################################################################################
修改BSP檔案,
[email protected]:/forlinx/linux-3.3.5/arch/arm/mach-s3c64xx# gedit mach-ok6410.c
使用gedit工具的search-->replace把檔案中所有的smdk6410改成ok6410
在700行處找到
MACHINE_START(ok6410, "ok6410")
把他改成
MACHINE_START(OK6410, "OK6410")--------------這裡跟我們前面配置的Kconfig和mach-types檔案中的名字對應,**大小寫注意必須一致
########################################################################################################
在當前目錄(arch/arm/mach-s3c64xx/)下開啟Makefile新增我們的bsp檔案
obj-$(CONFIG_MACH_OK6410) += mach-ok6410.o
########################################################################################################修改頂層的Makefile,第195和196行編輯
ARCH ?= arm ***************這裡禁止在arm後出現空格或其它符號
CROSS_COMPILE ?= /usr/local/arm/4.3.2/bin/arm-linux- ********你的交叉編譯器的路徑
########################################################################################################將arch/arm/configs/s3c6400-defconfig配置檔案複製到頂層然後儲存為 .config 。
[email protected]:/forlinx/linux-3.3.5# cp arch/arm/configs/s3c6400_defconfig .config
########################################################################################################執行make menuconfig對核心進行配置
開啟核心的EABI
選擇自己的板極為OK6410 在
把自己的交叉編譯器的路徑輸進去
配置列印串列埠為晶片的串列埠0
########################################################################################################
可以開始編譯了
[email protected]:/forlinx/linux-3.3.5# make uImage
幾分鐘後最初的核心已經編譯完成了在arch/arm/boot下可以看到我們編譯完成的核心了uImage。通過tftp在OK6410開發板上執行。通過Uboot的tftp下載到開發板上
開始執行3.3.5核心