Մի օր ես խելահեղ միտք ունեցա բերելու
Ես նախագիծն անվանեցի Nanonyam (Nanonyam) և նույնիսկ լոգո պատրաստեցի դրա համար (5 րոպե նկարեցի):
Նրանց համար, ովքեր մտածում են Arduino-ի մասին, կարող ենք ասել, որ Nanonyam-ը վիրտուալ Arduino վահան է Windows-ի կառավարման համար:
Այլ կերպ ասած, Nanonyam-ը վիրտուալ մեքենա է, որն օգտագործում է որոնվածը AVR միկրոկոնտրոլերի համար (առաջարկվում է ATMEGA2560) որպես բայթկոդ։ Այս վիրտուալ մեքենայի ներսում կա AVR միջուկային սիմուլյատոր, բայց ծայրամասային սարքերի փոխարեն, որոնք տեղակայված են 0x0060-ից մինչև 0x01FF SRAM հասցեներում, կա հատուկ ինտերֆեյս վիրտուալ գործառույթների համար (ներառյալ Windows API գործառույթները): Եվ այստեղ շատ կարևոր է անմիջապես հասկանալ. Nanonyam-ի կոդը չպետք է մուտք ունենա նշված հիշողության տիրույթ, որպեսզի պատահաբար չկանչվի, օրինակ, ֆայլերը ջնջելու կամ սկավառակի ձևաչափման գործառույթը: SRAM հիշողության մնացած տիրույթը 0x0200-ից մինչև 0xFFFF (սա ավելին է, քան իրական միկրոկոնտրոլերում) հասանելի է օգտագործողին ցանկացած նպատակով: Անմիջապես նշում եմ, որ կա հատուկ պաշտպանություն իրական միկրոկառավարիչի (կամ այլ ճարտարապետության որոնվածի ծրագրակազմի) պատահական գործարկումից. նախքան «վտանգավոր» գործառույթները ակտիվացնելը, դուք պետք է զանգահարեք հատուկ բարդ վիրտուալ գործառույթ: Կան նաև այլ անվտանգության առանձնահատկություններ:
Nanonyam-ի համար ծրագրեր ստեղծելու համար հարկավոր է օգտագործել հատուկ գրադարաններ, որոնք իրականացնում են ներկայումս հասանելի բոլոր վիրտուալ գործառույթները: Ներբեռնեք Nanonyam վիրտուալ մեքենան և գրադարանները դրա համար
Nanonyam-ն անվճար է տնային և կոմերցիոն օգտագործման համար: Nanonyam ծրագիրը տրամադրվում է «ինչպես կա» սկզբունքով: Աղբյուրի կոդը չի տրամադրվում:
Ծրագիրը ներկայումս փորձարկման փուլում է։ Իրականացրել է մոտ 200 վիրտուալ գործառույթ, որոնք թույլ են տալիս ստեղծել պարզ ծրագրեր Windows-ի համար։
Ակնհայտ է, որ նման վիրտուալ մեքենայի մեջ ինչ-որ բարդ բան ստեղծելը չի աշխատի, քանի որ կոդի հիշողությունը ընդամենը 256 կԲ է: Տվյալները կարող են պահվել առանձին ֆայլերում, գրաֆիկական մասի բուֆերն իրականացվում է արտաքինից: Բոլոր գործառույթները պարզեցված են և հարմարեցված 8-բիթանոց ճարտարապետության համար:
Ի՞նչ կարող ես անել Nanonyam-ում: Ես մի քանի խնդիրներ առաջ քաշեցի.
Ծրագրային բլոկների մշակում
Մի անգամ ինձ անհրաժեշտ էր նախագծել բարդ մենյու 128x64 կետանոց գրաֆիկական էկրանի համար: Ես իսկապես չէի ուզում անընդհատ բեռնել որոնվածը իրական միկրոկոնտրոլերի մեջ, որպեսզի տեսնեմ, թե ինչպես են պիքսելները: Եվ այսպես, ծնվեց Nanonyam-ի գաղափարը։ Ստորև բերված նկարը ցույց է տալիս նույն մենյուի տարրերից մեկի իրական OLED ցուցադրման պատկերը: Այժմ ես կարող եմ աշխատել դրա միջոցով առանց իրական սարքի:
Nanonyam-ը (իր վերջնական գաղափարով) լավ գործիք է միկրոկառավարիչների համար ծրագրային բլոկներ մշակելու համար, քանի որ կան գրաֆիկայի հետ աշխատելու գործառույթներ (կարող եք մոդելավորել էկրաններ և ցուցիչներ), ֆայլերով (կարող եք տեղեկամատյաններ կազմել, կարդալ թեստի տվյալները), ստեղնաշար (կարող եք միաժամանակ կարդալ մինչև 10 կոճակ), COM պորտերով (այստեղ կա առանձին կետ):
Արագ ծրագրերի ստեղծում
Օրինակ, դուք պետք է արագ մշակեք 100500 տեքստային ֆայլեր: Յուրաքանչյուրը պետք է բացվի, մի փոքր փոփոխվի՝ համաձայն ինչ-որ պարզ ալգորիթմի, պահպանվի և փակվի: Եթե դու Python-ի վարպետ ես, ուրեմն շնորհավորում եմ քեզ, դու ամեն ինչ ունես։ Բայց եթե դուք կարծրացած arduino եք (և դրանք շատ են), ապա Nanonyam-ը կօգնի ձեզ լուծել այս խնդիրը: Սա իմ երկրորդ նպատակն է Nanonyam-ում. ավելացնել բազմաթիվ օգտակար գործառույթներ, ինչպիսիք են տեքստի մշակումը, սքրինշոթեր նկարելը կամ ստեղնաշարի սիմուլյացիան համակարգում (որոնք բոլորն, ի դեպ, արդեն կան), ինչպես նաև շատ այլ գործառույթներ՝ սովորական առաջադրանքները լուծելու համար։ .
Սարքավորումների փորձարկում COM պորտի միջոցով
Nanonyam-ը կարող է հանդես գալ որպես տերմինալ, որն աշխատում է ձեր ալգորիթմի համաձայն: Սարքը կառավարելու և նավահանգստից ստացված տվյալները ցուցադրելու համար կարող եք փոքր մենյու նկարել: Դուք կարող եք պահպանել և կարդալ ֆայլերից տվյալները վերլուծության համար: Հարմար գործիք սարքաշարի պարզ վրիպազերծման և չափաբերման, ինչպես նաև պարզ վիրտուալ գործիքների կառավարման վահանակներ ստեղծելու համար: Ուսանողների և երիտասարդ գիտնականների համար այս նախագիծը կարող է շատ օգտակար լինել:
Ծրագրավորման ուսուցում
Այնուամենայնիվ, ինչպես ամբողջ Arduino նախագծի դեպքում, Nanonyam-ի հիմնական օգտակարությունը գործառույթների, ինտերֆեյսի և bootloader-ի պարզեցման մեջ է: Ուստի այս նախագիծը պետք է հետաքրքրի սկսնակ ծրագրավորողներին և նրանց, ովքեր գոհ են arduino-ի մակարդակից։ Ի դեպ, ես ինքս դեռ մանրամասն չեմ ուսումնասիրել arduino-ն, քանի որ միշտ օգտագործել եմ WinAVR կամ AVR Studio, բայց սկսել եմ assembler-ից։ Հետևաբար, ստորև բերված օրինակ ծրագիրը մի փոքր սխալ կլինի, բայց բավականին աշխատող:
Բարև Հաբր:
Ժամանակն է ծանոթանալ 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"
Ավելի ճիշտ կլինի պատրաստել «Nanonyam for Arduino» հատուկ մոդուլը, որը կարող է տեղադրվել անմիջապես Arduino-ից: Հենց պարզեմ, կանեմ, բայց առայժմ միայն ցույց եմ տալիս վիրտուալ մեքենայի հետ աշխատելու էությունը։ Մենք գրում ենք հետևյալ կոդը.
//Сразу после запуска рисуем текст в окне
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:
Այստեղ մենք ավարտում ենք մեր ծանոթությունը Nanonyam-ի հետ։ Հիմնական գաղափարը պետք է պարզ լինի.
Շնորհակալություն բոլորիդ ուշադրության և լավ ծրագրավորման համար:
Source: www.habr.com