1. 程式人生 > >手把手教你移植linux核心---------OK6410(一)

手把手教你移植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核心


未完待續,整個教程包含核心的啟動和OK6410的部分驅動的載入執行qt介面