Вы находитесь на странице: 1из 8

102 проектирование схемотехника

Разработка приложений
для СнК SmartFusion2 
с использованием  
средств разработки  
Libero SoC и SoftConsole

В соответствии с прогнозами экспертов, к 2020 году на планете будут ра‑


ботать 60 млрд устройств, подключенных к сети Интернет: количество або‑
нентов‑устройств заметно превысит число абонентов‑людей. Значительная
доля информации, передаваемой по сети, не будет предназначаться че‑
ловеку, а составит трафик общения устройств между собой. «Умные»
дома, беспилотные автомобили поднимут уровень комфорта нашей жиз‑
ни, но при этом создадут новый уровень угроз нашему существованию.
Не трудно представить себе последствия работы хакера, захватившего
Петр Поздняков по сети управление комбайном и переместившего его с кукурузного поля
Pozdnyakov@actel.ru на оживленную автостраду.

Р
ешить проблемы безопасности в мире Состав аппаратурных блоков, входящих того, чтобы не платить роялти за такие элемен-
«Интернета вещей» можно, предоста- в СнК SmartFusion2 и ПЛИС Igloo2, изобра- ты архитектуры, как процессор ARM Cortex-M3,
вив пользователю надежную систему жен на рис. 3. контроллер CAN-интерфейса и т. п., поскольку
защиты от несанкционированного вторжения При рассмотрении рис. 3 может показаться, известно, что довольно большое количество
не только в его данные, но и в само устрой- что Igloo2 является некоторой усеченной вер- микросхем будет иметь спрос и без указан-
ство. Подобная система защиты должна быть сией SmartFusion2. Так и есть на самом деле. ных блоков архитектуры. По выходе с кон-
реализована на уровне кристалла микросхе- Кристаллы SmartFusion2 и Igloo2 производятся вейера соответствующие чипы SmartFusion2
мы. Первыми и пока единственными семей- в едином техпроцессе. Затем на финишной ста- и Igloo2 имеют совместимость pin-to-pin, что
ствами микросхем, имеющих указанные сред- дии у некоторого количества кристаллов лазе- позволяет мигрировать с одного семейства
ства защиты на уровне, достаточном для осу- ром отсекается часть блоков. Делается это для на другое без переразводки печатной платы.
ществления концепции «Интернета вещей»,
являются системы на кристалле SmartFusion2
и ПЛИС Igloo2 корпорации Microsemi.
Данная статья открывает цикл материалов,
посвященных особенностям проектирова-
ния для систем на кристалле SmartFusion2.

Краткий обзор архитектуры СнК


SmartFusion2

Структурная схема СнК SmartFusion2 пред-


ставлена на рис. 1.
Основные структурные элементы СнК
SmartFusion2 — это микроконтроллерная
подсистема с большим набором аппаратно
реализованных блоков интерфейсов, матри-
ца ПЛИС и системный контроллер с его под-
системой безопасности.
Структурная схема FPGA Igloo2 показана
на рис. 2.
Архитектура Igloo2 включает подсистему
памяти, сильно сокращенную версию микро-
контроллерной подсистемы SmartFusion2, Рис. 1. Структура СнК SmartFusion2
матрицу ПЛИС и системный контроллер.

КОМПОНЕНТЫ И ТЕХНОЛОГИИ • № 1 '2016


схемотехника проектирование 103

Рис. 4. Запуск Libero SoC

Рис. 2. Структура ПЛИС Igloo2

Б о л е е п од р о б н о а р х и т е к т у р а С н К Создание проекта
SmartFusion2 и  ПЛИС  Igloo2  описана
в статье [1]. В качестве первого задания для СнК Smart-
В рамках данного цикла статей СнК Fusion2 возьмем ставший классическим пример
SmartFusion2 представляет наибольший ин- программы, выполняющей отправку сообще-
терес как чип с полным набором перифе- ния “Hello, world!” по интерфейсу UART микро-
рийных блоков. Компания Microsemi пред- контроллерной подсистемы и мигание светоди-
ставляет целую линейку отладочных плат одом, которое реализуем в FPGA-матрице.
на основе SmartFusion2 [2]. Для отработки Запускаем среду разработки Libero SoC 11.6.,
описываемых примеров проектирования по- кликнув на ярлычок на рабочем столе или Рис. 5. Создание проекта
дойдет любая из существующих. на аналогичный в меню «Пуск» (рис. 4).

Рис. 3. Сравнение аппаратных возможностей SmartFusion2 и Igloo2 Рис. 6. Выбор места расположения проекта

Рис. 7. Выбор кристалла Рис. 8. Выбор стандарта ввода/вывода по умолчанию

КОМПОНЕНТЫ И ТЕХНОЛОГИИ • № 1 '2016 www.kite.ru


104 проектирование схемотехника

