Кіріспе

Кестелік эмуляция (ICE) – кіріктірілген жүйенің бағдарламалық жасақтамасын жөндеу үшін жабдық құрылғысын немесе схема эмуляторын пайдалану. Ол процессордың жөндеу операцияларын қолдауға қосымша мүмкіндіктері бар екенін пайдаланып жұмыс істейді, сондай-ақ жүйенің негізгі функциясын орындайды. Әсіресе процессорлары шектеулі ескі жүйелер үшін, процессорды уақытша аппараттық эмулятормен ауыстыру қажет болатын: қуаттырақ, бірақ қымбат нұсқа. Тарихи тұрғыдан алғанда, бұл көптеген ішкі сигналдарды жөндеу мақсатында сыртқа шығарылған бонд-аут процессоры түрінде болды. Бұл сигналдар процессордың күйі туралы ақпарат береді. Соңғы кезде бұл термин JTAG негізіндегі аппараттық жөндеу құралдарын да қамтиды, олар стандартты өндірістік чиптердегі кіріктірілген жөндеу аппараттарын пайдаланып теңдей қолжетімділікті қамтамасыз етеді. Бапталған бонд-аут нұсқаларының орнына стандартты чиптерді пайдалану технологияны кең таралған және төмен құнмен қамтамасыз етеді, сондай-ақ даму және жұмыс орталары арасындағы көптеген айырмашылықтарды жояды. Мұндай жағдайда, схема эмуляторы термині қате болып табылады, кейде одан әрі шатастыруға алып келеді, себебі эмуляция енді қатысы жоқ. Кіріктірілген жүйелер бағдарламашыларға ерекше мәселелер туғызады, өйткені оларда әдетте компьютерлерде кездесетін пернетақталар, мониторлар, дискілер және басқа да пайдаланушы интерфейстері болмайды. Бұл кемшіліктер көптеген даму тапсырмалары үшін схемалық бағдарламалық жасақтаманы жөндеу құралдарын қажет етеді.

Функция

Айналыстағы эмулятор (ICE) кіріктірілген жүйеге терезе ашады. Бағдарламашы эмуляторды кіріктірілген жүйеге бағдарламаларды жүктеу, оларды іске қосу, қадамдармен өту, сондай-ақ жүйенің бағдарламалық қамтамасы қолданатын деректерді қарау және өзгерту үшін пайдаланады. Эмулятор өз атауын кіріктірілген жүйенің компьютеріндегі орталық процессорды (CPU) эмуляциялауынан (еліктеуінен) алады. Әдетте ол процессордың интегралды схемалық чипі орналасатын ұяшыққа қосылатын адаптерге ие болатын. Көптеген қазіргі заманғы жүйелер арнайы JTAG негізіндегі түзетуге қол жеткізу үшін мақсатты жүйенің CPU-ын тікелей пайдаланады. Процессорды эмуляциялау немесе оған тікелей JTAG арқылы қол жеткізу ICE-ге процессордың өзі істей алатын барлық нәрсені жасауға мүмкіндік береді, бірақ бұл бағдарламалық жасақтаманы әзірлеушінің бақылауында болады. ICE компьютерлік терминалды немесе жеке компьютерді (PC) кіріктірілген жүйеге қосады. Терминал немесе компьютер бағдарламашыға кіріктірілген жүйені зерттеу және басқару үшін интерактивті пайдаланушы интерфейсін ұсынады. Мысалы, JTAG адаптері (эмуляторы) арқылы кіріктірілген мақсатты жүйемен байланысатын, графикалық терезелік интерфейсі бар бастапқы код деңгейіндегі түзетуші болуы мүмкін, ал мақсатты жүйеде графикалық пайдаланушы интерфейсі болмайды. Бағдарламалары сәтсіз орындалғанда көптеген кіріктірілген жүйелер жай ғана жұмыссыз қалды. Кіріктірілген жүйелерде жадқа қол жеткізу қателерін анықтау үшін жад басқару блогы (MMU) сияқты бағдарламалық жасақтаманың ақауларын анықтауға арналған негізгі функциялар көбінесе жоқ болады. ICE болмаса, кіріктірілген жүйелерді әзірлеу өте қиын болуы мүмкін, себебі не дұрыс емес екенін анықтаудың әдетте жолы болмайды. ICE-де бағдарламашы кодтың бөліктерін сынап, содан кейін қателікті кодтың нақты бөлігіне орнатуға және одан кейін қателік кодты тексеріп, мәселені шешу үшін қайта жаза алады. Пайдалану кезінде ICE бағдарламашыға орындалу үзіліс нүктелерін, жадты көрсету және бақылау, сондай-ақ кіріс/шығыс басқаруын ұсынады. Бұдан өзге, ICE сәтсіздіктің себебін анықтауға тырысу үшін кез келген сәйкес критерийлерді іздеуге бағдарламаланады. Көптеген қазіргі заманғы микроконтроллерлер құрылғыны бағдарламалау, эмуляциялау және түзету мүмкіндіктері үшін мақсатты микроконтроллердің арнайы эмуляциялық нұсқасын (яғни, қосылымдық нұсқасын) қажет етудің орнына, өндірілген микроконтроллерде берілген ресурстарды пайдаланады. Бұл тиімді әдіс болғанымен, ICE блогы мақсатты микроконтроллерді нақты эмуляциялаудың орнына эмуляцияны ғана басқаратындықтан, өндіріс кезінде бағаны төмен ұстау үшін компромисстер жасау қажет, бірақ эмуляциялық қосымшалар үшін (салыстырмалы түрде аз) жеткілікті эмуляция мүмкіндіктерін қамтамасыз ету қажет.

