Эмулятор микроконтроллера ATtiny13A — различия между версиями

Материал из Wiki - Факультет компьютерных наук
Перейти к: навигация, поиск
м (Материалы с семинара 07 ноября 2015)
(Изменены требования)
Строка 57: Строка 57:
  
 
=== Итоговая оценка ===
 
=== Итоговая оценка ===
* '''4 балла'''. Эмулятор позволяет выполнять арифметические и управляющие команды, модифицирующиезначения регистров. В качестве входа принимается код, полученный с помощью ассемблера, результат работы - значения регистровпосле завершения выполнения программы
+
* '''4 балла'''. Эмулятор позволяет выполнять арифметические и управляющие команды, модифицирующие значения регистров.  
* '''6 балла'''. Эмулятор позволяет выполнять набор команд, позволяющий написать на ассемблере программы,  которые который модифируют содержимое EEPROM-памяти
+
* '''6 баллов'''. Реализована возможность выполнения программ, полученных с помощью компилятора AVRA.
* '''8 баллов'''. Эмулятор поддерживает полный набор команд, позволяющий выполнять программы, полученные с помощью компилятора GCC
+
* '''8 баллов'''. Эмулятор позволяет выполнять набор команд, позволяющий написать на ассемблере программы,  которые который модифируют содержимое EEPROM-памяти
 +
* '''10 баллов'''. Эмулятор поддерживает полный набор команд, позволяющий выполнять программы, полученные с помощью компилятора GCC
 
* '''+1 балл'''. Реализована функциональность ввода-вывода с использованием портов общего назначения. Формат ввода-вывода для тестирования эмулятора: CSV-таблицы из двух столбцов, содержащие время наступления события, и значение сигнала
 
* '''+1 балл'''. Реализована функциональность ввода-вывода с использованием портов общего назначения. Формат ввода-вывода для тестирования эмулятора: CSV-таблицы из двух столбцов, содержащие время наступления события, и значение сигнала
 
* '''+2 балла'''. Реализована функциональность порта SPI. Взаимодействие с виртуальным портом осуществляется с использованием любого механизма межпроцессного взаимодействия Linux.
 
* '''+2 балла'''. Реализована функциональность порта SPI. Взаимодействие с виртуальным портом осуществляется с использованием любого механизма межпроцессного взаимодействия Linux.

Версия 09:03, 28 ноября 2015

Метаданные

ID проекта: attiny

Презентация проекта: http://1drv.ms/1VmeBQ0

Ментор проекта: Виктор Яковлев

Аккаунты ментора в git-сервисах:

Что это за проект

Введение

Микроконтроллеры - это системы на кристалле, которые содержат центральный процессор, оперативную память, Flash-память и набор перифирейных интерфейсов. Микроконтроллеры используются в различных бытовых и промышленных устройствах, - там, где не требуется высокая производительность процессора, но при этом нужно обеспечить низкую стоимость устройства и/или низкое энергопотребление.

Микроконтроллеры семейства AVR - одни из наиболее популярных (во многом, благодаря проекту Arduino). Они обладают восьмибитной архитектурой, работают на частоте от 1 до 16Мгц, а характерный объем оперативной памяти - от 64 байт до нескольких килобайт, в зависимости от серии и модели.

Что требуется

Реализовать эмулятор микроконтроллера ATtiny13A (это один из самых простых AVR-микроконтроллеров).

Подробное описание набора инструкций здесь.

Эмулятор должен уметь выполнять программы, подготовленные ассемблером avra, или компилятором GCC.

Чему вы научитесь (помимо разработки эмуляторов)

1. Уметь программировать на ассемблере и понимать его

2. Навыки кросс-компиляции

3. Понимание архитектуры "железа" вычислительных систем

Начальные требования

1. Владение техническим английским языком. Все спецификации доступны только на английском языке

2. Умение разрабатывать программы на Cи или C++

Критерии оценивания

Первая контрольная точка (24 октября 2015 г.)

Необходимо иметь git-репозиторий с проектом, в который приглашен ментор. В репозитории должно быть:

  • Файл README.md, который содержит описание проекта, написанный в расчета на "конечного пользователя". Это описание должно быть написано самостоятельно, а не скопировано из Wiki, и отражать Ваше понимание того, что нужно сделать.
  • Скелет реализации, то есть заготовки необходимых модулей и классов. Можно реализовать выполнение одной-двух команд, тогда станет понятна примерная структура проекта.
  • Для тех, кто реализует проект на C++, - проектный файл CMakeLists.txt.

Вторая контрольная точка (14 ноября 2015 г.)

Необходимо иметь работающий эмулятор, выполняющий простейшие команды, а также иметь возможность наблюдать (например, в виде отладочной информации) за значениями регистров. Должна быть реализована загрузка содержимого flash-памяти из файла.

Итоговая оценка

  • 4 балла. Эмулятор позволяет выполнять арифметические и управляющие команды, модифицирующие значения регистров.
  • 6 баллов. Реализована возможность выполнения программ, полученных с помощью компилятора AVRA.
  • 8 баллов. Эмулятор позволяет выполнять набор команд, позволяющий написать на ассемблере программы, которые который модифируют содержимое EEPROM-памяти
  • 10 баллов. Эмулятор поддерживает полный набор команд, позволяющий выполнять программы, полученные с помощью компилятора GCC
  • +1 балл. Реализована функциональность ввода-вывода с использованием портов общего назначения. Формат ввода-вывода для тестирования эмулятора: CSV-таблицы из двух столбцов, содержащие время наступления события, и значение сигнала
  • +2 балла. Реализована функциональность порта SPI. Взаимодействие с виртуальным портом осуществляется с использованием любого механизма межпроцессного взаимодействия Linux.

Методические указания и полезные ссылки

Для создания простых тестовых программ лучше использовать ассемблер, а не Си-компилятор.

Руководство по ассемблеру AVR на русском языке: здесь

Компилятор AVRA доступен здесь, либо пакет avra в некоторых дистрибутивах Linux.

Результат работы компилятора AVRA -- это текстовый файл, который содержит HEX-коды для записи в Flash-память программатором. Формат этого файла описан здесь.


Материалы с семинара 07 ноября 2015

Материалы выложены на Яндекс.Диске