Memory Copy

Скопируйте данные из раздела памяти и в него

Описание

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

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

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

  • Инициализация для расположений памяти

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

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

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

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

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

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

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

  • Завершение

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

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

Во время симуляции блок Memory Copy не выполняет операцию. Выходные выходы блока не определены.

Порты

Вход

расширить все

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

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

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

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

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

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

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

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

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

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

Чтобы создать этот порт, выберите Use offset when reading параметра и установите Specify offset source на Input port.

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

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

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

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

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

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

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

Чтобы создать этот порт, выберите Use offset when writing параметра и установите Specify offset source на Input port.

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

Выход

расширить все

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

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

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

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

Параметры

расширить все

Источник

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

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

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

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

  • Если вы выбираете Specified address, используйте Specify address source, чтобы задать источник адреса памяти и Address, чтобы задать адрес.

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

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

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

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

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

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

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

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

  • Если вы выбираете Inport port , задайте тип данных для параметра Data type.

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

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

4096 = hex2dec('1000');

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

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

Чтобы включить этот параметр, установите Copy from равным Specified address и Specify address source к Specify via dialog.

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

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

  • Чтобы включить этот параметр, установите Copy from равным Specified source code symbol.

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

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

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

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

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

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

  • Используйте команду Offset, чтобы задать значение смещения.

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

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

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

Чтобы включить этот параметр, выберите Use offset when reading.

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

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

Чтобы включить этот параметр, выберите Use offset when reading и установите Specify offset source на Specify via dialog.

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

Эти рисунки показывают концепцию шага. На первом рисунке данные копируются без шага. Второй рисунок показывает результаты шага значения двух. Можно задать значение шага для выхода блока с параметром Stride на вкладке Destination. Можно также сравнить шаг со смещением, чтобы увидеть различия.

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

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

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

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

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

  • Если вы выбираете Specified address, используйте Specify address destination, чтобы указать место назначения памяти.

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

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

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

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

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

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

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

8192 = hex2dec('2000');

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

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

Чтобы включить этот параметр, установите Copy to равным Specified addressи Specify address source к Specify via dialog.

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

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

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

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

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

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

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

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

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

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

Чтобы включить этот параметр, выберите Specify offset source.

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

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

Чтобы включить этот параметр, выберите Use offset when writing и установите Specify offset source на Specify via dialog.

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

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

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

Опции

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

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

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

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

Что настроитьПараметр
Источник значения инициализацииSpecify initialization value source
Значение инициализации как константаInitialization value (constant)
Значение инициализации как переменнаяInitialization value (source code symbol)
Значение инициализации как маска для манипулирования содержимым регистра на битовом уровнеApply initialization value as mask
Применить значение маскиBitwise operator

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

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

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

  • Используйте Initialization value (constant) или Initialization value (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 operator.

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

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

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

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

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

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

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

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

Описание

bitwise AND

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

bitwise OR

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

bitwise exclusive OR

Примените значение маски к значению в регистре как bitwise exclusive OR.

left shift

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

right shift

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

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

Чтобы включить этот параметр, выберите Apply initialization value as mask.

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

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

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

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

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

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

Задайте, выполнять ли копии только во время инициализации и завершения программы. Когда этот параметр очищен, блок выполняет копии во время инициализации, операций в реальном времени и завершения. Если вы выбираете этот параметр, блок выполняет копии только во время инициализации и завершения.

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

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

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

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

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

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

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

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

Чтобы включить этот параметр, выберите Insert custom code before memory write или Insert custom code after memory write.

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

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

Если вы выбираете этот параметр:

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

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

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

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

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

Чтобы включить этот параметр, выберите Use QDMA for copy (if available).

См. также

Введенный в R2011a