exponenta event banner

Копия памяти

Копирование данных из и в раздел памяти

Описание

Созданный код для блока копирования памяти копирует данные из памяти процессора и в память процессора в соответствии с параметрами блока. При использовании этого блока для копирования отдельного элемента данных из источника в место назначения блок копирует элемент из источника с использованием исходного типа данных, а затем переводит элемент данных в указанный тип данных назначения.

Включите в модель столько экземпляров блока «Копирование памяти», сколько требуется для управления памятью на целевом процессоре. Каждый экземпляр блока работает с одной переменной, адресом или набором адресов, предоставляемых блоку в качестве входных данных.

Укажите источник и место назначения для копии памяти с помощью параметров блока. Параметры блока можно использовать для управления другими аспектами копии памяти, такими как:

  • Инициализация для ячеек памяти

  • Шаг и смещение памяти во время выполнения

  • Запись операций в память во время инициализации программы, во время завершения программы и в каждый момент времени

  • Вставка пользовательского исходного кода ANSI ® C до и после каждой операции чтения и записи копии памяти (например, блокировка и разблокировка регистров до и после доступа к ним)

  • Быстрый прямой доступ к памяти (QDMA) для процессоров и плат, поддерживающих операции копирования QDMA (семейства процессоров C621x, C64xx и C671x)

Блок копирования памяти выполняет операции в три периода во время выполнения программы:

  • Инициализация

  • Операции в реальном времени

  • Завершение

Параметры блока можно использовать для управления тем, когда и как блок инициализирует память, копирует данные или переменные в память и из нее и завершает операции копирования. Параметры позволяют включать и отключать операции копирования памяти в трех периодах независимо друг от друга.

Используйте блок копирования памяти и блок выделения памяти для управления и выделения памяти для пользовательских драйверов устройств, таких как драйверы шины PCI или драйверы в стиле кодека.

Во время моделирования блок «Копирование памяти» не выполняет операцию. Вывод блока не определен.

Порты

Вход

развернуть все

Исходные данные для операции копирования памяти, указанные как скаляр или вектор.

Зависимости портов

Чтобы использовать этот порт в качестве источника для операции копирования памяти, установите параметр Copy from to Input port.

Типы данных: single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Адрес памяти исходных данных для операции копирования, указанный как скаляр или вектор.

Зависимости портов

Чтобы использовать этот порт в качестве источника для операции копирования памяти, установите параметр Copy from to Specified address и Укажите источник адреса для Input port. Блок копирования памяти преобразует входной порт src кому &src.

Типы данных: single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Смещение для чтения данных во время операции копирования, указанное как скаляр или вектор.

Зависимости портов

Чтобы создать этот порт, выберите параметр Использовать смещение при чтении и задайте для параметра Указать источник смещения значение Input port.

Типы данных: single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Адрес памяти, используемый в качестве места назначения данных для операции копирования, указанный как скаляр или вектор.

Зависимости портов

Чтобы использовать этот порт в качестве места назначения для операции копирования памяти, установите для параметра Copy значение Specified address и Укажите источник адреса для Input port. Блок копирования памяти преобразует выходной порт dst во входной порт &dst.

Типы данных: single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Смещение для записи данных во время операции копирования, указанное как скаляр или вектор.

Зависимости портов

Чтобы создать этот порт, выберите параметр Использовать смещение при записи и задайте для параметра Указать источник смещения значение Input port.

Типы данных: single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Продукция

развернуть все

Скопированные данные, указанные как скаляр или вектор.

Зависимости портов

Чтобы использовать этот порт в качестве места назначения для операции копирования памяти, установите для параметра Copy значение Output port.

Типы данных: single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Параметры

развернуть все

Источник

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

Укажите источник ввода для части операции копирования, предназначенной для чтения данных. Выберите один из источников, перечисленных в этой таблице.

Источник считанных данныхЗначение параметра для указания
src входной портInput port
Адрес памятиSpecified address
Символ (переменная) в таблице поиска исходного кодаSpecified source code symbol

Зависимости параметров

  • При выборе Specified addressиспользуйте команду «Указать источник адреса», чтобы указать источник адреса памяти, и команду «Адрес», чтобы указать адрес.

  • При выборе Specified source code symbolиспользуйте символ исходного кода, чтобы указать символ (переменную) в копируемой таблице символов исходного кода.

  • При выборе Specified address или Specified source code symbol, измените тип данных на значение, отличное от Inherit from source (значение по умолчанию). Если это изменение не будет выполнено, появится сообщение об ошибке, указывающее на невозможность наследования типа данных, поскольку входной порт не существует.

