ICE (In-Circuit Emulator) замінює цільовий чіп. Він діє як справжній чіп для решти ланцюга, але має всі види гачків всередині, щоб ви могли бачити, що відбувається, встановлювати точки зламу, завантажувати новий код, захоплювати сліди тощо. Використовується ICD (In-Circuit Debugger) для цієї мети додається спеціальне обладнання для налагодження та намагається надати вам можливість ICE. На жаль, маркетингові люди залучаються і намагаються переосмислити ці багаторічні терміни, намагаючись обдурити вас, думаючи, що їхній продукт краще, ніж наступний. RealIce Microchip є особливо кричущим прикладом цього. Це реально, але єдине, що це не - це ДВС.
Справжній ICE (не RealIce) - найкраще середовище налагодження в ланцюзі. На жаль, вони майже відійшли через високу вартість виготовлення спеціальної версії випускного цільового чіпа для використання в ICE, а також того, що швидкості настільки високі, що зняти що-небудь з чіпа є проблематичним. Інша проблема полягає в тому, що ДВС вимагає, щоб цільовий чіп знаходився в розетці, або потрібен спеціальний адаптер, встановлений замість цільового чіпа, щоб ДВС міг з'єднуватися з його лініями.
Отже, сьогодні ми застрягли з МКБ. На щастя, вони роблять більшість речей, які ви хотіли б зробити з ДВС. Вони навіть мають одну перевагу в тому, що код працює на реальній цільовій мікросхемі, а не те, що намагається бути схожим на цільовий чіп. Мінус полягає в тому, що їм потрібні ресурси мікросхеми, тому вони не є повністю прозорими для вашого коду та обладнання, як ICE. МКБ потребує доступу до налагоджувальних ліній, які часто можуть мати декілька ролей. Ви не можете використовувати ці шпильки в інших ролях під час налагодження. Обсяг налагодженої схеми налагодження, що вбудовується в кожну частину, повинен дотримуватися невеликої частки від загальної кількості витрат, які б були занадто високими, тому функції повинні бути порушені. Одна приємна особливість, яку було б надто дорого додати на кожен чіп, - це справжня можливість слідування, оскільки для цього потрібен великий буфер оперативної пам’яті.
Кожну проблему можна врешті вирішити за допомогою різноманітних інструментів. Справа не в тому, чи можна це вирішити, а в тому, як довго і скільки зусиль потрібно. Коли я регулярно використовував ICE (Microchip ICE-2000 та ICE-4000), я не часто використовував функцію слідування, але коли я робив інші засоби, це було б значно дорожче. Іноді у вас є помилка, де змінна раптом має неправильне значення в ній. Ви переходите до коду, і все в порядку, і рутина, яка маніпулює змінною, здається, все робить правильно, але коли ви запускаєте її, в кінцевому підсумку речі лаються, і ви виявите, що ця змінна потрапила в кошик. Причиною є якийсь інший код із поганим покажчиком, переповненням буфера, невідповідністю стека тощо. За допомогою ДВС ви можете встановити точку розриву змінної,
В більшості випадків ICD буде робити досить добре. Особливо з великими фішками, шпильки, призначені для налагодження, не є великою проблемою. В даний час я в основному використовую RealIce для налагодження. Він набагато стабільніший і менш лускатий, ніж ICD2. Ти вчишся з цим жити.