Яка функціональна відмінність між налагоджувальним і налагоджувальним емулятором?


12

Вбудовані емулятори (скорочено ICE) можуть похвалитися своїми дивовижними можливостями налагодження, а також можуть похвалитися високими цінниками.

Відладчики в ланцюзі (скорочено ICD) можуть робити більшість речей, які може зробити ICE, але часто коштують набагато дешевше.

Я знаю, що ще в той час ICE фактично видалили б проблемний чіп з сокета і замінили його на кабель емулятора, але за допомогою сучасних пакетів QFN, BGA та крихких TQFP, здається, більшість продуктів називають себе налагоджувачами "ICE" підключені до заголовка налагодження приблизно так само, як і ICD.

Ось кілька прикладів продуктів, які в назві використовують "ICE":

Також є товари JTAG "ICE" від декількох постачальників. Зауважте, що я не знижую їх, оскільки вони фізично не входять в ланцюг, але я знижую їх, якщо вони не функціонують як справжній ДВС.

У яких завданнях розвитку мені потрібен ДВС, і коли я повинен задовольнятися ICD? Припустимо, що я хочу перейти через свій код, а не використовувати світлодіоди та оператори printf ().

Наведіть кілька прикладів проблем, які ви вирішили за допомогою ДВС, але не могли (реально) вирішити без нього?

Відповіді:


19

ICE (In-Circuit Emulator) замінює цільовий чіп. Він діє як справжній чіп для решти ланцюга, але має всі види гачків всередині, щоб ви могли бачити, що відбувається, встановлювати точки зламу, завантажувати новий код, захоплювати сліди тощо. Використовується ICD (In-Circuit Debugger) для цієї мети додається спеціальне обладнання для налагодження та намагається надати вам можливість ICE. На жаль, маркетингові люди залучаються і намагаються переосмислити ці багаторічні терміни, намагаючись обдурити вас, думаючи, що їхній продукт краще, ніж наступний. RealIce Microchip є особливо кричущим прикладом цього. Це реально, але єдине, що це не - це ДВС.

Справжній ICE (не RealIce) - найкраще середовище налагодження в ланцюзі. На жаль, вони майже відійшли через високу вартість виготовлення спеціальної версії випускного цільового чіпа для використання в ICE, а також того, що швидкості настільки високі, що зняти що-небудь з чіпа є проблематичним. Інша проблема полягає в тому, що ДВС вимагає, щоб цільовий чіп знаходився в розетці, або потрібен спеціальний адаптер, встановлений замість цільового чіпа, щоб ДВС міг з'єднуватися з його лініями.

Отже, сьогодні ми застрягли з МКБ. На щастя, вони роблять більшість речей, які ви хотіли б зробити з ДВС. Вони навіть мають одну перевагу в тому, що код працює на реальній цільовій мікросхемі, а не те, що намагається бути схожим на цільовий чіп. Мінус полягає в тому, що їм потрібні ресурси мікросхеми, тому вони не є повністю прозорими для вашого коду та обладнання, як ICE. МКБ потребує доступу до налагоджувальних ліній, які часто можуть мати декілька ролей. Ви не можете використовувати ці шпильки в інших ролях під час налагодження. Обсяг налагодженої схеми налагодження, що вбудовується в кожну частину, повинен дотримуватися невеликої частки від загальної кількості витрат, які б були занадто високими, тому функції повинні бути порушені. Одна приємна особливість, яку було б надто дорого додати на кожен чіп, - це справжня можливість слідування, оскільки для цього потрібен великий буфер оперативної пам’яті.

Кожну проблему можна врешті вирішити за допомогою різноманітних інструментів. Справа не в тому, чи можна це вирішити, а в тому, як довго і скільки зусиль потрібно. Коли я регулярно використовував ICE (Microchip ICE-2000 та ICE-4000), я не часто використовував функцію слідування, але коли я робив інші засоби, це було б значно дорожче. Іноді у вас є помилка, де змінна раптом має неправильне значення в ній. Ви переходите до коду, і все в порядку, і рутина, яка маніпулює змінною, здається, все робить правильно, але коли ви запускаєте її, в кінцевому підсумку речі лаються, і ви виявите, що ця змінна потрапила в кошик. Причиною є якийсь інший код із поганим покажчиком, переповненням буфера, невідповідністю стека тощо. За допомогою ДВС ви можете встановити точку розриву змінної,

В більшості випадків ICD буде робити досить добре. Особливо з великими фішками, шпильки, призначені для налагодження, не є великою проблемою. В даний час я в основному використовую RealIce для налагодження. Він набагато стабільніший і менш лускатий, ніж ICD2. Ти вчишся з цим жити.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.