У нещодавній публікації в блозі автора [Daniel Mangum] він проходить сценарій, який спостерігався під час налагодження nRF54LM20 на основі Cortex-M33, читаючи та записуючи значення під час виконання кількох сценаріїв. Після того, як спочатку здавалося, що це пройшло без будь-яких проблем, раптом налагоджувач GDB радісно повертає значення, які вказують на те, що попередня операція не була успішною. Або, як виявилося, повертаються старі кешовані значення.
Нижче наведено дуже технічний опис низького рівня внутрішньої роботи цього мікроконтролера, зокрема його криптографічних функцій і блоку керування ключами, який використовується для зберігання конфіденційних даних. Найцікавіше те, що ви можете передати кешовані дані, чітко вказавши порт доступу та адресу пам’яті разом з іншими параметрами.
Це ReadMemAP підтримує команду JLinkGDBServer Команда, яка використовується тут, відображає правильне значення, тоді як звичайна команда читання GDB використовує x постійно повертав кешовані значення. Це підняло питання, який кеш це зробить. Пряме читання з AHB-AP порт доступу працював добре, тому є сумніви, що власне кешування мікропрограми J-Link справді добре працюватиме з продуктивністю без кешування J-Link.
J-Link також мав деякі проблеми, пов’язані з апаратним забезпеченням, причому ця нова проблема вказувала на трудомістку програмну помилку, яка того варта залежно від того, скільки часу він витрачає на сеанс налагодження. На щастя [Daniel] Здається, ми швидко вловили це й мали легкий спосіб подолати це, але не всім нам так пощастило.