Скопируйте данные из раздела памяти и в него
Сгенерированный код для блока Memory Copy копирует данные из памяти процессора и в память процессора в соответствии с параметрами блоков. Когда вы используете этот блок для копирования отдельного элемента данных из источника в место назначения, блок копирует элемент из источника, используя тип исходных данных, а затем переводит элемент данных в заданный тип целевых данных.
Включите в модель столько образцы блока Memory Copy, сколько требуется для манипулирования памятью на целевом процессоре. Каждый образец блока работает с одной переменной, адресом или набором адресов, предоставленных блоку в качестве входных данных.
Укажите источник и место назначения для копии памяти с помощью параметров блоков. Можно использовать параметры блоков для управления другими аспектами копии памяти, такими как:
Инициализация для расположений памяти
Шаг и смещение памяти во время исполнения
Запись операций в память во время инициализации программы, во время завершения программы и в каждый шаг расчета
Вставка пользовательского ANSI® Исходный код C до и после каждой операции чтения и записи копии памяти (для примера, для блокировки и разблокировки регистров до и после доступа к ним)
Быстрый прямой доступ к памяти (QDMA) для процессоров и плат, поддерживающих операции копирования QDMA (C621x, C64xx и C671x семейства процессоров)
Блок Memory Copy выполняет операции в три периода во время выполнения программы:
Инициализация
Операции в реальном времени
Завершение
Можно использовать параметры блоков, чтобы контролировать, когда и как блок инициализирует память, копирует данные или переменные в память и из нее и завершает операции копирования. Параметры позволяют вам включать и выключать операции копирования памяти в трех периодах независимо.
Используйте блок Memory Copy и блок Memory Allocate, чтобы манипулировать и выделять память для пользовательских драйверов устройств, таких как драйверы шины PCI или драйверы в стиле кодека.
Во время симуляции блок Memory Copy не выполняет операцию. Выходные выходы блока не определены.
src
- Входные данные для операции копированияИсходные данные для операции копирования памяти, заданные как скаляр или вектор.
Чтобы использовать этот порт в качестве источника для операции копирования памяти, установите значение параметра Copy from Input port
.
Типы данных: single
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
&src
- Адрес входных данных для операции копированияАдрес памяти исходных данных для операции копирования, заданный как скаляр или вектор.
Чтобы использовать этот порт в качестве источника для операции копирования памяти, установите значение параметра Copy from Specified address
и Specify address source к Input port
. Блок Copy Memory преобразует входной порт src
на &src
.
Типы данных: single
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
src ofs
- Смещение для данных, считанных во время операции копированияСмещение, используемое для данных, считанных во время операции копирования, заданное как скаляр или вектор.
Чтобы создать этот порт, выберите Use offset when reading параметра и установите Specify offset source на Input port
.
Типы данных: single
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
&dst
- Адрес выходных данных для операции копированияАдрес памяти, используемый в качестве места назначения данных для операции копирования, задается как скаляр или вектор.
Чтобы использовать этот порт в качестве места назначения для операции копирования памяти, установите значение параметра Copy to Specified address
и Specify address source к Input port
. Блок Copy Memory преобразует выходной порт dst
к входному порту &dst
.
Типы данных: single
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
dst ofs
- Смещение для данных, записанных во время операции копированияСмещение для записи данных во время операции копирования, заданное как скаляр или вектор.
Чтобы создать этот порт, выберите Use offset when writing параметра и установите Specify offset source на Input port
.
Типы данных: single
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
dst
- Выходные данные для операции копированияСкопированные данные, заданные как скаляр или вектор.
Чтобы использовать этот порт в качестве места назначения для операции копирования памяти, установите значение параметра Copy to Output port
.
Типы данных: single
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
Укажите исходное расположение последовательной памяти для операции копирования. Укажите тип данных, размер и другие атрибуты исходной переменной.
Copy from
- Входной источник для операции копированияУкажите входной источник для части операции копирования данных, считанных. Выберите из источников, перечисленных в этой таблице.
Источник считанных данных | Значение параметров, которое нужно задать |
---|---|
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 address 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.
Address
- Адрес памяти исходных данныхУкажите адрес памяти исходных данных в десятичной или шестнадцатеричной форме с преобразованием в десятичную, как показано значением по умолчанию hex2dec('00001000')
.
Этот пример преобразует Ox1000
в десятичную форму.
4096 = hex2dec('1000');
В данном примере можно задать адрес следующим 4096
или hex2dec('1000')
.
Чтобы включить этот параметр, установите Copy from равным Specified address
и Specify address source к Specify via dialog
.
Source code symbol
- Символ в таблице символов исходного кодаЗадайте символ (переменную) в таблице символов исходного кода, чтобы скопировать. Символ, который вы задаете, должен существовать в таблице символов для вашей программы. Блок не проверяет, существует ли символ в таблице символов и задаете ли вы символ с допустимым синтаксисом. Введите текст, который задает символ именно так, как он появляется в коде.
Чтобы включить этот параметр, установите Copy from равным Specified source code symbol
.
Установите тип данных на значение, отличное от Inherit from source
(значение по умолчанию). Если вы не вносите это изменение, вы получаете сообщение об ошибке, указывающее, что тип данных не может быть унаследован, поскольку входной порт не существует.
Data type
- Тип данных, копируемыхУкажите тип данных копируемых исходных данных. Наследование типа данных из src
входной порт, выберите Inherit from input port
.
Data length
- Количество копируемых элементов данныхУкажите количество элементов для копирования из исходного расположения. Каждый элемент имеет тип данных, заданный параметром Data type.
Use offset when reading
- Используйте смещение при считывании входовУкажите, использует ли блок смещение при считывании входов. Значение смещения находится в элементах заданного типа данных. Укажите источник смещения с помощью параметра Задать источник смещения.
Если вы выбираете этот параметр, используйте команду Specify offset source, чтобы задать источник смещения.
Используйте команду Offset, чтобы задать значение смещения.
Specify offset source
- Источник входного смещенияУкажите источник входного смещения для операции копирования. Чтобы задать значение смещения, выберите Specify via dialog
. Этот выбор позволяет использовать параметр Offset, который используется для задания значения смещения.
Чтобы задать для блока, чтобы получить смещение от входа порта, выберите Input port
. Когда вы выбираете Input port
блок создает входной порт, маркированный src ofs
и считывает значение смещения от этого порта. The src ofs
порт позволяет программе изменять смещение динамически во время выполнения программы.
Чтобы включить этот параметр, выберите Use offset when reading.
Offset
- Количество значений, пропущенных перед копированием первого значения в пункт назначенияПеред копированием первого значения в пункт назначения укажите количество значений, которые будут пропущены.
Чтобы включить этот параметр, выберите Use offset when reading и установите Specify offset source на Specify via dialog
.
Stride
- Интервал для считывания входовЗадайте интервал для считывания входов. По умолчанию значение шага равно единице, что означает, что сгенерированный код читает входные данные последовательно. Когда вы добавляете значение шага, которое не равно единице, при считывании входных данных сгенерированный код пропускает пространства в исходном адресе, равном шагу.
Эти рисунки показывают концепцию шага. На первом рисунке данные копируются без шага. Второй рисунок показывает результаты шага значения двух. Можно задать значение шага для выхода блока с параметром Stride на вкладке Destination. Можно также сравнить шаг со смещением, чтобы увидеть различия.
Укажите место назначения памяти для операции копирования. Укажите атрибуты адресата.
Copy to
- Тип выходного пункта назначения для операции копированияУкажите тип выхода места назначения для операции копирования. Выберите одно из значений, перечисленных в этой таблице.
Значение параметров | Назначение записи данных |
---|---|
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 address source
- Источник адреса памяти для выходного пункта назначенияУкажите источник адреса целевой памяти переменной для операции копирования. Чтобы задать адрес памяти для переменной, выберите Specify via dialog
. Этот выбор позволяет использовать параметр Address, который используется для определения адреса памяти. Чтобы указать, что блок получает адрес от входа порта, выберите Input port
. Когда вы выбираете Input port
блок создает входной порт, маркированный &dst
. Динамическое изменение адреса означает, что можно использовать блок для копирования различных переменных путем предоставления адреса переменной из вышестоящего блока в модели.
Чтобы включить этот параметр, установите Copy to равным Specified address
.
Если вы выбираете Specify via dialog
, этот параметр включает параметр Address, который вы используете, чтобы задать адрес переменной назначения.
Address
- Адрес памяти переменной назначенияУкажите адрес памяти целевой переменной в десятичной или шестнадцатеричной форме с преобразованием в десятичную, как показано значением по умолчанию hex2dec('00001000')
.
Этот пример преобразует Ox2000
в десятичную форму.
8192 = hex2dec('2000');
В данном примере можно задать адрес следующим 8192
или hex2dec('2000')
.
Чтобы включить этот параметр, установите Copy to равным Specified address
и Specify address source к Specify via dialog
.
Source code symbol
- Символ в таблице символов исходного кодаУкажите символ (переменную) в таблице символов исходного кода, в которую нужно скопировать переменную. Символ, который вы задаете, должен существовать в таблице символов для вашей программы. Блок не проверяет, существует ли символ в таблице символов и задаете ли вы символ с допустимым синтаксисом. Введите текст, который задает символ именно так, как он появляется в коде.
Чтобы включить этот параметр, установите Copy to равным Specified source code symbol
.
Data type
- Тип данных переменнойУкажите тип данных исходной переменной. Чтобы наследовать тип данных от исходной переменной, выберите Inherit from source
.
Use offset when writing
- Используйте смещение при записи выходаУкажите, использует ли блок смещение при записи выхода. Значение смещения находится в элементах заданного типа данных. Укажите источник смещения с помощью параметра Задать источник смещения.
Если вы выбираете этот параметр, используйте команду Specify offset source, чтобы задать источник смещения. Используйте команду Offset, чтобы задать значение смещения.
Specify offset source
- Источник смещения для выходного пункта назначенияУкажите источник смещения для места назначения выхода для операции копирования. Чтобы задать значение смещения для переменной назначения, выберите Specify via dialog
. Этот выбор позволяет использовать параметр Offset, который используется для задания значения смещения.
Чтобы указать, что блок получает смещение от входа порта, выберите Input port
. Когда вы выбираете Input port
блок добавляет входной порт, помеченный dst ofs
и считывает значение смещения от этого порта. The dst ofs
порт позволяет программе изменять смещение динамически во время выполнения.
Чтобы включить этот параметр, выберите Specify offset source.
Offset
- Количество значений, которые нужно пропустить перед записью первого значения в пункт назначенияПеред записью первого значения в адрес назначения укажите количество значений, которые будут пропущены.
Чтобы включить этот параметр, выберите Use offset when writing и установите Specify offset source на Specify via dialog
.
Stride
- Интервал для выхода записиУкажите интервал для записи выхода. По умолчанию значение шага является одним из значений того, что сгенерированный код записывает входные данные последовательно в пункт назначения в последовательных местоположениях. Когда вы добавляете значение шага, которое не равно единице, при записи входных данных сгенерированный код пропускает пространства в адресе назначения, равном шагу шага.
Этот рисунок показывает значение шага три, приложенное к записи входа в выход местоположение. Можно задать значение шага для входа с параметром Stride на панели Source. Как показано на рисунке, можно использовать вход stride и выхода stride одновременно, чтобы включить более полную манипуляцию с памятью.
Sample time
- Скорость копирования памятиЗадайте скорость, с которой операция копирования памяти происходит в секундах. Чтобы использовать постоянный шаг расчета, задайте Inf
. Наследование шага расчета от входа порта или, когда блок не имеет входа порта, от Simulink® модель, задайте -1
.
Сконфигурируйте параметры, которые управляют процессом копирования.
Set memory value at initialization
- Установите адрес памяти во время инициализацииУкажите, следует ли инициализировать адрес памяти до определенного значения во время инициализации программы.
Если вы выбираете этот параметр, используйте комбинацию параметров, чтобы сконфигурировать значение инициализации.
Что настроить | Параметр |
---|---|
Источник значения инициализации | Specify initialization value source |
Значение инициализации как константа | Initialization value (constant) |
Значение инициализации как переменная | Initialization value (source code symbol) |
Значение инициализации как маска для манипулирования содержимым регистра на битовом уровне | Apply initialization value as mask |
Применить значение маски | Bitwise operator |
Specify initialization value source
- Источник значения инициализацииУкажите источник начального значения. Чтобы сконфигурировать источник для инициализации памяти как определенного значения, выберите Specify constant value
. Чтобы сконфигурировать источник как переменную (символ), выберите Specify source code symbol
.
Чтобы включить этот параметр, выберите Set memory value at initialization.
Используйте Initialization value (constant) или Initialization value (source code symbol), чтобы задать начальное значение.
Initialization value (constant)
- Постоянное значение инициализацииЗадайте постоянное значение.
Чтобы включить этот параметр, выберите Set memory value at initialization и установите Set initialization value source на Specify constant value
.
Initialization value (source code symbol)
- Символ в таблице символов исходного кодаУкажите символ (переменную) в таблице символов исходного кода, которая будет использоваться для значения инициализации. Символ, который вы задаете, должен существовать в таблице символов для вашей программы. Блок не проверяет, существует ли символ в таблице символов и задаете ли вы символ с допустимым синтаксисом. Введите текст, который задает символ именно так, как он появляется в коде.
Чтобы включить этот параметр, выберите Set memory value at initialization и установите Set initialization value source на Specify source code symbol
.
Apply initialization value as mask
- Применить значение инициализации как маскуУкажите, использовать ли значение инициализации в качестве маски для манипулирования содержимым регистра на битовом уровне. Ваше значение инициализации рассматривается как строка бит для маски.
Чтобы определить, как применить значение маски, задайте значение для параметра Bitwise operator.
Чтобы использовать ваше значение инициализации в качестве маски, выход из копии должен быть определенным адресом. Выходные выходы:
Может быть символом
Не может быть портом выхода
Если вы выбираете этот параметр, используйте команду Bitwise operator, чтобы определить, как применить значение маски.
Bitwise operator
- Тип побитовой операцииЗадайте тип побитовой операции, которая будет использоваться в качестве маски для манипулирования значением памяти. Применение маски к процессу копирования означает, что можно выбрать отдельные биты в результате. Для примера, применяя маску, можно считать значение пятого бита.
Выберите одну из побитовых операций в этой таблице.
Побитовая операция | Описание |
---|---|
| Примените значение маски как побитовое И к значению в регистре. |
| Примените значение маски как побитовое ИЛИ к значению в регистре. |
| Примените значение маски к значению в регистре как bitwise exclusive OR. |
| Сдвиньте биты в регистре слева на количество бит, представленное значением инициализации. Для примера, если ваше значение инициализации 3, блок сдвигает значение регистра на левые 3 бита. В этом случае значение должно быть положительным целым числом. |
| Сдвиньте биты в регистре вправо на количество бит, представленное значением инициализации. Для примера, если ваше значение инициализации 6, блок сдвигает значение регистра вправо на 6 бит. В этом случае значение должно быть положительным целым числом. |
Чтобы включить этот параметр, выберите Apply initialization value as mask.
Set memory value at termination
- Копировать память во время завершения программыУкажите, что ваша программа копирует память во время завершения программы. Копирование значения в памяти во время завершения происходит в дополнение к копии во время инициализации программы.
Если вы выбираете этот параметр, можно использовать Set memory value only at initialization/termination, чтобы ограничить операции копирования, которые происходят только во время инициализации и завершения программы.
Termination value
- Значение завершенияЗадайте значение для записи в память во время завершения программы.
Чтобы включить этот параметр, выберите Set memory value at termination.
Set memory value only at initialization/termination
- Копировать значение памяти только во время инициализации и завершения программыЗадайте, выполнять ли копии только во время инициализации и завершения программы. Когда этот параметр очищен, блок выполняет копии во время инициализации, операций в реальном времени и завершения. Если вы выбираете этот параметр, блок выполняет копии только во время инициализации и завершения.
Insert custom code before memory write
- Вставьте пользовательский код перед записью памяти Укажите, вставляет ли генератор кода пользовательский код ANSI C непосредственно перед записью программы в указанное место памяти. Можно использовать этот параметр и Insert custom code after memory write, чтобы блокировать и разблокировать регистры до и после доступа к ним. Например, некоторые процессоры имеют регистры, которые могут потребоваться для разблокировки и блокировки с помощью макросов EALLOW и EDIS до и после того, как ваша программа обратится к ним.
Если вы выбираете этот параметр, используйте Custom code, чтобы задать пользовательский код ANSI C для вставки в сгенерированный код непосредственно перед операцией записи памяти.
Insert custom code after memory write
- Пользовательский код после флага записи памятиУкажите, вставляет ли генератор кода пользовательский код ANSI C сразу после записи программы в указанное место памяти. Можно Insert custom code before memory write и этот параметр для блокировки и разблокировки регистров до и после доступа к ним. Например, некоторые процессоры имеют регистры, которые могут потребоваться для разблокировки и блокировки с помощью макросов EALLOW и EDIS до и после того, как ваша программа обратится к ним.
Если вы выбираете этот параметр, используйте Custom code, чтобы задать пользовательский код ANSI C для вставки в сгенерированный код сразу после операции записи памяти.
Custom code
— Укажите пользовательский код ANSI C для вставки в сгенерированный код непосредственно перед или сразу после операции записи памяти. Код, который вы задаете, появляется в сгенерированном коде точно по мере его ввода.
Чтобы включить этот параметр, выберите Insert custom code before memory write или Insert custom code after memory write.
Use QDMA for copy (if available)
- Используйте быстрый прямой доступ к памяти (QDMA) для копированияУкажите, следует ли включать быстрый прямой доступ к памяти (QDMA) для процессоров, поддерживающих QDMA.
Если вы выбираете этот параметр:
Исходные и целевые типы данных должны совпадать. Если типы данных не совпадают, операция копирования возвращает ошибку.
Входные и выходные значения шага должны быть установлены в 1
.
Если вы выбираете этот параметр, используйте Enable blocking model , чтобы указать, блокируют ли операции копирования памяти процессы.
Enable blocking mode
- Включить режим блокировкиУкажите, являются ли операции копирования памяти, которые используют QDMA, блокирующими процессы. Выберите этот параметр, чтобы включить блокировку операций копирования памяти. Когда вы включаете режим блокировки, другая обработка программы ждет, пока операция копирования памяти не будет завершена.
Чтобы включить этот параметр, выберите Use QDMA for copy (if available).
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.