1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > linux 内核调试 booting the kernel. Linux无法启动解决 booting the kernel.

linux 内核调试 booting the kernel. Linux无法启动解决 booting the kernel.

时间:2024-05-19 21:09:33

相关推荐

linux 内核调试 booting the kernel. Linux无法启动解决 booting the kernel.

使用mini2440带的Linux2.6.32 使用u-boot 1.3.4引导时候无法启动内核,一直停留在以下这地方:

done Bytes transferred = 2286856 (22e508 hex)

## Booting kernel from Legacy Image at 32000000 ...

Image Name: Linux-2.6.32.2-FriendlyARM

Created: -02-12 4:43:25 UTC

Image Type: ARM Linux Kernel Image (uncompressed)

Data Size: 2286792 Bytes = 2.2 MB

Load Address: 30008000

Entry Point: 30008000

Verifying Checksum ... OK

Loading Kernel Image ... OK

OK

Starting kernel ...

Uncompressing Linux..................................................................................................................................................... done, booting the kernel.

出现这个现象的原因有三个:

1.u-boot中的频率与kernel中CPU频率的设置不一样,kernel中设置的过高,使程序跑飞。

2.mach_type值不一致。u-boot中的mach_type值与kernel中的不一致,导致这个问题。

3.启动的时候,串口参数设置有问题。

我的问题是第2个大原因。

去arch/arm/mach-s3c2440/mach-mini2440.c 查看下面这个结构体:

MACHINE_START(MINI2440, "MINI2440")

/* Maintainer: Michel Pollet */

.phys_io = S3C2410_PA_UART,

.io_pg_offst = (((u32)S3C24XX_VA_UART) >> 18) & 0xfffc,

.boot_params = S3C2410_SDRAM_PA + 0x100,

.map_io = mini2440_map_io,

.init_machine = mini2440_init,

.init_irq = s3c24xx_init_irq,

.timer = &s3c24xx_timer,

MACHINE_END

问题就是出在第一行的MINI2440,因为这个宏定义扩展之后的machine type 就成了 MACHINE_TYPE_MINI2440, 而我在u-boot定义的是MACHINE_TYPE_S3C2440,因此不匹配导致内核不识别死在这里了。 将MINI2440改成S3C2440后内核成功起来

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。