我通过硬件调试器调试kernel-4.4.5启动。它到达calibrate_delay_converge()函数并在以下循环中永久挂起。
ticks = jiffies; while循环。 while(ticks == jiffies)
;
ticks = jiffies;
我的硬件是stm32f429-disc1。我使用了“DTS”文件stm32f429-disco.dts但更改了一行定义内存。由于它附加到BANK2,我将地址更改为0xD0000000。其余的硬件配置保持不变。
更新
从“drivers / clocksource / timer-stm32.c”编辑 stm32_clock_event_set_periodic() 。硬编码500000而不是 data-> periodic_top 。并设法达到内核初始化的结束。
所以它看起来像
* data-> periodic_top = DIV_ROUND_CLOSEST(rate,prescaler * HZ); *
定时器初始化代码中的给出了错误的值。但我无法检查它,因为值本身已经过优化。
这是一个内核错误吗?
答案 0 :(得分:0)
根据我的经验,当我遇到这种崩溃时,通常是因为系统中没有中断。我建议你在IRQ处理程序中放置一个BP ..