内核解压失败或【system halted】问题汇总

本文详细分析了内核解压失败和系统halted的常见原因,包括uboot参数配置错误、Flash分区不足、内核烧写位置不当以及内核数据破坏等。解决方案涉及正确配置bootcmd参数、合理分配Flash分区以及避免内核数据在拷贝和烧写过程中的损坏。

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


1、内核解压失败

  • 出现这种情况,一般主要体现在以下几个方面:
  1. uboot 环境变量 bootcmd 参数配置不正确。举例:
    1.1 uboot引导kernel启动的参数应设置为:bootcmd=sf probe 0;sf read 0x42000000 0x60000 0x340000;bootm 0x42000000
    1.2 实际已设置为:bootcmd=sf probe 0;sf read 0x42000000 0x100000 0x400000;bootm 0x42000000
  2. 在 Flash 分区为内核分配的空间不足。举例:
    内核大小为:3320K,而Flash的kernel分区只分配了:3328K,当解压缩内核文件时可能空间不足而导致解压失败。
  3. 内核文件不小心烧写在 Flash 其他分区了,或内核文件根本就没有成功烧写到内核分区。

内核解压失败

2、system halted 内核死机

  • 出现这种情况,无非就是内核文件存在而它的数据已被破坏了。主要体现在以下几个方面:
  1. 人为拷贝或重命名内核文件时不小心破坏了内核数据;
  2. 通过烧录工具烧写内核到 Flash 时,烧写范围超出了指定的分区大小。举例:
    内核正常烧写分区为:0x42000000 0x60000 0x340000,而实际却烧写了:0x42000000 0x100000 0x400000
  3. uboot源码里的 “uboot + 环境变量” 默认分区大小为 1MB,而我们在 Flash 里给 uboot 分配的空间为 384KB,紧接着就为 kernel 分配 4MB 的空间,当 uboot 运行起来后还是按照 1MB 的空间使用,这时就会把内核的数据破坏了导致内核死机。举例:
    bootargs=mtdparts=hi_sfc:384K(boot),4M(kernel)

在这里插入图片描述


内核死机

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

积步千里

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值