MATLAB/Simulink/Stateflow

    • Михаил
      19.08.2013
      11:34
      В предыдущих записях в блоге я рассказывал о некоторых целевых платформах и средах разработки, поддерживаемых Embedded Coder:
      Запуск моделей Simulink на Arduino
      Поддержка TI MSP430 LaunchPad в Embedded Coder
      Embedded Coder встречает Green Hills Software MULTI

      В документации к Embedded Coder можно увидеть полный список поддерживаемого оборудования, сред разработки и операционных систем.

      В этом посте я расскажу о поддержке (Target Support Package) ОС реального времени QNX в Embedder Coder. Embedded Coder является расширяемой и настраиваемой системой, и, хотя QNX не обозначена в списке выше, поддержка этой RTOS была разрабатана инженерами MathWorks и предоставлена для общего использования. Это позволит всем инженерам, работающим в Simulink и разворачивающим свои системы на QNX, существенно упростить процесс разработки и тестирования, а также адаптировать эту поддержку для своих конкретных нужд.

      QNX - это Unix-подобная операционная система реального времени, в первую очередь предназначенная для встраиваемых систем.
      Simulink - это лидирующее окружение для симуляции мультидисциплинарных систем и модельно-ориентированного проектирования.
      Embedded Coder позволяет вам генерировать С код и разворачивать ваши алгоритмы на целевом аппаратном обеспечении.

      Вы можете скачать поддержку с ресурса пользователей File Exchange: http://www.mathworks.com/matlabcentral/fileexchange/42290-qnx-target-support-package-for-embedded-coder.
      Либо можете использовать последнюю версию из этого репозитория Github.

      Этот Target Support Package был протестирован на платформе Beagleboard xM, работающей под управлением QNX 6.5.1. В принципе, он также должен работать на других целевых платформах QNX, для которых есть BSP. Для этого потребуется внести минимальные изменения в Template Makefile, чтобы использовать другие флаги компилятора.

      Как я уже раньше писал, поддержка может заключаться в нескольких аспектах. В данном случае доступна автоматическая связь со средой разработки посредством Makefile (что подразумевает автоматическую компиляцию и линковку после генерации С кода), интеграция с QNX посредством POSIX таймеров (что позволяет запускать ваши многочастотные/многозадачные модели в реальном времени), а также поддержка симуляции в режиме External Mode. Такой режим симуляции позволяет осуществлять калибровку параметров, мониторинг и трассировку сигналов непосредственно из модели Simulink при работе вашего кода на встраиваемом процессоре в реальном времени.

      В небольшом видео вы можете увидеть эту поддержку в действии.

      Кстати, в Simulink также доступна встроенная поддержка BeagleBoard. Однако, это совсем другая возможность, не имеющая отношения к QNX и Embedded Coder. Больше информации об этом вы можете почерпнуть в предыдущем посте.
    • Михаил
      29.01.2013
      13:43

      Запуск моделей Simulink на Arduino

      В этом небольшом посте я бы хотел рассказать о возможностях по работе с платформой Arduino из Simulink.

      Содержание

      Использование Simulink Run on Target Hardware

      В одном из предыдущих постов я рассказывал, что такое Simulink Run on Target Hardware и как этот функционал позволяет работать с бюджетными аппаратными платформами.

      Для того, чтобы начать использовать этот функционал, достаточно выполнить команду

      targetinstaller
      

      Запустится установщик, который позволит вам выбрать целевую платформу, которую вы хотите использовать и автоматически загрузит и установит все необходимые файлы.

      В результате, вы получите следующее:

      • Библиотеку блоков Simulink для работы с периферией Arduino:
      - Digital Input/Output
      - Analog Input
      - Servo Read/Write (Continous)
      - Serial Transmit/Receive
      - PWM
      • Примеры и документацию для работы с Arduino

      Заметьте, что для того, чтобы начать использовать этот функционал, вам нужен только Simulink. Вы можете начать с базовых примеров и расширять их своими алгоритмами и функционалом. Чтобы запустить модель Simulink на Arduino, достаточно выбрать Run on Target Hardware > Prepare to Run (или Run) из меню Tools . Дополнительная информация содержится в документации.

      Функционал Simulink Run on Target Hardware доступен любому пользователю Simulink, но эта доступность и простота использования несут определенные ограничения. Например, Simulink Run on Target Hardware поддерживает только Arduino Uno и Arduino Mega 2560. Кроме того, процесс запуска модели на целевой платформе прозрачен для пользователя - т.е. вы не получаете доступа к исходному коду, который генерируется и не имеете возможности тонкого управления различными аспектами генерации кода.

      В случае, если вы хотите работать с любым клоном Arduino или вам важно управлять процессом генерации кода и его сборкой, то вам требуется Embedded Coder.

      Использование Embedded Coder

      Embedded Coder® генерирует удобочитаемый, компактный и быстрый C и C++ код для использования во встраиваемых процессорах, отладочных платах и микропроцессорах, используемых для серийного производства. Embedded Coder активирует дополнительные настройки конфигурации для MATLAB Coder™ и Simulink Coder™, а также включает продвинутые оптимизации для тончайшей настройки функций, файлов и данных в сгенерированном коде. Эти оптимизации улучшают эффективность кода и облегчают интеграцию с существующим кодом, типами данных и калибровочными параметрами, используемыми в производстве. Вы можете подключить стороннюю среду разработки к процессу сборки, чтобы получить исполняемый файл "под ключ" для развертывания на вашей встраиваемой системе.

      Поддержка Arduino в Embedded Coder реализована при помощи Target Support Package, который вы можете скачать с File Exchange: Embedded Coder Support Package for Arduino.

      В дополнение к упомянутым настройкам, и возможностью работать с любым Arduino, вы также получаете возможность верифицировать ваши алгоритмы в режиме Processor-in-the-Loop (больше информации о PIL тестировании в этом посте).

      Я записал небольшое видео , где вы можете увидеть некоторые возможности, упомянутые в этом посте.

      Если у вас есть вопросы, задавайте их нам, мы попробуем помочь.

    • Михаил
      06.11.2012
      09:34
      Часто нам задают вопрос - поддерживает ли Embedded Coder определенный процессор или отладочную плату? Быстрый ответ на этот вопрос - ДА, поддерживает. Ведь Embedded Coder по умолчанию генерирует ANSI C код, который мы можем получить из модели Simulink и вручную (или полуавтоматически) интегрировать в наш проект.  Мы называем это "Экспорт алгоритма":



      Например, в случае Texas Instruments MSP430 LaunchPad, мы можем при помощи Embedded Coder сгенерировать Си-функцию (или несколько функций) из нашего алгоритма (настроив прототип функции, т.е. интерфейсы) и интегрировать её в существующий проект Code Composer Studio - среды разработки для процессоров Texas Instruments. Во многих случаях этого вполне достаточно, но зачастую хочется большей "поддержки". Но, отвечая на самый первый вопрос, давайте сначала разберемся, что означает "поддерживать".

      Поддержка можем состоять из нескольких аспектов:
      1. Автоматическая связь со средой разработки для процессора . Компания MathWorks не разрабатывает компиляторы и среды разработки для встраиваемых процессоров.  При помощи Embedded Coder мы можем автоматизировать создание makefile или целиком проектов для автоматической компиляции кода, линковки и загрузки в процессор. Все это – с использованием среды разработки, которая предоставляется производителем процессора.
      2. Оптимизация кода под конкретный процессор. Code replacement – это часть технологии Embedded Coder, которая позволяет генерировать код, оптимизированный под конкретный процессор. Осуществляется это при помощи специальных таблиц подстановок. Предоставлением оптимизированных под конкретный процессор функций (библиотек) часто занимается фирма-производитель процессора. Например, у Texas Instruments есть оптимизированные библиотеки для тригонометрических функций и т.п. Конечно, можно и свои собственные функции таким образом подставлять.
      3. Специфические интерфейсные драйвера в виде блоков Simulink. Например, для определенных процессоров есть блоки Simulink для ШИМ, ЦАП, АЦП и т.п. При генерации кода из этих блоков генерируется специфичный для интерфейсов этих процессоров код. К этим блокам также относятся низкоуровневые операции с памятью, которые также могут быть реализованы в виде блоков Simulink.
      4. Интеграция с ОС реального времени, планировщиком, прерываниями  обеспечивается также при помощи специальных блоков Simulink и настроек в модели.
      5. Поддержка PIL симуляции. Подробнее об этом режиме симуляции вы можете почитать в моей предыдущей записи здесь.
      6. External Mode. Такой режим симуляции позволяет осуществлять калибровку параметров, мониторинг и трассировку сигналов непосредственно из модели Simulink при работе нашего кода на встраиваемом процессоре.
      Разные процессоры и разные среды разработки могут поддерживаться Embedded Coder в разной степени. С каждым релизом добавляется поддержка новых платформ, при этом устаревшие платформы отпадают. С актуальным списком поддерживаемого оборудования и сред разработки вы можете ознакомиться на странице Embedded Coder на сайте MathWorks. Конечно, невозможно организовать поддержку из коробки для всех возможных процессоров и отладок, поскольку многие инженеры используют собственные отладки, а количество различных микропроцессоров и DSP на рынке зашкаливает. Именно поэтому для каждого из перечисленных пунктов Embedded Coder предоставляет API, который позволяет реализовать поддержку своего железа.

      При реализации своего Target Support мы имеем возможность создавать полный проект «под ключ» из модели Simulink – вместе с драйверами устройств, планировщиком и т.п. Мы называем это "Target Support":




      Конечно, не обязательно реализовывать поддержку всех пунктов, упомянутых выше. Во многих случаях достаточно автоматизировать создание makefile для автоматической компиляции, линковки и заливки прошивки на плату. А также реализовать режим PIL для выполнения верификации скомпилированного кода относительно симуляции модели.

      В Центре компетенций MathWorks в России есть практика проведения небольших пилотных проектов вместе с клиентами, которые интересуются автоматической генерацией кода. Такой пилотный проект позволяет им оценить возможности Embedded Coder и понять необходимость использования автоматической генерации кода в их компании. В списке поддерживаемого оборудования Embedded Coder содержится большое количество актуальных процессоров и отладочных плат.
      Мы решили создать собственный Target Support для TI MSP430 LaunchPad, поскольку для этой платформы существует только возможность "экспорта алгоритмов" (см. выше). Мы рассматриваем эту отладку как доступную платформу для оценки автоматической генерации кода и верификации.

      Алгоритмы, которые мы можем реализовать на MSP430 – достаточно простые, но это только к лучшему. Это позволяет нам больше сконцентрироваться на возможностях по генерации кода, нежели чем на создании алгоритма как такового. Кроме того, наши клиенты могут использовать этот Target Support как базу для создания реализации для своего процессора или отладочной платы. Если вас интересует такая возможность, вы можете получить отладочный комплект (включающий железо и софт) на этой странице.

      Texas Instruments MSP430 LaunchPad это простое в использовании, недорогое, и масштабируемое введение в мир микроконтроллеров и семейства MSP430. Эта отладочная плата включает: два светодиода, две кнопки, одна из которых является пользовательской, внутрисхемный JTAG, DIP разъем для MSP430 (что позволяет устанавливать на плату другой процессор семейства MSP430), пины ввода-вывода и встроенный датчик температуры (в процессоре g2553).

      Типичные применения MSP430 – это бюджетные системы с ультранизким потреблением энергии. Также системы захвата аналоговых сигналов и датчиков, обработка данных для передачи на хост или отображения на LCD. Есть много интересных пользовательских проектов – например, связанных с робототехникой (шагающий паук, рука робота), цветной LCD, Bluetooth, велосипедный компьютер, и даже реализация FAT16. Многим членам сообщества не откажешь в чувстве юмора – если вы не слышали, как LaunchPad и пьезо-спикер играют Имперский Марш – вам это надо послушать!

      Итак, что включает в себя Target Support для MSP430 LaunchPad?
      • Поддерживаемые среды разработки – это Code Composer Studio 5 на Windows и Linux. Кроме того, на Linux поддерживаются mspgcc и mspdebug, которые являются открытыми аналогами Code Composer Studio для MSP430.
      • Библиотека блоков Simulink для периферийных устройств MSP430 LaunchPad поддерживает светодиоды, датчик температуры, пользовательскую кнопку и блоки для передачи/приема данных по последовательному интерфейсу.
      • Поддерживается симуляция в режиме PIL, а также профилирование времени выполнения в режиме PIL.

      Разработка происходит на Github, а релизы можно скачать с File Exchange – официального ресурса MathWorks для обмена пользовательским контентом.

      В этом видео вы можете посмотреть, как осуществляется совместная работа Embedded Coder и TI MSP430 LaunchPad.
    • Михаил
      24.10.2012
      11:03
      Мы часто демонстрируем нашим пользователям возможности автоматической генерации кода из MATLAB/Simulink и исполнение этого кода на целевых процессорах. Но иногда, под рукой просто нет необходимого процессора. На помощь приходит симулятор встраиваемого процессора. Сегодня я бы хотел вам рассказать о совместной работе Embedded Coder и среды разработки Green Hills Sotfware MULTI для верификации автоматически сгенерированного кода из моделей MATLAB/Simulink/Stateflow в режиме Процессор-в-Контуре (по-английски это называется Processor-in-the-Loop или PIL).

      Прежде, чем мы начнем, давайте введем основные определения.
      Embedded Coder – это продукт компании MathWorks, разработчика MATLAB/Simulink. Embedded Coder предназначен для автоматической генерации С/С++ кода производственного качества. Два базовых продукта для генерации кода из функций MATLAB и из моделей Simulink/Stateflow, называются MATLAB Coder и Simulink Coder. Embedded Coder расширяет возможности этих продуктов, добавляя опции по конфигурации и оптимизации кода. Сгенерированный код является портируемым, читаемым и компактным и подходит для использования во встраиваемых системах. Embedded Coder позволяет нам проводить верификацию скомпилированного кода в режимах SIL и PIL, поддерживая интеграцию с распространенными средами разработки и оптимизацию кода под конкретный процессор.

      MULTI – это среда разработки от компании Green Hills Software. MULTI предназначена для инженеров-разработчиков встраиваемых систем. Среда интегрирована с компиляторами Green Hills Software и аппаратными модулями отладки для различных процессоров. MULTI поддерживает набор операционных систем реального времени, а также интерактивный отладчик и профилировщик. Green Hills Software MULTI также предоставляет симулятор процессора PowerPC, на котором мы будем проверять наш автоматически сгенерированный код.

      Что такое PIL тестирование, которое я уже упоминал?
      На уровне модели Simulink мы работаем с нашей системой, моделируя алгоритмы (например, это могут быть алгоритмы управления с обратной связью, обработки сигналов, фильтрации или любые другие алгоритмы), передавая входные воздействия и анализируя выходные сигналы. В общем случае входные сигналы могут приходить с нашей модели окружения или модели объекта управления, или могут быть просто заданы в виде тестовых векторов. Нас устраивает, как алгоритм работает в Simulink. Но каким образом убедиться, что он будет работать точно так же в реальном железе?

      Мы используем автоматическую генерацию кода при помощи Embedded Coder, кросс-компиляцию этого кода при помощи среды разработки для нашего встраиваемого процессора и загружаем объектный код на целевой процессор. Но как протестировать, что полученный код работает так же, как оригинальная модель в MATLAB/Simulink?
      Кроме самого алгоритма, в коде также появляется специальная обвязка, которая автоматически создается Embedded Coder и представляет собой реализацию PIL.

      Это обвязка позволяет принимать и передавать данные с хост компьютера, и общаться с оригинальной моделью Simulink. Интерфейс взаимодействия может быть любым, который поддерживается вашим процессором – последовательный интерфейс, Ethernet, разделяемая память, JTAG.


      Таким образом, при тестировании в режиме PIL происходит генерация, кросс-компиляция и исполнение объектного кода на целевом процессоре или симуляторе процессора. Входные сигналы поступают в наш алгоритм в Simulink и в целевой процессор, где они обрабатываются в соответствии с заложенным алгоритмом и возвращаются обратно в Simulink для анализа и верификации.

      Я записал для вас небольшое видео с демонстрацией совместной работы Embedded Coder и Green Hills Software MULTI для запуска тестирования PIL на симуляторе процессора PowerPC.

      Если вы хотите получить больше информации по автоматической генерации кода и верификации в режиме PIL – обращайтесь к нам, мы всегда сможем помочь.
  • RSS подписка
    Архив материалов
    Май 2019
    Пн Вт Ср Чт Пт Сб Вс
        1 2 3 4 5
    6 7 8 9 10 11 12
    13 14 15 16 17 18 19
    20 21 22 23 24 25 26
    27 28 29 30 31    
    Поиск