Ich debugge Kernel-4.4.5 Booten über Hardware-Debugger. Und es erreicht die Funktion calibrate_delay_converge() und bleibt dort für immer in der folgenden Schleife hängen.armv7m Linux Kernel-4.4.5 hängt bei calibrate_delay_converge()
ticks = jiffies; While-Schleife. while (Zecken == jiffies)
;
Zecken = jiffies;
Meine Hardware ist stm32f429-disc1. Ich habe "DTS" Datei stm32f429-disco.dts verwendet, aber eine Zeile geändert, die Speicher definiert. Da es an BANK2 angeschlossen ist, habe ich die Adresse auf 0xD0000000 geändert. Der Rest der Hardwarekonfiguration bleibt unverändert.
UPDATE:
Edited stm32_clock_event_set_periodic() von "Treiber/Clock/Timer-stm32.c". Hardcoded 500000 anstelle von daten-> periodic_top. Und es gelang, das Ende der Kernel-Initialisierung zu erreichen.
So sieht es aus wie
* Daten-> periodic_top = DIV_ROUND_CLOSEST (Rate, Vorteiler * HZ); *
im Timer-Initialisierungscode gibt falschen Wert. Aber ich kann es nicht überprüfen, da der Wert selbst optimiert ist.
Ist es ein Kernel-Bug?