Бір күні менде ақылсыз ой келді
Мен жобаны Nanonyam (Nanonyam) деп атадым, тіпті оның логотипін де ойлап таптым (мен 5 минут бойы сурет салдым).
Arduino тұрғысынан ойлайтындар үшін Nanonyam Windows жүйесін басқаруға арналған виртуалды Arduino қалқаны деп айта аламыз.
Басқаша айтқанда, Nanonyam - байт код ретінде AVR микроконтроллері үшін микробағдарламаны (ATMEGA2560 ұсынылады) пайдаланатын виртуалды машина. Бұл виртуалды машинаның ішінде AVR негізгі симуляторы бар, бірақ 0x0060-тан 0x01FF-ге дейінгі SRAM мекенжайларында орналасқан перифериялық құрылғылардың орнына виртуалды функцияларға (Windows API функцияларын қоса) арнайы интерфейс бар. Және бұл жерде бірден түсіну өте маңызды: Nanonyam коды, мысалы, файлдарды жою немесе дискіні пішімдеу функциясын кездейсоқ шақырмау үшін көрсетілген жад ауқымына қол жеткізе алмауы керек. 0x0200-ден 0xFFFF-ге дейінгі SRAM жадының қалған диапазоны (бұл нақты микроконтроллердегіден көп) кез келген мақсатта пайдаланушыға қол жетімді. Мен нақты микроконтроллердің микробағдарламасының (немесе басқа архитектураның микробағдарламасының) кездейсоқ іске қосылуынан арнайы қорғаныс бар екенін бірден атап өтемін: «қауіпті» функцияларды іске қоспас бұрын, арнайы күрделі виртуалды функцияны шақыру керек. Басқа да қауіпсіздік мүмкіндіктері бар.
Nanonyam үшін бағдарламалар жасау үшін қазіргі уақытта қол жетімді барлық виртуалды функцияларды жүзеге асыратын арнайы кітапханаларды пайдалану қажет. Ол үшін Nanonyam виртуалды машинасын және кітапханаларды жүктеп алыңыз
Nanonyam үйде және коммерциялық пайдалану үшін тегін. Nanonyam бағдарламасы "сол қалпында" негізінде беріледі. Бастапқы код берілмейді.
Бағдарлама қазір тестілеу кезеңінде. Windows үшін қарапайым бағдарламаларды жасауға мүмкіндік беретін 200-ге жуық виртуалды функциялар іске асырылды.
Мұндай виртуалды машинада күрделі нәрсені жасау жұмыс істемейтіні анық, өйткені кодтың жады бар болғаны 256 кБ құрайды. Деректер бөлек файлдарда сақталуы мүмкін, графикалық бөлікке арналған буфер сырттан жүзеге асырылады. Барлық функциялар жеңілдетілген және 8-биттік архитектураға бейімделген.
Нанонямда не істей аласыз? Мен бірнеше мәселемен келдім.
Бағдарлама блоктарын әзірлеу
Маған бір рет 128x64 нүктелік графикалық дисплей үшін күрделі мәзірді құрастыру керек болды. Мен пикселдердің қалай көрінетінін көру үшін микробағдарламаны нақты микроконтроллерге үнемі жүктегім келмеді. Осылайша Наноням идеясы дүниеге келді. Төмендегі суретте сол мәзірдегі элементтердің бірінің нақты OLED дисплейінен алынған кескін көрсетілген. Енді мен оны нақты құрылғысыз жұмыс істей аламын.
Nanonyam (соңғы идеясы бойынша) микроконтроллерлерге арналған бағдарлама блоктарын өңдеуге арналған жақсы құрал, өйткені графикамен (дисплейлер мен индикаторларды модельдеуге болады), файлдармен (журналдарды жасауға, сынақ деректерін оқуға) арналған функциялар бар. пернетақта (бір уақытта 10 түймені оқуға болады), COM порттары бар (бұл жерде бөлек элемент).
Жылдам бағдарламаларды құру
Мысалы, 100500 мәтіндік файлды жылдам өңдеу керек. Олардың әрқайсысын ашу, кейбір қарапайым алгоритмге сәйкес сәл өзгерту, сақтау және жабу қажет. Егер сіз Python шебері болсаңыз, мен сізді құттықтаймын, сізде бәрі бар. Бірақ егер сіз шыңдалған ардуино болсаңыз (және олардың көпшілігі бар), онда Nanonyam сізге бұл мәселені шешуге көмектеседі. Бұл менің Нанонямдағы екінші мақсатым: мәтінді өңдеу, скриншоттарды түсіру немесе жүйедегі пернелерді басу сияқты көптеген пайдалы функцияларды (айтпақшы, олардың барлығы бар), сондай-ақ күнделікті тапсырмаларды шешуге арналған көптеген басқа функцияларды қосу .
COM порты арқылы аппараттық құралдарды тексеру
Nanonyam сіздің алгоритміңізге сәйкес жұмыс істейтін терминал ретінде әрекет ете алады. Құрылғыны басқару және порттан алынған деректерді көрсету үшін шағын мәзірді салуға болады. Талдау үшін файлдардан деректерді сақтауға және оқуға болады. Аппараттық құралдарды қарапайым жөндеуге және калибрлеуге, сондай-ақ қарапайым виртуалды құралдарды басқару панелін жасауға арналған ыңғайлы құрал. Студенттер мен жас ғалымдар үшін бұл жоба өте пайдалы болуы мүмкін.
Бағдарламалауды оқыту
Дегенмен, бүкіл Arduino жобасы сияқты, Nanonyam-тың негізгі пайдалылығы функцияларды, интерфейсті және жүктеушіні жеңілдетуде жатыр. Сондықтан бұл жоба жаңа бастаған бағдарламашыларды және arduino деңгейіне қанағаттанғандарды қызықтыруы керек. Айтпақшы, мен әлі де arduino-ны егжей-тегжейлі зерттеген жоқпын, өйткені мен әрқашан WinAVR немесе AVR Studio-ны қолдандым, бірақ ассемблерден бастадым. Сондықтан төмендегі мысал бағдарламасы сәл қате, бірақ өте жұмыс істейді.
Сәлем Хабр!
Кейбір Nanonyam мүмкіндіктерімен танысып, қарапайым бағдарлама жазу уақыты келді. Біз Arduino-да жазамыз, бірақ әдеттегідей емес, қазір қолымнан келгенше (мен бұл ортаны әлі жақсы түсінбегенімді айттым). Алдымен жаңа эскиз жасаңыз және Mega2560 тақтасын таңдаңыз.
Эскизді файлға сақтаңыз және келесі көшіріңіз
#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"
Arduino-дан тікелей орнатуға болатын «Arduino үшін Nanonyam» арнайы модулін жасау дұрысырақ болар еді. Түсінген бойда, мен мұны істеймін, бірақ мен қазір виртуалды машинамен жұмыс істеудің мәнін ғана көрсетемін. Біз келесі кодты жазамыз:
//Сразу после запуска рисуем текст в окне
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);//Задержка и разгрузка процессора
}
Осы бағдарламамен эскиз жасаңыз
Біз «Тексеру» түймесін басамыз және қателер болмауы керек.
Енді екілік файлды (микробағдарламаны) алу керек. Мәзірді таңдаңыз»Эскиз>>Екілік файлды экспорттау (CTRL+ALT+S)«.
Бұл екі HEX файлын эскиз қалтасына көшіреді. Біз тек "with_bootloader.mega" префиксі жоқ файлды аламыз.
Nanonyam виртуалды машинасына HEX файлын көрсетудің бірнеше жолы бар, олардың барлығы сипатталған
Сол сияқты, бағдарламаларды AVR Studio немесе WinAVR сияқты басқа орталарда жасауға болады.
Наноняммен танысуымызды осы жерде аяқтаймыз. Негізгі ой анық болуы керек.
Назарларыңызға және жақсы бағдарламалауыңызға рахмет!
Ақпарат көзі: www.habr.com