ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
21 ноября
1017431
Связанные сообщения
Синтетический Порт
Начиная с virtual environment смешалось всё. JSON и всё такое прочее -- это детали реализации конкретной системы, а не высокоуро...2020-07-11
Железо нужно симулировать не на уровне битов и фронтов сигналов, а на уровне высокоуровневых операций (например, чтение-запись б...2019-11-07
Спасибо, вообще в документе многие пункты достаточно разумны, я особо подчерку для некоторых здешних читателей:2019-10-30
Когда часть ПО, которая на стыке с железом, замещается на симулятор для ПК и вся программа запускается и отлаживается на ПК. В и...2019-10-02
Для этого не нужен именно ваш прибор, для этого может быть вообще не нужно железо (про "синтетический порт" и Evgeny_CD и я уже ...2019-10-02
Помимо прочего при нормальном программировании всегда делается какой-то "логгер" ведущий протокол работы программы. Потому, что ...2019-08-10
От проекта зависит. Насколько чётко выделена аппаратно-зависимая часть и насколько абстракции используемые в старом проекте реал...2019-05-24
Собственно можно код запускать в эмуляторе процессора (qemu), которому привязать симуляцию нужной аппаратуры, или заменить HAL н...2019-02-06
Жалкая паделка финских студентов написана на 100% на C, из ассемблера только вектора прерываний, crt и ещё мелочи, в C30 v3.31. ...2014-04-10
Кто о чем, а вшивый о бане я о кодевеломпенте софта-железа. Итак, пусть у нас есть Tcl, который позволяет прикручивать "в...2012-02-24
Кстати, про синтетические системы и реальное время. Все гораздо интереснее, чем кажется!2007-07-28
evgeniy1294 (11.07.2020 12:33, просмотров: 12060)
Требуется мнение об идее реализации синтетических портов, пока привожу основные тезисы: Синтетической порт(Synth port) представляет собой программу, платформонезависимая логика которой запускается не на физическом устройстве, а в синтетическом (программном) окружении. Синтетическая периферия является высокоуровневой программной реализацией аппаратной части микроконтроллера (МК) и предназначена для отладки платформонезависимой логики. Синтетическая периферия не ставит 

перед собой цель точной эмуляции поведения железа и представляет собой некую обобщенную программную реализацию того или иного периферийного блока. Модули, реализующие синтетическую периферию, пишутся по общим с драйверами правилам. Соблюдение этих правил позволит собирать один и тот же код под разные платформы без накладных расходов, упращая поддержу разных ревизий плат и ускоряя разработку новых устройств. Примечание: правила написания индивидуальны для каждого вида блока ввиду их различного назначения и аппаратной реализации. Разумеется, есть и общие для модулей правила. Виртуальное окружение (Environment) представляет собой набор тестов, симулирующих работу устройств, которыми должен управлять целевой (Target) микроконтроллер. Примером таких устройств может быть spi-память, IO на разъёмах, микросхемы-драйверы (например RS-422). Некоторые из этих интерфейсов могут связывать два окружения между собой, тот же драйвер RS-485. Окружение может служить также для прокидывания событий и данных в другое ПО, например, создавая виртуальный TTY, связанный с UART синтетического устройства. Виртуальное окружение создается сервером согласно описанию, представленному в формате JSON. Основным элементам окружения является Router, Bus, Device и Interconnect. В задачи Router входит приём команд от сервера и передача их к Device через нужную шину либо передача серверу сообщения от Device. Задача Bus - доставить сообщение нужному устройству. Задача Device - симуляция логики работы физического устройства, например SPI-Flash, либо генерация событий (stimulus). Одно и тоже устройство может быть присоединено к нескольким шинам (Например, GPIO + SPI). Задачей Interconnect является передача команд и данных между окружениями. Это позволяет производить симуляцию сетей, например Modbus. Элементы виртуального окружения могут делать выводы о логических ошибках при работе с ними, например: обращение к устройству I2C по несуществующему адресу, обращение к устройству SPI без сигнала CS, запись в несуществующий регистр и т.д. Информация об обнаруженных проблемах будет выведена в лог. Примечание: построение синтетического кода планируется на базе Actor Model фреймворков. Для с++ - SObjectizer (лицензия BSD), на питоне - Thespian (пока не изучал)