Memory Copy

Скопируйте данные от и до раздела memory

Описание

Сгенерированный код для блока 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. Блок памяти Копии преобразует входной порт 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. Блок памяти Копии преобразует выходной порт 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.

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

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

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

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

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

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

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

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

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

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

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

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

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

Эти рисунки показывают концепцию шага. На первом рисунке данные копируются без шага. Второй рисунок показывает результаты значения шага два. Можно задать значение шага для блока выход Шагом параметра на вкладке 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 и читает значение смещения из того порта. dst ofs порт позволяет вашей программе изменить смещение динамически во время выполнения.

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

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

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

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

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

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

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

Задайте уровень, на котором операция копирования в памяти происходит в секундах. Чтобы использовать постоянный шаг расчета, задайте 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 AND

Примените значение маски как поразрядный AND к значению в регистре.

bitwise 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, прежде чем программа запишет в заданную ячейку памяти. Можно использовать этот параметр и Insert custom code after memory write, чтобы заблокировать и разблокировать регистры до и после доступа к ним. Например, некоторые процессоры имеют регистры, которые вы можете должны быть разблокировать и заблокировать с EALLOW, и макросы EDIS до и после вашей программы получают доступ к ним.

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

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

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

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

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

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

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

Чтобы включить этот параметр, выберите 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