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

Материал из Wiki - Факультет компьютерных наук
Перейти к: навигация, поиск
(Создан текст проекта)
 
 
(не показано 8 промежуточных версии этого же участника)
Строка 1: Строка 1:
 +
== Метаданные ==
 +
ID проекта: '''attiny'''
 +
 +
Презентация проекта: http://1drv.ms/1VmeBQ0
 +
 +
Ментор проекта: Виктор Яковлев
 +
 +
Аккаунты ментора в git-сервисах:
 +
 +
* [http://GitHub.com GitHub.com]: victor-yacovlev
 +
* [http://GitLab.com GitLab.com]: v-yacovlev
 +
* [http://BitBucket.org BitBucket.org]: victor_yacovlev
 +
 
== Что это за проект ==
 
== Что это за проект ==
  
Строка 34: Строка 47:
 
== Критерии оценивания ==
 
== Критерии оценивания ==
  
=== Требования на зачет в конце 1-го модуля ===
+
=== Первая контрольная точка (24 октября 2015 г.) ===
Необходимо иметь работающий эмулятор, выполняющий простейшие команды, а также иметь возможность наблюдать (например, в виде отладочной информации) за значениями регистров.
+
Необходимо иметь git-репозиторий с проектом, в который приглашен ментор. В репозитории должно быть:
 +
* Файл README.md, который содержит описание проекта, написанный в расчета на "конечного пользователя". Это описание должно быть написано '''самостоятельно''', а не скопировано из Wiki, и отражать Ваше понимание того, что нужно сделать.
 +
* Скелет реализации, то есть заготовки необходимых модулей и классов. Можно реализовать выполнение одной-двух команд, тогда станет понятна примерная структура проекта.
 +
* Для тех, кто реализует проект на C++, - проектный файл CMakeLists.txt.
 +
 
 +
=== Вторая контрольная точка (14 ноября 2015 г.) ===
 +
Необходимо иметь работающий эмулятор, выполняющий простейшие команды, а также иметь возможность наблюдать (например, в виде отладочной информации) за значениями регистров. Должна быть реализована загрузка содержимого flash-памяти из файла.
  
 
=== Итоговая оценка ===
 
=== Итоговая оценка ===
* '''4 балла'''. Эмулятор позволяет выполнять арифметические и управляющие команды, модифицирующиезначения регистров. В качестве входа принимается код, полученный с помощью ассемблера, результат работы - значения регистровпосле завершения выполнения программы
+
* '''4 балла'''. Эмулятор позволяет выполнять арифметические и управляющие команды, модифицирующие значения регистров.  
* '''6 балла'''. Эмулятор позволяет выполнять набор команд, позволяющий написать на ассемблере программы,  которые который модифируют содержимое EEPROM-памяти
+
* '''6 баллов'''. Реализована возможность выполнения программ, полученных с помощью компилятора AVRA.
* '''8 баллов'''. Эмулятор поддерживает полный набор команд, позволяющий выполнять программы, полученные с помощью компилятора GCC
+
* '''8 баллов'''. Эмулятор позволяет выполнять набор команд, позволяющий написать на ассемблере программы,  которые читают содержимое EEPROM-памяти
 +
* '''10 баллов'''. Эмулятор позволяет выполнять набор команд, позволяющий написать на ассемблере программы,  которые который модифируют содержимое EEPROM-памяти
 +
* '''+2 балла'''. Эмулятор поддерживает полный набор команд, позволяющий выполнять программы, полученные с помощью компилятора GCC
 
* '''+1 балл'''. Реализована функциональность ввода-вывода с использованием портов общего назначения. Формат ввода-вывода для тестирования эмулятора: CSV-таблицы из двух столбцов, содержащие время наступления события, и значение сигнала
 
* '''+1 балл'''. Реализована функциональность ввода-вывода с использованием портов общего назначения. Формат ввода-вывода для тестирования эмулятора: CSV-таблицы из двух столбцов, содержащие время наступления события, и значение сигнала
 
* '''+2 балла'''. Реализована функциональность порта SPI. Взаимодействие с виртуальным портом осуществляется с использованием любого механизма межпроцессного взаимодействия Linux.
 
* '''+2 балла'''. Реализована функциональность порта SPI. Взаимодействие с виртуальным портом осуществляется с использованием любого механизма межпроцессного взаимодействия Linux.
 +
 +
== Методические указания и полезные ссылки ==
 +
Для создания простых тестовых программ лучше использовать ассемблер, а не Си-компилятор.
 +
 +
Руководство по ассемблеру AVR на русском языке: [http://radio-vtc.inf.ua/mps/Labs/comands_AVR.pdf здесь]
 +
 +
Компилятор AVRA доступен [http://avra.sourceforge.net здесь], либо пакет avra в некоторых дистрибутивах Linux.
 +
 +
Результат работы компилятора AVRA -- это '''текстовый''' файл, который содержит HEX-коды для записи
 +
в Flash-память программатором. Формат этого файла описан [https://en.wikipedia.org/wiki/Intel_HEX здесь].
 +
 +
 +
=== Материалы с семинара 07 ноября 2015 ===
 +
Материалы выложены на [https://yadi.sk/d/xN7FJuLDkKmas Яндекс.Диске]

Текущая версия на 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

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