Эмулятор микроконтроллера ATtiny13A — различия между версиями
Vyacovlev (обсуждение | вклад) |
Vyacovlev (обсуждение | вклад) |
||
(не показано 7 промежуточных версии этого же участника) | |||
Строка 3: | Строка 3: | ||
Презентация проекта: http://1drv.ms/1VmeBQ0 | Презентация проекта: 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 | ||
== Что это за проект == | == Что это за проект == | ||
Строка 39: | Строка 47: | ||
== Критерии оценивания == | == Критерии оценивания == | ||
− | === | + | === Первая контрольная точка (24 октября 2015 г.) === |
− | Необходимо иметь работающий эмулятор, выполняющий простейшие команды, а также иметь возможность наблюдать (например, в виде отладочной информации) за значениями регистров. | + | Необходимо иметь git-репозиторий с проектом, в который приглашен ментор. В репозитории должно быть: |
+ | * Файл README.md, который содержит описание проекта, написанный в расчета на "конечного пользователя". Это описание должно быть написано '''самостоятельно''', а не скопировано из Wiki, и отражать Ваше понимание того, что нужно сделать. | ||
+ | * Скелет реализации, то есть заготовки необходимых модулей и классов. Можно реализовать выполнение одной-двух команд, тогда станет понятна примерная структура проекта. | ||
+ | * Для тех, кто реализует проект на C++, - проектный файл CMakeLists.txt. | ||
+ | |||
+ | === Вторая контрольная точка (14 ноября 2015 г.) === | ||
+ | Необходимо иметь работающий эмулятор, выполняющий простейшие команды, а также иметь возможность наблюдать (например, в виде отладочной информации) за значениями регистров. Должна быть реализована загрузка содержимого flash-памяти из файла. | ||
=== Итоговая оценка === | === Итоговая оценка === | ||
− | * '''4 балла'''. Эмулятор позволяет выполнять арифметические и управляющие команды, | + | * '''4 балла'''. Эмулятор позволяет выполнять арифметические и управляющие команды, модифицирующие значения регистров. |
− | * ''' | + | * '''6 баллов'''. Реализована возможность выполнения программ, полученных с помощью компилятора AVRA. |
− | * ''' | + | * '''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-сервисах:
- 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
Материалы выложены на Яндекс.Диске