Keil IDE
Установка и использование Keil IDE
Установка и настройка Keil IDE
Перед началом работы необходимо загрузить архивы DCSProg6 и projects_keil с сайта компании (https://dcsoyuz.ru раздел «Программное обеспечение») и извлечь данные на персональный компьютер. Доступ к разделу «Программное обеспечение» предоставляется по запросу на электронную почту (support@dcsoyuz.ru).
Для программирования микросхемы 5400ТР105-003 потребуется программа DCSProg6. Создание конфигурационной последовательности выполняется в ПО Keil MVision C51.
Скачать IDE Keil MVision C51 можно с официального сайта разработчика https://www.keil.com/download/product/

- Установить скачанную программу, используя настройки по умолчанию.
- Открыть проект Example.uvproj.
Для открытия проекта в Keil MVision C51 необходимо выбрать меню Project –> Open Project
.
Путь к файлу проекта в архиве projects_keil …\Projects\Example\Example.uvproj
.

- В настройках проекта («Alt+F7») во вкладке «Target» установить размеры памяти ОЗУ и ПЗУ:
- Off-chip Code memory: Start – 0x0000; Size – 0x1000;
- Off-chip Xdata memory: Start – 0x0000; Size – 0x1100.


- В настройках проекта во вкладке «Output» установить галочку «Create HEX File» для создания файла с расширением hex. Нажать «OK».
Установка и настройка ПО для работы с микросхемой 5400ТР105-003 завершена.
В демонстрационной версии проекта Example.uvproj реализована программа с примером работы светодиодов и выводов микросхемы GPIOA_4 – GPIOA_7.
Создание и обновление файла конфигурации (hex-файл)
Для компиляции тестового проекта выполните команду «Project» –> «Build Target»
или клавиша F7. Ошибки компиляции будут выведены в окне Build Output.

Для создания или обновления существующего hex-файла выполните команду Project –> Rebuild all target files
.
В результате выполнения команды будет сформирован файл с расширением hex.
Путь к hex-файлу …\Projects\Example\Objects\Example.hex
.

Отладка в Keil
Настройка отладчика
- Поместить файл 105-003.dll из архива DCSProg6 в каталог
C:/Keil_v5/C51/BIN/
. - В каталоге
C:/Keil_v5/
в файле TOOLS.ini в разделе C51 найти максимальный номер для TDRV и добавить строку:TDRV*=BIN\105-003.dll ("5400ТР105-003")
, где * – следующий номер после максимального. Далее необходимо сохранить изменения и закрыть файл.

- Запустить Keil IDE. В настройках проекта (комбинация Alt+F7 или кнопка «Options for Target» на панели инструментов) во вкладке «Debug» поставить переключатель «Use» и выбрать «Octopus Driver». Ниже установить
Load Application at Startup
.

- Непосредственно перед запуском отладчика необходимо создать выходной hex-файл отлаживаемой программы
(«Project» –> «Rebuild all target files»
), подключить программатор DCSProg в USB-порт компьютера, подать на плату питание и частоту.
Начало работы с отладкой
Запуск отладчика производится комбинацией клавиш Ctrl+F5. При успешном подключении программатора к отладчику в окне логов будет выведено следующее сообщение:
Инициализация программатора
Программатор подключен
Запись байта 0x7 на адресу 0x3200 во внешнюю RAM
Из внешней RAM по адресу 0x3200 считан байт 0x7
Reset
При неуспешном подключении программатора либо отладчик будет принудительно отключен, либо в окне логов будет выведено следующее сообщение:
Инициализация программатора
Программатор подключен
Запись байта 0x7 на адресу 0x3200 во внешнюю RAM
Из внешней RAM по адресу 0x3200 считан байт 0xc8
Reset
Не получен корректный ответ от микросхемы при Reset, проверьте питание и тактирование
В этом случае необходимо проверить питание и тактирование микросхемы, попробовать заново включить отладчик.
Возможности отладчика
После загрузки программы в микросхему открывается окно с ассемблерным кодом. Если оно
не открылось, его можно открыть вручную нажатием «View» –> «Disassembly Window»
. В этом окне можно просматривать ассемблерный код, сопоставленный строкам исходного кода на языке Си. Если окно ассемблерных инструкций изначально отображается по-другому, это можно изменить одиночным нажатием ПКМ по окну ассемблерных инструкций и выбором режима отображения «Mixed Mode».


При заполнении окна ассемблерных инструкций отладчик не считывает инструкции из микросхемы, а анализирует входной hex-файл. Верификация записанного кода происходит только при команде «Flash Download»
В отладочном окне в левом верхнем углу находится основная панель инструментов для управления выполнением программы:

1 | Кнопка «RST» сбрасывает выполнение всех инструкций и возвращает PC («Program Counter») в начало программы. |
2 | Кнопка «Run» запускает выполнение программы с текущего PC. Выполнение программы остановится по окончанию или при встрече брейкпоинта. |
3 | Кнопка «Stop» прерывает выполнение программы. PC остаётся на последней выполненной инструкции. |
4 | Кнопка «Step» выполняет одну инструкцию программы, на которую указывает PC. |
5 | Кнопка «Step Over» пропускает одну инструкцию программы, на которую указывает PC. |
6 | Кнопка «Run to Cursor Line» выполняет программу до той строки, на которую указывает курсор в окне ассемблерного кода или в окне кода на Си. |
При нажатии ПКМ на строку в ассемблерном окне или в окне Си кода можно задать PC на эту инструкцию, используя команду «Set Program Counter». При нажатии кнопки «Run» исполнение программы начнется с инструкции, на которую указывает установленный «PC».


В левой части отладочного окна можно отслеживать состояние SFR регистров ядра 8051. При остановке исполнения программы (принудительно или по брейкпоинту) происходит чтение значений и обновление окна SFR регистров. В остановленном состоянии можно изменять значения SFR регистров, используя данное окно.

Использование точек останова
Отладчик поддерживает до четырёх брейкпоинтов одновременно. Чтобы установить/удалить брейкпоинт необходимо в области кода слева от нужной строки нажать ЛКМ.

Команда «Run to Cursor Line» использует брейкпоинт, поэтому при использовании этой команды необходимо убедиться, что в данный момент установлено максимум три брейкпоинта.
Команда «Step Over» при прохождении функции использует брейкпоинт, поэтому при использовании этой команды необходимо убедиться, что в данный момент установлено максимум три брейкпоинта.
Просмотр состояния переменных
- Открыть окно с отслеживанием переменных можно по нажатию
«View» –> «Watch Windows» –> «Watch 1»
. Снизу отладочного окна появится вкладка «Watch 1». - В данной вкладке можно ввести название переменной в столбец «Name», состояние которой необходимо отслеживать.
- При успешном добавлении переменной будет отображено её значение и тип, при неуспешном добавлении в столбце «Value» будет отображаться «cannot evaluate».
- Считывание переменной происходит при остановке программы.

При помощи этого окна можно изменять состояние переменных при остановленной программе. Если переменная хранится во внутренней ОЗУ, то состояние меняется, если переменная хранится во внешней ОЗУ (ключевое слово «xdata»), то её состояние не изменяется.
Команда Flash Download
Для загрузки программы из Keil IDE в микросхему необходимо в настройках проекта (Alt+F7) во вкладке «Utilities» в меню настроек «Flash Download» указать следующие настройки:

На панели инструментов окна Keil IDE есть кнопка, которая очищает память программ, заполняя ее нулями, затем программа загружается в микросхему, в конце программа считывается из микросхемы и по байтам сравнивается с тем, что должно быть загружено.

При успешном подключении к программатору, успешной записи и верификации загруженной в микросхему программы в окне логов будет выведено сообщение о том, что все байты загружаемой программы совпали.

При обнаружении несовпадений байтов программы об этом также будет сообщено в окне логов. В таком случае рекомендуется заново подать питание и тактирование микросхемы и попробовать снова загрузить программу.
Кнопка «Flash Download» лишь так называется в контексте Keil IDE. В контексте микросхемы программа будет загружаться в RAM_ROM область в SOFT режиме, так как флеш-память у микросхемы 105-003 отсутствует как таковая.
После успешной загрузки и верификации программы для её запуска необходимо нажать на отладочной плате кнопку «RESET».
Такая загрузка происходит относительно долго, т.к. перед записью и верификацией программы происходит полное затирание RAM_ROM области (все 4096 байт заполняются нулями).