ARM IXP425上移植MVL内核

王朝other·作者佚名  2006-03-18
窄屏简体版  字體: |||超大  

首先使用原来可以成功运行的kernel配置进行配置,我使用的是MVL3.0,其内核版本是2.4.18。

注:由于两款硬件的SDRAM大小不同,以前的SDRAM是256M,新硬件的SDRAM是128M,因此修改配置文件中的kernel cmdline,内容如下:

CODE:

[Copy to clipboard]

console=ttyS0,115200 root=/dev/ram rw ip=off mem=128M@0x00000000 initrd=0x00800000,8M

然后执行一下命令:

CODE:

[Copy to clipboard]

make ixdp425_config

make oldconfig

make dep

make zImage

成功,得到vmlinux和zImage,用file命令检查vmlinux文件,显示:

CODE:

[Copy to clipboard]

file vmlinux

vmlinux: ELF 32-bit MSB executable, ARM, Version 1 (ARM), statically linked, not stripped

确认为可以在ARM上执行的文件。然后连接硬件,启动到RedBoot系统,执行以下命令:

CODE:

[Copy to clipboard]

RedBoot> load -r -v -b 0x11600000 zImage

Using default protocol (TFTP)

|

Raw file loaded 0x11600000-0x116ada3f, assumed entry at 0x11600000

RedBoot> fis list

Name FLASH addr Mem addr Length Entry point

RedBoot 0x50000000 0x50000000 0x00060000 0x00000000

RedBoot config 0x50FC0000 0x50FC0000 0x00001000 0x00000000

FIS directory 0x50FE0000 0x50FE0000 0x00020000 0x00000000

mac 0x50060000 0x10000000 0x00020000 0x10000000

zimage 0x50080000 0x11600000 0x00100000 0x11600000

ramdisk 0x50180000 0x10800000 0x00600000 0x10800000

param 0x505E0000 0x00100000 0x00020000 0x10800000

RedBoot> go 0x11600000

Uncompressing Linux.................................................. done, boot

ing the kernel.

到此,系统就没有反映了。

网上搜索了一下,发现有三种情况遇到此问题:

1、一部分同仁们在cmdline中的console定义错误,将ttyS0写成了tty0,这样将输出定向到了标准终端,而不是串口;

2、一部分同仁在省级到2.6.10以上内核时还是错误的定义了console输出,2.6.10后的串口名据说变成ttySC0了,我也没试过2.6.10的内核;

3、还有一部分人在升级到2.6.10后,使用一个叫做skyeye的工具模拟,好像那样会牵扯到一个memory.h和lubbock.c中的关于内存基地址的定义问题,需要修改基地址中的0xa0000000为0xc00000000。

对比了硬件厂家提供的软件包,其中在arch/arm/boot目录下,Makefile中有以下定义点:

CODE:

[Copy to clipboard]

ifeq ($(CONFIG_ARCH_IXP425),y)

ZRELADDR = 0x00008000

PARAMS_PHYS = 0x00000100

endif

这与厂家提供的地址不同,这几个地址是kernel imgae解压缩后的地址,硬件相关,因此需要修改一致:

然后还有arch/arm/boot/compressed目录下的head-xscale.S文件,这个文件是初始化是调用的汇编,与芯片相关的,MVL提供的和厂商提供的不一样,因此用厂商提供的该文件替换。

然后就是注意kernel配置中的CMDLINE的设置,就OK了!

重新编译内核,加载,OK,系统启动成功。

但是现在碰到了新的问题,启动后系统报出如下错误:

CODE:

[Copy to clipboard]

[error] No ISR registered to service interrupt

这个报错是由于一个模块没有加载成功造成的,重新编译modules后,替换到ramdisk中,就OK了!

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有  導航