SlideShare a Scribd company logo
1© 2016 The MathWorks, Inc.
Автоматическая генерация С кода и
тестирование на целевых вычислителях
Михаил Песельник
Экспонента
2
Задавайте вопросы в
Telegram:
@Exponenta_ru
Подписывайтесь на
канал Telegram:
@exponenta_channel
3
Темы секции
 Автоматическая генерация кода
 Оптимизация кода
 Разработка пакетов поддержки для целевых
вычислителей
 Применения технологии генерации кода
4
Разработка встраиваемой системы
Объект/
Окружение
Алгоритм
контроллера
+
-
Система
Софт
Железо
Моделирование, симуляция, генерация кода и верификация
5
Пользовательские истории
Dongfeng
Battery Management System
GM
Hybrid Powertrain
manroland
Printing Press Controller
Honeywell Aerospace
Flight Control Systems
OHB Corp
Satellite GNC Systems
TU München
Flight Simulator
6
SAE Technical Paper 2004-01-0269, March 2004
http://www.mathworks.com/tagteam/20307_91197v00_Multi-Target_Modeling_2004-01-0269.pdf
Размер кода
Сгенерированный код
меньше, чем ручной
7
MADC :Thales Dual Core Code Generation, March 2008
http://www.mathworks.com/tagteam/48884_Thales_DualCore.pdf
Скорость кода
Сгенерированный код
быстрее, чем ручной
8
C/C++ Coders
MATLAB Coder – код из MATLAB
– Портируемый код для численных алгоритмов
– Десктопные приложения (и библиотеки)
Simulink Coder – код из Simulink
– Быстрое прототипирование и HIL
– Машины реального времени (Simulink Real-Time)
Embedded Coder – генерация производственного кода
– Встраиваемые приложения
– MCU и DSP (с фикс. или плав. точкой)
– Верификация кода (-в-контуре)
– Оптимизация под конкретный процессор
Все кодеры генерируют портируемый (ANSI/ISO C) код по умолчанию.
C/C++
Generate
MATLAB and Simulink
Algorithm and System Design
Verify
9
HDL Coder
HDL Coder
 VHDL и Verilog
 ASIC и FPGA
 Платформонезависимый
– По умолчанию
 Платформозависимый
– Xilinx FPGA
– Altera FPGA
HDL Verifier
 HDL co-simulation
– ModelSim, Incisive
 FPGA in-the-loop (FIL)
– Xilinx, Altera
MCU DSP FPGA ASIC
C/C++ VHDL/Verilog
Generate
MATLAB and Simulink
Algorithm and System Design
Verify
Generate
Verify
10
PLC Coder
Simulink PLC Coder
 Structured text
 PLC и PAC
 Платформонезависимый
– По умолчанию
(IEC 61131)
 Платформозависимый
– Rockwell
– Siemens
– B&R
– Другие
MCU DSP FPGA ASIC
C/C++ VHDL / Verilog
Generate
Simulink and Stateflow
Algorithm and System Design
Verify
Generate
Verify
PLC PAC
Structured Text
Generate
Verify
11
Демо – генерация кода
>> rtwdemo_fixpt1
12
Процесс разработки встраиваемой системы
с использованием МОП
Системные
требования
Проектирование
системы
Проектирование
ПО
Кодирование
Интеграция
ПО
Программно-
аппаратная
интеграция
Системная интеграция
и калибровка
Sim
RP
OTRP SIL
PIL
HIL
Sim: Симуляция
RP: Быстрое прототипирование
OTRP: БП на целевой платформе
PCG: Генерация производственного кода
SIL: Программа-в-контуре
PIL: Процессор-в-контуре
HIL: Железо-в-контуре
PCG
Моделирование
и симуляция
Исполняемые
спецификации
Непрерывное
тестирование
и
верификация
Автоматическая
генерация кода
Модели
13
Исполняемые спецификации
Design
with
Simulation
Continuous
Test and
Verification
Automatic
Code Generation
Executable
Specifications
Models
14
Симуляция
Является ли алгоритмы корректными?
15
Быстрое прототипирование
ОбвязкаReal-Time or
Embedded
Simulink Real-Time
Являются ли алгоритмы реализуемыми?
Генерация
кода
16
ОбвязкаReal-Time or
Embedded
Быстрое прототипирование на целевой платформе
Встраиваемый процессор или ЭБУ
Являются ли алгоритмы практичными?
Генерация
кода
20
Моделирование
и симуляция
Automatic
Code Generation
Executable
Specifications
Continuous
Test and
Verification
Design
with
Simulation
Models
21
Конвертация из плавающей в фиксированную точку
 Переполнение/
исчезновение порядка
 Оптимизации кода
 Диапазоны симуляции
 Расчет диапазонов
>> fxpdemo_fpa
22
Описание данных
 Имя
 Класс памяти (показано)
 Алиас (имя в коде)
 Комментарии
 Тип данных
23
Описание интерфейсов функций
 Имя функции
 Имена аргументов
 Передача по значению
 Передача по указателю
 Квалификатор
24
Генерация
производственного
кода Executable
Specifications
Design
with
Simulation
Continuous
Test and
Verification
Automatic
Code Generation
Models
25
Экспорт алгоритма (код ANSI/ISO)
A B C
M

I NPUT
BLUE G REEN RED
PO W ER
RGBSplit-4BLACK BOX


