Если создание собственного класса памяти с помощью свойств в словаре Embedded Coder Dictionary или Custom Storage Class Designer не соответствует вашим требованиям для управления представлением данных в сгенерированном коде, можно записать TLC-код, который явно управляет эффектом класса памяти на код. Например, чтобы создать класс памяти, который дает произвольно вложенные структуры, необходимо записать код TLC. В Custom Storage Class Designer эти расширенные классы памяти Type установлены на Other
. Вы не можете создать такой класс памяти в словаре Embedded Coder Dictionary, поэтому, чтобы использовать класс памяти в редакторе Отображения, необходимо сконфигурировать словарь модели так, чтобы он ссылался на пакет, содержащий класс памяти, как описано в разделе «См. Определения генерации кода в пакете».
Для получения примера смотрите Generate Кода That Dereferences Данных из адреса Памяти литерала. Общие сведения о коде TLC см. в разделе Зачем использовать компилятор целевого языка?.
Как описано в разделе «Разрешить пользователям класса памяти задавать значение свойства», свойства конкретного экземпляра позволяют пользователям класса памяти управлять эффектом, который имеет класс памяти для каждого элемента данных. Например, встроенный класс памяти ExportToFile
имеет несколько специфичных для экземпляра свойств, таких как Header file и Definition file.
Когда вы создаете класс памяти с Type установленным на Other
Чтобы добавить собственные свойства конкретного экземпляра, не встроенные в Custom Storage Class Designer, создайте custom attributes class для пакета. Пользовательский класс атрибутов является MATLAB® класс, который вы создаете как подкласс Simulink.CustomStorageClassAttributes
. Каждое свойство, добавляемое к классу пользовательских атрибутов, отображается пользователю класса памяти как свойство конкретного экземпляра.
Чтобы создать свой пользовательский класс атрибутов, см. Раздел «Определение классов данных».
Чтобы контролировать эффект вашего класса памяти, запишите TLC код, который задает код для генерации для каждого элемента данных.
В папке пакета (для примера, +myPackage
), создайте tlc
папка.
Скопируйте шаблон, такой как TEMPLATE_v2.tlc
из папки matlabroot /toolbox/rtw/targets/ecoder/csc_templates
(откройте) в ваш tlc
папка.
Напишите свой TLC код, следуя комментариям в файле шаблона. Комментарии описывают, как задать, для примера, как сгенерированный код декларирует, определяет и обращается (по значению или по ссылке) к каждому элементу данных.
Чтобы создать класс памяти в пакете, откройте Custom Storage Class Designer в расширенном режиме.
В командной строке введите:
cscdesigner -advanced
Выберите пакет и создайте класс памяти.
Для класса памяти установите Type равным Other
. На панели Другие атрибуты укажите имя файла TLC и имя класса пользовательских атрибутов.
Установите свойства на панели Другие атрибуты.
Сгруппирован: Выберите эту опцию, если вы хотите объединить несколько элементов данных в одну сущность в сгенерированном коде. Например, встроенные классы памяти BitField
и Struct
сгруппированы, поскольку они могут агрегировать несколько элементов данных в одну структурную переменную.
Имя файла TLC: Введите имя файла TLC. Custom Storage Class Designer принимает, что файл существует в пакете tlc
папка, поэтому задайте только имя файла, а не путь файла.
Имя класса атрибутов CSC (необязательно) Если вы создали пользовательский класс атрибутов, введите полное имя класса, включая имя пакета. Для примера задайте myPackage.myCustomAttsClass
. Для получения дополнительной информации см. раздел «Создание пользовательского класса атрибутов для Класса памяти».
На панелях Общие и Комментарии задайте значения для остальных свойств.
Чтобы применить класс памяти к объектам данных, создайте объекты данных из пакета и сконфигурируйте объекты, чтобы использовать класс памяти. Для получения дополнительной информации о применении пользовательского класса памяти к объектам данных смотрите Apply Storage Class.Чтобы применить класс памяти в модели с помощью редактора Отображения, необходимо сконфигурировать словарь Embedded Coder Dictionary, который используется в модели для ссылки на ваш пакет. Когда вы ссылаетесь на пакет, класс памяти появляется в словаре Embedded Coder Dictionary и становится доступным в редакторе Code Mappings. Для получения дополнительной информации см. Раздел «Смотрите на Определения генерации кода в пакете».