全部博文(92)
分类: 嵌入式
2010-04-07 14:44:53
Linux-2.6.31内核移植(一)
tar xzvf arm920t-eabi.tgz –C / (解压到根目录下)
#vim /etc/profile
export PATH=/opt/toolchains/arm920t-eabi/bin:$PATH
#source /etc/profile
查看arm-linux-gcc –v
获得内核源码:
Linux-2.6.31.tar.bz2(在光盘资料/源码包/kernel源码目录下)
解压源码,进入目录
修改 Makefile: 183行:
ARCH ?= arm
CROSS_COMPILE ?= arm-linux-
修改时钟:
修改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));
}
这个一定要设置对,否则会打印出乱码。
修改机器码(根据实际情况,这个要和bootloader的匹配):
修改:arch/arm/tools/mach-types 379行:
s3c2440 ……………………… XXX 后面那个数就是机器码
配置:
#make menuconfig
进入Load an Alternate Configuration File
输入2440的默认配置文件:arch/arm/configs/s3c2410_defconfig OK
在System Type选单下,s3c24XX Machine那部分,只选中
SMDK2410/A9M2410
SMDK2440
SMDK2440 with S3C2440 cpu moudle
保存配置文件为:.config
退出,#make zImage,把镜像烧进NandFlash跑一下,看是否打印出信息
注意,系统启动最后可能会出现这个错误:
Kernel panic - not syncing: Attempted to kill init!
然后出打印出一些很乱的东西。
因为用4.X.X版本的交叉编译器使用EABI,但内核默认是不支持EABI编译的,所以编译出的系统会报错,但用3.X.X版本的编译器就不会出现这个问题。
解决办法是,配置内核支持EABI编译
Kernel Features --->
[*] Use the ARM EABI to compile the kernel
[*] Allow old ABI binaries to run with this kernel (EXPERIMENTA)
用DNW下载zImage 到开发板上,
Configuration->option->down load address->0x30000000(RAM首地址)
先用H-FLASHER将u-boot烧到NAND flash上,然后插上跳线帽,打开SecureCRT, 重启开发板,让板子NAND启动,按空格,否则直接跳入引导内核。
*************************************
**** 天祥电子出品 ****
**** TX-2440A ARM9嵌入式学习系统 ****
**** 2440uboot Nand启动 下载模式 ****
*************************************
[1] 下载bootloader
[2] 下载Linux内核镜像
[3] 下载yaffs2文件系统
[4] 下载cramfs文件系统
[5] 下载到SDRAM中运行
[6] 格式化Nand Flash
[7] 启动Linux系统
[8] 设置启动参数
[9] 重启u-boot
[0] 退出目录
Enter your selection: *** Warning - bad CRC or NAND, using default environment
按下2
点开DNW->USB Port->Transmit->选择已生成的zImage
Reset
No filesystem could mount root, tried: ext3 ext2 cramfs vfat msdos iso9660 romfs
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(31,2)
[
[
[
[
[
移植已经成功,就是没有根文件系统