2012-12-24 21:16 TI关于da8xx启动内核失败的网页

本文解答了在使用U-Boot加载新的Linux内核过程中遇到的无输出问题,包括内核未写入串口、内核解压后无输出及如何不重新编译内核启用调试输出等,并提供了关于机器编号不匹配导致的问题解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

No kernel output after U-Boot load

Q: I compiled (new) kernel and started it by (new) U-Boot on a (new) board and I get nooutput after U-Boot copied the kernel to RAM and jumped to it: 

## Booting image at 83000000 ...
   Image Name:   Linux-2.6.23-rc3-davinci1
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    1434276 Bytes =  1.4 MB
   Load Address: 80008000
   Entry Point:  80008000
   Verifying Checksum ... OK
OK

Starting kernel ...

<nothing, no output>

A: The kernel uncompression code is probably not writing to  your serial port.  Edit arch/arm/mach-davinci/include/mach/uncompress.h  to refer to your UART instead of UART2 (the default).

No output after uncompressing kernel

Q: I get past the kernel uncompressing part but I still get nooutput after that: 

## Booting image at 83000000 ...
   Image Name:   Linux-2.6.23-rc3-davinci1
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    1434276 Bytes =  1.4 MB
   Load Address: 80008000
   Entry Point:  80008000
   Verifying Checksum ... OK
OK

Starting kernel ...

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

<nothing, no output>

A: Enable

Kernel hacking -> Kernel debugging -> Kernel low-level debugging functions

in Kernel configuration. Drop a printascii() in printk()and see where it hangs.

Enable debug output without kernel recompile

Q: I want to enable kernel debugging, but I don't want (I'm  not able) to recompile the kernel. Is there an other way to enable  kernel low level debugging output?

A: Instead of above Kernel hacking -> Kernel debugging -> Kernel low-level debugging functionsyou can try to reconfigure serial console at kernel command line. If  you use e.g. U-Boot to pass kernel parameters, you can try to replace

... console=/dev/ttyS0,115200n8 ...

with

... console=uart,io,0xe1020000,115200n8 ...

Note: Once the kernel boots fine, you must change the console  definition back to the standard value, otherwise the kernel will have a  conflict when reserving the memory location again for the ttyS0.

Error a

Q: I enabled low-level debugging function like described above and then get

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

Error a

A: "a" stands for "architecture". This means that U-Boot  passes the wrong architecture machine number in processor register r1 to  kernel. U-Boot and Kernel machine numbers don't match. For possible  solutions see below.

Wrong machine number I

Q: My (old/new) U-Boot doesn't start my (new/old) Linux kernel correctly, because the machine numberpassed by U-Boot to the kernel don't match kernels one.

A: Correct your U-Boot and/or Linux kernel to use matching machine numbers.

Wrong machine number II

Q: My (old/new) U-Boot doesn't start my (new/old) Linux kernel  correctly, because the machine numbers don't match. I don't want to  correct machine numbers. What else can I do?

A: Try hackishpatchto disable machine number in kernel.

Machine numbers

Q: What are these machine numbers this FAQ talks about above?

A: See Machine numbersand machine number registry.  Machine number is compiled into U-Boot and passed by register to Linux  kernel. Linux kernel has machine number compiled in as well. Both  machine numbers have to match, else kernel won't boot.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值