我正在将Linux内核移植到TI(AM335x SK)主板上。但是在启动主板时它没有完全加载它停止,如下所示。
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 3126496 Bytes = 3 MiB
Load Address: 80008000
Entry Point: 80008000
Verifying Checksum ... OK
XIP Kernel Image ... OK
OK
Starting kernel ...
Uncompressing Linux... done, booting the kernel.
如果有人知道,请让我知道这是什么原因。
答案 0 :(得分:3)
我假设您已连接到设备的串行控制台,因为您看到了uboot输出。您是否已将内核配置为使用串行控制台?如果没有,你可能看不到任何东西。
向我们展示内核命令行,以及你做了什么(到/在内核中)? 你使用普通的香草内核吗?
假设您的设备内核支持您的主板硬件,您可以在内核命令行中添加以下内容:console=ttyS0,115200
。
这样内核将使用该控制台进行输出。但要实现这一点,必须为您的设备构建内核(例如,必须知道哪里有一个串行设备)。
话虽这么说,内核可能只是启动,但你没有看到任何东西,因为内核不知道你正在使用的串口控制台是否存在,因此没有显示任何内容。
答案 1 :(得分:3)
Linux on Linux的启动分三步完成:
引导程序
Bootstrap加载程序(在Linux内核映像中):
Linux内核:
您的输出是在步骤2和步骤3之间(即,内核解压缩)。
您可能没有将所有内容设置为具有正常工作的控制台:
编译目标Linux内核,通过 make menuconfig 启用串行控制台
Device Drivers -> Character Devices -> Serial Drivers
在内核配置中启用串行通信的特定驱动程序(即通过 make menuconfig )
通过在U-Boot的 bootargs 变量中设置 console = device,baudrate 选项,在正确的设备上设置Linux控制台。
答案 2 :(得分:1)
我认为这是内核问题,因为bootloader加载了linux映像然后内核启动了,但是挂了。 可能内核有一些HW的初始化问题。
答案 3 :(得分:0)
增加NAND闪存上闪存的内核映像的大小,比如从3MB到6MB。 我已经看到由于内核大小问题而发生的这类问题 粘贴内核大小的输出 与
ls -alh uImage
并检查这是否超过3MB,如果是这样,你必须将你的内核flash write命令更改为更好的值