Артықшылықтар

Барлық кіріктірілген жүйелерде дерлік жеке, бірақ бір-біріне тығыз байланысты аппараттық және бағдарламалық элементтер болады. ICE бағдарламалық элементті аппараттық құралда орындауға және сынауға мүмкіндік береді, сонымен қатар бағдарламалаушыларға қате кодты оқшаулауға көмектесетін қолайлы мүмкіндіктер ұсынады, мысалы, бастапқы код деңгейінде жөндеу (бағдарлама жазылған күйінде көрсетіледі) және қадамдық орындау (бағдарламалаушыларға қателерді табу үшін бағдарламаны қадам-қадаммен орындауға мүмкіндік береді). Көптеген ICE құрылғылары ICE хост компьютері мен сынақ жүргізілетін жүйе арасында орналасқан адаптер блогынан тұрады. Адаптерді тігізгіштер жинағы мен кабель арқылы кіріктірілген жүйенің орталық процессорлық блогына (CPU) немесе микроконтроллеріне қосады. Жаңа ICE құрылғылары бағдарламалаушыларға JTAG немесе артқы фондық жөндеу режимі (BDM) интерфейсі арқылы CPU-ға енгізілген чиптегі жөндеу тізбегіне қол жеткізуге мүмкіндік береді, осы арқылы кіріктірілген жүйенің бағдарламалық жасақтамасын жөндеуге болады. Бұл жүйелер көбінесе CPU чипінің стандартты нұсқасын пайдаланады және оларды өндірістік жүйедегі жөндеу портына тікелей қосуға болады. Оларды кейде тікелей схемалық жөндеу құралдары немесе ICD деп атайды, себебі олар CPU функционалдығын қайталай бермейді, керісінше, бұрыннан бар стандартты CPU-ны басқарады. CPU-ны ауыстыру қажет болмағандықтан, олар CPU тікелей тіркелген және ауыстырылмайтын өндірістік құрылымдарда да жұмыс істей алады. x86 Pentium процессорларында ICE жөндеуге көмектесу үшін арнайы «проба режимін» пайдаланады. Кіріктірілген жүйелер контекстінде ICE аппараттық құралды эмуляцияламайды. Оның орнына, ол нақты CPU-ға тікелей жөндеуге қол жеткізуді қамтамасыз етеді. Сынақ жүргізіліп жатқан жүйе толық бақылауда болады, бұл әзірлеушіге кодты тікелей жүктеуге, жөндеуге және сынауға мүмкіндік береді. Көптеген хост жүйелері – даму үшін қолданылатын CPU-ға қатысы жоқ, қарапайым коммерциялық компьютерлер. Мысалы, Linux-ты іске қоса алмайтын Freescale 68HC11 чипі бар жүйе үшін бағдарламалық жасақтаманы әзірлеу үшін Linux PC пайдаланылуы мүмкін. Бағдарламашы әдетте кіріктірілген жүйенің кодын хост жүйесінде де өңдейді және компиляциялайды. Хост жүйесінде кіріктірілген жүйе үшін орындалатын кодты құратын арнайы компиляторлар болады, олар кросс-компиляторлар немесе кросс-ассемблерлер деп аталады.

Чиптегі қателерді жөндеу

Чиптегі түзету – схемалық эмуляцияға балама. Ол ұқсас мақсатқа жету үшін басқа тәсіл қолданады. Чиптегі түзету, көбінесе Joint Test Action Group (JTAG) деп аталады, өндірістік жүйедегі жұмыс істеп тұрған аппараттық құралға қосымша түзету интерфейсін ұсынады. Ол схема ішіндегі түзету сияқты мүмкіндіктерді қамтиды, мысалы, ішкі күйді немесе айнымалыларды қарау, сондай-ақ бақылау нүктелерін, тоқтату нүктелерін және қадағалау нүктелерін орнату мүмкіндігіне ие болуы мүмкін. Ерекшелігі – бұл процессорды бортынан тыс түзету эмуляторымен алмастырудың орнына, өндірістік процессордың ішіндегі қосымша кремний арқылы жүзеге асырылады. Осы себепті, ICE функцияларының бір бөлігі процессордың техникалық сипаттамаларына сәйкес өзгертіледі. Басқару тақтасына қосымша JTAG интерфейсі қосылады, және бұл әрбір өндірістік жүйеде міндетті, бірақ ол үшін тек бірнеше сигналдық тіреулер қажет болғандықтан, қосымша шығын өте төмен. JTAG интерфейстері бастапқыда өндіріс аяғындағы сынақтар үшін жасалған және қазір де пайдалы.

Ақпараттық мәлімет

Intel 286 процессорда схема ішіндегі эмулятор (ICE) арқылы жөндеуді қолдау үшін бес қосымша тірекше болды: ICE тоқтауын сырттан күштеп орнатуға арналған бір кіріс тірекше (ICEBP#) және пайдаланушы жадының орнына ICE шинасы арқылы операцияларды таңдауға арналған екі баламалы шығыс тірекше. 80286 процессорда толық CPU күйін 0x800 жад смещениясына сақтау/қалпына келтіру үшін екі команда (0F 04, 0F 05) бар, сондай-ақ ICE режимінің пайдаланушы жадына қол жеткізуін қосу үшін бір байттық ауыстыру префиксі (F1) бар.