2-ая часть From Zero to IoT Hero: доклад - Обзор современных микроконтроллеров и их архитектур, Обзор архитектуры ARM.
1-ая часть доклада
Хотя ARM контроллеры можно встретить везде и повсюду, существует и достаточно активно используются и другие типы микроконтроллеров - например экосистема Arduino с контроллерами Atmel. Обзор и небольшое сравнение современных типов микроконтроллеров.
2-ая часть доклада
ARM - самая распространенная архитектура контроллеров для встраиваемых устройств. Почему так? Потому что они простые и очень эффективные. В докладе подробно разобрано, как они устроены.
Спикер: Александр Сурков
12. Триггеры
Триггером называют логическую схему с положительной
обратной связью, способную формировать 2 устойчивых
состояния на своих выходах Q и не Q, изменения которых
происходит под действием входных сигналов.
Предназначен в основном для хранения одного бита
информации, т.е. логических «0»или «1». Схема триггера
обеспечивает запись, считывание, хранение и стирание
двоичной информации.
19. Регистры
Регистром называют группу или линейку
запоминающих элементов (чаще триггеров),
предназначенных для: записи, хранения,
сдвига, выдачи двоичного слова.
25. Компараторы
Компаратор – это узел для сравнения двух
чисел. Простейший компаратор сравнивает 2
числа (слова) А и В и выдает однобитовый
сигнал: при равенстве А=В - 1, при
неравенстве – 0.
32. Арифметико-логическое устройство
ALU – функционально законченный узел процессора ЭВМ,
предназначенный для выполнения арифметических и логических
операций по обработке информации.
Основные операции, выполняемые ALU:
•Арифметические (все они сводятся к сложению), до 50% от всех
выполняемых операций.
•Логические (до 16 операций – до 45% от всех выполняемых операций).
•Остальные 5% - операции управления.
35. Итак что у нас есть
•Элемент И-НЕ - на основе транзистора
•Булевы элементы – логические операции на основе И-НЕ
•Триггер – единица памяти на основе булевых элементов
•Регистр – Набор триггеров для хранения данных
•Шифратор, дешифратор, мультиплексор – управляющие сигналы
•Сумматор – математические операции над числами
36. Зачем все это знать?
Чтобы понимать как работает
микроконтроллер и чем
отличаются разные архитектуры
контроллеров
39. Типы архитектур
•Гарвардская (например Intel 8051):
• Память и данные физически разные модули
• Шина команд и шина данных так же разделены
• Считывать данные и команды можно одновременно
•Фон Неймана (например ARM):
• Единая шина данных для команд и данных
• Едина память для команд и данных
• Работают медленнее, но физически и логически проще
40. Разрядность микроконтроллера
•8,16 и 32 бита
•Это число – количество бит, которые
параллельно может обработать CPU. Как
правило соответствует ширине шины данных
и разрядности ALU.
•Например, в Intel 8051 шина данных 8 бит а
шина адреса 16 бит
41. Организация памяти
•8 разрядов шины адреса – 256 байт
•16 разрядов шины адреса – 64 Кб
•32 разряда шины адреса – 4 Гб
Больше пропускная способность шины и
больше памяти можно адресовать
43. CISC & RISC
•CISC – complex instruction set computer – сложные инструкции,
которые быстро выполняются, но долго подготавливаются.
Сложно распараллелить
•RISC – reduced instruction set computer – упрощенные инструкции,
которые быстрее подготавливаются к выполнению. Хорошо
поддаются распараллеливанию.
Есть еще
•MISC
•OISC
44. Конвеер
•IF (Instruction Fetch) — получение инструкции,
•ID (Instruction Decode) — раскодирование инструкции,
•EX (Execute) — выполнение,
•MEM (Memory access) — доступ к памяти,
•WB (Register write back) — запись в регистр.
46. Что у них общего
•CPU – вычислительное ядро, умеющее исполнять инструкции
•Interrupt Controller – аппаратный контроллер прерываний
•RAM (оперативная память) – энергозависимая быстрая память
•ROM (ПЗУ, Flash) – энергонезависимая, но более медленная память
•Clock Unit – модуль настройки тактовой частоты
•Watchdog – модуль слежения за «подвисанием» ядра
•GPIO – порты ввода-вывода общего назначения
•Набор «периферии» - SPI,UART,I2C,USB,ADC,DAC, и т.д.
52. Вроде все одинаково, но в чем отличия ?
С точки зрения C/C++ программиста кажется что отличия в
мелочах – ассемблер (который все равно скрыт под C/C++) и
способы управления тем или иным узлом с помощью регистров и
наборы регистров.
Но это очень серьезные отличия.
54. Что такое ARM
1) Компания ARM Ltd – разрабатывающая архитектуру ARM
2) ARM - Advanced RISC Machine - 32х разрядная
микропроцессорная RISC архитектура фон Неймана,
разрабатываемая компанией ARM
55. Какие бывают ARM ядра
ARM7 – мк для встраеваемых устройств
ARM9 и ARM11 – мощные микропроцессоры
CortexM – замена ARM7
CortexA – замена ARM9 и ARM11
61. Регисты общего и специального
назначения
Эти регистры в ядре, вне
адресного пространства
•SP – указатель стека (2
режима)
•LR – информация,
возвращаемая из
подпрограмм
•PC – счетчик команд
62. Program Status Register (PSR)
N – флаг отрицательного значения Exception Number – номер прерывания
Z – флаг нуля
C – флаг переноса разряда
V – флаг переполнения
T`- Флаг Thump state
63. Exception mask register (PRIMASK)
Делает только одно. Его младший (0) бит запрещает или
разрешает все прерывания. По отдельности работы с
прерываниями идет через блок NVIC.
64. Control register (CONTROL)
Бит 1 определяет какой
из регистров PSP или
MSP использовать как
регистр стека:
0 = Main Stack Pointer (MSP).
1 = Process Stack Pointer (PSP).
66. Память
•Code - Executable region for program code.
•SRAM - Executable region for data. You can also put code here.
•Peripheral - External device memory.
•External RAM - Executable region for data.
•External device - External device memory.
•Private Peripheral Bus - This region includes the NVIC, System timer
and System Control Block.
•Device - Vendor specific.
67. Функциональные блоки Cortex M
•NVIC – контроллер прерываний, который тесно интегрирован с
вычислительным ядром
•System Control Block – блок управления, позволяющий делать
небольшие настройки работы ядра
•System Timer – системный таймер/счетчик, который используется
на низком уровне операционными системами.
Регистры управляющие этими блоками находятся в едином
адресном пространстве в блоке Private Peripheral Bus
69. System Control Block – блок управления
CPUID (0xE000ED00) – processor part number, version и т.д.
ICSR (0xE000ED04 ) – Interrupt Control and State Register
AIRCR (0xE000ED0C) – Application Interrupt and Reset Control
SCR (0xE000ED10) – System Control Register
CCR (0xE000ED14) – Configuration and Control Register
SHPR2 (0xE000ED1C) – System Handler Priority Register 2
SHPR3 (0xE000ED20) – System Handler Priority Register 3
70. System Timer – системный таймер/счетчик
SYST_CSR (0xE000E010) - SysTick Control and Status Register
SYST_RVR (0xE000E014) - SysTick Reload Value Register
SYST_CVR (0xE000E018) - SysTick Current Value Register
SYST_CALIB (0xE000E01C) - SysTick Calibration Value Register
71. CMSIS
Cortex Microcontroller Software Interface Standard
Свободно распространяемая библиотека, написанная на С, позволяющая
удобно работать со всеми выше описанными блоками.
72. Заключение
•Мы рассмотрели основные составляющие части Cortex M контроллеров.
•Мы не рассмотрели еще много всего:
• Этапы загрузки
• Детали работы прерываний
• Режимы работы ядра
• И т.д.
Все что мы изучили – Ядро Cortex M – есть во всех Cortex M контроллерах.
Но все, что кроме ядра везде будет разное. Набор периферии и
компонентов примерно одинаков, но вот наборы управляющих регистров и
логика работы модулей своя у каждого производителя.
74. Хотите знать больше про Internet of Things?
Присоединяйтесь к нам!
IoT Community:
•https://www.facebook.com/groups/RU.IoT.Community/
•http://vk.com/iot_community
•https://www.meetup.com/IoTCommunity/
75. «Вжух» и получился компьютер 2
Александр Сурков, Microsoft MVP, IoT Community leader
@AOSurkov