Рис. 9. Выбор мастера для настройки микроконтроллерной подсистемы

Рис. 10. Окно верхнего уровня проекта  


с настройками микроконтроллерной подсистемы по умолчанию

Рис. 12. Настройка интерфейса MMUART_0 Рис. 13. Отключение блока архитектуры, не используемого в проекте

Создаем проект (рис. 5). LedUART и его место расположения на диске. с которой будем работать. Нажимаем Next
В главном меню LiberoSoC выбираем ко- Нажимаем кнопку Next (рис. 6). (рис. 7).
манду Project/New Project, запускаем мастер В появившемся окне Device selection ука- В следующем окне выбираем настройки
создания нового проекта. В появившемся зываем нужные параметры, в выпадающих стандарта ввода/вывода по умолчанию, на-
окне указываем название нашего проекта списках выбираем PartNumber микросхемы, пряжение питания PLL и задержку старта
микросхемы после сигнала Reset. Нажимаем
кнопку Next (рис. 8).
В следующем появившемся окне отмечаем
мастер, который будем использовать для на-
стройки микроконтроллерной подсистемы.
Нажимаем кнопку Next (рис. 9).
В следующих появляющихся окнах ничего
не меняем, просто нажимаем Next до появле-
ния окна следующего содержания (рис. 10).
Сгенерированный мастером компонент
LedUART_MSS_0 отражает состояние на-
строек микроконтроллерной подсистемы
по умолчанию (рис. 11).
Нам нужно изменить эти настройки в со-
ответствии с задачами, решаемыми нашим
приложением. Приложение отправляет со-
общение “Hello world!”, используя аппарат-
ный интерфейс UART микроконтроллерной
подсистемы. Для выполнения этой операции
понадобится один контроллер интерфей-
са UART. Настроим его, дважды щелкнув
на блоке MMUART_0. В появившемся окне
выберем настройки, показанные на рис. 12.
Мигание светодиодом реализуем сред-
Рис. 11. Исходные настройки микроконтроллерной подсистемы ствами матрицы ПЛИС, микроконтроллер-
ная подсистема в этом участвовать не бу-

КОМПОНЕНТЫ И ТЕХНОЛОГИИ • № 1 '2016


схемотехника проектирование 105

Рис. 15. Настройка подсистемы сброса

ную форму, необходимую для выполнения


нашей задачи, то есть отображаются только
выбранные нами блоки и сигналы (UART,
Reset, Clock), все отключенные нами блоки
более не отображаются (рис. 18).
Теперь нужно добавить компоненты, от-
вечающие за тактирование, системный сброс
Рис. 14. Настройка системы тактирования микроконтроллерной подсистемы и мигание светодиодом. Для генерации сиг-
нала тактирования используем компонент
Chip Oscillators палитры Clock & Management
дет, поэтому все блоки архитектуры, кроме Синтезируем компонент микроконтрол- из каталога. Окно настройки компонента вы-
MMUART_0, которые можно отключить, мы лерной подсистемы с нашими настройками, зываем как обычно, двойным щелчком ле-
отключаем, снимая галочку, как показано выполнив команду SmartDesign/Generate вой кнопки мыши на компоненте (рис. 19).
на рис. 13. Component основного меню или нажав Для тактирования работы СнК SmartFusion2
Для обеспечения работы нашего проекта кнопку с пиктограммой . можно применить как внешние кварцевые ге-
остается настроить подсистему тактирования Затем сохраняем текущие настройки, вы- нераторы, подключаемые к специальным кон-
(MSS_ССС) и сброса (MSS_Reset). Система так- полнив команду Project/Save или нажав тактам СнК, так и внутренние RC-генераторы
тирования СнК SmartFusion2 синтезирует за- кнопку с пиктограммой . на 50 и 25 МГц. Для нашего тестового задания
данные пользователем номиналы частот и до- Переходим в окно проектирования верх- выбираем внутренний генератор на 50 МГц.
водит тактовые сигналы до различных блоков него уровня нашего проекта. После настрой- Тактирующий сигнал нужно подать на поль-
архитектуры, таких как процессор Cortex-M3, ки микроконтроллерной подсистемы внеш- зовательскую логику, как показано на рис. 20.
контроллер DDR-памяти и т. п. Для реализа- ний вид компонента LedUART_MSS_0 изме- Компонент, отвечающий за системный
ции нашей задачи установим значения так- нился — в правом верхнем углу компонента сброс, находится в палитре компонентов
товых частот CLK_BASE и M3_CLK равными появился восклицательный знак на желтом Macro Library стандартного каталога и в на-
50 и 100 МГц, как показано на рис. 14. фоне. стройке не нуждается.
Система сброса позволяет реализовать Это значит, что описание верхнего уров- Стандартного компонента для мигания
различные способы прохождения сигналов ня компонента LedUART_MSS_0 нужно об- светодиодом, разумеется, не существует. Его
сброса внутри системы. В рамках нашего новить. Для этого кликаем правой кнопкой нужно сделать самостоятельно. Для выбран-
проекта выберем настройки, показанные на компоненте и в появившемся меню выби- ной нами частоты внутреннего генератора
на рис. 15. раем Update Instance with Latest Component 50 МГц, чтобы обеспечить интенсивное мига-
После выполнения описанных действий (рис. 17). ние приблизительно 6 раз в секунду, вполне
окно настроек микроконтроллерной подси- После выполнения обновления компонен- достаточно простого счетчика на 23 разря-
стемы должно выглядеть, как на рис. 16. та его внешний вид приобретает окончатель- да. Для этого создаем файл HDL-описания

