Миро Самек "Использование режимов малого энергопотребления в простых программных архитектурах" (перевод)
ARM
В контроллерах на основе ядра ARM используется другой подход к атомизации перехода в режим низкого потребления. Производители кристаллов ARM, такие как Atmel, NXP и TI, объединяют стандартное ядро ARM7 или ARM9 с набором периферийных модулей собственной разработки, включающих контроллеры прерываний и управления питанием. Связь между различными частями процессора получается не жёсткая и внутреннее состояние ARM не влияет на периферию. Что же касается прерываний, то ядро может запретить их, устанавливая биты "I" и "F" в регистре состояния программы (current program status register - "CPSR"), но это действие не повлияет на внешний [* по отношению к ядру] модуль управления питанием и внешний же контроллер прерываний, которые вводят дополнительный уровень управления.
Такая конструкция позволяет контроллерам ARM переходить в режим малого потребления с запрещёнными на уровне ядра прерываниями. Сразу после перехода модуль управления питанием выключает тактирование ядра, но любое событие, разрешённое на уровне контроллера прерываний, тактирование восстанавливает. Для ускорения обработки сразу же после возобновления работы ядро должно разрешить прерывания на своём уровне.
В листинге 6 показан общий принцип перехода в режим низкого потребления для контроллеров на ядре ARM (компилятор IAR ARM, процессор AT91SAM) [4]. Модуль управления питанием останавливает тактирование ядра ("AT91C_BASE_PMC->PMC_SCDR = 1") при запрещённых на уровне ядра прерываниях. Разблокировка прерываний происходит уже после пробуждения, когда процессор выполнит внутреннюю функцию "__enable_interrupt()". Такое поведение можно наблюдать, если подключиться к активному приложению через JTAG отладчик. Исполнение будет останавливается на строке "__enable_interrupt()".
Листинг 6. Стратегия перехода в режим пониженного потребления для микроконтроллера на ядре ARM (компилятор IAR ARM, процессор AT91SAM) |
|
Раз уж речь зашла об отладке, следует заметить, что режем сна нарушает работу встроенных в кристалл отладчиков, так как отключает тактирование ядра [* а вместе с ним и отладчика]. По этой причине переход в режим малого потребления следует включать только в выходную (не отладочную) версию программы с помощью директив условной компиляции.
- блог пользователя teap0t
- 45491 просмотр
Новые записи в блогах
- Устранение дребезга контактов на основе вертикальных счетчиков
- Диагностика Imprecise Bus Faults в микроконтроллерах Cortex-M3/M4/M4F
- Self-powered камера
- Фоновый модулятор: беспроводная связь из ничего (перевод)
- Texas Instruments Analog Applications Journal SLYT612 "Снижение искажений в аналоговых КМОП ключах" (перевод)
- USB MSD. Часть 6. Команды SCSI (перевод)
- USB MSD. Часть 3. USB класс накопителей данных (перевод)
- Texas Instruments Application Report SBAA042 "Кодовые схемы, используемые в аналогово-цифровых преобразователях" (перевод)
- 10 принципов правильного интерфейса
- Релиз SDK на русский микропроцессор КРОЛИК
Recent comments
5 лет 20 недель назад
5 лет 35 недель назад
5 лет 45 недель назад
5 лет 47 недель назад
6 лет 3 недели назад
6 лет 27 недель назад
6 лет 28 недель назад
6 лет 31 неделя назад
6 лет 42 недели назад
7 лет 22 недели назад