1. 编译Linux内核
a.下载内核源码
去Linux官网下载所需版本的内核源码linux-2.6.32.2.tar.gz
b. 解压内核源码
#tar zxvf linux-2.6.32.2.tar.gz
c. Linux内核目录结构
#tree -L 1
.
|-- COPYING
|-- CREDITS
|-- Documentation
|-- Kbuild
|-- MAINTAINERS
|-- Makefile
|-- Module.symvers
|-- README
|-- REPORTING-BUGS
|-- System.map
|-- arch #板级支持依赖(开发板、处理器架构)
|-- block #块设备驱动
|-- crypto
|-- drivers #设备驱动
|-- firmware
|-- fs #文件系统
|-- include #内核头文件目录之一
|-- init #内核初始化代码
|-- ipc #进程通信代码
|-- kernel #内核核心代码
|-- lib #内核库函数
|-- mm #内存管理代码
|-- modules.order
|-- net #网络协议代码
|-- samples
|-- scripts
|-- security
|-- sound #音频设备驱动代码
|-- tools
|-- usr
|-- virt
|-- vmlinux
`-- vmlinux.o
d. 修改Micro440板级支持配置文件
参考标准的mach-smdk2440.c进行修改
1)使用smdk2440启动配置文件替换mini2440
#cd arch/arm/mach-s3c2440/
#cp mach-smdk2440.c mach-mini2440.c
2)修改机器名称
MACHINE_START(MINI2440, "Micro2440 developmentboard")
1)将系统时钟修改为系统时钟(12M)
static void __init smdk2440_map_io(void)
{
s3c24xx_init_io(smdk2440_iodesc, ARRAY_SIZE(smdk2440_iodesc));
s3c24xx_init_clocks(12000000);
s3c24xx_init_uarts(smdk2440_uartcfgs,
ARRAY_SIZE(smdk2440_uartcfgs));
}
2)删除smdk_machine_init()
static void __init smdk2440_machine_init(void)
{
s3c24xx_fb_set_platdata(&smdk2440_fb_info);
s3c_i2c0_set_platdata(NULL);
platform_add_devices(smdk2440_devices,
ARRAY_SIZE(smdk2440_devices));
smdk_machine_init();
}
e. 编译内核
1)修改内核根目录的Makefile文件
ARCH = arm
CROSS_COMPILE = arm-linux-
注:末尾直接回车,不能留有空格
2)导入原来的mini2440配置
#make mini2440_defconfig
注:.config是Linux内核默认配置文件,将mini2440配置文件拷贝为.confog
3)编译
#make uImage
3)出现错误
1st. 错误提示:找不到mkimage–u-boot images will not be built
解决方法:将u-boot/tools下的mkimage复制到交叉编译器的bin目录下
2nd.
3rd. .