Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...
Состав сооружений: решетки и песколовки: Решетки – это первое устройство в схеме очистных сооружений. Они представляют...
Топ:
Отражение на счетах бухгалтерского учета процесса приобретения: Процесс заготовления представляет систему экономических событий, включающих приобретение организацией у поставщиков сырья...
Теоретическая значимость работы: Описание теоретической значимости (ценности) результатов исследования должно присутствовать во введении...
Интересное:
Аура как энергетическое поле: многослойную ауру человека можно представить себе подобным...
Инженерная защита территорий, зданий и сооружений от опасных геологических процессов: Изучение оползневых явлений, оценка устойчивости склонов и проектирование противооползневых сооружений — актуальнейшие задачи, стоящие перед отечественными...
Распространение рака на другие отдаленные от желудка органы: Характерных симптомов рака желудка не существует. Выраженные симптомы появляются, когда опухоль...
Дисциплины:
2022-09-12 | 30 |
5.00
из
|
Заказать работу |
|
|
Байтовые синхронные коммуникационные порты реализованы в соответствии с [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 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!