Поиск по сайту: |
|
По базе: |
![]() |
|
Главная страница > Обзоры по типам > Микроконтроллеры |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||
Доступ к функциям, хранящимся в ПЗУ MAXQИспользование таблиц внутри программы пользователя является обычной для программистов практикой при работе с микроконтроллерами. Из-за однотактовой природы ядра MAXQ программа не имеет прямого доступа к кодовому пространству и, следовательно, не может непосредственно считывать таблицы, размещенные внутри пользовательского кода. Чтобы устранить это затруднение, все ПЗУ в MAXQ содержат программы доступа к данным и таблицам, располженным в программной области. В дополнение к этим базовым функциям, ПЗУ каждой модификации MAXQ может содержать специфичные для данного микроконтроллера программы. Поскольку эти программы могут быть размещены в ПЗУ произвольно и их местонахождение может изменяться для каждой новой версии ПЗУ, был разработан стандартный механизм доступа к программам. Это позволяет использовать код, написанный для одной из версий ПЗУ, во всех последующих версиях без переписывания или перекомпилирования. Во всех вариантах процессора MAXQ ПЗУ включает в себя таблицу адресов для всех поддерживаемых функций. Местоположение таблицы в разных вариантах может быть различным, поэтому ссылка на нее всегда размещается по адресу 800Dh. Затем адреса используемых функций можно найти в таблице с помощью индексирования. Таблица всегда поддерживает один и тот же порядок расположения функций для всех версий определенного ПЗУ. В табл. 1 перечислены функции MAXQ2000 и адреса их вызова из таблицы. Табл. 1 Таблица пользовательских функций ПЗУ MAXQ2000
Выполнение функции ПЗУ производится за четыре шага. В первом - прочитайте указатель таблицы функций, записанный по адресу 800Dh. Во втором – прибавьте к прочитанному указателю номер нужной функции. В третьем – прочитайте указатель нужной функции, записанный по адресу, вычисленному на втором шаге. Наконец – выполните функцию путем обращения к подпрограмме по адресу, прочитанному на третьем шаге. Приведенный ниже текст на языке ассемблера демонстрирует эти четыре шага, используя функцию микроконтроллера moveDPlinc в качестве примера.
Поскольку будущие версии ПЗУ в определенном варианте MAXQ могут хранить служебные функции по разным адресам, использование служебной функции, сходной с функцией ReadDataAtDP1 гарантирует их совместимость в дальнейшем. «Ценой» этой совместимости является больший размер кода и большее время выполнения. В некоторых случаях это может быть неприемлемым, тогда лучше применить прямой вызов функций ПЗУ. Для прямого вызова служебной функции следует просто определить адрес требуемой функции и использовать его в качестве назначения в команде вызова (call). Чтение строки, размещенной в кодовом пространстве, илюстрирует обычную ситуацию, требующую использования служебных функций. Программист может поместить в программной памяти сообщения об ошибках, информационные или отладочные строки, которые будут отображаться во время выполнения программы пользователя. Приведенный ниже сегмент кода показывает один из вариантов реализации этого с использованием функции ReadDataAtDP1, уже описанной выше.
Заключение Служебные функции облегчают разработчику чтение данных, хранящихся в программной памяти. Стандартный механизм доступа к программам ПЗУ также позволяет разработчикам писать коды, которые будут работать со всеми вариантами конкретного процессора MAXQ. Библиотеки подпрограмм пользователя могут быть написаны так, что их можно будет повторно использовать с последующими версиями ПЗУ, не опасаясь несовместимости. ![]() Главная - Микросхемы - DOC - ЖКИ - Источники питания - Электромеханика - Интерфейсы - Программы - Применения - Статьи ![]() |
|
Впервые? | Реклама на сайте | О проекте | Карта портала тел. редакции: +7 (995) 900 6254. e-mail:info@eust.ru ©1998-2023 Рынок Микроэлектроники |
|