V RCS
Драйверы
входов
Драйверы
выходов
Драйверы
спец.
устройств
Драйверы
интерф.
ОС, Планировщик
Интерфейсы
Датчики
Исполнительные
механизмы
Специальные
интерфейсы
Калибровка
Алгоритм
Модель
регулятора
26
Поддерживает ли Embedded Coder мой процессор/мою
плату?
 Автоматическая связь со средой разработки для процессора
 Оптимизация под конкретный процессор
 Специфические драйвера/блоки Simulink
 Интеграция с RTOS/планировщиком/ISR
 Processor-in-the-Loop симуляция
 External Mode
Документированные API для реализации
своего пакета поддержки
27
A B C
M

I NPUT
BLUE G REEN RED
PO W ER
RGBSplit-4BLACK BOX


V RCS
Сгенериро-
ванный код
Драйверы
входов
Драйверы
выходов
Драйверы
спец.
устройств
Драйверы
интерф.
ОС и планировщик
Интерфейсы
Датчики
Исполнительные
механизмы
Специальные интерфейсы
Калибровка
Ручной код
Модель
контроллера с
драйверами
Полный проект (Target Support)
Оптим. код
28
Подходы к интеграции кода
Экспорт алгоритма Полный проект
Цель Серийное производство БП на целевой платформе
Мелкосерийное производство
Использование Системные инженеры и
программисты
Системные инженеры
Оборудование Любой процессор Определенные отладочные платы и
киты
Гибкость Выше Ниже
Простота
использования
(«под ключ»)
Работает после однократной
настройки
Работает «из коробки»
29
Поддержка целевого оборудования
Примеры и API Embedded Coder
Ключевые API
 Управление прототипом функции
 Настраиваемые классы памяти
 Pack-and-go
 Code replacement tool
 Legacy code tool
 PIL и External Mode
 S-Functions
Примеры (для TI C2000)
 Экспорт алгоритма
>> rtwdemo_pmsmfoc_system
 Полный проект
>> c2000_motor_algo
Дополнительные примеры и демо
ЦИТМ Экспонента предлагает сервис по
разработке поддержки оборудования
30
Подстановка кода
 Поддержка базовых операторов и
функций
– Add, Subtract, Multiply, Divide, ...
– Abs, Cos, Memset, Sqrt, …
 Поддержка фикс. точки
 Поддержка выравнивания данных
– Для SIMD, Intel IPP и т.п.
 Поддержка MATLAB, Simulink, and
Stateflow
Замена операторов и функций в
модели на процессоро-
оптимизированные
void mDA_step(void)
{
matrix_add_4x4s_w_da(mDA_U.In1, mDA_U.In2,
&mDA_B.Add[0]);
……
matrix_mul_4x4s_w_da(mDA_U.In1, mDA_U.In2,
*(real32_T (*)[16])&mDA_Y.Out2[0]);
}
typedef struct {
__declspec(align(16)) real32_T Add[16];
} BlockIO_mDA;
typedef struct {
__declspec(align(16)) real32_T In1[16];
__declspec(align(16)) real32_T In2[16];
} ExternalInputs_mDA;
typedef struct {
real32_T Out1[16];
__declspec(align(16)) real32_T Out2[16];
} ExternalOutputs_mDA;
2
Out2
1
Out1
Matrix
Multiply
Mul
Add
2
In2
1
In1 single [4x4]
single [4x4][4x4]
[4x4]
single [4x4]
[4x4]
[4x4]
single [4x4]
model.c
model.h
>> echodemo rtwdemo_tfl_script
31
Непрерывное
тестирование и
верификация
(SIL/PIL)
Executable
Specifications
Design
with
Simulation
Automatic
Code Generation
Continuous
Test and
Verification
Models
32
Программа-в-контуре (Software-in-the-Loop, SIL) и
Процессор-в-контуре (Processor-in-the-Loop, PIL)
С точки зрения разработки ПО повышенной надежности
PIL
SIL
33
Генерация
кода
Объектный код
тестируемого
алгоритма
Тестовая обвязка SIL/PIL
Хост компьютер (SIL)
Целевой процессор (PIL)
Model Block SIL/PIL
(Замкнутый контур)
Top Model SIL/PIL
(Разомкнутый контур)
Как работают SIL и PIL
Режимы симуляции и тестовая обвязка
34
Синхронизация с
хостом на каждом шаге (не
реальное время)
История выполнения
• Сравнение эквивалентности
• Покрытие кода
• Профилирование выполнения
Communication
Gateway
Как работают SIL и PIL
Симуляция на целевой платформе
36
Анализ покрытия кода тестами
38
Измерение времени выполнения
Поддерживает:
 SIL и PIL
 Задачи и функции
 HTML отчеты
Идентификация
проблемных мест
40
Демонстрация
41
С  *.dlm
ШИМ,
цифровые
выходы
±ШИМ
Сценарий эксперимента
42
C  *.dlm
Двигатель и силовая часть
Быстрое прототипирование алгоритмов управления
ШИМ, цифровые
выходы
Квадратурный
сигнал
Машина реального времени
43
C/C++  *.hex
ШИМ, цифровые
выходы
C  *.dlm
Полунатурное моделирование (HIL)
Машина реального времени
Квадратурный
сигнал
44
C/C++  *.hex
ШИМ, цифровые
выходы
Независимое выполнение
Квадратурный
сигнал
Двигатель и силовая часть
45
Тренинги
Курс «Генерация кода для встраиваемых систем с использованием
Embedded Coder» (3 дня)
 Структура сгенерированного кода и его выполнение
 Настройки генератора кода и параметры оптимизации
 Интеграция сгенерированного кода с внешним кодом
 Генерация кода для многочастотных систем
 Настройка сгенерированного кода
 Настройка данных сгенерированного кода
 Развертывание кода
