рефераты рефераты
Главная страница > Курсовая работа: Микроконтроллеры для начинающих. И не только  
Курсовая работа: Микроконтроллеры для начинающих. И не только
Главная страница
Банковское дело
Безопасность жизнедеятельности
Биология
Биржевое дело
Ботаника и сельское хоз-во
Бухгалтерский учет и аудит
География экономическая география
Геодезия
Геология
Госслужба
Гражданский процесс
Гражданское право
Иностранные языки лингвистика
Искусство
Историческая личность
История
История государства и права
История отечественного государства и права
История политичиских учений
История техники
История экономических учений
Биографии
Биология и химия
Издательское дело и полиграфия
Исторические личности
Краткое содержание произведений
Новейшая история политология
Остальные рефераты
Промышленность производство
психология педагогика
Коммуникации связь цифровые приборы и радиоэлектроника
Краеведение и этнография
Кулинария и продукты питания
Культура и искусство
Литература
Маркетинг реклама и торговля
Математика
Медицина
Реклама
Физика
Финансы
Химия
Экономическая теория
Юриспруденция
Юридическая наука
Компьютерные науки
Финансовые науки
Управленческие науки
Информатика программирование
Экономика
Архитектура
Банковское дело
Биржевое дело
Бухгалтерский учет и аудит
Валютные отношения
География
Кредитование
Инвестиции
Информатика
Кибернетика
Косметология
Наука и техника
Маркетинг
Культура и искусство
Менеджмент
Металлургия
Налогообложение
Предпринимательство
Радиоэлектроника
Страхование
Строительство
Схемотехника
Таможенная система
Сочинения по литературе и русскому языку
Теория организация
Теплотехника
Туризм
Управление
Форма поиска
Авторизация




 
Статистика
рефераты
Последние новости

Курсовая работа: Микроконтроллеры для начинающих. И не только

Помимо статических объектов, адреса которых не изменяются за время выполнения программы, в программе, написанной на языке высокого уровня, могут существовать так называемые автоматические объекты, память под которые временно отводится в стеке МК. Адреса таких объектов не абсолютны, а определяются динамически на этапе выполнения программы. Обычно они отсчитываются от текущего значения некоторой статической переменной, называемой указателем фрейма стека (Base Pointer или BP). Так как значение BP формируется программой динамически на этапе выполнения, значения автоматических объектов доступны только в пределах их области видимости, то есть при правильном значении BP. Отладчик при отображении значений автоматических объектов должен «знать» способ, которым определяются адреса, а также отслеживать правильность значения BP.

Возможно также временное размещение переменных в регистрах МК. В этом случае отладчик должен «знать», какие переменные в каких регистрах размещены и в течение какого времени. И, наконец, часто встречается ситуация, когда один и тот же объект за время своей жизни меняет способ размещения в памяти, причём не один раз. Это может происходить, например, когда функция получает один или несколько параметров в регистрах, а затем перемещает их в стек.

Область видимости объекта

Как и в ассемблерных, в программах на Си существуют глобальные объекты, доступные по имени из любого модуля, и объекты, локализованные в модуле (эти объекты объявляются как static). Однако автоматические и регистровые переменные создают отладчикам дополнительные трудности при отображении их значений. Дело в том, что, во-первых, время жизни автоматического объекта ограничено его областью видимости, а во-вторых, охватывающие области видимости могут иметь свои автоматические объекты с теми же именами. Проиллюстрируем это на примере функции, имеющей несколько вложенных областей видимости:

void f (int а)

{

long b;

if (a == 0) a++;

for (b = a * 2; b < 100; b++)

{

long с;

long a = b / 3;

if (a == 0) a++;

for (c = a; с < 10; c++)

{

char a = с == 9? 1: 0;

fl(a);

}

f2 (a);

}

f3 (a);

}

Переменная с именем «а» существует всё время, пока выполняется функция f, но в зависимости от того, какая часть функции выполняется, имя «а» обозначает разные переменные. При трассировке функции f отладчик должен в зависимости от того, какая переменная активна, правильно показывать её значение.

Создавая программу, разработчик не заботится о деталях реализации понятий, которые он использовал в программе. Оперируя «само собой разумеющимися» категориями, он зачастую не подозревает, как сложно было реализовать их разработчикам компиляторов и отладчиков. Последним приходится решать задачи совмещения в одной оболочке одновременно простого и интуитивного интерфейса, богатства функциональных возможностей и детальной проработки всего, что связано с реализацией особенностей архитектуры и функционирования конкретного МК. Если отладчик не предоставляет разработчику средств отладки, адекватных сложности решаемой задачи, то разработчик неизбежно теряет в производительности. Кому из нас не приходилось тратить часы и дни в поисках досадной ошибки или опечатки в исходном тексте?!

В процессе разработки и создания микропроцессорной системы рано или поздно наступает момент, когда она, наконец, воплощена в «железе» и начинает подавать признаки жизни. Однако в большинстве случаев эти признаки оказываются непредсказуемыми, система начинает жить «своей» жизнью. Многие программисты, наверное, согласятся, что каждая новая программа содержит ошибки. Отчасти поэтому новый МК на первых порах ведёт себя как «чёрный» ящик.

Для того чтобы облегчить процесс отладки систем, разработан целый класс инструментальных средств. Их основное назначение – сделать процесс функционирования отлаживаемого МК «прозрачным», то есть легко контролируемым, произвольно управляемым и модифицируемым по воле разработчика. Хороший профессиональный инструментальный комплекс дополнительно может предоставить разработчику множество сервисных услуг, тем самым существенно облегчая его труд, избавляя от рутинных операций.

