下载linux内核文件,解压。
利用smdk6410的BSP文件建立OK6410的文件,将smdk6410全部替换为ok6410并注意大小写,原先大写就大写,原先小写就小写。修改arch/arm/mach-s3c64xx下的Kconfig文件,将新建的开发板配置添加进去,复制smdk6410即可。
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
在arch/arm/tools/mach-types中添加自己的机器码,uboot中使用的1626,因此这里也要填1626,注意大小写
ok6410 MACH_OK6410 OK6410 1626
修改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- ********你的交叉编译器的路径
利用6400的配置文件生成ok6410的.config文件
make menuconfig 进行配置
General setup中填写交叉编译器路径
System Type中选择OK6410,并使能MMU,ARM系统选择S3C64XX
Kernel Features中是能EABI,High Memory Support,Enable hardware performance counter support for perf events,Enable -fstack-protector buffer overflow detection
networking support选择如下,不选也行非必选
Device Driver选项如下,主要注意MTD选项,其中的nand相关选项不要出错,上面Network要是选了,下面这个驱动支持也要选
File systems选项在微控制器文件系统中记得选YAFFS2就好。
make
make zImage
make uImage
进行编译
遇到编译报错
Can't use 'defined(@array)' (Maybe you should just omit the defined()?) at kernel/timeconst.pl line 373.
将kernel/timeconst.pl中373行附近的内容更改如下:
@val = @{$canned_values{$hz}};
if (!(@val)) {
@val = compute_values($hz);
}
去掉defined,因为perl官网将defined(@数组)的方法去掉了,直接使用数组判断非空。
编译成功,内核启动