Укажите источник адреса памяти входного источника для операции копирования. Чтобы указать адрес памяти для исходной переменной, выберите Specify via dialog. Этот выбор включает параметр Address, который используется для указания адреса памяти.

Чтобы указать, что блок получает адрес из входного порта, выберите Input port. При выборе Input port, метка входного порта блока изменяется на &src.

Зависимости параметров

  • Чтобы включить этот параметр, задайте для параметра Копировать из значение Specified address.

  • При выборе Specify via dialog, этот параметр включает параметр Address, который используется для указания адреса исходной переменной.

  • При выборе Specify via dialog, установите тип данных в значение, отличное от Inherit from source (значение по умолчанию). Если это изменение не будет выполнено, появится сообщение об ошибке, указывающее на невозможность наследования типа данных, поскольку входной порт не существует.

  • При выборе Inport port , укажите тип данных для параметра Тип данных.

Укажите адрес памяти исходных данных в десятичной или шестнадцатеричной форме с преобразованием в десятичную, как показано значением по умолчанию hex2dec('00001000').

В этом примере выполняется преобразование Ox1000 в десятичную форму.

4096 = hex2dec('1000');

В этом примере можно указать адрес как 4096 или hex2dec('1000').

Зависимости параметров

Чтобы включить этот параметр, задайте для параметра Копировать из значение Specified address и Укажите источник адреса для Specify via dialog.

Укажите символ (переменную) в таблице символов исходного кода для копирования. Указанный символ должен существовать в таблице символов для программы. Блок не проверяет, существует ли символ в таблице символов и указан ли символ с допустимым синтаксисом. Введите текст, указывающий символ точно так, как он отображается в коде.

Зависимости параметров

  • Чтобы включить этот параметр, задайте для параметра Копировать из значение Specified source code symbol.

  • Задайте для типа данных значение, отличное от Inherit from source (значение по умолчанию). Если это изменение не будет выполнено, появится сообщение об ошибке, указывающее на невозможность наследования типа данных, поскольку входной порт не существует.

Укажите тип копируемых исходных данных. Наследование типа данных из src входной порт, выберите Inherit from input port.

Укажите количество элементов для копирования из исходного расположения. Каждый элемент имеет тип данных, заданный параметром Data type.

Укажите, использует ли блок смещение при чтении входных данных. Значение смещения находится в элементах указанного типа данных. Укажите источник смещения с помощью параметра Указать источник смещения (Specify offset source).

Зависимости параметров

  • Если выбран этот параметр, используйте команду Указать источник смещения (Specify offset source), чтобы указать источник смещения.

  • Используйте «Смещение» для задания значения смещения.

Укажите источник входного смещения для операции копирования. Чтобы задать значение смещения, выберите Specify via dialog. При выборе этого параметра включается параметр «Смещение», используемый для задания значения смещения.

Чтобы задать блок для получения смещения от входного порта, выберите Input port. При выборе Input port, блок создает входной порт с меткой src ofs и считывает значение смещения из этого порта. src ofs порт позволяет программе динамически изменять смещение во время выполнения программы.

Зависимости параметров

Чтобы включить этот параметр, выберите «Использовать смещение при чтении».

Перед копированием первого значения в место назначения укажите количество пропускаемых значений.

Зависимости параметров

Чтобы включить этот параметр, выберите Использовать смещение при чтении (Use offset when reading) и задайте для параметра Указать источник смещения (Specify offset source to) значение Specify via dialog.

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

Эти цифры показывают концепцию шага. На первом рисунке данные копируются без шага. На втором рисунке показаны результаты значения шага два. Значение шага для вывода блока можно задать с помощью параметра Stride на вкладке «Назначение». Для просмотра разниц можно также сравнить шаг со смещением.

Место назначения

Укажите место назначения памяти для операции копирования. Укажите атрибуты назначения.

Укажите тип места назначения вывода для операции копирования. Выберите одно из значений, перечисленных в этой таблице.

Значение параметраНазначение записи данных
Output portБлок dst выходной порт
Specified address Местоположение памяти, указанное параметрами Укажите адрес назначения и адрес
Specified source code symbolСимвол (переменная), указанный параметром Символ исходного кода

Зависимости параметров

  • При выборе Specified address, используйте команду Указать адресное назначение, чтобы указать конечное расположение памяти.

  • При выборе Specified source code symbolиспользуйте символ кода назначения, чтобы указать символ (переменную) в таблице символов исходного кода, в который следует скопировать переменную.