К числу основных инструментальных средств отладки относятся внутрисхемные эмуляторы, программные симуляторы, платы развития (оценочные платы), мониторы отладки и эмуляторы ПЗУ. Существуют и комбинированные устройства и наборы.

6. Внутрисхемные эмуляторы

Внутрисхемный эмулятор (ВСЭ) – программно аппаратное средство, способное замещать собой эмулируемый процессор в реальном устройстве. ВСЭ – наиболее мощное и универсальное отладочное средство.

Функционально ВСЭ делятся на стыкуемые с внешней вычислительной машиной (обычно это – IBM-совместимый ПК) и функционирующие автономно. Последние имеют собственные вычислительные ресурсы и средства ввода / вывода, поэтому при равных возможностях стоят значительно дороже первых, а при одинаковой цене существенно уступают им в функциональных и сервисных возможностях.

С отлаживаемой системой ВСЭ обычно соединяют кабелем со специальной эмуляционной головкой. Относительно недавно появились модели ВСЭ, у которых такая головка конструктивно совмещена с основным блоком и вставляется в отлаживаемую систему вместо МК. Если последний невозможно удалить (выводы впаяны в плату), использование ВСЭ допустимо при условии, что этот МК имеет отладочный режим, в котором все его выводы находятся в третьем (высокоимпедансном) состоянии. В этом случае для подключения ВСЭ используют специальный адаптер-клипсу. подсоединяемый непосредственно к выводам эмулируемого МК.

Как минимум, ВСЭ содержит отладчик, узел эмуляции МК, эмуляционную память и подсистему точек останова, В состав более совершенных ВСЭ могут дополнительно входить трассировщик, процессор точек останова, профилировщик (анализатор эффективности программного кода), таймер реального времени, программно-аппаратные средства, позволяющие читать и модифицировать ресурсы эмулируемого процессора «на лету», программно-аппаратные средства, обеспечивающие синхронное управление и необходимые для эмуляции в мультипроцессорных системах, интегрированную среду разработки.

Отладчик является своеобразным мостом между разработчиком и отладочным средством. Хороший отладчик обеспечивает загрузку отлаживаемых программ в память системы, вывод на монитор состояний и содержимого всех регистров и памяти (а при необходимости – и их модификаций), управление процессом эмуляции.

Более мощные отладчики (обычно их называют высокоуровневыми или High-Level Debuggers) позволяют также:

Ø  вести символьную отладку (благодаря тому, что отладчик, используя специальную информацию, поставляемую компилятором, «знает» адреса всех символьных переменных, массивов и структур). При этом пользователь может оперировать более приемлемыми для человека символьными именами, не утруждая себя запоминанием их адресов,

Ø  контролировать и анализировать не только дизассемблированный текст, но и исходный текст программы, написанной на языке высокого уровня, и даже с собственными комментариями.

Такой отладчик даёт возможность пользователю одновременно контролировать ход выполнения программы и видеть соответствие между исходным текстом, образом программы в машинных кодах и состоянием всех ресурсов эмулируемого микроконтроллера.

Следует отметить, что высокоуровневый отладчик обеспечивает выполнение всех своих функций только в том случае, если используется кросс-компилятор, поставляющий полную и правильную отладочную информацию (не все компиляторы, особенно их пиратские версии, способны на это), и при этом формат её представления «знаком» отладчику.

Эмуляционную память используют в процессе отладки вместо ПЗУ разрабатываемой системы. Более того, она позволяет отлаживать программу в отсутствие реальной системы или её макета. Если необходимо внести изменения в отлаживаемую программу, достаточно загрузить новую или модифицированную программу в память эмулятора, а не заниматься перепрограммированием ПЗУ.

Существуют ВСЭ, которые позволяют пользователю «подставлять» эмуляционную память вместо ПЗУ не только целиком, но и поблочно (в некоторых моделях минимальный размер блока – 1 байт), в порядке, определённом пользователем. Для этого ему достаточно задать распределение памяти данных и памяти программ, в соответствии с которым процессор будет получать доступ и к содержимому ПЗУ в отлаживаемой системе, и к содержимому эмуляционной памяти ВСЭ, Такую память обычно называют памятью с возможностью мэппинга.

Трассировщик представляет собой логический анализатор, работающий синхронно с процессором и фиксирующий поток выполняемых инструкций и состояния выбранных внешних сигналов. Существуют ВСЭ, позволяющие трассировать не только внешние сигналы, но и состояния внутренних ресурсов МК, например, регистров. В таких устройствах используют специальные версии МК (эмуляционные кристаллы).

Процессор точек останова даёт возможность останавливать исполнение программы или производить иные действия (например, запускать или останавливать трассировщик) при выполнении заданных пользователем условий. В отличие от механизма обычных точек останова, процессор позволяет на аппаратном уровне формировать и отслеживать условия практически любой сложности, при этом эмулируемый процесс не выводится из масштаба реального времени. В некоторых моделях ВСЭ процессор точек останова может дополнительно использоваться для динамического управления трассировщиком.

Профилировщик (анализатор эффективности программного кода) позволяет по результатам прогона отлаживаемой программы получить информацию о числе обращений к различным участкам программы и времени, затраченном на их выполнение. Анализ статистической информации, поставляемой профилировщиком, даёт возможность выявлять «мёртвые» или перенапряженные участки программ и в результате оптимизировать структуру отлаживаемой программы.

Страницы: 1, 2, 3, 4, 5, 6, 7, 8

рефераты
Новости