|
nedoPC.orgElectronics hobbyists community established in 2002 |
|
Author |
Message |
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Если работает вот это красивое окно отладки, как на моих картинках выше, то Протезус однозначно получил какой-то файл с отладочной информацией. Иначе он не умеет работать с этим попап-окном исходного кода, чисто по его собственному АПИ - ну так следует из его хелп-ов. Файл отладочной информации может быть не обязательно SDI - надо посмотреть что еще появляется в папке с кодом при компиляции. Я почему так и обрадовался, когда Вы сказали про SDI - файлы, я их внутренность и раньше видел из любопытства - но не догадывался зачем они нужны! Сам уже хочу нестерпимо глянуть, но нет сейчас под руками Протезуса старшего, а в моём рабочем Протезусе 6.7 модели 8086 еще нет...
_________________ iLavr
|
20 Jan 2016 06:31 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
ELF - в этом случае и есть тот файл, который содержит отладочную информацию. Доступно в версиях 7.4 и выше. У меня, к сожалению, нет под руками .elf - файла, чтобы глянуть WinHEX-ом, что у них внутри...
_________________ iLavr
|
20 Jan 2016 06:49 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Верно всё, как я ранее и говорил, согласно HELP-y:" в файле с форматированной отладочной информацией, самое главное - столбец адресов". А уж ELF там или другой файл - Протезусу без разницы... Вот проект AVR под отладкой: Основная идея та же: модель передаёт ISIS текущий адрес и брейкпоинты, а Протезус ISIS подсвечивает текстовую строку с адресом из отладочной информации и сравнивает текущий адрес с брейкпоинтами. А вот саму отладочную информацию, видимо, можно организовать по-разному, но главное, где-то должна быть текстовая информация, ибо "на лету" Протезус не дизассемблирует ничего.
_________________ iLavr
|
20 Jan 2016 07:06 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Поинтересовался я структурой ELF-файлов - действительно отладочная информация в них есть. Создаем ELF-файл с отладочной информацией... | | | | Quote: Исполняемый файл формата ELF состоит из таких частей: 1. Заголовок (ELF Header) Содержит общую информацию о файле и его основные характеристики.
2. Заголовок программы (Program Header Table) Это таблица соответствия секций файла сегментам памяти, указывает загрузчику, в какую область памяти писать каждую секцию.
3. Секции Секции содержат всю информацию в файле (программа, данные, отладочная информация и т.д) У каждой секции есть тип, имя и другие параметры. В секции ".text" обычно хранится код, в ".symtab" — таблица символов программы (имена файлов, процедур и переменных), в ".strtab" — таблица строк, в секциях с префиксом ".debug_" — отладочная информация и т.д. Кроме того, в файле должна обязательно быть пустая секция с индексом 0.
4. Заголовок секций (Section Header Table) Это таблица, содержащая массив заголовков секций. | | | | |
Ну и в отладочной информации как раз и указываются номера строк. Значит Proteus ISIS умеет работать с этой отладочной информацией. В принципе всё это не для Proteus-а же придумывали, просто он должен уметь эти форматы поддерживать.
_________________ iLavr
|
20 Jan 2016 08:53 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Ну и остался один момент, который опытным путём я выяснить не смог, поскольку мой старенький Протезус 6.7 не поддерживает ELF-файлы, как выяснилось. Откуда ELF-файл берет текстовую информацию для отладки, т.к. в нём самом её нет.А мысль была вот какая - скачал я из интернета простенький проект начинающего в WinAVR, в проекте всего-то строк 8... Но все создаваемые WinAVR файлы в архиве _12.zip есть. Но моя модель AVR в Протезус 6.7 отказалась скушать ELF-файл... А я хотел посмотреть, из каких файлов ISIS возьмет текстовую информацию для отладки. Так что это лишь предположение, но с большой долей уверенности, что отладочная информация для номеров строк берется из LST-файла ( _12.lst): | | | | Code: _12.elf: file format elf32-avr
Sections: Idx Name Size VMA LMA File off Algn 0 .text 0000007a 00000000 00000000 00000054 2**1 CONTENTS, ALLOC, LOAD, READONLY, CODE 1 .debug_aranges 00000020 00000000 00000000 000000ce 2**0 CONTENTS, READONLY, DEBUGGING 2 .debug_pubnames 0000001b 00000000 00000000 000000ee 2**0 CONTENTS, READONLY, DEBUGGING 3 .debug_info 00000076 00000000 00000000 00000109 2**0 CONTENTS, READONLY, DEBUGGING 4 .debug_abbrev 00000041 00000000 00000000 0000017f 2**0 CONTENTS, READONLY, DEBUGGING 5 .debug_line 00000060 00000000 00000000 000001c0 2**0 CONTENTS, READONLY, DEBUGGING 6 .debug_frame 00000020 00000000 00000000 00000220 2**2 CONTENTS, READONLY, DEBUGGING 7 .debug_str 00000095 00000000 00000000 00000240 2**0 CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:
00000000 <__vectors>: 0: 0c 94 2a 00 jmp 0x54 ; 0x54 <__ctors_end> 4: 0c 94 34 00 jmp 0x68 ; 0x68 <__bad_interrupt> 8: 0c 94 34 00 jmp 0x68 ; 0x68 <__bad_interrupt> c: 0c 94 34 00 jmp 0x68 ; 0x68 <__bad_interrupt> 10: 0c 94 34 00 jmp 0x68 ; 0x68 <__bad_interrupt> 14: 0c 94 34 00 jmp 0x68 ; 0x68 <__bad_interrupt> 18: 0c 94 34 00 jmp 0x68 ; 0x68 <__bad_interrupt> 1c: 0c 94 34 00 jmp 0x68 ; 0x68 <__bad_interrupt> 20: 0c 94 34 00 jmp 0x68 ; 0x68 <__bad_interrupt> 24: 0c 94 34 00 jmp 0x68 ; 0x68 <__bad_interrupt> 28: 0c 94 34 00 jmp 0x68 ; 0x68 <__bad_interrupt> 2c: 0c 94 34 00 jmp 0x68 ; 0x68 <__bad_interrupt> 30: 0c 94 34 00 jmp 0x68 ; 0x68 <__bad_interrupt> 34: 0c 94 34 00 jmp 0x68 ; 0x68 <__bad_interrupt> 38: 0c 94 34 00 jmp 0x68 ; 0x68 <__bad_interrupt> 3c: 0c 94 34 00 jmp 0x68 ; 0x68 <__bad_interrupt> 40: 0c 94 34 00 jmp 0x68 ; 0x68 <__bad_interrupt> 44: 0c 94 34 00 jmp 0x68 ; 0x68 <__bad_interrupt> 48: 0c 94 34 00 jmp 0x68 ; 0x68 <__bad_interrupt> 4c: 0c 94 34 00 jmp 0x68 ; 0x68 <__bad_interrupt> 50: 0c 94 34 00 jmp 0x68 ; 0x68 <__bad_interrupt>
00000054 <__ctors_end>: 54: 11 24 eor r1, r1 56: 1f be out 0x3f, r1 ; 63 58: cf e5 ldi r28, 0x5F ; 95 5a: d4 e0 ldi r29, 0x04 ; 4 5c: de bf out 0x3e, r29 ; 62 5e: cd bf out 0x3d, r28 ; 61 60: 0e 94 36 00 call 0x6c ; 0x6c <main> 64: 0c 94 3b 00 jmp 0x76 ; 0x76 <_exit>
00000068 <__bad_interrupt>: 68: 0c 94 00 00 jmp 0 ; 0x0 <__vectors>
0000006c <main>: #include <avr/io.h> int main(void) { DDRB = 0xFF; 6c: 8f ef ldi r24, 0xFF ; 255 6e: 87 bb out 0x17, r24 ; 23 while (1) { PORTB = PIND; 70: 80 b3 in r24, 0x10 ; 16 72: 88 bb out 0x18, r24 ; 24 74: fd cf rjmp .-6 ; 0x70 <main+0x4>
00000076 <_exit>: 76: f8 94 cli
00000078 <__stop_program>: 78: ff cf rjmp .-2 ; 0x78 <__stop_program> | | | | |
У кого Протезус посвежее - вот этот проект, что я пытался тестировать:
_________________ iLavr
|
20 Jan 2016 09:26 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
| | | | Lavr wrote: Сам процессор весьма шустрый - тест делает даже на моем любимом убогом PII-360MHzочень быстро, особенно когда я частоту выставил 2000000 Hz. Тормознутость в моем проекте Tennis_i8080 связана в значительной мере с моделью LCD индикатор Nokia 3310, поскольку он занимается отрисовкой на экран. | | | | |
Дошли руки до нового ноута с Intel Atom 1.8 GGz... затащил в него все модели... Действительно модель LCD индикатора Nokia 3310 тормозит сильно... Когда работает только модель Z80 - загрузка процессора 48...54%. Как только начинает отрисовку модель LCD индикатора Nokia 3310 - загрузка сразу 100% и начинаются тормоза и глюки... Ну теперь осталось глянуть, как 8086 CPU общается с HEX и SDI-файлами. Отпишусь как посмотрю...
_________________ iLavr
|
23 Jan 2016 06:40 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
С 8086 CPU в Протезусе 7.7 всё выглядит довольно странно... Никаких ассемблеров там нет для 8086 CPU. В модель грузят (или указывают ЕХЕ-файл) в примере приложен calc.exe. Никаких SDI и COF файлов нет, есть исходник на С - calc.с, и такое ощущение, что в отладке ISIS читает прямо его! Больше никакого файла с текстовым исходником я рядом не нашел... если calc.субрать из папки проекта, то при симуляции окно отладки НЕ ПОЯВЛЯЕТСЯ и опция посмотреть исходники у 8086 CPU тоже пропадает! Вот такой неожиданный результат с 8086 CPU и Протезусои 7.7, если я нигде не ошибся... А еще я у них в проекте ПЗУ не нашел! Ваааааауууу! Похоже, они написали 8086 CPU по образу и подобию микроконтроллеров - программа ВНУТРИ 8086 ! И надо указать сегмент - где она находится...
_________________ iLavr
|
23 Jan 2016 07:12 |
|
|
aav8
Maniac
Joined: 05 Nov 2008 19:47 Posts: 287 Location: 81.28.208.238
|
... да-уж решение ... ... он наверное код из внешнего озу выполнять не умеет ... хотя озу может внутри моделироваться
|
23 Jan 2016 21:49 |
|
|
aav8
Maniac
Joined: 05 Nov 2008 19:47 Posts: 287 Location: 81.28.208.238
|
Как-то появилась мысля собрать небольшой контроллер на аналоге 8051. Он умеет выполнять код из внешней памяти. В Proteus-е накидал схемку, в Keil тестовую прогу. В модели указал, что-бы моделировать сигналы для внешней память. Вроде что-то заработало - во внешнее озу что-то прописывается и от туда исполняется код. Но постоянно выскакивают сообщения о коллизии на шинах, а если загнать в sleep, после прерывания вообще вылетает не понятно куда. Если в модели указать, что RAM и ROM есть внутри модели, то все вроде начинает работать правильно. Т.е. как-бы что-то пишется в озу, которое внутри модели, и от туда исполняется код. Хотя во внешней памяти все пусто...
|
23 Jan 2016 22:03 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Очень похоже, что так и есть. В проекте 8086 demoboard у них внешних ОЗУ - тоже нет. Есть 3 защелки на шины и 3 УВВ: 8255, 8253(4) и 8251. Я поэтому очень удивился, что UART 8250 есть уже в Протезусе 6.7. USART 8251 - я точно знал - появился лишь в более старших версиях Протезуса. Что ж... похоже, что Labcenter E.Co решили проблему, над которой мы сейчас размышляем, самым наипростейшим образом: если вся карта памяти внутри модели ЦПУ - то не надо сильно заморачиваться с поиском файлов для символьной отладки... Готовый шаблон программы для микроконтроллеров у них есть - вот они и "расточили" модель 8086 CPU по образу и подобию микроконтроллера, видимо...
_________________ iLavr
|
24 Jan 2016 05:34 |
|
|
aav8
Maniac
Joined: 05 Nov 2008 19:47 Posts: 287 Location: 81.28.208.238
|
... в help-е к 8086 примерно тоже и написано - ram rom внутри ... Меня заинтересовала 8251 - а в библиотеки ее нет ... Как-то можно ее из проекта выдернуть? Посмотрел 82xx.dll там есть ссылки на 8250, 8251, 8253 и 8237 (может еще чего). Интересно, кто-нибудь видел 8237 модель (контроллер ПДП).
по поводу ISOURCEPOPUP: похоже там функций несколько больше чем описано в HLP. читаю VSM SDK....
|
25 Jan 2016 05:14 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Выдернуть её можно, но работать будет только на старших версиях Протезуса. Вниз у них файлы не совместимы... Я пробовал - если создаю библиотеку в Протезусе 6.7и что-то передаю в Протезус 7.7, то оно работает. Наоборот - я даже наш х80 не смог передать вниз... В Протезус 7.7 есть хорошая модель LCD - Nokia_7110 - работает лучше, чем Nokia_3310... пытался её выдернуть - Протезус 6.7 ругается, что библиотеки старшей версии. Ну я тоже вроде как опираюсь на VSM SDK... у меня там написано только это: Возможно, VSM SDK у нас несколько устаревший вместе с HЕLP-ом. Labcenter E.Co теперь раздает его сугубо небесплатно и не всем. В vsm.hpp определены такие функции:
_________________ iLavr
|
25 Jan 2016 06:02 |
|
|
aav8
Maniac
Joined: 05 Nov 2008 19:47 Posts: 287 Location: 81.28.208.238
|
А выдернуть - это надо разобрать а потом собрать компонент?
|
25 Jan 2016 08:18 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Нет - просто создать для него 2 новых библиотечных файла: типа *.LIB и *.IDX в манагере библиотек Протезуса. Потом скопировать в эту новую библиотеку информацию из той библиотеки, где есть компонент. А потом нужную *.dll складываем в папку MODELS, а *.LIB и *.IDX - в папку LIBRARY... После старта Протезуса, если версии библиотек ему подходят, нужный компонент появляется в меню. Я так мучался с индикатором Nokia 3310 - в проекте он работал на Протезусе 7.7, а в меню - его не было! Но потом нашел, что у него отдельная библиотека - ОТТО. " разобрать а потом собрать компонент" - это уже если *.dll-ка есть а библиотечных файлов нету. Тогда - да... собираем компонент, чтобы он появился в меню. Ну а после - как я написал сначала.
_________________ iLavr
|
25 Jan 2016 08:50 |
|
|
aav8
Maniac
Joined: 05 Nov 2008 19:47 Posts: 287 Location: 81.28.208.238
|
Загрузил SDI файл. И даже не один. Ставятся бряки. Двигается по адресам. ... изучаем дальше ...
|
25 Jan 2016 22:40 |
|
|
Who is online |
Users browsing this forum: No registered users and 16 guests |
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot post attachments in this forum
|
|