Укажите источник целевого адреса памяти переменной для операции копирования. Чтобы указать адрес памяти для переменной, выберите Specify via dialog. Этот выбор включает параметр Address, который используется для указания адреса памяти. Чтобы указать, что блок получает адрес от входного порта, выберите Input port. При выборе Input port, блок создает входной порт с меткой &dst. Динамическое изменение адреса означает, что можно использовать блок для копирования различных переменных путем предоставления адреса переменной из вышестоящего блока в модели.

Зависимости параметров

  • Чтобы включить этот параметр, установите для параметра Копировать значение Specified address.

  • При выборе Specify via dialog, этот параметр включает параметр Address, который используется для указания адреса целевой переменной.

Укажите адрес памяти целевой переменной в десятичной или шестнадцатеричной форме с преобразованием в десятичную, как показано значением по умолчанию hex2dec('00001000').

В этом примере выполняется преобразование Ox2000 в десятичную форму.

8192 = hex2dec('2000');

В этом примере можно указать адрес как 8192 или hex2dec('2000').

Зависимости параметров

Чтобы включить этот параметр, установите для параметра Копировать значение Specified addressи Укажите источник адреса для Specify via dialog.

Укажите символ (переменную) в таблице символов исходного кода для копирования переменной. Указанный символ должен существовать в таблице символов для программы. Блок не проверяет, существует ли символ в таблице символов и указан ли символ с допустимым синтаксисом. Введите текст, указывающий символ точно так, как он отображается в коде.

Зависимости параметров

Чтобы включить этот параметр, установите для параметра Копировать значение Specified source code symbol.

Укажите тип данных исходной переменной. Для наследования типа данных из исходной переменной выберите Inherit from source.

Укажите, использует ли блок смещение при записи выходных данных. Значение смещения находится в элементах указанного типа данных. Укажите источник смещения с помощью параметра Указать источник смещения (Specify offset source).

Зависимости параметров

Если выбран этот параметр, используйте команду Указать источник смещения (Specify offset source), чтобы указать источник смещения. Используйте «Смещение» для задания значения смещения.

Укажите источник смещения для места назначения вывода для операции копирования. Чтобы задать значение смещения для переменной назначения, выберите Specify via dialog. При выборе этого параметра включается параметр «Смещение», используемый для задания значения смещения.

Чтобы указать, что блок получает смещение от входного порта, выберите Input port. При выборе Input port, блок добавляет входной порт с меткой dst ofs и считывает значение смещения из этого порта. dst ofs порт позволяет программе динамически изменять смещение во время выполнения.

Зависимости параметров

Чтобы включить этот параметр, выберите «Указать источник смещения».

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

Зависимости параметров

Чтобы включить этот параметр, выберите «Использовать смещение при записи» и задайте для параметра «Указать источник смещения» значение Specify via dialog.

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

На этом рисунке показано значение шага три, применяемое для записи входных данных в расположение вывода. Можно указать значение шага для ввода с параметром Stride на панели «Источник». Как показано на рисунке, для более полного управления памятью можно одновременно использовать шаг ввода и шаг вывода.

Укажите частоту выполнения операции копирования памяти в секундах. Чтобы использовать постоянное время выборки, укажите Inf. Чтобы наследовать время выборки из входного порта или, если блок не имеет входного порта, из модели Simulink ®, укажите-1.

Варианты

Настройте параметры, управляющие процессом копирования.

Укажите, следует ли инициализировать адрес памяти до определенного значения во время инициализации программы.

Зависимости параметров

При выборе этого параметра используйте комбинацию параметров для настройки значения инициализации.

Что нужно настроитьПараметр
Источник значения инициализацииУкажите источник значений инициализации
Значение инициализации как константаЗначение инициализации (константа)
Значение инициализации как переменнаяЗначение инициализации (символ исходного кода)
Значение инициализации в качестве маски для управления содержимым регистра на уровне битовПрименить значение инициализации в качестве маски
Применение значения маскиПобитовый оператор

Укажите источник начального значения. Чтобы настроить источник для инициализации памяти в качестве определенного значения, выберите Specify constant value. Чтобы настроить источник как переменную (символ), выберите Specify source code symbol.

Зависимости параметров

  • Чтобы включить этот параметр, выберите Установить значение памяти при инициализации.

  • Для указания начального значения используйте значение инициализации (константа) или значение инициализации (символ исходного кода).

Укажите постоянное значение.

Зависимости параметров

Чтобы включить этот параметр, выберите параметр Set memory value at initialization и установите для параметра Set initialization value source значение Specify constant value.

Укажите символ (переменную) в таблице символов исходного кода, который будет использоваться для значения инициализации. Указанный символ должен существовать в таблице символов для программы. Блок не проверяет, существует ли символ в таблице символов и указан ли символ с допустимым синтаксисом. Введите текст, указывающий символ точно так, как он отображается в коде.

