我在自定义硬件上使用Linux内核3.0.21.
>首次启动硬件时,它会成功启动.
>如果我正确关闭并再次启动硬件,则它可以成功启动.
但是一旦系统启动运行,当我键入reboot命令时,将重新启动内核并挂在
Starting kernel ...
Uncompressing Linux... done, booting the kernel.
我不知道为什么每次软重启时都会遇到这个问题.为避免这种情况,我需要进行硬重置(关闭电源并重新打开电源).
为什么我要面对这个问题?
内核中是否缺少任何清理功能?
如何调试此问题?
解决方法:
是的,这听起来像是在平台对您的硬件的支持中,您缺少一些逻辑来应对软重启.
添加清理代码不能解决问题,因为系统可能会崩溃,然后进行软重启.
因此,需要编写引导系统的代码来应对正在软重启的系统.
要进行调试,您首先需要找出软重启期间内核卡在哪里.最简单的方法是使用硬件调试器.
另一个选择是通读启动代码,并尝试找出可能依赖于冷启动才能工作的所有区域,例如.期望在启动时或类似情况下清除TLB的代码.