手把手教你移植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.解压内核

解压内核

root@ubuntu:/forlinx# tar zxvf linux-3.3.5.tar.gz
########################################################################################################

在arch/arm/mach-s3c64xx/目录下的mach-smdk6410.c 复制一份在当前文件下命名为mach-ok6410.c

root@ubuntu:/forlinx/linux-3.3.5/arch/arm/mach-s3c64xx# cp mach-smdk6410.c mach-ok6410.c
########################################################################################################

有了ok6410开发板的bsp文件之后,修改当前目录下的Kconfig文件,将我们的bsp文件添加到内核配置中

root@ubuntu:/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文件,

root@ubuntu:/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 。
root@ubuntu:/forlinx/linux-3.3.5# cp arch/arm/configs/s3c6400_defconfig .config
########################################################################################################
执行make menuconfig对内核进行配置

打开内核的EABI

选择自己的板极为OK6410  在


把自己的交叉编译器的路径输进去


配置打印串口为芯片的串口0

########################################################################################################

可以开始编译了

root@ubuntu:/forlinx/linux-3.3.5# make uImage
几分钟后最初的内核已经编译完成了在arch/arm/boot下可以看到我们编译完成的内核了uImage。通过tftp在OK6410开发板上运行。

通过Uboot的tftp下载到开发板上

开始运行3.3.5内核


 
  


未完待续,整个教程包含内核的启动和OK6410的部分驱动的加载运行qt界面

你可能感兴趣的:(linux)