Зависимости параметров

Чтобы включить этот параметр, выберите параметр Set memory value at initialization и установите для параметра Set initialization value source значение Specify source code symbol.

Укажите, следует ли использовать значение инициализации в качестве маски для управления содержимым регистра на уровне битов. Значение инициализации обрабатывается как строка битов для маски.

Чтобы определить способ применения значения маски, укажите значение параметра оператора Bitwise.

Чтобы использовать значение инициализации в качестве маски, вывод копии должен быть определенным адресом. Выходные данные:

  • Может быть символом

  • Не может быть выходным портом

Зависимости параметров

При выборе этого параметра используйте оператор Bitwise для определения способа применения значения маски.

Укажите тип побитовой операции, используемой в качестве маски для управления значением памяти. Применение маски к процессу копирования означает, что в результате можно выбрать отдельные биты. Например, применив маску, можно считать значение пятого бита.

Выберите одну из побитовых операций в этой таблице.

Побитовая операция

Описание

bitwise AND

Примените значение маски как побитовое И к значению в регистре.

bitwise OR

Примените значение маски как побитовое ИЛИ к значению в регистре.

bitwise exclusive OR

Примените значение маски как побитовое исключающее ИЛИ к значению в регистре.

left shift

Сдвиньте биты в регистре, оставленные на число битов, представленных значением инициализации. Например, если значение инициализации равно 3, блок сдвигает значение регистра влево на 3 бита. В этом случае значение должно быть положительным целым числом.

right shift

Переместите биты в регистре вправо на число битов, представленных значением инициализации. Например, если значение инициализации равно 6, блок сдвигает значение регистра вправо на 6 бит. В этом случае значение должно быть положительным целым числом.

Зависимости параметров

Чтобы включить этот параметр, выберите Применить значение инициализации в качестве маски.

Укажите, что программа копирует память во время завершения программы. Копирование значения в память во время завершения происходит в дополнение к копированию во время инициализации программы.

Зависимости параметров

При выборе этого параметра можно использовать параметр Set memory value only at initialization/termination, чтобы ограничить операции копирования только во время инициализации и завершения программы.

Укажите значение для записи в память во время завершения программы.

Зависимости параметров

Чтобы включить этот параметр, выберите Set memory value at termination.

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

Укажите, вставляет ли генератор кода пользовательский код ANSI C непосредственно перед записью программы в указанное место памяти. Этот параметр и команду Вставить пользовательский код после записи в память можно использовать для блокировки и разблокировки регистров до и после обращения к ним. Например, некоторые процессоры имеют регистры, которые могут потребоваться для разблокировки и блокировки макросов EALLOW и EDIS до и после обращения к ним программы.

Зависимости параметров

Если выбран этот параметр, используйте пользовательский код, чтобы указать пользовательский код ANSI C для вставки в созданный код непосредственно перед операцией записи в память.

Укажите, вставляет ли генератор кода пользовательский код ANSI C сразу после записи программы в указанное место памяти. Можно вставить пользовательский код перед записью в память и этот параметр, чтобы заблокировать и разблокировать регистры до и после обращения к ним. Например, некоторые процессоры имеют регистры, которые могут потребоваться для разблокировки и блокировки макросов EALLOW и EDIS до и после обращения к ним программы.

Зависимости параметров

Если выбран этот параметр, используйте пользовательский код, чтобы указать пользовательский код ANSI C для вставки в созданный код сразу после операции записи в память.

Укажите пользовательский код ANSI C для вставки в созданный код непосредственно перед или сразу после операции записи в память. Указанный код отображается в созданном коде точно так же, как он вводится.

Зависимости параметров

Чтобы включить этот параметр, выберите Вставить пользовательский код перед записью в память или Вставить пользовательский код после записи в память.

Укажите, следует ли включить быстрый прямой доступ к памяти (QDMA) для процессоров, поддерживающих QDMA.

Зависимости параметров

При выборе этого параметра:

  • Типы данных источника и назначения должны совпадать. Если типы данных не совпадают, операция копирования возвращает ошибку.

  • Значения шага ввода и вывода должны быть установлены в 1.

  • Если выбран этот параметр, используйте параметр Включить модель блокировки, чтобы указать, являются ли операции копирования памяти блокирующими процессами.

Укажите, блокируют ли операции копирования памяти, использующие QDMA. Выберите этот параметр, чтобы включить процессы блокирования операций копирования памяти. При включении режима блокировки другая обработка программы ожидает завершения операции копирования памяти.

Зависимости параметров

Чтобы включить этот параметр, выберите Использовать QDMA для копирования (если доступно).

Представлен в R2011a