linux - armv7m Linux kernel-4.4.5 在 calibrate_delay_converge() 处挂起

标签 linux arm kernel

我通过硬件调试器调试 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); *

在定时器初始化代码中给出了错误的值。但我无法检查它,因为值本身已被优化。

这是内核错误吗?

最佳答案

根据我的经验,当我遇到这种崩溃时,通常是因为系统中没有中断。我建议你在 IRQ 处理程序中放置一个 BP..

关于linux - armv7m Linux kernel-4.4.5 在 calibrate_delay_converge() 处挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36123963/

相关文章:

linux - Linux 上 .NET Core 的 Authenticode 等效项是什么?

c - strace 在不同缓冲区上的 Linux write 系统调用有不同的结果

c++ - 使用 USB 触摸屏拖放 Qt 5.5 中的错误?

debugging - JTAG 调试器如何停止基于 ARM 的设备的内核?

ubuntu - 为ARM编译时openssl无法编译,否则工作正常

java - 重命名、删除或更改文件路径的成本

linux - 用双引号括起来的双反斜杠替换正斜杠

macos - 驱动程序导致 sleep 唤醒失败

Linux 内核内存泄漏目前已修复

c - 使用 ioctl 更改 autorepeat 的值