Daniel Mangum обнаружил, что при отладке nRF54LM20 на базе Cortex-M33 GDB после некоторых операций возвращает устаревшие значения из кэша. В то время как команда ReadMemAP в JLinkGDBServer выдавала корректный результат, обычная команда x в GDB продолжала показывать старые значения. Было предположено, что проблема вызвана кэшированием в программном обеспечении J-Link, поскольку прямое чтение через порт доступа AHB-AP работало корректно. После отключения кэширования J-Link проблема была устранена.
Почему это важно
Этот вывод показывает, что отображаемые при отладке микроконтроллера значения памяти не всегда отражают реальное состояние устройства. Разные результаты инструментов, обращающихся к одним и тем же данным, могут привести к ошибочной диагностике, поскольку затрудняют определение того, связана ли проблема с оборудованием или с цепочкой отладки. Сопоставление результатов прямого чтения через AHB-AP с выводом GDB дает разработчикам конкретную точку проверки для выявления подобных несоответствий. Хотя отключение кэширования устраняет проблему, тот факт, что это остается подтвержденным временным решением, а не постоянным исправлением программного обеспечения, оставляет открытым вопрос о том, как следует устранить такое поведение на стороне J-Link.