Байтовые синхронные коммуникационные порты — КиберПедия 

Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...

История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...

Байтовые синхронные коммуникационные порты

2022-09-12 27
Байтовые синхронные коммуникационные порты 0.00 из 5.00 0 оценок
Заказать работу

Байтовые синхронные коммуникационные порты реализованы в соответствии с [1, раздел 10]. Для эмуляции порта реализован класс COMBlock. Данный класс имеет собственную реализацию функции Operate, которая запускается на каждый такт процессора. Таким образом порт может работать независимо от ядра процессора параллельно с ядром.

Взаимодействие порта с ядром осуществляется через регистры ICAX, ICCX, OCAX, OCCX (X – номер порта). Указатели на регистры ядра при инициализации передаются объекту – порту. Все операции внутри порта осуществляются в соответствии со значениями регистров.

 

Порты ввода/вывода общего назначения

Порты ввода/вывода общего назначения реализованы в соответствии с [1, раздел 11].

Работа портов эмулируется посредством регистров ядра NM6406 IOP и IOPCR. Кроме того, ядро предоставляет две интерфейсные функции:

1) uint64 WritePIO(uint8 val) – запись в порт общего назначения;

2) uint8 NM6405::ReadPIO() – чтение из порта общего назначения.

 

Данные функции позволяют корректно читать данные из порта и писать данные в порт со стороны внешних по отношению к ядру устройств. При записи и чтении порта с помощью данных функций учитывается режим работы каждого бита порта. При записи с помощью WritePIO изменяются только те биты, которые за программированы на ввод, при этом биты, запрограммированные на «вывод» не изменяются. При чтении значения порта биты, запрограммированные на «ввод» всегда равны нулю.

 

Кэш-память команд

Кэш-память команд моделируется классом InsCache. Класс InsCache реализует интерфейс iMemInterface. При чтении инструкций, ядро процессора вызывает функцию ReadMem экземпляра класса InsCache. В зависимости от режима работы и состояния кэш-памяти инструкция читается либо из внутренней кэш-памяти, либо осуществляется обращение по шине. Задержка (функция SetMemLock) также рассчитывается в зависимости от того, из какой память было осуществлено чтение команды.

 

Блок упаковки-распаковки векторов данных

Блок упаковки-распаковки векторов данных эмулируется классом TPuBlock. Класс TPuBlock реализует интерфейс iMemInterface и функционирует в соответствии с [2, раздел 4].

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

7 Модуль ввода/вывода ‑ SEMIHOSTING

Назначение модуля

Модуль позволяет ПО Nero Matrix (далее NM) работать с файлами на хосте, на котором запускается эмулятор. Данный модуль позволяет реализовать библиотеку stdio, с помощью которой приложения для NM, запускаемые на эмуляторе, могут открывать файлы на чтение и на запись, читать из файлов, записывать в файлы, а также работать со стандартными потоками stdin, stdout, stderror.

 

Исполнение модуля

С точки зрения программиста модуль выполнен в качестве периферийного устройства, регистры которого доступны как ячейки памяти по заданному адресу. Начальный адрес регистров модуля (адрес первого регистра) может быть определён в конфигурационном файле. Адрес модуля по умолчанию равен 0xFF000000.

 

Регистры и команды

Модуль управляется посредством последовательной записи в его регистры. Все регистры имеют размер 32 бита. Список регистров приведён в таблице 7.3.1:

Таблица 7.3.1 ‑ Список регистров

Смещение регистра Описание Примечание
0x0 Регистр команды 1
0x1 Первый аргумент команды  
0x2 Второй аргумент команды  
0x3 Третий аргумент команды  
0x4 Четвёртый аргумент  

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

За исключением команды fclose все функции модуля возвращают значение. Возвращаемое значение находится в регистре команд.

Список доступных команд с описанием аргументов приведен в таблице 7.3.2.

Таблица 7.3.2 ‑ Список доступных команд

Код команды 0x1 Примечание
Описание команды semi_fopen – открытие файла  
Аргумент 1 Адрес строки –имени файла  
Аргумент 2 способ открытия файла 1- чтение бинарного файла 2- чтение текстового файла 3- запись бинарного файла 4- запись текстового файла  
Аргумент 3 -  
Аргумент 4 -  
Возвращаемое значение Дескриптор файла  
Код команды 0x2  
Описание команды semi_fclose  
Аргумент 1 Дескриптор файла  
Аргумент 2    
Аргумент 3    
Аргумент 4    
Возвращаемое значение Нет  
Код команды 0x3  
Описание команды semi_fread – чтение данных из файла  
Аргумент 1 Указатель на буфер памяти для чтения  
Аргумент 2 Размер элемента для чтения 1
Аргумент 3 Кол-во элемента для чтения 1
Аргумент 4 Дескриптор файлов  
Возвращаемое значение Количество прочитанных байтов  

 

 

Продолжение таблицы 7.3.2

Код команды 0x4  
Описание команды semi_fwrite – запись данных в файл  
Аргумент 1 Указатель на буфер памяти для записи  
Аргумент 2 Размер элемента для записи 1
Аргумент 3 Кол-во элементов для записи 1
Аргумент 4 Дескриптор файлов  
Возвращаемое значение Количество записанных байтов  
Код команды 0x5  
Описание команды semi_fseek – смещение позиции в файле  
Аргумент 1 Дескриптор файла  
Аргумент 2 Смещение (значение интерпретируется как знаковое)  
Аргумент 3 Позиция, относительно которой вычисляется смещение 1 – Относительно начала файла 2 – Относительно текущей позиции 3 – Относительно конца файла  
Аргумент 4    
Возвращаемое значение 0 – в случае успешного смещения 1 – в случае ошибки  
Код команды 0xA  
Описание команды exit– окончание работы программы и выход из симулятора  
Аргумент 1 Возвращаемое значение  
Возвращаемое значение Значение, переданное в качестве аргумента в функцию exit. Если трассировщик вызван с функцией –rv то данное значение будет передано в виде результата работы трассировщика  

 

Примечание 1 ‑ понятие «размер элемента» и «количество элементов» определяются как в описании соответствующих функций в stdio.

 

 



Поделиться с друзьями:

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

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

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

Состав сооружений: решетки и песколовки: Решетки – это первое устройство в схеме очистных сооружений. Они представляют...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.014 с.