http://matlab.ru/training/SLEC
46
Истории успеха
http://matlab.ru/success-story
47
Использование модельно-ориентированного
проектирования для разработки родстера от Tesla
«В Tesla мы разработали Tesla Roadster 2008, первый в мире
стопроцентно электрический спортивный автомобиль, при
бюджете всего $145 миллионов. Поскольку наш бюджет
крошечный по сравнению с традиционными автомобильными
компаниями, мы были вынуждены оптимизировать инженерные
ресурсы и искать остроумные проектные решения.
Для достижения этих целей мы использовали инструменты
MathWorks для модельно-ориентированного проектирования
(МОП): мы моделировали транспортное средство в целом и
его главные подсистемы, запускали детальные симуляции,
анализировали работу и оценивали компромиссы в
проекте.»
Доктор Крис Гадда и доктор Эндрю
Симпсон, компания Tesla Motors
http://matlab.ru/success-story/tesla
48
Airbus разрабатывает систему управления подачей топлива для
A380 на основе модельно- ориентированного проектирования
Задача
 Разработать контроллер для системы подачи топлива Airbus A380
Решение
 Использовать MATLAB, Simulink и Stateflow для модельно-
ориентированного проектирования для создания модели и
симуляции управляющей логики, взаимодействия функциональных
спецификаций и ускорения разработки симуляторов
Результаты
 Сокращены месяцы разработки
 Полученные модели имеют многократное применение в процессе
всего проекта
 Дополнительно возникающие трудности отрабатываются без
увеличения штата сотрудников
http://matlab.ru/success-story/airbus-razrabatyvaet-sistemu-upravleniya-podachey-topliva-dlya-a380-na-osnove-modelno-orientirovannogo-proektirovaniya
«Модельно-ориентированное
проектирование дало нам расширенную
видимость в функциональной
разработке системы. Так же мы
закончили валидацию требований
быстрее, чем это было
возможно ранее, и смогли
промоделировать многочисленные
одновременные отказы деталей,
поэтому мы знаем, что может
случиться, и быть уверенным в том,
что управляющая логика
справится с этим». — КРИСТОФЕР
СЛЭК, Airbus
49
Alstom генерирует программный код для системы управления
преобразователем мощности с повышенными требованиями к
безопасности
Задача
Разработать и реализовать систему реального времени преобразователя
мощности, а также системы правления для трамваев, метро и железных дорог.
Решение
Использовать инструменты MathWorks для проектирования на основе концепции
модельно-ориентированного проектирования, моделирования и автоматической
генерации кода серийного производства для транспортных систем с
повышенными требованиями к безопасности.
Результаты
 Время разработки сокращено на 50 процентов
 Безошибочный, безопасный код был сгенерирован и сертифицирован
 Утвержден единый язык общения между группами разработчиков
«Мы использовали инструменты
MathWorks для разработки,
тестирования, изменения и
реализации системы управления
привода на постоянных магнитах в
течение одного года. Учитывая
имеющиеся ресурсы, это было бы
невозможно сделать в соответствии
с графиком без инструментов
MathWorks», - Хан Гирлигс, Alstom
http://matlab.ru/success-story/alstom-generiruet-programmnyj-kod-dlya-gotovogo-produkta-serijnogo-proizvodstva-sistem-upravleniya-preobrazovatelem-
moshhnosti-s-povyshennymi-trebovaniyami-k-bezopasnostid
50
Услуга: разработка пакета поддержки в Embedded Coder
 Интеграция с набором инструментов для
построения кода
 Независимое выполнение на целевой системе
(интеграция с планировщиком ОСРВ)
 Верификация и профилирование в режиме
Процессор-в-контуре (PIL)
 Генерация оптимизированного для целевой
системы кода
 Специализированные блоки Simulink
 Настройка параметров и отладка в режиме
External Mode
51
Центр инженерных технологий и моделирования Экспонента
 Вебинары, семинары, обучение, демонстрационные версии,
консалтинг, внедрение МОП :
www.MATLAB.ru
 E-mail: matlab@exponenta.ru
 Тел.: +7 (495) 009 65 85
 Дополнительная информация:
www.mathworks.com, www.exponenta.ru
www.youtube.com/user/MATLABinRussia

More Related Content

Similar to Автоматическая генерация C кода и тестирование на целевых вычислителях

Безопасность на максималках: как писать надёжный C/C++ код для встраиваемых с...
Безопасность на максималках: как писать надёжный C/C++ код для встраиваемых с...Безопасность на максималках: как писать надёжный C/C++ код для встраиваемых с...
Безопасность на максималках: как писать надёжный C/C++ код для встраиваемых с...
Andrey Karpov
 
технологическая презентация Gpu digital lab
технологическая презентация Gpu digital labтехнологическая презентация Gpu digital lab
технологическая презентация Gpu digital lab
oleg gubanov
 
Парсим и кодогенерируем для С++ с использованием clang
Парсим и кодогенерируем для С++ с использованием clangПарсим и кодогенерируем для С++ с использованием clang
Парсим и кодогенерируем для С++ с использованием clang
corehard_by
 
подготовленная презентация проекта Gpu digital lab от компании аксиома для ко...
подготовленная презентация проекта Gpu digital lab от компании аксиома для ко...подготовленная презентация проекта Gpu digital lab от компании аксиома для ко...
подготовленная презентация проекта Gpu digital lab от компании аксиома для ко...
oleg gubanov
 
Леонид Воронцов -- инженерия больших радиоэлектронных систем
Леонид Воронцов -- инженерия больших радиоэлектронных системЛеонид Воронцов -- инженерия больших радиоэлектронных систем
Леонид Воронцов -- инженерия больших радиоэлектронных систем
Anatoly Levenchuk
 
