u-boot之后就是移植内核。。其实移植内核还是相对比较简单的。。改的东西少
1.改Makefile
首改makefile。。先将arch改为arm。。再添加自己的交叉编译器。。
ARCH ?= arm
CROSS_COMPILE ?= /opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-
加zimage。。关键字搜all:
all: vmlinux
cp arch/arm/boot/zImage . -f
../../../bin/mkimage -A arm -O linux -T kernel -C none -a 30008000 -e 30008040 -n "Linux Kernel" -d zImage linuxrom-s3c2440.bin
rm -f zImage
改distclean加删除之前生成的.bin文件名字
distclean: mrproper
@find $(srctree) $(RCS_FIND_IGNORE) \
\( -name '*.orig' -o -name '*.rej' -o -name '*~' \
-o -name '*.bak' -o -name '#*#' -o -name '.*.orig' \
-o -name '.*.rej' -o -size 0 \
-o -name '*%' -o -name '.*.cmd' -o -name 'core' \) \
-type f -print | xargs rm -f
@rm -rf linuxrom-s3c2440.bin
2.改uboot的machID。。u-boot/board/lingyun/fl2440/fl2440.c。。111行左右
#if defined(CONFIG_FL2440)
gd->bd->bi_arch_number = MACH_TYPE_MINI2440;
#else
gd->bd->bi_arch_number = MACH_TYPE_SMDK2410;
#endif
3.改晶振频率。。arch/arm/mach-s3c2440/mach-smdk2440.c。。163左右
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));
usb_s3c2440_init();
}
4.改串口名。。drivers/tty/serial/samsung.c。。57左右
#define S3C24XX_SERIAL_NAME "ttyS"
5.拷贝.config文件
cp arch/arm/configs/mini2440_defconfig .config
make menuconfig
改system type/s3c2440 and s3c2442 Machines下
No mini2440
Yes smdk2440
6.改本内核machID。。arch/arm/tools/mach-typesmini2440 MACH_MINI2440 MINI2440 362
s3c2440 ARCH_S3C2440 S3C2440 1999
7.改分区。。arch/arm/plat-s3c24xx/common-smdk.c
static struct mtd_partition smdk_default_nand_part[] = {
[0] = {
.name = "mtdblock0 u-boot 1MB",
.size = SZ_1M*1,
.offset = 0,
},
[1] = {
.name = "mtdblock1 kernel 4MB",
.offset = MTDPART_OFS_NXTBLK,
.size = SZ_1M*4,
},
下面不变
8.添加根文件树。。有的话直接选那个目录。。木有的话先从别人做好的拿。。我当初是直接在老大那里拿的
cp ~/fl2440/trunk/src/rootfs/rootfs_tree.tar.bz2 ../../
解压之后会出现一个根文件树。。再make menucconfig添加
General setup --->
[*] Initial RAM filesystem and RAM disk (initramfs/initrd) support
(../../rootfs_trees) Initramfs source file(s)
这时候make就成了。。做好的直接烧到板子上。。然后还要改一下板子上的uboot环境变量。。如果不改全凭默认的话很可能开机启动时打印信息不会打印到pc屏幕上而是打印到板子上。。看不清啊。。
set console ‘ttyS0,115200 mem=64M init=/linuxrc rw loglevel=7’
save
这会就真的成了