Једног дана сам имао луду идеју да донесем
Пројекат сам назвао Нанониам (Нанониам) и чак сам смислио лого за њега (цртао сам 5 минута).
За оне који размишљају у смислу Ардуина, можемо рећи да је Нанониам виртуелни Ардуино штит за контролу Виндовс-а.
Другим речима, Нанониам је виртуелна машина која користи фирмвер за АВР микроконтролер (препоручује се АТМЕГА2560) као бајт код. Унутар ове виртуелне машине налази се АВР симулатор језгра, али уместо периферних уређаја, који се налазе на СРАМ адресама од 0к0060 до 0к01ФФ, постоји посебан интерфејс за виртуелне функције (укључујући Виндовс АПИ функције). И овде је веома важно одмах схватити: код за Нанониам не би требало да има приступ наведеном опсегу меморије, како не би случајно позвао, на пример, функцију брисања датотека или форматирања диска. Остатак опсега СРАМ меморије од 0к0200 до 0кФФФФ (ово је више него у правом микроконтролеру) доступан је кориснику за било коју сврху. Одмах напомињем да постоји посебна заштита од случајног покретања фирмвера правог микроконтролера (или фирмвера из друге архитектуре): пре него што активирате „опасне“ функције, потребно је да позовете посебну лукаву виртуелну функцију. Постоје и неке друге безбедносне функције.
Да бисте креирали програме за Нанониам, потребно је да користите посебне библиотеке које имплементирају све тренутно доступне виртуелне функције. Преузмите виртуелну машину Нанониам и библиотеке за њу
Нанониам је бесплатан за кућну и комерцијалну употребу. Програм Нанониам се пружа на принципу „као што јесте“. Изворни код није наведен.
Програм је тренутно у фази тестирања. Имплементирано је око 200 виртуелних функција које вам омогућавају да креирате једноставне програме за Виндовс.
Очигледно, стварање нечег компликованог у таквој виртуелној машини неће успети, пошто је меморија за код само 256 кБ. Подаци се могу чувати у одвојеним датотекама, бафер за графички део је имплементиран екстерно. Све функције су поједностављене и прилагођене за 8-битну архитектуру.
Шта можете да радите у Наноњаму? Наишао сам на неколико проблема.
Развој програмских блокова
Једном сам морао да дизајнирам сложен мени за графички екран од 128к64 тачака. Заиста нисам желео да стално учитавам фирмвер у прави микроконтролер да видим како пиксели изгледају. И тако је рођена идеја о Наноњаму. Слика испод приказује слику са правог ОЛЕД екрана једне од ставки у истом менију. Сада могу да радим кроз то без правог уређаја.
Нанониам (у својој коначној идеји) је добар алат за израду програмских блокова за микроконтролере, јер постоје функције за рад са графиком (можете симулирати дисплеје и индикаторе), са фајловима (можете правити дневнике, читати тестне податке), са тастатуру (можете читати до 10 дугмади у исто време), са ЦОМ портовима (овде је посебна ставка).
Креирање брзих програма
На пример, потребно је да брзо обрадите 100500 текстуалних датотека. Сваки треба отворити, мало модификовати по неком једноставном алгоритму, сачувати и затворити. Ако сте мајстор Пајтона, онда вам честитам, имате све. Али ако сте прекаљени ардуино (а има их много), онда ће вам Нанониам помоћи у решавању овог проблема. Ово је мој други циљ у Нанониам-у: да додам многе корисне функције као што су обрада текста, снимање екрана или симулација притиска на тастере у систему (све то, иначе, већ постоје), као и многе друге функције за решавање рутинских задатака .
Тестирање хардвера преко ЦОМ порта
Нанониам може деловати као терминал који ради у складу са вашим алгоритмом. Можете нацртати мали мени за контролу уређаја и приказ података примљених са порта. Можете сачувати и читати податке из датотека за анализу. Практичан алат за једноставно отклањање грешака и калибрацију хардвера, као и за креирање једноставних виртуелних контролних панела за инструменте. За студенте и младе научнике овај пројекат може бити веома користан.
Обука програмирања
Међутим, као и код целог Ардуино пројекта, главна корисност Нанониама лежи у поједностављењу функција, интерфејса и покретача. Стога би овај пројекат требао бити од интереса за почетнике програмера и оне који су задовољни нивоом ардуина. Иначе, ја још увек нисам детаљно проучавао ардуино, јер сам увек користио ВинАВР или АВР Студио, али сам почео са асемблером. Због тога ће доњи пример програма бити мало погрешан, али сасвим функционалан.
Здраво Хабр!
Време је да се упознате са неким функцијама Нанониам-а и напишете једноставан програм. Писаћемо у Ардуину, али не на уобичајен начин, већ на начин на који сада могу (већ сам рекао да ово окружење још нисам добро схватио). Прво направите нову скицу и изаберите Мега2560 плочу.
Сачувајте скицу у датотеку и копирајте следећу
#include <stdio.h>
#include "NanonyamnN_System_lib.c"
#include "NanonyamnN_Keyboard_lib.c"
#include "NanonyamnN_File_lib.c"
#include "NanonyamnN_Math_lib.c"
#include "NanonyamnN_Text_lib.c"
#include "NanonyamnN_Graphics_lib.c"
#include "NanonyamnN_RS232_lib.c"
Још исправније би било направити посебан модул „Нанониам фор Ардуино“, који се може инсталирати директно са Ардуина. Чим схватим, урадићу то, али за сада само показујем суштину рада са виртуелном машином. Пишемо следећи код:
//Сразу после запуска рисуем текст в окне
void setup() {
sys_Nanonyam();//Подтверждаем код виртуальной машины
g_SetScreenSize(400,200);//Задаём размер дисплея 400х200 точек
sys_WindowSetText("Example");//Заголовок окна
g_ConfigExternalFont(0,60,1,0,0,0,"Arial");//Задаём шрифт Windows в ячейке шрифтов 0
g_SetExternalFont(0);//Выбираем ячейку шрифтов 0 для рисования текста
g_SetBackRGB(0,0,255);//Цвет фона синий
g_SetTextRGB(255,255,0);//Цвет текста жёлтый
g_ClearAll();//Очищаем экран (заливка цветом фона)
g_DrawTextCenterX(0,400,70,"Hello, Habr!");//Рисуем надпись
g_Update();//Выводим графический буфер на экран
}
//Просто ждём закрытия программы
void loop() {
sys_Delay(100);//Задержка и разгрузка процессора
}
Скицирајте овим програмом
Притиснемо дугме "Провери" и не би требало да буде грешака.
Сада морате да набавите бинарну датотеку (фирмвер). Изаберите мени "Скица>>Извези бинарну датотеку (ЦТРЛ+АЛТ+С)".
Ово ће копирати две ХЕКС датотеке у фасциклу са скицама. Узимамо само датотеку без префикса "витх_боотлоадер.мега".
Постоји неколико начина да наведете ХЕКС датотеку на Нанониам виртуелној машини, сви су описани
Слично томе, можете креирати програме у другим окружењима, као што су АВР Студио или ВинАВР.
Ту завршавамо наше упознавање са Наноњамом. Главна идеја треба да буде јасна.
Хвала свима на пажњи и добром програмирању!
Извор: ввв.хабр.цом