Микроконтроллеры семейства STR91
Семейство STR7
Это семейство основано на широко распространенном ядре ARM7TDMI, имеющем классическую RISC-архитектуру. Ядро, по сути, предназначено для решения задач управления, которые обычно связаны с переселкой данных между портами ввода вывода и памятью, обработкой условных переходов и несложными битовыми манипуляциями. Процессор не имеет специалицированных DSP-инструкций, поэтому математические операции ядро делает неэффективно. В состав семейства входят три модификации STR710, STR730 и STR750.
Основные характеристики микроконтроллера STR710:
- 45 МИПС@50 МГц;
- 272 кбайт FLASH;
- 64 кбайт RAM;
- 4-банковый интерфейс для подключения SRAM, FLASH, ROM;
- Напряжения питания 3,0...3,6 В;
- Температурный диапазон -40...85°С;
- 5 таймеров;
- 10 коммуникационных интерфейсов: 2 I2C, 4 UART, SmartCard (ISO7816-3), 2 BSPI, CAN, USB 2.0, HDLC;
- 4-канальный 12-битный АЦП;
- DMA-контроллер отсутствует;
- Типы корпусов: 10х10 мм TQFP64, 20x20 мм TQFP144.
Основные характеристики микроконтроллера STR730:
- 32МИПС@36МГц;
- 256 Kбайт FLASH;
- 16 Kбайт RAM;
- Интерфейс к внешней памяти отсутствует;
- Напряжение питания 4,5...5,5 В;
- Расширенный температурный диапазон -40...105°С;
- 20 таймеров;
- 112 портов ввода-вывода;
- 12 коммуникационных интерфейсов: 2 I2C, 4 UART, 3 BSPI, 3 CAN,
- 10-битный АЦП;
- 4-x канальный DMA-контроллер;
- Типы корпусов: 14х14 мм TQFP100, 20x20 мм TQFP144, 10x10x1,7 мм LFBGA144.
Основные характеристики микроконтроллера STR750:
- 54 МИПС@60 МГц;
- 256 Kбайт FLASH;
- 64 Kбайт RAM;
- 4-банковый интерфейс для подключения SRAM, FLASH, ROM;
- Напряжение питания 4,5...5,5 В;
- Расширенный температурный диапазон -40...105°С;
- 6 таймеров;
- 72/38 портов ввода-вывода;
- 8 коммуникационных интерфейсов: один I2C, три UART, два SSP, один CAN, один USB;
- 10-битный АЦП;
- 4-канальный DMA-контроллер;
- Типы корпусов: 10x10 мм LQFP64, LQFP 14x14 мм, LFBGA64 8x8x1,7 мм, LFBGA100 10x10x1,7 мм.
Как видно, все эти микроконтроллеры обладают соизмеримым быстродействием и отличаются наличием или отсутствием интерфейса внешней памяти, разным набором периферии и типами доступных корпусов. STR710 подходит для приложений, где важно низкое энергопотребление с умеренными требованиями к производительности. Отсутствие DMA-контроллера не позволяет обеспечить пересылку данных без участия ядра. Производитель рекомендует эти изделия для применения в бытовой и промышленной электронике, GSM, Bluetooth, DAB/DBM, трехфазных измерителях мощности, сканерах банковских карт и т.д.
STR730 обладает большей тактовой частотой по сравнению с STR710 и имеет DMA-контроллер, который, к сожалению, может работать только с таймерами, портами BSP и АЦП. Большое количество таймеров и портов ввода-вывода позволяет применять микроконтроллер в приложениях промышленной электроники, автоэлектронике, в индустриальных измерителях мощности, принтерах, регистраторах и т.д.
DMA-контроллер STR750 обладает более развитыми возможностями. Он поддерживает циркулярную адресацию и может быть подключен к портам UART0, SSP0, PWM-таймеру, TIM0, ADC. Наличие интерфейса к внешней памяти и относительно высокая тактовая частота позволяет применять микроконтроллеры в задачах приборостроения, управления бесщеточных двигателей, USB-периферии, UPS, системах сигнализации, медицинском оборудовании и т.д.
Семейство STR9
Это самые высокопроизводительные микроконтроллеры компании STMicroelectronics. Они построены на основе ядра ARM966E-S с гарвардской архитектурой, свойственной DSP-процессорам, с независимыми шинами данных и инструкций. На бинарном уровне STR9 совместим с инструкциями ARM7 и 16-битным Thumb-кодом.
Основные характеристики микроконтроллеров STR9:
- Тактовая частота 96 МГц, набор инструкций для DSP-обработки;
- до 2 Мбайт - основная, до 128 кбайт - дополнительная FLASH;
- 96 кбайт RAM;
- Интрефейс внешней памяти с поддержкой 8/16/24-битной адресации к SRAM;
- Напряжение питания 1,65...2,0 В для ядра и памяти, 2,7...3,6 В для портов ввода-вывода;
- Расширенный температурный диапазон -40...85°С;
- 4 таймера;
- 80 портов ввода-вывода, мультиплексированные с другими интерфейсами;
- 10 коммуникационных интерфейсов: 10/100 Ethernet, 12 Mbit/sec USB, CAN, 3 UART, 2 I2C, 2 SPI/SSI;
- 10-битный 8-канальный АЦП;
- 9-канальный DMA-контроллер;
- Типы корпусов: 12x12 мм LQFP80, LQFP128 14x14 мм, LFBGA144 10x10x1,7 мм.
Как и все микроконтроллеры, рассмотренные выше, STR9 работает непосредственно из FLASH-памяти на тактовой частоте до 96 МГц. Оборудованный Ethernet- и USB-интерфейсами и поддержкой до 2 Мбайт FLASH, STR9 позволяет создавать на его основе современные высокопроизводительные сетевые устройства. Функциональная схема микроконтроллера STR9 показана на рисунке 1.
Рис. 1. Функциональная схема микроконтроллера STR9
Рассмотрим основные компоненты микроконтроллера STR9.
TIM-интерфейс
Одновременная загрузка инструкций и запись/чтение данных происходит через TIM-интерфейс (TIghtly-coupled Memory), таким образом обеспечивается последовательное исполнение инструкций и уменьшается количество тактов, приходящихся на одну инструкцию. В дополнение к этому используется 5-ступенчатый конвейер для распараллеливания выполнения команд и повышения производительности.
DSP-расширение
Буква ‘E' в названии ядра указывает на наличие специальных инструкций для DSP-обработки. Дополнительные DSP-инструкции включают однотактовые 32х16 МАС, сложение/вычитание с насыщением и операцию вычисления лидирующих нулей. Типичный выигрыш от применения DSP-инструкций на ядрах ARM составляет около 20%, что является неплохим результатом для RISC-микроконтроллера.
Блочный FLASH-интерфейс
Блочный FLASH-интерфейс интегрирован непосредственно с модулем TIM (I-TIM). Здесь же располагается очередь предварительной выборки PFQ (Pre-Fetch Queue) на 8 элементов и кэш переходов BC (Branch Cache) на 15 записей, благодаря которому ядро ARM966E-S работает на частоте 96 МГц напрямую из FLASH. Такая архитектура обеспечивает высокую производительность без необходимости использования дорогостоящей внутренней памяти SRAM для инструкций, кэша инструкций или внешней SDRAM. Отсутствие кэша инструкций фактически означает уменьшение времени реакции на прерывания.
SRAM
32-битная статическая память SRAM располагается на интерфейсе D-TCM (TCM со стороны шины данных) и обеспечивает одноцикловый доступ к данным. D-TCM разделяет доступ к SRAM вместе с шиной AHB (Advanced High-performance Bus) и управляется простой арбитражной логикой, которая также позволяет контроллеру DMA через шину AHB достучаться до SRAM. Предусмотрена возможность сохранения содержимого SRAM при пропадании напряжения питания (линии VDD и VDDQ) и наличии подключенной резервной батареи к линии VBATT.
DMA-контроллер
DMA-каналы, работающие через шину AHB, в полной мере используют специфику гарвардской архитектуры и быстро пересылают данные, практически не влияя на процесс вычитывания инструкций. DMA-контроллер состоит из двух элементов: первый специально предназначен для перемещения данных от интерфейса Ethernet в память SRAM; второй содержит 8 программируемых каналов и 14 сигнальных линий для обслуживания интерфейсов USB, SSP, ADC, UART, Timers, EMI и внешних прерываний. DMA-контроллер поддерживает работу в режиме связанного списка (Linked List), когда пересылка данных для каждого блока описывается отдельной структурой параметров со ссылкой на следующую структуру и так далее. Таким образом, можно осуществлять пересылки блоков данных разной длины и в разные области памяти без участия процессора [3].
FLASH
STR9 содержит два банка FLASH-памяти и предоставляет возможность читать и одновременно с этим записывать или стирать сектора. Память рассчитана на хранение информации не менее 20 лет и не менее 100К циклов перезаписи. Основной банк памяти (макс. 2 Мбайт) намного больше, чем дополнительный (макс. 128 Кбайт). STR9 может загружаться и исполнять код из любого банка, однако наиболее практичным будет использование основного банка для хранения исполняемого кода, а дополнительного - для хранения временных данных. FLASH-память может быть запрограммирована через JTAG ISP-интерфейс, который работает совершенно независимо от ядра. Этим очень удобно пользоваться на этапах программной разработки и производства.
ОТР
В дополнение к двум банкам FLASH-памяти STR9 содержит 32 байта памяти OTP (one-time-programmable), которые могут быть запрограммированы только один раз через JTAG-интерфейс или микропроцессорное ядро. После записи байты уже не могут быть изменены. ОТР-память идеально подходит для хранения серийных номеров, ключей шифрования, фабричных калибровочных констант и т.д. Также предусмотрен защитный бит (lock bit), который запрещает запись в те ячейки OTP-памяти, которые еще не были прописаны.
VIC
Обработка прерываний сделана на основе двух стандартных блоков VIC (Vectored Interrupt Controller - векторный контроллер прерываний). Этот комбинированный модуль VIC имеет 32 приоритизированных канала и генерирует два выходных прерывания FIQ и IRQ на микропроцессорное ядро. Приоритет FIQ выше, чем IRQ.
FIQ - это единственное не векторизованное прерывание, по которому ядро может запускать обработчик прерывания без необходимости определения/приоритизации источника прерывания, минимизируя таким образом задержку обработки. Обычно только один источник прерываний из 32 может быть сопоставлен с FIQ. FIQ-прерывание имеет свой банк регистров для уменьшения времени переключения контекста. Прерывание IRQ - векторизованное, и этот сигнал является логическим «или» всех 32 источников прерывания. Приоритет каждого источника прерывания определяется аппаратно (IRQ-канал 0 имеет наивысший приоритет, а канал 31 - наименьший). Внутри каждого модуля VIC имеется возможность сопоставить каждый источник прерывания с конкретным IRQ-каналом. Таким образом, можно менять приоритеты источников прерывания, которыми могут быть все перефирийные элементы микроконтроллера.
Особенности работы с Ethernet
Современные устройства уже не обходятся без поддержки Ethernet-интерфейса. Важно понимать, какие существуют «подводные камни» и ограничения в STR9 при работе с Ethernet.
Как уже упоминалось, пересылкой IP-пакетов из Ethernet и обратно в STR9 занимается отдельный DMA-канал. Будучи сохраненным в памяти, IP-пакет должен отдаваться в TCP/IP-стек для дальнейшей обработки. Однако тонкость состоит в том, что для эффективной работы с данными процессор должен использовать 32-битный доступ по выравненным адресам. Но, как известно, Ethernet-заголовок IP-пакета имеет длину 14 байт, поэтому все остальные заголовки в пакете будут сдвинуты в памяти на 2 байта относительно выравненного первого байта пакета. А для их корректной обработки нужно либо использовать 16-битный доступ к памяти, либо делать искусственное выравнивание в памяти, что, безусловно, вносит дополнительную нагрузку на ядро. В [2] детально и с примерами описано как правильно обрабатывать IP-пакеты, приходящие с DMA. Показано, что правильное выравнивание данных в памяти позволяет ускорить копирование буферов в 20 раз. Таким образом, при оценке загрузки ядра нужно учитывать подолнительные «накладные расходы» на пересылку IP-пакетов.
Средства разработки для STR9
Ассортимент средств разработки и отладки для микроконтроллеров STMicroelectronics весьма широк. Существует большое количество как коммерческих, так и бесплатных вариантов. Стоит в первую очередь отметить, что доступны следующие бесплатные библиотеки:
- Библиотеки драйверов под всю перефирию STR9 [4, 5];
- DSP-библиотека [6];
- Библиотека разработчика USB-приложений [7].
Несколько слов об операционной системе (ОС) для STR9. Следует знать, что поскольку STR9 не содержит блока MMU (блок управления памятью), то использовать полноценные ОС, например Linux, невозможно. MMU используется операционной системой для физического разделения адресного пространства потоков и их доступа к памяти. Поэтому можно применять только облегченные варианты операционных систем, которые, по сути, нужны для синхронизации потоков, обмена данными и переключения контекста. Самое важное требование, которому должна удовлетворять ОС - это минимальное время реакции на события и минимальное время переключения контекста потоков. Можно порекомендовать FreeRTOS, которая является проектом с открытым кодом и может быть использована для разработки коммерческих приложений.
Если нужен TCP/IP-стек, то можно порекомендовать бесплатный NicheLite TCP/IP, который поддерживает все основные сетевые протоколы. Взяв за основу этот вариант, в последствии можно докупить опциональные сервера/протоколы или разработать их самостоятельно. NicheLite может работать как под управлением RTOS, так и без нее.
Количество сред разработки поражает своим разнообразием, и новичкам может быть трудно в нем сориентироваться. Если особенных предпочтений нет, то можно порекомендовать «классический» и самый надежный вариант: Linux-машина, GCC-кросс-компилятор, GDB-отладчик и аппаратный JTAG-эмулятор Abatron BDI2000 или аналогичный ему. На машине с ОС Windows GCC/GDB могут быть запущены из под эмулятора Linux-окружения Cygwin. По желанию может быть использована универсальная графическая среда разработки IDE Eclipse или подобная ей.
Стоит отметить что GCC-компилятор генерирует довольно неоптимальный код, и если стоит задача реализации сложного вычислительного алгоритма, особенно с использованием DSP-инструкций, то надо быть готовым к ручной ассемблерной оптимизации кода, иначе производительности ядра может просто не хватить. Ассемблер у всех ядер ARM довольно простой и понятный, так что освоить технологию ручной оптимизации кода под ARM большого труда не составляет. Альтернативой может служить использование других коммерческих компиляторов, например KEIL, которые известны хорошим качеством сгенерированного кода.
Литература
1. STR91xFAxxx datasheet, www.st.com
2. AN2367 - Optimized memory copy routine for TCP/IP on the STR91x, http://www.st.com/
3. AN2442 - Using the STR91xFA DMA controller, http://www.st.com/
4. Easy-to-use firmware libraries for STR91xFA, um0233.zip, http://www.st.com/
5. ENET Firmware library, um0248.zip, http://www.st.com/
6. DSP library, um0304.zip, http://www.st.com/
7. STR7/STR9 USB developer kit software, um0209.zip, http://www.st.com/.
Получение технической информации, заказ образцов, поставка -
e-mail: mcu.vesti@compel.ru
Ваш комментарий к статье | ||||