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

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

Текущая версия на 13:26, 19 декабря 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 баллов. Эмулятор позволяет выполнять набор команд, позволяющий написать на ассемблере программы, которые который модифируют содержимое EEPROM-памяти
  • +2 балла. Эмулятор поддерживает полный набор команд, позволяющий выполнять программы, полученные с помощью компилятора GCC
  • +1 балл. Реализована функциональность ввода-вывода с использованием портов общего назначения. Формат ввода-вывода для тестирования эмулятора: CSV-таблицы из двух столбцов, содержащие время наступления события, и значение сигнала
  • +2 балла. Реализована функциональность порта SPI. Взаимодействие с виртуальным портом осуществляется с использованием любого механизма межпроцессного взаимодействия Linux.

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

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

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

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

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


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

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