Рис. 16. Настройки микроконтроллерной подсистемы проекта Рис. 17. Обновление компонента

КОМПОНЕНТЫ И ТЕХНОЛОГИИ • № 1 '2016 www.kite.ru


106 проектирование схемотехника

Рис. 21. Создание файла HDL-описания компонента


Рис. 18. Окно верхнего уровня проекта с настройками микроконтроллерной системы  
под выполняемую задачу

Рис. 22. Ввод основных свойств HDL-описания

Рис. 19. Выбор компонента тактового генератора

Рис. 20. Настройка генератора сигнала тактирования Рис. 23. VHDL-описание 23‑разрядного счетчика мигания светодиода

счетчика, выполнив команду File>New>HDL ния. Тест HDL-описания на языке VHDL при- кой название компонента на рабочее поле
(рис. 21). веден на рис. 23. проекта, аналогично тому, как мы это делали
В появившемся окне выберем язык HDL- Одновременно с созданием файла HDL- с компонентами из стандартного каталога.
описания (VHDL или Verilog) и введем имя описания во вкладке Design Hierarchy появи- Результат представлен на рис. 24.
создаваемого компонента (рис. 22). лось название созданного нами компонен- Для того чтобы соединить нужные контак-
После этого среда создаст текстовый файл, та — таким образом, мы получили возмож- ты, необходимо при нажатой кнопке клавиату-
в котором нужно ввести HDL-описание наше- ность использовать созданный компонент ры Ctrl выделить мышкой контакты, которые
го счетчика на выбранном нами языке описа- в нашей системе. Для этого переносим мыш- собираемся соединить, затем нажать правую

КОМПОНЕНТЫ И ТЕХНОЛОГИИ • № 1 '2016


схемотехника проектирование 107

Рис. 24. Использование созданного компонента в проекте Рис. 25. Соединение «контактов» компонентов

кнопку мыши, в появившемся меню выбрать Переходим во вкладку DesignFlow и выпол- Подключаем программатор к устройству
пункт Connect, как показано на рис. 25. няем команду Place and Route>IO Constraints с СнК, подаем на плату питание, запускаем
Выход счетчика у нас имеет разрядность (рис. 28). команду Program Design/Run PROGRAM
[22:0], для зажигания светодиода будем исполь- Назначаем номера контактов внешним со- Action. В результате выполнения данной ко-
зовать только самый старший разряд, который единениям проекта. Сохраняем внесенные манды будет синтезирован файл конфигура-
нужно вычленить из группы. Для этого на- изменения и закрываем I/O Editor (рис. 29). ционной последовательности, который будет
жимаем на контакте Q [22:0] правой кнопкой В рамках данного примера ввиду простоты загружен в кристалл. Об окончании процесса
мыши и выбираем пункт Edit Slice. В появив- FPGA-части проекта мы опускаем моделиро- можно судить по зажиганию зеленого све-
шемся окне нажимаем кнопку Add Slice Entry вание дизайна в Modelsim. Разумеется, при тодиода на программаторе и миганию вы-
(зеленый знак «плюс») и заполняем таблицу разработке реальных проектов пропускать ис- бранного светодиода на плате отладочного
по образцу, представленному на рис. 26. следования поведенческой модели не следует. набора.
Выводим нужные сигналы на верхний уро-
вень для дальнейшего подключения контак-
тов СнК, последовательно нажимаем на кон-
такты Q [22] компонента MyCounter_0,
MMUART_0_FABRIC компонента LedUART_
MSS_0, в  выпадающем меню выбираем
пункт Promote to Top Level (рис. 27).
Неиспользуемые выходы компонентов сле-
дует пометить выбором пункта Mark Unused
в меню, выпадающем при нажатии правой
кнопки мыши на соответствующем контакте. Рис. 26. Выделение сигнала  
Выполняем команды меню Save и Generate из шины Рис. 29. Назначение номеров контактов внешним соединениям проекта
Component.

Рис. 28. Запуск утилиты I/O