Formal Verification of a Linux Security Module
Formal Verification of a Linux Security ModuleFormal Verification of a Linux Security Module
Formal Verification of a Linux Security Module
Denis Efremov
 
Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»
Yandex
 
Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"
Yandex
 
Simintech универсальная среда моделирования (сокращенная)
Simintech   универсальная среда моделирования (сокращенная)Simintech   универсальная среда моделирования (сокращенная)
Simintech универсальная среда моделирования (сокращенная)
simintech
 
Тестирование осень 2013 лекция 3
Тестирование осень 2013 лекция 3Тестирование осень 2013 лекция 3
Тестирование осень 2013 лекция 3Technopark
 
Организация тестирования встроенных систем в компании «с нуля»
Организация тестирования встроенных систем в компании «с нуля»Организация тестирования встроенных систем в компании «с нуля»
Организация тестирования встроенных систем в компании «с нуля»
Vladimir Sklyar
 
TMPA-2013 Petrenko Pakulin: Technical Solutions and Non-Technical Challenges ...
TMPA-2013 Petrenko Pakulin: Technical Solutions and Non-Technical Challenges ...TMPA-2013 Petrenko Pakulin: Technical Solutions and Non-Technical Challenges ...
TMPA-2013 Petrenko Pakulin: Technical Solutions and Non-Technical Challenges ...Iosif Itkin
 
Нужно ли статическому анализу машинное обучение?
Нужно ли статическому анализу машинное обучение?Нужно ли статическому анализу машинное обучение?
Нужно ли статическому анализу машинное обучение?
Andrey Karpov
 
Андрей Кощеев - Мастерство управления качеством в полном цикле разработки
Андрей Кощеев - Мастерство управления качеством в полном цикле разработкиАндрей Кощеев - Мастерство управления качеством в полном цикле разработки
Андрей Кощеев - Мастерство управления качеством в полном цикле разработки
SQALab
 
QA Fest 2015. Владимир Скляр. Организация тестирования встроенных систем в ко...
QA Fest 2015. Владимир Скляр. Организация тестирования встроенных систем в ко...QA Fest 2015. Владимир Скляр. Организация тестирования встроенных систем в ко...
QA Fest 2015. Владимир Скляр. Организация тестирования встроенных систем в ко...
QAFest
 
Вячеслав Смирнов - Инструменты нагрузочного тестирования
Вячеслав Смирнов - Инструменты нагрузочного тестированияВячеслав Смирнов - Инструменты нагрузочного тестирования
Вячеслав Смирнов - Инструменты нагрузочного тестирования
Elias Fofanov
 
Реализация тестового фреймворка на основе OPEN-SOURCE инструментов
Реализация тестового фреймворка на основе OPEN-SOURCE инструментовРеализация тестового фреймворка на основе OPEN-SOURCE инструментов
Реализация тестового фреймворка на основе OPEN-SOURCE инструментов
SQALab
 
Open Source Testing Framework: real project example and best practices
Open Source Testing Framework: real project example and best practicesOpen Source Testing Framework: real project example and best practices
Open Source Testing Framework: real project example and best practices
Aliaksandr Ikhelis
 
вопросы к зачетупп
вопросы к зачетуппвопросы к зачетупп
вопросы к зачетуппAnastasia Snegina
 

Similar to Автоматическая генерация C кода и тестирование на целевых вычислителях (20)

Безопасность на максималках: как писать надёжный C/C++ код для встраиваемых с...
Безопасность на максималках: как писать надёжный C/C++ код для встраиваемых с...Безопасность на максималках: как писать надёжный C/C++ код для встраиваемых с...
Безопасность на максималках: как писать надёжный C/C++ код для встраиваемых с...
 
технологическая презентация Gpu digital lab
технологическая презентация Gpu digital labтехнологическая презентация Gpu digital lab
технологическая презентация Gpu digital lab
 
Парсим и кодогенерируем для С++ с использованием clang
Парсим и кодогенерируем для С++ с использованием clangПарсим и кодогенерируем для С++ с использованием clang
Парсим и кодогенерируем для С++ с использованием clang
 
подготовленная презентация проекта Gpu digital lab от компании аксиома для ко...
подготовленная презентация проекта Gpu digital lab от компании аксиома для ко...подготовленная презентация проекта Gpu digital lab от компании аксиома для ко...
подготовленная презентация проекта Gpu digital lab от компании аксиома для ко...
 
Леонид Воронцов -- инженерия больших радиоэлектронных систем
Леонид Воронцов -- инженерия больших радиоэлектронных системЛеонид Воронцов -- инженерия больших радиоэлектронных систем
Леонид Воронцов -- инженерия больших радиоэлектронных систем
 
Formal Verification of a Linux Security Module
Formal Verification of a Linux Security ModuleFormal Verification of a Linux Security Module
Formal Verification of a Linux Security Module
 
Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»
 
Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"
 
Simintech универсальная среда моделирования (сокращенная)
Simintech   универсальная среда моделирования (сокращенная)Simintech   универсальная среда моделирования (сокращенная)
Simintech универсальная среда моделирования (сокращенная)
 
Тестирование осень 2013 лекция 3
Тестирование осень 2013 лекция 3Тестирование осень 2013 лекция 3
Тестирование осень 2013 лекция 3
 
Организация тестирования встроенных систем в компании «с нуля»
Организация тестирования встроенных систем в компании «с нуля»Организация тестирования встроенных систем в компании «с нуля»
Организация тестирования встроенных систем в компании «с нуля»
 
