Daniel Mangum ha rilevato che, durante il debug dell’nRF54LM20 basato su Cortex-M33, GDB restituiva valori non aggiornati e memorizzati nella cache dopo alcune operazioni. Mentre il comando ReadMemAP di JLinkGDBServer restituiva il risultato corretto, il normale comando x di GDB continuava a mostrare i valori precedenti. Poiché le letture dirette dalla porta di accesso AHB-AP funzionavano correttamente, si è ritenuto che il problema fosse dovuto alla memorizzazione nella cache del software J-Link. La disattivazione della memorizzazione nella cache di J-Link ha risolto il problema.
Perché è importante
Questa scoperta mostra che i valori di memoria visualizzati durante il debug di un microcontrollore potrebbero non riflettere sempre lo stato reale del dispositivo. Il fatto che gli strumenti che accedono agli stessi dati restituiscano risultati diversi può rendere più difficile stabilire se il problema si trovi nell’hardware o nella catena di debug, portando a una diagnosi errata. Il confronto tra le letture dirette tramite AHB-AP e l’output di GDB offre agli sviluppatori un punto di controllo concreto per verificare questo tipo di incoerenze. Sebbene la disattivazione della memorizzazione nella cache risolva il problema, il fatto che rimanga una soluzione temporanea verificata, anziché una correzione software permanente, lascia aperta la questione di come affrontare il comportamento sul lato J-Link.