- •Предисловие
- •Ведение
- •1 Информационные ресурсы
- •2 Общие указания к выполнению лабораторных работ
- •2.1 Общий ход работы
- •2.2 Оформление и документирование программного кода
- •2.2.1 Стиль кодирования
- •2.2.2 Документирование ПО - Doxygen
- •2.3 Литература для изучения
- •3 Основные термины и определения
- •4 Знакомство с лабораторным инструментарием. Лабораторная № 0
- •4.1 Содержание работы
- •4.2 Краткое описание лабораторного инструментария
- •4.2.1 Аппаратура
- •4.2.2 Среды разработки программ для МК
- •4.2.2.3 Настройка IAR
- •4.3 Меры безопасности при работе с бескорпусной отладочной платой
- •4.4 Контрольные вопросы
- •Часть I. Процессор Cortex-M3. Программирование на ассемблере
- •1 Когда используется ассемблер
- •2.1 Создание нового проекта
- •2.2 Разработка первой программы для микроконтроллера
- •2.4 Требования к содержанию отчёта
- •3.1 Введение
- •3.2 Создание нового проекта в среде Keil
- •3.3 Разработка простейшей программы для микроконтроллера
- •3.4 Заключение
- •3.5 Требования к содержанию отчёта
- •3.6 Контрольные вопросы
- •4.1 Введение
- •4.2 Содержание работы
- •4.3 Обмен данными через параметры функций
- •4.3.1 Выполнение работы
- •4.5 Обмен данными через общую область памяти. Глобальные переменные в ассемблерном модуле
- •4.6 Заключение
- •4.7 Контрольные вопросы
- •5.1 Введение
- •5.2 Содержание работы
- •5.3 Выполнение работы
- •5.4 Заключение
- •5.5 Требования к содержанию отчёта
- •6.1 Введение
- •6.2 Содержание работы
- •6.3 Выполнение работы
- •6.4 О побочных возможностях внутрисхемной отладки
- •6.5 Вопросы для самопроверки
- •6.6 Требования к содержанию отчёта
- •7.1 Введение
- •7.2 Содержание работы
- •7.3 Выполнение работы
- •7.4 Контрольные вопросы
- •7.5 Требования к содержанию отчёта
- •8 Задачи для любителей поупражнять свои мозги
- •9 Литература
- •Часть II. Ввод-вывод в МК «Миландр»
- •1 Общие теоретические замечания
- •1.2.1 Структура CMSIS
- •1.2.2 Описание библиотеки MDR32F9Qx_StdPeriph_Driver
- •1.2.3 Описание примеров работы с блоками МК
- •1.3 Описание демонстрационного проекта MDR32F9Qx_Demo
- •1.3.1 Иерархичность проекта MDR32F9Qx_Demo
- •1.4 Требования к содержанию отчета
- •1.5 Литература
- •2.1.1 Работа с отдельными портами. Вывод информации.
- •2.1.2 Опрос двоичного датчика. Ввод информации.
- •2.2 Вывод символьной информации
- •2.3 Ввод информации
- •2.4 Задания
- •2.5 Контрольные вопросы
- •2.6 Литература
- •3.1 Ход работы
- •3.2 Контрольные вопросы
- •4.1 Работа с АЦП
- •4.1.1 Описание структурной схемы
- •4.1.2 Ход работы
- •4.2 Работа с ЦАП
- •4.2.1 Ход работы
- •4.3 Работа с компаратором
- •4.3.1 Ход работы
- •4.3.2 Контрольные вопросы
- •5.1 Краткий обзор последовательных «стандартных» интерфейсов МК.
- •5.1.1 Базовые понятия последовательной передачи данных
- •5.2 Контроллер UART
- •5.2.1 Ход работы
- •5.3 Контроллер I2C
- •5.4 Контроллер SSP (SPI)
- •5.4.1 Ход работы
- •5.5 Контроллер CAN
- •5.5.1 Ход работы
- •5.5.2 Контрольные вопросы
- •5.6 Литература
- •3. Для заметок, найденных ошибок, пожеланий
Часть I. Процессор Cortex-M3. Программирование на ассемблере - 3 |
49 |
накладные расходы на вызов самой функции setTimer( ) — 8 лишних тактов. Причём, это самый быстрый вариант вызова по skeleton1, а для варианта skeleton2 затраты на вызов функции будут ещё больше, поскольку в нём присутствуют ещё и затраты на сохранение регистров в стеке и затем извлечение сохранённых значений из стека.
Таким образом, если речь идёт о получении наиболее скоростного кода, то в нём желательно избегать вызовов функций. Язык ассемблера позволяет это делать при сохранении читаемости кода. Как именно, мы познакомимся в следующих лабораторных работах. В языках высокого уровня для этой цели существует очень эффективный приём — ассемблерные вставки. Пока в Keil-e не удалось этим воспользоваться.
3.4Заключение
Здесь мы привели пример выполнения лабораторной работы. Установили среду разработки Keil, создали проект и написали простейший текст на ассемблере. Попутно продолжили знакомиться с системой команд для ядра Cortex-M3. Заметим, что для того, чтобы обнаружить возможность оптимизации кода, никаких особых программистских изысков мы не использовали. Достаточно было просто внимательно читать документацию по микроконтроллеру. В нашем случае это знакомство с командами обращения к памяти.
Каждый студент получает или придумывает свой объект для исследования, точнее, свой фрагмент Си-кода, который нужно будет подробно описать в терминах системы команд микроконтроллера.
3.5Требования к содержанию отчёта
Те же самые, что и в предыдущей лабораторной работе (см. пункт 2.4 ).
3.6Контрольные вопросы
1.Как установить на компьютер Keil?
2.Как адаптировать эту среду для работы с определённой моделью микроконтроллера и определённым изготовителем, например, ф."Миландр"?
3.Как создать новый проект в среде Keil?
4.Как выбираются основные опции проекта?
5.Что такое симулятор и для чего он служит?
6.Что такое система команд микроконтроллера и для чего её нужно знать разработчику систем управления? Почему нельзя ограничиться только изучением языка верхнего уровня?
7.Расскажите о командах, которые вы изучили в ходе выполнения этой лабораторной работы.
8.Можно ли из процедуры на ассемблере вызвать функцию на Си?
9.Что такое JTAG?
10.По какой причине может не работать внутрисхемная отладка?
11.Что в себя включает понятие «оптимизация кода»?
12.Для чего служит директива WEAK? См. рисунок 19.
ТУСУР, "Миландр" |
Каф. ЭСАУ |
Недяк С.П., Шаропин Ю.Б |
Февраль 2017 г. |