Linux ARM板引导问题
我正在将Linux内核移植到TI(AM335x SK)板。但在引导板时,它没有完全加载,它会停止,如下所示。Linux ARM板引导问题,linux,linux-kernel,embedded-linux,porting,u-boot,Linux,Linux Kernel,Embedded Linux,Porting,U Boot,我正在将Linux内核移植到TI(AM335x SK)板。但在引导板时,它没有完全加载,它会停止,如下所示。 Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 3126496 Bytes = 3 MiB Load Address: 80008000
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.
如果有人知道,请让我知道这是什么根源。我认为这是内核问题,因为引导加载程序加载了linux映像,然后内核启动,但出现了问题。
可能内核在初始化某些硬件时有问题。我假设您通过串行控制台连接到设备,正如您看到的uboot输出。您是否已将内核配置为使用串行控制台?如果没有,你可能什么也看不到 向我们展示内核命令行,以及您(对内核/在内核中)做了什么? 你用的是普通的香草果仁吗 假设您的设备有一个支持主板硬件的内核,例如,您可以向内核命令行添加如下内容:
console=ttys0115200
这样内核将使用该控制台进行输出。但是,要使其工作,内核必须为您的设备构建(例如,必须知道在哪里,并且有一个串行设备)
这就是说,内核可能只是在启动,但您什么也看不到,因为内核不知道您正在使用的串行控制台存在,因此没有显示任何内容。将NAND闪存上闪存的内核映像大小增加,例如从3MB增加到6MB。 我看到过由于内核大小问题而发生的此类问题 粘贴内核大小的输出 与
并检查这是否超过3MB,如果是这样,您需要将您的内核flash write命令更改为更好的值嵌入式Linux的引导分3步完成:
- 低级硬件初始化
- 将Linux内核加载到RAM中,并将控制权传递给Linux
- 解压缩并重新定位内核
- 把控制权交给它
- 通过运行start_kernel()启动系统,最终生成init进程
Device Drivers -> Character Devices -> Serial Drivers
要考虑的另一个重要缺陷是,串行设备的确切设备名称可能在旧的和较新的内核版本之间或在某些配置之间有所不同。例如,我有一块板,在随它一起安装的操作系统中,ttyS2上有一个控制台,在我自己编译的内核上没有输出。原因是相同的串行端口名为ttyO2。这是一个OMAP,但它可能非常接近于相同的问题。@ortang iam使用以下引导命令=>“mmc重新扫描0 fatload mmc 0 81000000 uImage fatload mmc 0 82000000 ramdisk.gz setenv bootargs console=TTYO0115200N8 mem=256M root=/dev/ram rw initrd=0x82000000,16MB ramdisk_size=65536 earlyprintk=serial bootm 81000000-8000000”
Device Drivers -> Character Devices -> Serial Drivers