Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
6798.pdf
Скачиваний:
69
Добавлен:
13.02.2021
Размер:
2.73 Mб
Скачать

Часть 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 г.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]