2016-03-21 4 views
0

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?

Antwort

0

Nach meiner Erfahrung, wenn ich solche Abstürze hatte, ist normalerweise, weil es keine Unterbrechungen im System gibt. Ich schlage vor, dass Sie einen BP in den IRQ-Handler legen.

Verwandte Themen