пятница, 17 сентября 2010 г.

Лекция 1 (окончание) и лекция 2 часть 1

Тезисы и картинки.



1. Технология проектирования программ
- программирование = проектирование
- исходный код = документ
- главный ресурс по затратам -- затраты на работу программиста
- эффективность кода vs время написания программы -- дешевле взять более быстрое железо чтобы запустить менее эффективный код, чем оптимизировать код; еще зависит от числа устройство в партии
- масштабируемость -- свойство программы, достигаемое такой структурой программного обеспечения, которая позволяет добавлять или изменять ее функции
- масштабируемость : разбиение на модули, процедуры и функции; использование именнованных констант
- отладка = проектирование тестов, занимает до 80% времени написания программы
- тест покрытия (Code coverage test) -- такой тест, который максимизирует число строк кода (операторов), которые выполняются во время выполнения теста
- статистическое тестирование -- многократное выполнение программ на случайных данных,
- пакетное автоматизированное тестирование -- пишется специальная тестирующая программа (на скриптовом языке типа TCL), иногда сложнее чем основная (тестируемая) программа
- цель пакетного тестирования -- убедиться, что функционал программы не деградировал после изменений в коде

2. Технология программирования микрокнтроллеров.
- основная цель: упростить работу программиста, применение средств автоматизации программирования, более высокоуровневое представление
- генерация кода из MATLAB : Fixed-Point Toolbox, Real-Time Workshop
- генерация кода по автоматам : IAR visualState, Telelogic Tau и другие средства UML
- переносимость -- возможность запуска программ на различном аппаратном обеспечении
- переносимость: разделение программы на алгоритмическую и системную части, при перенесении но новую аппаратноую платформу изменяется только системная часть
- алгоритмическая часть программы -- реализует логику работы программы, реакцию на внешние события, принятие решений, интерфейс с пользователем и т.д.
- алгоритмическая часть всегда реализуется на языке высокого уровня, кросскомпиляция
- системная часть (библиотека) -- уровень абстрагирования от оборудования HAL -- набор функций, реализующий работу с аппаратным обеспечением (ввод и вывод данных)
- отладка программы без аппаратного обеспечения -- эмуляция с помощью соответствующего HAL
- ко времени готовности аппаратного обеспечения, основной функционал программы может быть написан и отлажен

3. Архитектура AVR
- гарвардская архитектура -- шина памяти программ, шина ввода-вывода
- память программ -- флеш память, программируемая извне по последовательному интерфейсу (SPI)
- память данных -- оперативное статическое запоминующее устройство
- архитектура


- все периферийные устройства разделяют адресное пространство с памятью данных
- набор инструкций типа RISC (простые быстро выполняющиеся команды над регистрами процессора)
- устройство исполнения команд (арифметико-логическое устройство) поддерживает арифметические, логически и битовые команды, также команды переходов и загрузки регистров процессора
- есть умножение, но нет деления
- официальных синтезируемых ядер нет (есть неофициальные)
- типичный представитель: ATMega128, 128 кБайт память программ, 4 кБ память программ, до 20 МГц быстродействие

4. Архитектура ARM7TDMI
- принстонская архитектура -- единое пространство программ и ввода вывода,
- память программ -- флеш-память, как программируемая извне (по SPI), так и программно с помощью контроллера флеш-памяти (Embedded Flash Controller),
- переферийные устройства отображены конец в адресного пространства,
- структура


- две шины внутри процессора: AHB высокоскоростная шина с памятью, APB шина с периферийными устройствами, подключается к процессору через мост APB-AHB,
- несколько режимов работы процессора: обычная работа и обработка исключительных ситуаций,
- два набора команд обычный (32 бита) ARM и сокращенный (16 бит) THUMB, сокращенные команды выполняются дольше,
- АДУ содержит 32 регистра общего назначения и 6 статусных регистров, все команды работают с регистрами -- нельзя модифицировать память напрямую,
- такие же классы инструкций как у AVR, только еще инструкции сопроцессора и генерации исключительных ситуаций, все команды могут быть условными,
- нет команд для работы с плавающей точкой,
- типичный представитель: AT91SAM7S64, 64 кБ память программ, 16 кБ память данных, корпус 64 вывода, быстродействие до 100 МГц
- существует синтезируемые ядра (на FPGA от Actel, Altera, XilinX)

5. 5. Что нужно, чтобы микроконтроллер заработал
- питание: 5 В для AVR и 3.3 В и 1.8 В для ARM (источник 1.8 В встроен в микроконтроллер),
- конденсаторы блокировки по питанию (идеально -- керамический конденсатор на каждый вход + танталовый на всю схему)
- кварцевый резонатор или кварцевый генератор
- схема сброса
- разъем для программирования (SPI, JTAG)

6. Система параллельного ввода-вываода (GPIO)
- функции: вывод логического сигнала (логическая 0 или 1), ввод логического сигнала
- стандартно логический 0 -- напряжение близкое к 0 В, логическая 1 -- напряжение близкое к 5 В (3.3 В для ARM)
- входной уровень логического 0 -- меньше чем 0.4 В, логического 1 -- больше 2 В
- вытекающий ток 20 мА (для AVR), 8 мА (для ARM) на каждый вывод, специфицируется ток для всех выводов в сумме -- обычно 100-200 мА
- функции выхода: push-pull, Z-состояние, открытый коллектор (open drain)
- функции входа: подтягивающий резистор, диодная защита
- у ARM7 дополнительно от AVR: независимая конфигурация резистора подтяжки, возможность работы с открытым коллектором, генерация прерываний по изменению на каждом выводе
- AVR : 7 контроллеров параллельного ввода-вывода до 8 выводов в каждом (PORTA, PORTB, ... PORTG)
- ARM7 : 2 контроллера параллельного ввода-вывода до 32 канала в каждом (PIO Controller A, PIO Controller B)

- структура одного вывода ATMega (General Digital I/O)


- 3 регистра PORTX -- значение на выходе, PINX -- значение на входе, DDR -- направление

- пример настройки для AVR

DDRB = 1 << 5; // вывод PORTB[5] на вход, остальные входы
PORTB = 1 << 5; // выводим в PORTB[5] логическую 1
unsigned char bPinState; // =1, если на PINB[4]=1, иначе =0
bPinState = (PINB & (1 << 4)) != 0; // состояние вывода PINB[4]


- структура одного вывода AT91SAM7S (I/O Line Control Logic)




Дополнительные материалы:
http://www.gaw.ru/html.cgi/txt/doc/micros/avr/arh128/1_2.htm
http://www.gaw.ru/html.cgi/txt/doc/micros/arm/arh_sam7s/12.htm
http://habrahabr.ru/blogs/hardware/87039/
http://www.atmel.com/dyn/resources/prod_documents/doc6175.pdf
http://www.atmel.com/dyn/resources/prod_documents/doc2467.pdf
http://www.atmel.com/dyn/resources/prod_documents/DDI0029G_7TDMI_R3_trm.pdf
Микроконтроллеры фирмы Atmel (видео с сайта "Чип и дип")

Комментариев нет:

Отправить комментарий