TMPA-2013 Petrenko Pakulin: Technical Solutions and Non-Technical Challenges ...
TMPA-2013 Petrenko Pakulin: Technical Solutions and Non-Technical Challenges ...TMPA-2013 Petrenko Pakulin: Technical Solutions and Non-Technical Challenges ...
TMPA-2013 Petrenko Pakulin: Technical Solutions and Non-Technical Challenges ...
 
Нужно ли статическому анализу машинное обучение?
Нужно ли статическому анализу машинное обучение?Нужно ли статическому анализу машинное обучение?
Нужно ли статическому анализу машинное обучение?
 
Андрей Кощеев - Мастерство управления качеством в полном цикле разработки
Андрей Кощеев - Мастерство управления качеством в полном цикле разработкиАндрей Кощеев - Мастерство управления качеством в полном цикле разработки
Андрей Кощеев - Мастерство управления качеством в полном цикле разработки
 
QA Fest 2015. Владимир Скляр. Организация тестирования встроенных систем в ко...
QA Fest 2015. Владимир Скляр. Организация тестирования встроенных систем в ко...QA Fest 2015. Владимир Скляр. Организация тестирования встроенных систем в ко...
QA Fest 2015. Владимир Скляр. Организация тестирования встроенных систем в ко...
 
Вячеслав Смирнов - Инструменты нагрузочного тестирования
Вячеслав Смирнов - Инструменты нагрузочного тестированияВячеслав Смирнов - Инструменты нагрузочного тестирования
Вячеслав Смирнов - Инструменты нагрузочного тестирования
 
Реализация тестового фреймворка на основе OPEN-SOURCE инструментов
Реализация тестового фреймворка на основе OPEN-SOURCE инструментовРеализация тестового фреймворка на основе OPEN-SOURCE инструментов
Реализация тестового фреймворка на основе OPEN-SOURCE инструментов
 
Open Source Testing Framework: real project example and best practices
Open Source Testing Framework: real project example and best practicesOpen Source Testing Framework: real project example and best practices
Open Source Testing Framework: real project example and best practices
 
голубушин
голубушинголубушин
голубушин
 
вопросы к зачетупп
вопросы к зачетуппвопросы к зачетупп
вопросы к зачетупп
 

More from MATLAB

Параллельные и распределенные вычисления
Параллельные и распределенные вычисленияПараллельные и распределенные вычисления
Параллельные и распределенные вычисления
MATLAB
 
Анализ данных и машинное обучение
Анализ данных и машинное обучениеАнализ данных и машинное обучение
Анализ данных и машинное обучение
MATLAB
 
Экспорт алгоритмов и создание независимых приложений
Экспорт алгоритмов и создание независимых приложенийЭкспорт алгоритмов и создание независимых приложений
Экспорт алгоритмов и создание независимых приложений
MATLAB
 
Физическое моделирование объекта управления
Физическое моделирование объекта управленияФизическое моделирование объекта управления
Физическое моделирование объекта управления
MATLAB
 
Работа с платами ИНСИС из MATLAB
Работа с платами ИНСИС из MATLABРабота с платами ИНСИС из MATLAB
Работа с платами ИНСИС из MATLAB
MATLAB
 
Использование MATLAB совместно с приборами Keysight Technologies
Использование MATLAB совместно с приборами Keysight TechnologiesИспользование MATLAB совместно с приборами Keysight Technologies
Использование MATLAB совместно с приборами Keysight Technologies
MATLAB
 
Проектирование радиолокационных систем
Проектирование радиолокационных систем Проектирование радиолокационных систем
Проектирование радиолокационных систем
MATLAB
 
Проектирование систем связи
Проектирование систем связиПроектирование систем связи
Проектирование систем связи
MATLAB
 
Цифровая обработка сигналов
Цифровая обработка сигналовЦифровая обработка сигналов
Цифровая обработка сигналов
MATLAB
 
Полунатурная модель управляемой ракеты с пассивной ГСН
Полунатурная модель управляемой ракеты с пассивной ГСНПолунатурная модель управляемой ракеты с пассивной ГСН
Полунатурная модель управляемой ракеты с пассивной ГСН
MATLAB
 
Использование нейросетей для моделирования процесса гидроочистки бензина
Использование нейросетей для моделирования процесса гидроочистки бензина Использование нейросетей для моделирования процесса гидроочистки бензина
Использование нейросетей для моделирования процесса гидроочистки бензина
MATLAB
 
Анализ данных в MATLAB 
Анализ данных в MATLAB Анализ данных в MATLAB 
Анализ данных в MATLAB 
MATLAB
 
Машинное обучение с MATLAB
Машинное обучение с MATLABМашинное обучение с MATLAB
Машинное обучение с MATLAB
MATLAB
 
Машинное и глубокое обучение
Машинное и глубокое обучение Машинное и глубокое обучение
Машинное и глубокое обучение
MATLAB
 
Работа с Big Data
Работа с Big Data Работа с Big Data
Работа с Big Data
MATLAB
 
Разработка систем управления
Разработка систем управленияРазработка систем управления
Разработка систем управления
MATLAB
 
Разработка систем управления для отечественных АКПП
Разработка систем управления для отечественных АКППРазработка систем управления для отечественных АКПП
Разработка систем управления для отечественных АКПП
MATLAB
 
Практическая верификация и командная работа
Практическая верификация и командная работаПрактическая верификация и командная работа
Практическая верификация и командная работа
MATLAB
 
МОП для моно-колеса
МОП для моно-колесаМОП для моно-колеса
МОП для моно-колеса
MATLAB
 
Быстрое прототипирование алгоритмов управления
Быстрое прототипирование алгоритмов управленияБыстрое прототипирование алгоритмов управления
Быстрое прототипирование алгоритмов управления
MATLAB
 

