ハードウェアデバッガを使用してkernel-4.4.5をデバッグします。そして、それはcalibrate_delay_converge()関数に到達し、次のループで永遠にそこにハングします。armv7m kernel kernel-4.4.5がcalibrate_delay_converge()でハングする
ticks = jiffies; whileループ。 一方(== jiffy単位をマダニ)
;
ティック=のjiffy単位。
私のハードウェアはstm32f429-disc1です。私は "DTS"ファイルstm32f429-disco.dtsを使用しましたが、メモリを定義する1行を変更しました。 BANK2に接続されているので、アドレスを0xD0000000に変更しました。残りのハードウェア構成は変更されません。
UPDATE:
編集stm32_clock_event_set_periodic() "ドライバ/クロックソース/タイマーstm32.c" から。 data-> periodic_topの代わりにハードコードされた500000。そして、カーネル初期化の終わりに達するように管理されました。
だから、
*データ - > periodic_top = DIV_ROUND_CLOSEST(率、プリスケーラ* HZ)のように見えます。 *
タイマーの初期化コードが間違った値を示します。しかし、値自体が最適化されているので、チェックすることはできません。
カーネルのバグですか?