Эмулятор микроконтроллера ATtiny13A — различия между версиями
Vyacovlev (обсуждение | вклад) (Изменены требования) |
Vyacovlev (обсуждение | вклад) |
||
Строка 59: | Строка 59: | ||
* '''4 балла'''. Эмулятор позволяет выполнять арифметические и управляющие команды, модифицирующие значения регистров. | * '''4 балла'''. Эмулятор позволяет выполнять арифметические и управляющие команды, модифицирующие значения регистров. | ||
* '''6 баллов'''. Реализована возможность выполнения программ, полученных с помощью компилятора AVRA. | * '''6 баллов'''. Реализована возможность выполнения программ, полученных с помощью компилятора AVRA. | ||
− | * '''8 баллов'''. Эмулятор позволяет выполнять набор команд, позволяющий написать на ассемблере программы, которые | + | * '''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-сервисах:
- GitHub.com: victor-yacovlev
- GitLab.com: v-yacovlev
- BitBucket.org: victor_yacovlev
Что это за проект
Введение
Микроконтроллеры - это системы на кристалле, которые содержат центральный процессор, оперативную память, 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
Материалы выложены на Яндекс.Диске