More from MATLAB (20)

Параллельные и распределенные вычисления
Параллельные и распределенные вычисленияПараллельные и распределенные вычисления
Параллельные и распределенные вычисления
 
Анализ данных и машинное обучение
Анализ данных и машинное обучениеАнализ данных и машинное обучение
Анализ данных и машинное обучение
 
Экспорт алгоритмов и создание независимых приложений
Экспорт алгоритмов и создание независимых приложенийЭкспорт алгоритмов и создание независимых приложений
Экспорт алгоритмов и создание независимых приложений
 
Физическое моделирование объекта управления
Физическое моделирование объекта управленияФизическое моделирование объекта управления
Физическое моделирование объекта управления
 
Работа с платами ИНСИС из MATLAB
Работа с платами ИНСИС из MATLABРабота с платами ИНСИС из MATLAB
Работа с платами ИНСИС из MATLAB
 
Использование MATLAB совместно с приборами Keysight Technologies
Использование MATLAB совместно с приборами Keysight TechnologiesИспользование MATLAB совместно с приборами Keysight Technologies
Использование MATLAB совместно с приборами Keysight Technologies
 
Проектирование радиолокационных систем
Проектирование радиолокационных систем Проектирование радиолокационных систем
Проектирование радиолокационных систем
 
Проектирование систем связи
Проектирование систем связиПроектирование систем связи
Проектирование систем связи
 
Цифровая обработка сигналов
Цифровая обработка сигналовЦифровая обработка сигналов
Цифровая обработка сигналов
 
Полунатурная модель управляемой ракеты с пассивной ГСН
Полунатурная модель управляемой ракеты с пассивной ГСНПолунатурная модель управляемой ракеты с пассивной ГСН
Полунатурная модель управляемой ракеты с пассивной ГСН
 
Использование нейросетей для моделирования процесса гидроочистки бензина
Использование нейросетей для моделирования процесса гидроочистки бензина Использование нейросетей для моделирования процесса гидроочистки бензина
Использование нейросетей для моделирования процесса гидроочистки бензина
 
Анализ данных в MATLAB 
Анализ данных в MATLAB Анализ данных в MATLAB 
Анализ данных в MATLAB 
 
Машинное обучение с MATLAB
Машинное обучение с MATLABМашинное обучение с MATLAB
Машинное обучение с MATLAB
 
Машинное и глубокое обучение
Машинное и глубокое обучение Машинное и глубокое обучение
Машинное и глубокое обучение
 
Работа с Big Data
Работа с Big Data Работа с Big Data
Работа с Big Data
 
Разработка систем управления
Разработка систем управленияРазработка систем управления
Разработка систем управления
 
Разработка систем управления для отечественных АКПП
Разработка систем управления для отечественных АКППРазработка систем управления для отечественных АКПП
Разработка систем управления для отечественных АКПП
 
Практическая верификация и командная работа
Практическая верификация и командная работаПрактическая верификация и командная работа
Практическая верификация и командная работа
 
МОП для моно-колеса
МОП для моно-колесаМОП для моно-колеса
МОП для моно-колеса
 
Быстрое прототипирование алгоритмов управления
Быстрое прототипирование алгоритмов управленияБыстрое прототипирование алгоритмов управления
Быстрое прототипирование алгоритмов управления
 

