Nanonyam — нямка для любителей AVR микроконтроллеров
- Войдите на сайт для отправки комментариев
Привет, Интернет. Представляю вам свой очень бредовый проект под названием Nanonyam (Наноням). Это специальная виртуальная машина для Windows, работающая на прошивке для микроконтроллера ATMEGA2560.
Идея в том, чтобы писать простые программы для Windows непосредственно в базовой версии Arduino IDE (или WinAVR, AVR Studio и других средах для AVR). Это не просто симулятор микроконтроллера. Собственно, от микроконтроллера тут только ядро, а вместо периферии - интерфейс для вызова функций Windows API.
На данный момент есть функции для работы с файловой системой (запись и считывание файлов, запуск программ), для считывания клавиатуры и мыши, для рисования в окне программы, 8 программных таймеров, для работы с COM-портом (толком не тестировал ещё). Всего пока около 250 виртуальных функций.
Я не знаю уже как объяснять идею (видимо, слишком она бредовая), поэтому я подготовил несколько примеров программ в ардуино на библиотеках Nanonyam, сделал описание в PDF и оформил всё на специальной странице на моём сайте. Хотелось бы узнать ваше мнение. Тут можно скачать архив с программой (бета-версия), описанием и скетчем, в котором сразу несколько примеров:
http://www.nanoslavic.ru/nanonyam.html
Там же на странице указана ссылка на сайт Касперского, чтобы проверить скаченный архив на вирусы (я бы на вашем месте это делал для всех подобных программ). Обязательно почитайте описание программы Nanonyam_RU_v1.pdf (первые 10 страниц, описание функций читать не обязательно).
Меня сейчас всех больше интересует работоспособность программы на других компьютерах. Можно просто разархивировать архив и запустить nanonyam\nanonyam.exe - должен запуститься пример "Hello, World", так как его прошивка уже лежит в комплекте. Если у вас не заработает программа, то хотелось бы увидеть какие-ошибки выдаются. Кстати, программа должна работать и под Linux в среде Wine (у меня работает).
Вобщем, если кого-то заинтересовал, жду ваши отзывы, советы, умные мысли и идеи. Сразу скажу, что я не буду отвечать на вопрос типа "нафига это надо" - просто захотелось, вот и сделал.
Разумеется, можно. https://zakon.ru/blog/2016/10/11/reversinzhiniring_i_rossijskoe_pravo
Разумеется, можно. https://zakon.ru/blog/2016/10/11/reversinzhiniring_i_rossijskoe_pravo
Ой да и пожалуйста:) Это кстати из какой-то лицензии английской, надо убрать будет.
https://www.virustotal.com/gui/file/85ea903e4979176f18e5af678aca3257c5ad591a5090f37d99278c77e98cb077/detection
10 из 61
правда, это так себе антивирусы
Ну а так ага, это всё-таки библиотека с прослойками.
правда, это так себе антивирусы
Я тоже там проверял и даже знаю на что они реагируют: в nanonyam есть функции для считывания клавиатуры в фоновом режиме (функции key_GetArrayGlobal() и key_GetBindGlobal()), а также для имитации нажатия кнопок. Впрочем, эти функции есть во многих играх.
Мило смотрится :)
Ну, может кому и пригодится nanonyam. Только это не виртуальная машина.
Ну, может кому и пригодится nanonyam. Только это не виртуальная машина.
Почему нет? Виртуальная машина исполняет байт код. Здесь в качестве него используется бинарный код для ядра AVR.
Nanoslavic, вообще-то, в первую очередь хотелось бв знать о назначении и возможностях программы. Т.е. для чего она нужна и что умеет делать.
Nanoslavic, вообще-то, в первую очередь хотелось бв знать о назначении и возможностях программы. Т.е. для чего она нужна и что умеет делать.
На счёт что умеет делать написано в описании, которое можно скачать вместе с программой http://www.nanoslavic.ru/nanonyam.html
На счёт для чего она: а не для чего. Захотел и сделал. Если кто-то придумает и задействует, тот и молодец:)
я программу еще не смотрел, но видится, что можно применить для замены виртуальных портов? Нет???
В документации функция по работе с компортами есть, а реально реализована?
Однозначно видится применение как HUB RS232. Если надо расшарить один ком порт на несколько, мастер TX на несколько slave RX, а вот от нескольких slave TX на master RX видимо надо очередь делать.
Это то, что точно найдёт практическое применение )))
Может напишешь пример, я испытаю на реальном железе...
Здесь только одна засада видится, по номерам компортов, девайсозависимые однако получаются
я программу еще не смотрел, но видится, что можно применить для замены виртуальных портов? Нет???
В документации функция по работе с компортами есть, а реально реализована?
Не очень понял идею с хабом и заменой портов. Программы для COM-порта реализованы, но протестировал я их побыстрому (вроде что-то передавалось).
Так то программа позволяет одновременно работать с количеством портов до 255 (теоретически), если нужны буферы, то я их могу добавить в будущих версиях. Впрочем, я тут и пишу, чтобы новые идеи найти, так что если конкретнее опишете задачу, я постараюсь реализовать.
идея простая реализовать хаб для RS232
функции хаба:
1. Один порт rs232 - мастер, всё что на него приходит по RX он транслирует по RX на несколько слэйвов, всё приходящее по TX от слэйвов он отправляет по своему TX
2. слэйвов может быть несколько, по сути разветвитель RS232
https://www.fabulatech.com/serial-port-splitter.html
https://www.fabulatech.com/serial-port-splitter.html
Есть даже free для 32-х и, даже пользую, UR5EQF сама может виртуалить один порт...
Я тут железкой озадачился однако...пока подобрал оптопары на 5 киловольт (такие в бесперебойниках), надо всё развязать жеж
Да, пробовал IDE через расшаренный порт, работает и даже шьёт, только один раз комп в синий экран выпал, это был первый синий экран у него за 10 лет )))
идея простая реализовать хаб для RS232
функции хаба:
1. Один порт rs232 - мастер, всё что на него приходит по RX он транслирует по RX на несколько слэйвов, всё приходящее по TX от слэйвов он отправляет по своему TX
2. слэйвов может быть несколько, по сути разветвитель RS232
Вобщем, написал для наноням простой скетч. Из одного порта данные считываются и пересылаются в другой. И наоборот. Пока всего два порта, если заработает, то можно сделать больше ведомых портов.
Вот архив со скетчем и ехе-файлом. В скетче нужно указать номера портов и частоту, потом нажать CTRL+ALT+S чтобы обновить файл-прошивки, а потом можно запускать Nanonyam.exe
http://nanoslavic.com/downloads/comport_hub.zip
Надеюсь у вас не WindowsXP, а то в Visual Studio 2019 не хочет компилировать под эту ОС.
Если запустится, но не заработает, говорите, буду думать что изменить.
дай чуток времени, а для проверки я написал два скетча, один эмулирует рацию, другой усилитель и антенное согласующее устройство
База какого проекта для симуляции ядра AVR и периферии контроллера была взята за основу?
https://github.com/search?q=simulator+avr&type=
или разрабатывалось что то из своего?
P.S. Какие вообще открытые симуляторы кто то использует? а то, например, в Proteus не поддерживается режим самопрограммирования для AVR контроллеров. Интересно было бы проверить эту возможность на рабочей прошивке для Atmega162 на варианте amForth для данного контроллера.
База какого проекта для симуляции ядра AVR и периферии контроллера была взята за основу?
Я прорабатывал свою версию по описанию инструкций http://ww1.microchip.com/downloads/en/devicedoc/atmel-0856-avr-instruction-set-manual.pdf
У меня тоже нет самопрограммирования, да и регистры только основные. Причём я прогонял тесты в симуляторе AVR Studio, сравнивал содержание регистров и флагов и в какой-то инструкции один флаг в какой-то момент у меня не совпадал, хотя по описанию всё правильно. На вычисления это не влияло, поэтому я оставил как есть.
дай чуток времени, а для проверки я написал два скетча, один эмулирует рацию, другой усилитель и антенное согласующее устройство
Спешить некуда:)
дай чуток времени, а для проверки я написал два скетча, один эмулирует рацию, другой усилитель и антенное согласующее устройство
Спешить некуда:)
Запустилось, законнектилось! А вот реально создать виртуальный ком-порт, тогда к нему можно было приконнектится программой и смотреть, что в хабе крутится, а так порты соединяются. естественно удерживаются от присоединения к ним...
Запустилось, законнектилось! А вот реально создать виртуальный ком-порт, тогда к нему можно было приконнектится программой и смотреть, что в хабе крутится, а так порты соединяются. естественно удерживаются от присоединения к ним...
Если сейчас данные передаются через мою программку, то их можно как-то выводить на экран, ведь там данные через буфер идут. Может даже какой-то дешифратор команд сделать и выводить их названия на эран в виде стека или как-то ещё.
Дальше можно сделать, чтобы через конфигурационный файл можно было добавлять номера портов с нужной частотой (если она разная), чтобы постоянно не компилировать программу.
Лет 17-ть назад делал почти то же самое для связи через СОМ порт с симулируемым ядром PDP-11 или AVR и средой разработки (было интересно - исходники Asm x86 и Форта SPF 3.75) :)
Какие то программы виртуальных компортов (помимо железного варианта) даже сносно работали в рамках XP, не без танцев, конечно, с бубном. (типа VSPD). Сейчас, все попытки завести соединение программ через виртуальные СОМ (VSPD, Com0Com) порты не получаются в рамках Win10.
P.S. Делал под такой инструментарий http://www.cqham.ru/forum/showthread.php?8188 (раньше хватало, что бы заработало соединение через программный драйвер виртуального СОМ порта изменить некоторые временные тайминги в настройке структуры АПИ Сом порта под Windows) и данный инструментарий даже пересобирал.
Кто то по мотивам данного инструментария сделал себе ассемблер для AVR для запуска в рамках Linux
http://www.forth.org.ru/news/Форт-ассемблер для AVR#0
Кстати, симулятор AVR из топика, в представленном варианте, вероятно неплохо будет себя чувствовать в рамках запуска в KolibriOS операционной системы.
Владимир, я вижу вы давно в теме)))
Владимир, я вижу вы давно в теме)))
Если, эта фраза адресована мне, то могу описать как это было сделано, хотя и не Владимир. :)
Запустилось, законнектилось! А вот реально создать виртуальный ком-порт, тогда к нему можно было приконнектится программой и смотреть, что в хабе крутится, а так порты соединяются. естественно удерживаются от присоединения к ним...
Если сейчас данные передаются через мою программку, то их можно как-то выводить на экран, ведь там данные через буфер идут. Может даже какой-то дешифратор команд сделать и выводить их названия на эран в виде стека или как-то ещё.
Дальше можно сделать, чтобы через конфигурационный файл можно было добавлять номера портов с нужной частотой (если она разная), чтобы постоянно не компилировать программу.
связка Эмулятор девайса на Ардуино нано - Мастер -Слэйв - виртуальный 1 - виртуальный 2 - Программа лога работает )))
Давай больше слэйвов
связка Эмулятор девайса на Ардуино нано - Мастер -Слэйв - виртуальный 1 - виртуальный 2 - Программа лога работает )))
Ну я уже переделал от двух и больше. Теоретически должно работать, можешь сам что-нибудь переделать в скетче http://nanoslavic.com/downloads/comport_hub.zip