Микропроцессорная техника: практический курс : учебное пособие для студентов Физико-технологического института, обучающихся по направлениям подготовки "Ядерная физика и технологии", "Биомедицинская инженерия"


Download 0.63 Mb.
Pdf ko'rish
bet60/74
Sana29.03.2023
Hajmi0.63 Mb.
#1306393
1   ...   56   57   58   59   60   61   62   63   ...   74
Bog'liq
978-5-321-02171-21 2012 (1)

Практические рекомендации. Исходный текст стартовой функции
?C_STARTUP
находится в библиотечном архиве в файле STARTUP.A51
и доступен для редактирования. Это дает возможность осуществить
корректную настройку для работы с библиотеками в конкретных усло-
виях.
В качестве примера оптимизируем настройки Keil µVision для кор-
ректной работы с библиотеками на лабораторном стенде SDK-1.
1. В настройках инструментальной среды Keil µVision для нашего
проекта ‘Target 1’ укажем начальный адрес внешней памяти SRAM
лабораторного стенда 2000H. Для этого на вкладке
Project\Options for 'Target 1'\Target
в окне Off-Chip Code memory/Start наберем 0x2000. Как видно
из примера, адреса на вкладке набираются не в постфиксном виде как
106


4.5. Арифметические функции библиотеки
в ассемблере, а в префиксном виде как в языке C51. Отметим, что на
этой же вкладке в окне Off-Chip X-data memory/Start можно
при необходимости задать начальный адрес XDATA для размещения
сегментов данных. На другой вкладке
Project\Options for 'Target 1'\BL51 Locate
следует выбрать Use Memory Layout from Target Dialog.
2. В копии файла STARTUP.A51 необходимо заменить директи-
ву CSEG AT 0H на директиву CSEG AT 2000H. Отредактированный
файл STARTUP.A51 можно подключить к проекту одним из трех воз-
можных способов.
Во-первых, этот файл можно ассемблировать до объектного фор-
мата и заменить им исходную версию функции ?C_STARTUP в биб-
лиотеке. Однако мы не рекомендуем этот путь, так как в этом случае
библиотеки Keil µVision перестанут быть стандартными библиотека-
ми и появится проблема с переносимостью программ.
Во-вторых, к проекту можно прямо подключить исходный текст
отредактированной копии файла STARTUP.A51. Здесь важно соблю-
дать правильный порядок подключения файлов. STARTUP.A51 под-
ключается первым, потом идут файлы с программой пользователя,
затем библиотечные файлы в строго установленном порядке – снача-
ла C51FPx.lib, потом C51x.lib. Смысл такого порядка: компонов-
щик в указанном порядке будет искать внешние функции до их первого
обнаружения. Например, при поиске внешней функции ?C_STARTUP
компоновщик обнаружит ее в файле STARTUP.A51 и прекратит даль-
нейший поиск этой функции. Таким образом, стандартная версия этой
функции, содержащаяся в файле C51x.lib, будет проигнорирована.
Данный способ дает возможность вносить правки, не модифицируя
ни файлы стандартных библиотек, ни программы пользователя. Од-
нако данный способ имеет серьезный недостаток: если мы забыли под-
ключить к проекту отредактированную копию файла STARTUP.A51,
то это не вызовет ошибки ни при ассемблировании, ни при компо-
новке. Компиляция пройдет успешно, но получившаяся программа
будет неработоспособной. Такую ошибку найти чрезвычайно трудно.
Она может быть выявлена только при анализе исполняемого файла в
бинарных кодах или загрузочного файла в HEX-кодах.
В-третьих, можно воспользоваться директивой макроассемблера
#include
. Для этого отредактированную копию стартового файла
переименовываем в SDK-startup.inc и помещаем в рабочую ди-
ректорию проекта. В тексте программы (рис. 4.4) указываем директи-
ву #include "SDK-startup.inc". Обратите внимание, что ранее
использовавшаяся директива
EXTRN CODE (?C_STARTUP)
,
107


4. Стандартные библиотеки Keil µVision
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; ðÒÉÍÅÒ ×ÙÚÏ×Á ÂÉÂÌÉÏÔÅÞÎÏÊ ÆÕÎËÃÉÉ.
; íÏÄÉÆÉËÁÃÉÑ ÚÁÇÏÌÏ×ËÁ ÐÒÏÇÒÁÍÍÙ.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;óÔÁÒÔÏ×ÙÅ ÎÁÓÔÒÏÊËÉ
#include "SDK-startup.inc"
;äÅËÌÁÒÁÃÉÑ ÓÅÇÍÅÎÔÁ
?PR?primer
SEGMENT CODE
;æÕÎËÃÉÑ ÂÉÂÌÉÏÔÅËÉ
EXTRN
CODE (?C?FPDIV)
PUBLIC
main
; éÍÑ ÇÏÌÏ×ÎÏÊ Æ-ÃÉÉ
RSEG
?PR?primer
; îÁÞÁÌÏ ÓÅÇÍÅÎÔÁ
main:
; îÁÞÁÌÏ Æ-ÃÉÉ main
;.................................................
;.................................................
SJMP
$
; ëÏÎÅàÆÕÎËÃÉÉ main
END
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Рис. 4.4. Модификация заголовка программы (рис. 4.1)
в этом файле отсутствует, поскольку функция ?C_STARTUP теперь со-
держится в файле SDK-startup.inc и является внутренней функцией
данного модуля. Это наиболее надежный способ модификации стар-
товой функции. В этом случае, если программа ассемблер не найдет
модифицированный файл SDK-startup.inc, то мы получим сооб-
щение о соответствующей ошибке. Во всех трех случаях стартовым
адресом при запуске программ пользователя будет адрес 2000H.

Download 0.63 Mb.

Do'stlaringiz bilan baham:
1   ...   56   57   58   59   60   61   62   63   ...   74




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling