Копирование данных из и в раздел памяти
Созданный код для блока копирования памяти копирует данные из памяти процессора и в память процессора в соответствии с параметрами блока. При использовании этого блока для копирования отдельного элемента данных из источника в место назначения блок копирует элемент из источника с использованием исходного типа данных, а затем переводит элемент данных в указанный тип данных назначения.
Включите в модель столько экземпляров блока «Копирование памяти», сколько требуется для управления памятью на целевом процессоре. Каждый экземпляр блока работает с одной переменной, адресом или набором адресов, предоставляемых блоку в качестве входных данных.
Укажите источник и место назначения для копии памяти с помощью параметров блока. Параметры блока можно использовать для управления другими аспектами копии памяти, такими как:
Инициализация для ячеек памяти
Шаг и смещение памяти во время выполнения
Запись операций в память во время инициализации программы, во время завершения программы и в каждый момент времени
Вставка пользовательского исходного кода ANSI ® C до и после каждой операции чтения и записи копии памяти (например, блокировка и разблокировка регистров до и после доступа к ним)
Быстрый прямой доступ к памяти (QDMA) для процессоров и плат, поддерживающих операции копирования QDMA (семейства процессоров C621x, C64xx и C671x)
Блок копирования памяти выполняет операции в три периода во время выполнения программы:
Инициализация
Операции в реальном времени
Завершение
Параметры блока можно использовать для управления тем, когда и как блок инициализирует память, копирует данные или переменные в память и из нее и завершает операции копирования. Параметры позволяют включать и отключать операции копирования памяти в трех периодах независимо друг от друга.
Используйте блок копирования памяти и блок выделения памяти для управления и выделения памяти для пользовательских драйверов устройств, таких как драйверы шины PCI или драйверы в стиле кодека.
Во время моделирования блок «Копирование памяти» не выполняет операцию. Вывод блока не определен.
src - Входные данные для операции копированияИсходные данные для операции копирования памяти, указанные как скаляр или вектор.
Чтобы использовать этот порт в качестве источника для операции копирования памяти, установите параметр Copy from to Input port.
Типы данных: single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
&src - Адрес входных данных для операции копированияАдрес памяти исходных данных для операции копирования, указанный как скаляр или вектор.
Чтобы использовать этот порт в качестве источника для операции копирования памяти, установите параметр Copy from to Specified address и Укажите источник адреса для Input port. Блок копирования памяти преобразует входной порт src кому &src.
Типы данных: single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
src ofs - Смещение для данных, считанных во время операции копированияСмещение для чтения данных во время операции копирования, указанное как скаляр или вектор.
Чтобы создать этот порт, выберите параметр Использовать смещение при чтении и задайте для параметра Указать источник смещения значение Input port.
Типы данных: single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
&dst - Адрес выходных данных для операции копированияАдрес памяти, используемый в качестве места назначения данных для операции копирования, указанный как скаляр или вектор.
Чтобы использовать этот порт в качестве места назначения для операции копирования памяти, установите для параметра Copy значение Specified address и Укажите источник адреса для Input port. Блок копирования памяти преобразует выходной порт dst во входной порт &dst.
Типы данных: single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
dst ofs - Смещение для данных, записанных во время операции копированияСмещение для записи данных во время операции копирования, указанное как скаляр или вектор.
Чтобы создать этот порт, выберите параметр Использовать смещение при записи и задайте для параметра Указать источник смещения значение Input port.
Типы данных: single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
dst - Выходные данные для операции копированияСкопированные данные, указанные как скаляр или вектор.
Чтобы использовать этот порт в качестве места назначения для операции копирования памяти, установите для параметра Copy значение Output port.
Типы данных: single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
Укажите расположение исходной последовательной памяти для операции копирования. Укажите тип данных, размер и другие атрибуты исходной переменной.
Copy from - Источник ввода для операции копированияУкажите источник ввода для части операции копирования, предназначенной для чтения данных. Выберите один из источников, перечисленных в этой таблице.
| Источник считанных данных | Значение параметра для указания |
|---|---|
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 address source - Источник адреса памяти для входных данныхУкажите источник адреса памяти входного источника для операции копирования. Чтобы указать адрес памяти для исходной переменной, выберите Specify via dialog. Этот выбор включает параметр Address, который используется для указания адреса памяти.
Чтобы указать, что блок получает адрес из входного порта, выберите Input port. При выборе Input port, метка входного порта блока изменяется на &src.
Чтобы включить этот параметр, задайте для параметра Копировать из значение Specified address.
При выборе Specify via dialog, этот параметр включает параметр Address, который используется для указания адреса исходной переменной.
При выборе Specify via dialog, установите тип данных в значение, отличное от Inherit from source (значение по умолчанию). Если это изменение не будет выполнено, появится сообщение об ошибке, указывающее на невозможность наследования типа данных, поскольку входной порт не существует.
При выборе Inport port , укажите тип данных для параметра Тип данных.
Address - Адрес памяти исходных данныхУкажите адрес памяти исходных данных в десятичной или шестнадцатеричной форме с преобразованием в десятичную, как показано значением по умолчанию hex2dec('00001000').
В этом примере выполняется преобразование Ox1000 в десятичную форму.
4096 = hex2dec('1000');В этом примере можно указать адрес как 4096 или hex2dec('1000').
Чтобы включить этот параметр, задайте для параметра Копировать из значение Specified address и Укажите источник адреса для Specify via dialog.
Source code symbol - Символ в таблице символов исходного кодаУкажите символ (переменную) в таблице символов исходного кода для копирования. Указанный символ должен существовать в таблице символов для программы. Блок не проверяет, существует ли символ в таблице символов и указан ли символ с допустимым синтаксисом. Введите текст, указывающий символ точно так, как он отображается в коде.
Чтобы включить этот параметр, задайте для параметра Копировать из значение 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).
Если выбран этот параметр, используйте команду Указать источник смещения (Specify offset source), чтобы указать источник смещения.
Используйте «Смещение» для задания значения смещения.
Specify offset source - Источник входного смещенияУкажите источник входного смещения для операции копирования. Чтобы задать значение смещения, выберите Specify via dialog. При выборе этого параметра включается параметр «Смещение», используемый для задания значения смещения.
Чтобы задать блок для получения смещения от входного порта, выберите Input port. При выборе Input port, блок создает входной порт с меткой src ofs и считывает значение смещения из этого порта. src ofs порт позволяет программе динамически изменять смещение во время выполнения программы.
Чтобы включить этот параметр, выберите «Использовать смещение при чтении».
Offset - Количество пропускаемых значений перед копированием первого значения в место назначенияПеред копированием первого значения в место назначения укажите количество пропускаемых значений.
Чтобы включить этот параметр, выберите Использовать смещение при чтении (Use offset when reading) и задайте для параметра Указать источник смещения (Specify offset source to) значение Specify via dialog.
Stride - Интервал для ввода показанийУкажите интервал для чтения входных данных. По умолчанию значение шага равно единице, что означает, что сгенерированный код считывает входные данные последовательно. При добавлении значения шага, не равного единице, при чтении входных данных созданный код пропускает пробелы в исходном адресе, равные шагу.
Эти цифры показывают концепцию шага. На первом рисунке данные копируются без шага. На втором рисунке показаны результаты значения шага два. Значение шага для вывода блока можно задать с помощью параметра Stride на вкладке «Назначение». Для просмотра разниц можно также сравнить шаг со смещением.


Укажите место назначения памяти для операции копирования. Укажите атрибуты назначения.
Copy to - Тип места назначения вывода для операции копированияУкажите тип места назначения вывода для операции копирования. Выберите одно из значений, перечисленных в этой таблице.
| Значение параметра | Назначение записи данных |
|---|---|
Output port | Блок dst выходной порт |
Specified address | Местоположение памяти, указанное параметрами Укажите адрес назначения и адрес |
Specified source code symbol | Символ (переменная), указанный параметром Символ исходного кода |
При выборе Specified address, используйте команду Указать адресное назначение, чтобы указать конечное расположение памяти.
При выборе Specified source code symbolиспользуйте символ кода назначения, чтобы указать символ (переменную) в таблице символов исходного кода, в который следует скопировать переменную.
Specify address source - Адрес источника памяти для назначения выводаУкажите источник целевого адреса памяти переменной для операции копирования. Чтобы указать адрес памяти для переменной, выберите Specify via dialog. Этот выбор включает параметр Address, который используется для указания адреса памяти. Чтобы указать, что блок получает адрес от входного порта, выберите Input port. При выборе Input port, блок создает входной порт с меткой &dst. Динамическое изменение адреса означает, что можно использовать блок для копирования различных переменных путем предоставления адреса переменной из вышестоящего блока в модели.
Чтобы включить этот параметр, установите для параметра Копировать значение Specified address.
При выборе Specify via dialog, этот параметр включает параметр Address, который используется для указания адреса целевой переменной.
Address - Адрес памяти переменной назначенияУкажите адрес памяти целевой переменной в десятичной или шестнадцатеричной форме с преобразованием в десятичную, как показано значением по умолчанию hex2dec('00001000').
В этом примере выполняется преобразование Ox2000 в десятичную форму.
8192 = hex2dec('2000');В этом примере можно указать адрес как 8192 или hex2dec('2000').
Чтобы включить этот параметр, установите для параметра Копировать значение Specified addressи Укажите источник адреса для Specify via dialog.
Source code symbol - Символ в таблице символов исходного кодаУкажите символ (переменную) в таблице символов исходного кода для копирования переменной. Указанный символ должен существовать в таблице символов для программы. Блок не проверяет, существует ли символ в таблице символов и указан ли символ с допустимым синтаксисом. Введите текст, указывающий символ точно так, как он отображается в коде.
Чтобы включить этот параметр, установите для параметра Копировать значение Specified source code symbol.
Data type - Тип данных переменнойУкажите тип данных исходной переменной. Для наследования типа данных из исходной переменной выберите Inherit from source.
Use offset when writing - Использовать смещение при записи выходных данныхУкажите, использует ли блок смещение при записи выходных данных. Значение смещения находится в элементах указанного типа данных. Укажите источник смещения с помощью параметра Указать источник смещения (Specify offset source).
Если выбран этот параметр, используйте команду Указать источник смещения (Specify offset source), чтобы указать источник смещения. Используйте «Смещение» для задания значения смещения.
Specify offset source - Источник смещения для места назначения выводаУкажите источник смещения для места назначения вывода для операции копирования. Чтобы задать значение смещения для переменной назначения, выберите Specify via dialog. При выборе этого параметра включается параметр «Смещение», используемый для задания значения смещения.
Чтобы указать, что блок получает смещение от входного порта, выберите Input port. При выборе Input port, блок добавляет входной порт с меткой dst ofs и считывает значение смещения из этого порта. dst ofs порт позволяет программе динамически изменять смещение во время выполнения.
Чтобы включить этот параметр, выберите «Указать источник смещения».
Offset - Количество пропускаемых значений перед записью первого значения в место назначенияПеред записью первого значения в место назначения укажите количество пропускаемых значений.
Чтобы включить этот параметр, выберите «Использовать смещение при записи» и задайте для параметра «Указать источник смещения» значение Specify via dialog.
Stride - Интервал для записи выходных данныхУкажите интервал для записи выходных данных. По умолчанию значение шага означает, что сгенерированный код записывает входные данные последовательно в место назначения в последовательных местоположениях. При добавлении значения шага, не равного единице, при записи входных данных созданный код пропускает пробелы в адресе назначения, равные шагу.
На этом рисунке показано значение шага три, применяемое для записи входных данных в расположение вывода. Можно указать значение шага для ввода с параметром Stride на панели «Источник». Как показано на рисунке, для более полного управления памятью можно одновременно использовать шаг ввода и шаг вывода.