Рис. 27. Создание внешних соединений проекта Editor

КОМПОНЕНТЫ И ТЕХНОЛОГИИ • № 1 '2016 www.kite.ru


108 проектирование схемотехника

Рис. 32. Расположение папки проекта Firmware

Рис. 30. Выбор необходимых драйверов

Рис. 31. Выбор среды разработки Firmware

Разработка встроенного программного обеспечения


процессора Cortex-M3

Выполняем конфигурирование драйверов блоков архитектуры.


Для этого выбираем необходимые для нашего приложения драйверы
встраиваемого программного обеспечения (рис. 30). Для демонстра- Рис. 33. Окно среды разработки SoftConsole
ции работы интерфейса MMUART_0 нам понадобятся драйверы ин-
терфейса MMUART и библиотека CMSIS.
Теперь можно запустить генерацию тестового проекта встраи- по реализации «зеркала», то есть отправки в порт полученного
ваемого программного обеспечения (ВПО). Для этого выполним из порта символа.
команду Export Firmware. В появившемся окне (рис. 31) выберем Создаем исполняемый файл, выполнив команду Project>Clean
среду разработки ВПО, в которой в дальнейшем будем работать. основного меню.
Предлагается три возможные среды разработки: SoftConsole, IAR
EWARM и Keil. В рамках данного примера выберем SoftConsole, ста- Пошаговая отладка кода
вим галочку Create project for selected Software Tool Chain и нажи- встраиваемого программного обеспечения
маем OK. В папке проекта появится каталог SoftConsole с файлами
проекта ВПО. Для выполнения отладки необходимо подключить программа-
Теперь необходимо внести в код программы работы процес- тор FlashPro4 к отладочной плате и персональному компьютеру,
сора нужные нам изменения. Для этого запускаем SoftConsole v3.4. выполнить подсоединение SmartFusion2 к персональному компью-
При старте среда просит указать проект, с которым мы собираемся ра- теру по интерфейсу MMUART_0. После этого следует запустить
ботать. Указываем расположение папки LedUART_MSS_CM3 (рис. 32). программу-терминал для отображения на экране ПК посылаемых
После этого откроется основное окно среды разработки SmartFusion2 сообщений. Приступим к пошаговой отладке про-
SoftConsole, которое должно выглядеть так, как показано на рис. 33. граммы, выполнив команду основного меню Softconsole Run>Debug
Если во вкладке Project Explorer отсутствует наш проект, его нуж- Configurations. В появившемся окне дважды щелкаем левой кноп-
но загрузить вручную, выполнив команды File>Import, в открыв- кой мыши на строке Microsemi Cortex-M3 Target, появляется пункт
шемся окне во вкладке General выбрать пункт Existing Project into LedUART_MSS_CM3_app. Щелкаем на нем и нажимаем кнопку
Workspace и в следующем появившемся окне указать расположение Debug. В результате описанных действий запускается пошаговая
проекта Firmware, то есть …\LedUART\SoftConsole\LedUART_MSS_ отладка разработанного нами приложения. При нажатии кнопки
CM3. После чего окно примет вид, показанный на рис. 33. Step Over или клавиши F6 клавиатуры выполняется очередная
Теперь нужно открыть файл main.c и отредактировать его содер- строка кода программы. Для реализации кода в непрерывном режиме
жимое. Полный текст программы показан на рис. 34. Кроме того, нажмем кнопку Resume (клавиша F8 клавиатуры) и пронаблюда-
архив проекта со всеми исходными текстами можно скачать по ссыл- ем отправку в окно терминала символов, вводимых нами с клавиату-
ке [3]. Помимо приветствия, в код программы добавлены строки ры (рис. 34–36).

КОМПОНЕНТЫ И ТЕХНОЛОГИИ • № 1 '2016


схемотехника проектирование 109

Рис. 34. Листинг программы демонстрационного примера Рис. 35. Отладка приложения в пошаговом режиме

На этом первое знакомство с процессом разработки проекта для


СнК SmartFusion2 с использованием Libero SoC и SoftConsole счи-
таем состоявшимся. n

Литература

1. Иоффе Д., Казаков А. SmartFusion2 и IGLOO2 — надежные, экономичные,


компактные // Компоненты и технологии. 2014. № 8.
2. Иоффе Д., Казаков А. SmartFusion2 и IGLOO2 в помощь разработчи-
ку. Обзор отладочных плат для новых семейств ПЛИС корпорации
Microsemi // Компоненты и технологии. 2014. № 10. Рис. 36. Проверка работы приложения в непрерывном режиме
3. www.drive.google.com/open?id=0B6gJ23CPBznKQlVzMklLR3JIMFU

КОМПОНЕНТЫ И ТЕХНОЛОГИИ • № 1 '2016 www.kite.ru