Программирование микроконтроллеров 1986ВЕ9x компании Миландр. Контрольные вопросы для самопроверки. Предназначено для студентов технических высших учебных заведений очной и заочной формы обучения, аспирантов, инженерно-технических работников
44 Процесс загрузки обычно занимает несколько секунд и, как правило, состоит из следующих этапов: 1. Стирание данных из флеш-памяти микроконтроллера. В этот момент стирается содержимое всей флеш-памяти или указанных в настройках проекта отдельных ее страниц. В нашем случае стираем все. В нижней части главного окна этот процесс иллюстрируется индикатором. 2. Программирование. Данные прошиваются во флеш-память микроконтроллера. 3. Проверка данных. Содержимое флеш-памяти микроконтроллера скачивается обратно на компьютер и сравнивается с тем, что мы пытались прошить. При выявлении несоответствия получаем сообщение об ошибке. 4. Запуск программы на выполнение. Для микроконтроллера генерируется сигнал RESET (сброс), и программа, загруженная в микроконтроллер, начинает свое штатное выполнение. В окне Build Output появляются следующие, понятные из предыдущего пояснения, строки: Full Chip Erase Done. Programming Done. Verify OK. Application running ... Заметим, что часть из перечисленных выше шагов можно отключить с помощью соответствующих настроек, о которых мы говорили ранее (рисунок 1.16). Если при попытке загрузки появится окно с ошибкой (рисунок 1.18), то это, скорее всего, означает, что отладочная плата не подключена к компьютеру (среда Keil «не видит» программатор). Проверьте соединительный кабель между программатором и компьютером. Иногда может потребоваться переткнуть кабель в другой USB-разъем компьютера, или отключить кабель и подключить вновь.
45 Рисунок 1.18 – Ошибка при загрузке программы в микроконтроллер (среда Keil «не видит» программатор) Порой также возникает ситуация, когда программатор «не видит» микроконтроллер. В этом случае при попытке прошить микроконтроллер появится сообщение, показанное на рисунке 1.19. Причины такой неполадки могут быть следующие: 1. Шлейф программатора не подключен к разъему JTAG-B. 2. Неправильно выставлены переключатели выбора режима загрузки (рисунок 1.2, позиция 4). В этом случае необходимо выставить переключатели согласно маркировке на отладочной плате. 3. Отсутствует драйвер для программатора. Инструкция по его установке находится в разделе 1.5. 4. В микроконтроллер загружена программа, конфигурирующая выводы PD0 – PD4 как выходы, т.е. JTAG-B заблокирован программой. Для решения этой проблемы переставьте шлейф программатора на разъем JTAG-A и выставьте переключатели выбора режима загрузки в соответствующее положение. Если программой заблокирован и JTAG-A, то микроконтроллер больше не может быть прошит с использованием имеющегося оборудования и подлежит замене. 5. Микроконтроллер неисправен или отсутствует в слоте. Неполадка, очевидно, может быть устранена путем установки исправного микроконтроллера (при его наличии).
46 Рисунок 1.19 – Ошибка при загрузке программы в микроконтроллер (программатор «не видит» микроконтроллер) Итак, прошивка успешно выполнена – теперь микроконтроллер работает самостоятельно, среда Keil ему больше не нужна. Можно отключить программатор от платы – программа сможет работать автономно. Однако перед отключением программатора не забудьте сначала выключить питание платы,отсоединив от нее шнур блока питания. 1.9. Внутрисхемная отладка программы Далее рассмотрим процесс внутрисхемной отладки программы микроконтроллера. Благодаря отладочному интерфейсу SWD, доступному в программаторе MT-Link, этот процесс мало отличается от обычной пошаговой отладки программ в современных средах программирования общего назначения, например, MS Visual Studio. Для входа в этот режим выполним пункт меню Debug – Start/Stop Debug Session или нажмем кнопку на панели инструментов. Главное окно программы несколько изменится (рисунок 1.20). В левой его части будет отображаться состояние регистров микроконтроллера (окно Register), вверху появится окно дизассемблера (Disassebly). В правой нижней части разместится окно Call Stack – Locals, в котором показана последовательность вложенных вызовов функций. В средней части окна остаются вкладки с исходным текстом программы. Но на них теперь дополнительно показывается процесс пошаговой отладки.