Sample time - Частота копирования памятиУкажите частоту выполнения операции копирования памяти в секундах. Чтобы использовать постоянное время выборки, укажите Inf. Чтобы наследовать время выборки из входного порта или, если блок не имеет входного порта, из модели Simulink ®, укажите-1.
Настройте параметры, управляющие процессом копирования.
Set memory value at initialization - Установка адреса памяти во время инициализацииУкажите, следует ли инициализировать адрес памяти до определенного значения во время инициализации программы.
При выборе этого параметра используйте комбинацию параметров для настройки значения инициализации.
| Что нужно настроить | Параметр |
|---|---|
| Источник значения инициализации | Укажите источник значений инициализации |
| Значение инициализации как константа | Значение инициализации (константа) |
| Значение инициализации как переменная | Значение инициализации (символ исходного кода) |
| Значение инициализации в качестве маски для управления содержимым регистра на уровне битов | Применить значение инициализации в качестве маски |
| Применение значения маски | Побитовый оператор |
Specify initialization value source - Источник значения инициализацииУкажите источник начального значения. Чтобы настроить источник для инициализации памяти в качестве определенного значения, выберите Specify constant value. Чтобы настроить источник как переменную (символ), выберите Specify 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.
Чтобы использовать значение инициализации в качестве маски, вывод копии должен быть определенным адресом. Выходные данные:
Может быть символом
Не может быть выходным портом
При выборе этого параметра используйте оператор Bitwise для определения способа применения значения маски.
Bitwise operator - Тип побитовой операцииУкажите тип побитовой операции, используемой в качестве маски для управления значением памяти. Применение маски к процессу копирования означает, что в результате можно выбрать отдельные биты. Например, применив маску, можно считать значение пятого бита.
Выберите одну из побитовых операций в этой таблице.
Побитовая операция | Описание |
|---|---|
| Примените значение маски как побитовое И к значению в регистре. |
| Примените значение маски как побитовое ИЛИ к значению в регистре. |
| Примените значение маски как побитовое исключающее ИЛИ к значению в регистре. |
| Сдвиньте биты в регистре, оставленные на число битов, представленных значением инициализации. Например, если значение инициализации равно 3, блок сдвигает значение регистра влево на 3 бита. В этом случае значение должно быть положительным целым числом. |
| Переместите биты в регистре вправо на число битов, представленных значением инициализации. Например, если значение инициализации равно 6, блок сдвигает значение регистра вправо на 6 бит. В этом случае значение должно быть положительным целым числом. |
Чтобы включить этот параметр, выберите Применить значение инициализации в качестве маски.
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 непосредственно перед записью программы в указанное место памяти. Этот параметр и команду Вставить пользовательский код после записи в память можно использовать для блокировки и разблокировки регистров до и после обращения к ним. Например, некоторые процессоры имеют регистры, которые могут потребоваться для разблокировки и блокировки макросов EALLOW и EDIS до и после обращения к ним программы.
Если выбран этот параметр, используйте пользовательский код, чтобы указать пользовательский код ANSI C для вставки в созданный код непосредственно перед операцией записи в память.
Insert custom code after memory write - Пользовательский код после флага записи в памятьУкажите, вставляет ли генератор кода пользовательский код ANSI C сразу после записи программы в указанное место памяти. Можно вставить пользовательский код перед записью в память и этот параметр, чтобы заблокировать и разблокировать регистры до и после обращения к ним. Например, некоторые процессоры имеют регистры, которые могут потребоваться для разблокировки и блокировки макросов EALLOW и EDIS до и после обращения к ним программы.
Если выбран этот параметр, используйте пользовательский код, чтобы указать пользовательский код ANSI C для вставки в созданный код сразу после операции записи в память.
Custom code — Укажите пользовательский код ANSI C для вставки в созданный код непосредственно перед или сразу после операции записи в память. Указанный код отображается в созданном коде точно так же, как он вводится.
Чтобы включить этот параметр, выберите Вставить пользовательский код перед записью в память или Вставить пользовательский код после записи в память.
Use QDMA for copy (if available) - Используйте быстрый прямой доступ к памяти (QDMA) для копированияУкажите, следует ли включить быстрый прямой доступ к памяти (QDMA) для процессоров, поддерживающих QDMA.
При выборе этого параметра:
Типы данных источника и назначения должны совпадать. Если типы данных не совпадают, операция копирования возвращает ошибку.
Значения шага ввода и вывода должны быть установлены в 1.
Если выбран этот параметр, используйте параметр Включить модель блокировки, чтобы указать, являются ли операции копирования памяти блокирующими процессами.
Enable blocking mode - Включить режим блокировкиУкажите, блокируют ли операции копирования памяти, использующие QDMA. Выберите этот параметр, чтобы включить процессы блокирования операций копирования памяти. При включении режима блокировки другая обработка программы ожидает завершения операции копирования памяти.
Чтобы включить этот параметр, выберите Использовать QDMA для копирования (если доступно).
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.