Автоматическая генерация C кода и тестирование на целевых вычислителях

  • 1. 1© 2016 The MathWorks, Inc. Автоматическая генерация С кода и тестирование на целевых вычислителях Михаил Песельник Экспонента
  • 3. 3 Темы секции  Автоматическая генерация кода  Оптимизация кода  Разработка пакетов поддержки для целевых вычислителей  Применения технологии генерации кода
  • 5. 5 Пользовательские истории Dongfeng Battery Management System GM Hybrid Powertrain manroland Printing Press Controller Honeywell Aerospace Flight Control Systems OHB Corp Satellite GNC Systems TU München Flight Simulator
  • 6. 6 SAE Technical Paper 2004-01-0269, March 2004 http://www.mathworks.com/tagteam/20307_91197v00_Multi-Target_Modeling_2004-01-0269.pdf Размер кода Сгенерированный код меньше, чем ручной
  • 7. 7 MADC :Thales Dual Core Code Generation, March 2008 http://www.mathworks.com/tagteam/48884_Thales_DualCore.pdf Скорость кода Сгенерированный код быстрее, чем ручной
  • 8. 8 C/C++ Coders MATLAB Coder – код из MATLAB – Портируемый код для численных алгоритмов – Десктопные приложения (и библиотеки) Simulink Coder – код из Simulink – Быстрое прототипирование и HIL – Машины реального времени (Simulink Real-Time) Embedded Coder – генерация производственного кода – Встраиваемые приложения – MCU и DSP (с фикс. или плав. точкой) – Верификация кода (-в-контуре) – Оптимизация под конкретный процессор Все кодеры генерируют портируемый (ANSI/ISO C) код по умолчанию. C/C++ Generate MATLAB and Simulink Algorithm and System Design Verify
  • 9. 9 HDL Coder HDL Coder  VHDL и Verilog  ASIC и FPGA  Платформонезависимый – По умолчанию  Платформозависимый – Xilinx FPGA – Altera FPGA HDL Verifier  HDL co-simulation – ModelSim, Incisive  FPGA in-the-loop (FIL) – Xilinx, Altera MCU DSP FPGA ASIC C/C++ VHDL/Verilog Generate MATLAB and Simulink Algorithm and System Design Verify Generate Verify
  • 10. 10 PLC Coder Simulink PLC Coder  Structured text  PLC и PAC  Платформонезависимый – По умолчанию (IEC 61131)  Платформозависимый – Rockwell – Siemens – B&R – Другие MCU DSP FPGA ASIC C/C++ VHDL / Verilog Generate Simulink and Stateflow Algorithm and System Design Verify Generate Verify PLC PAC Structured Text Generate Verify
  • 11. 11 Демо – генерация кода >> rtwdemo_fixpt1
  • 12. 12 Процесс разработки встраиваемой системы с использованием МОП Системные требования Проектирование системы Проектирование ПО Кодирование Интеграция ПО Программно- аппаратная интеграция Системная интеграция и калибровка Sim RP OTRP SIL PIL HIL Sim: Симуляция RP: Быстрое прототипирование OTRP: БП на целевой платформе PCG: Генерация производственного кода SIL: Программа-в-контуре PIL: Процессор-в-контуре HIL: Железо-в-контуре PCG Моделирование и симуляция Исполняемые спецификации Непрерывное тестирование и верификация Автоматическая генерация кода Модели
  • 15. 15 Быстрое прототипирование ОбвязкаReal-Time or Embedded Simulink Real-Time Являются ли алгоритмы реализуемыми? Генерация кода
  • 16. 16 ОбвязкаReal-Time or Embedded Быстрое прототипирование на целевой платформе Встраиваемый процессор или ЭБУ Являются ли алгоритмы практичными? Генерация кода
  • 18. 21 Конвертация из плавающей в фиксированную точку  Переполнение/ исчезновение порядка  Оптимизации кода  Диапазоны симуляции  Расчет диапазонов >> fxpdemo_fpa
  • 19. 22 Описание данных  Имя  Класс памяти (показано)  Алиас (имя в коде)  Комментарии  Тип данных
  • 20. 23 Описание интерфейсов функций  Имя функции  Имена аргументов  Передача по значению  Передача по указателю  Квалификатор
  • 22. 25 Экспорт алгоритма (код ANSI/ISO) A B C M  I NPUT BLUE G REEN RED PO W ER RGBSplit-4BLACK BOX   V RCS Драйверы входов Драйверы выходов Драйверы спец. устройств Драйверы интерф. ОС, Планировщик Интерфейсы Датчики Исполнительные механизмы Специальные интерфейсы Калибровка Алгоритм Модель регулятора
  • 23. 26 Поддерживает ли Embedded Coder мой процессор/мою плату?  Автоматическая связь со средой разработки для процессора  Оптимизация под конкретный процессор  Специфические драйвера/блоки Simulink  Интеграция с RTOS/планировщиком/ISR  Processor-in-the-Loop симуляция  External Mode Документированные API для реализации своего пакета поддержки
  • 24. 27 A B C M  I NPUT BLUE G REEN RED PO W ER RGBSplit-4BLACK BOX   V RCS Сгенериро- ванный код Драйверы входов Драйверы выходов Драйверы спец. устройств Драйверы интерф. ОС и планировщик Интерфейсы Датчики Исполнительные механизмы Специальные интерфейсы Калибровка Ручной код Модель контроллера с драйверами Полный проект (Target Support) Оптим. код
  • 25. 28 Подходы к интеграции кода Экспорт алгоритма Полный проект Цель Серийное производство БП на целевой платформе Мелкосерийное производство Использование Системные инженеры и программисты Системные инженеры Оборудование Любой процессор Определенные отладочные платы и киты Гибкость Выше Ниже Простота использования («под ключ») Работает после однократной настройки Работает «из коробки»
  • 26. 29 Поддержка целевого оборудования Примеры и API Embedded Coder Ключевые API  Управление прототипом функции  Настраиваемые классы памяти  Pack-and-go  Code replacement tool  Legacy code tool  PIL и External Mode  S-Functions Примеры (для TI C2000)  Экспорт алгоритма >> rtwdemo_pmsmfoc_system  Полный проект >> c2000_motor_algo Дополнительные примеры и демо ЦИТМ Экспонента предлагает сервис по разработке поддержки оборудования
  • 27. 30 Подстановка кода  Поддержка базовых операторов и функций – Add, Subtract, Multiply, Divide, ... – Abs, Cos, Memset, Sqrt, …  Поддержка фикс. точки  Поддержка выравнивания данных – Для SIMD, Intel IPP и т.п.  Поддержка MATLAB, Simulink, and Stateflow Замена операторов и функций в модели на процессоро- оптимизированные void mDA_step(void) { matrix_add_4x4s_w_da(mDA_U.In1, mDA_U.In2, &mDA_B.Add[0]); …… matrix_mul_4x4s_w_da(mDA_U.In1, mDA_U.In2, *(real32_T (*)[16])&mDA_Y.Out2[0]); } typedef struct { __declspec(align(16)) real32_T Add[16]; } BlockIO_mDA; typedef struct { __declspec(align(16)) real32_T In1[16]; __declspec(align(16)) real32_T In2[16]; } ExternalInputs_mDA; typedef struct { real32_T Out1[16]; __declspec(align(16)) real32_T Out2[16]; } ExternalOutputs_mDA; 2 Out2 1 Out1 Matrix Multiply Mul Add 2 In2 1 In1 single [4x4] single [4x4][4x4] [4x4] single [4x4] [4x4] [4x4] single [4x4] model.c model.h >> echodemo rtwdemo_tfl_script
  • 29. 32 Программа-в-контуре (Software-in-the-Loop, SIL) и Процессор-в-контуре (Processor-in-the-Loop, PIL) С точки зрения разработки ПО повышенной надежности PIL SIL
  • 30. 33 Генерация кода Объектный код тестируемого алгоритма Тестовая обвязка SIL/PIL Хост компьютер (SIL) Целевой процессор (PIL) Model Block SIL/PIL (Замкнутый контур) Top Model SIL/PIL (Разомкнутый контур) Как работают SIL и PIL Режимы симуляции и тестовая обвязка
  • 31. 34 Синхронизация с хостом на каждом шаге (не реальное время) История выполнения • Сравнение эквивалентности • Покрытие кода • Профилирование выполнения Communication Gateway Как работают SIL и PIL Симуляция на целевой платформе
  • 33. 38 Измерение времени выполнения Поддерживает:  SIL и PIL  Задачи и функции  HTML отчеты Идентификация проблемных мест
  • 36. 42 C  *.dlm Двигатель и силовая часть Быстрое прототипирование алгоритмов управления ШИМ, цифровые выходы Квадратурный сигнал Машина реального времени
  • 37. 43 C/C++  *.hex ШИМ, цифровые выходы C  *.dlm Полунатурное моделирование (HIL) Машина реального времени Квадратурный сигнал
  • 38. 44 C/C++  *.hex ШИМ, цифровые выходы Независимое выполнение Квадратурный сигнал Двигатель и силовая часть
  • 39. 45 Тренинги Курс «Генерация кода для встраиваемых систем с использованием Embedded Coder» (3 дня)  Структура сгенерированного кода и его выполнение  Настройки генератора кода и параметры оптимизации  Интеграция сгенерированного кода с внешним кодом  Генерация кода для многочастотных систем  Настройка сгенерированного кода  Настройка данных сгенерированного кода  Развертывание кода http://matlab.ru/training/SLEC
  • 41. 47 Использование модельно-ориентированного проектирования для разработки родстера от Tesla «В Tesla мы разработали Tesla Roadster 2008, первый в мире стопроцентно электрический спортивный автомобиль, при бюджете всего $145 миллионов. Поскольку наш бюджет крошечный по сравнению с традиционными автомобильными компаниями, мы были вынуждены оптимизировать инженерные ресурсы и искать остроумные проектные решения. Для достижения этих целей мы использовали инструменты MathWorks для модельно-ориентированного проектирования (МОП): мы моделировали транспортное средство в целом и его главные подсистемы, запускали детальные симуляции, анализировали работу и оценивали компромиссы в проекте.» Доктор Крис Гадда и доктор Эндрю Симпсон, компания Tesla Motors http://matlab.ru/success-story/tesla
  • 42. 48 Airbus разрабатывает систему управления подачей топлива для A380 на основе модельно- ориентированного проектирования Задача  Разработать контроллер для системы подачи топлива Airbus A380 Решение  Использовать MATLAB, Simulink и Stateflow для модельно- ориентированного проектирования для создания модели и симуляции управляющей логики, взаимодействия функциональных спецификаций и ускорения разработки симуляторов Результаты  Сокращены месяцы разработки  Полученные модели имеют многократное применение в процессе всего проекта  Дополнительно возникающие трудности отрабатываются без увеличения штата сотрудников http://matlab.ru/success-story/airbus-razrabatyvaet-sistemu-upravleniya-podachey-topliva-dlya-a380-na-osnove-modelno-orientirovannogo-proektirovaniya «Модельно-ориентированное проектирование дало нам расширенную видимость в функциональной разработке системы. Так же мы закончили валидацию требований быстрее, чем это было возможно ранее, и смогли промоделировать многочисленные одновременные отказы деталей, поэтому мы знаем, что может случиться, и быть уверенным в том, что управляющая логика справится с этим». — КРИСТОФЕР СЛЭК, Airbus
  • 43. 49 Alstom генерирует программный код для системы управления преобразователем мощности с повышенными требованиями к безопасности Задача Разработать и реализовать систему реального времени преобразователя мощности, а также системы правления для трамваев, метро и железных дорог. Решение Использовать инструменты MathWorks для проектирования на основе концепции модельно-ориентированного проектирования, моделирования и автоматической генерации кода серийного производства для транспортных систем с повышенными требованиями к безопасности. Результаты  Время разработки сокращено на 50 процентов  Безошибочный, безопасный код был сгенерирован и сертифицирован  Утвержден единый язык общения между группами разработчиков «Мы использовали инструменты MathWorks для разработки, тестирования, изменения и реализации системы управления привода на постоянных магнитах в течение одного года. Учитывая имеющиеся ресурсы, это было бы невозможно сделать в соответствии с графиком без инструментов MathWorks», - Хан Гирлигс, Alstom http://matlab.ru/success-story/alstom-generiruet-programmnyj-kod-dlya-gotovogo-produkta-serijnogo-proizvodstva-sistem-upravleniya-preobrazovatelem- moshhnosti-s-povyshennymi-trebovaniyami-k-bezopasnostid
  • 44. 50 Услуга: разработка пакета поддержки в Embedded Coder  Интеграция с набором инструментов для построения кода  Независимое выполнение на целевой системе (интеграция с планировщиком ОСРВ)  Верификация и профилирование в режиме Процессор-в-контуре (PIL)  Генерация оптимизированного для целевой системы кода  Специализированные блоки Simulink  Настройка параметров и отладка в режиме External Mode
  • 45. 51 Центр инженерных технологий и моделирования Экспонента  Вебинары, семинары, обучение, демонстрационные версии, консалтинг, внедрение МОП : www.MATLAB.ru  E-mail: matlab@exponenta.ru  Тел.: +7 (495) 009 65 85  Дополнительная информация: www.mathworks.com, www.exponenta.ru www.youtube.com/user/MATLABinRussia