Kādu dienu man radās traka ideja atnest
Es nosaucu projektu Nanonyam (Nanonyam) un pat izdomāju tam logotipu (zīmēju 5 minūtes).
Tiem, kas domā par Arduino, mēs varam teikt, ka Nanonyam ir virtuāls Arduino vairogs Windows vadīšanai.
Citiem vārdiem sakot, Nanonyam ir virtuāla mašīna, kas izmanto AVR mikrokontrollera programmaparatūru (ieteicams ATMEGA2560) kā baitu kodu. Šīs virtuālās mašīnas iekšpusē ir AVR kodola simulators, taču perifērijas ierīču vietā, kas atrodas SRAM adresēs no 0x0060 līdz 0x01FF, ir īpašs interfeiss virtuālajām funkcijām (tostarp Windows API funkcijām). Un šeit ir ļoti svarīgi uzreiz saprast: Nanonyam kodam nevajadzētu piekļūt norādītajam atmiņas diapazonam, lai nejauši neizsauktu, piemēram, failu dzēšanas vai diska formatēšanas funkciju. Pārējais SRAM atmiņas diapazons no 0x0200 līdz 0xFFFF (tas ir vairāk nekā īstā mikrokontrollerī) ir pieejams lietotājam jebkuram mērķim. Uzreiz atzīmēju, ka ir īpaša aizsardzība pret nejaušu reāla mikrokontrollera programmaparatūras (vai programmaparatūras no citas arhitektūras) palaišanu: pirms "bīstamu" funkciju aktivizēšanas jums ir jāizsauc īpaša viltīga virtuālā funkcija. Ir arī daži citi drošības līdzekļi.
Lai izveidotu programmas Nanonyam, ir jāizmanto īpašas bibliotēkas, kas ievieš visas šobrīd pieejamās virtuālās funkcijas. Lejupielādējiet Nanonyam virtuālo mašīnu un tai paredzētās bibliotēkas
Nanonyam ir bezmaksas lietošanai mājās un komerciālai lietošanai. Nanonyam programma tiek nodrošināta tāda, kāda tā ir. Avota kods nav norādīts.
Programma pašlaik ir testēšanas fāzē. Ieviestas aptuveni 200 virtuālās funkcijas, kas ļauj izveidot vienkāršas programmas operētājsistēmai Windows.
Acīmredzot izveidot kaut ko sarežģītu šādā virtuālajā mašīnā nedarbosies, jo koda atmiņa ir tikai 256 kB. Datus var glabāt atsevišķos failos, buferis grafiskajai daļai tiek realizēts ārēji. Visas funkcijas ir vienkāršotas un pielāgotas 8 bitu arhitektūrai.
Ko jūs varat darīt Nanonyam? Man radās dažas problēmas.
Programmu bloku izstrāde
Man kādreiz vajadzēja izveidot sarežģītu izvēlni 128x64 punktu grafiskajam displejam. Es patiešām negribēju pastāvīgi ielādēt programmaparatūru īstā mikrokontrollerī, lai redzētu, kā izskatās pikseļi. Un tā radās Nanonyam ideja. Zemāk esošajā attēlā parādīts attēls no īsta OLED displeja, kurā redzams viens no tās pašas izvēlnes vienumiem. Tagad es varu strādāt ar to bez īstas ierīces.
Nanonyam (savā galīgajā idejā) ir labs rīks programmu bloku izstrādei mikrokontrolleriem, jo ir funkcijas darbam ar grafiku (var simulēt displejus un indikatorus), ar failiem (var izveidot žurnālus, lasīt testa datus), ar tastatūra (vienlaicīgi var lasīt līdz 10 pogām), ar COM portiem (šeit ir atsevišķs vienums).
Ātro programmu izveide
Piemēram, jums ātri jāapstrādā 100500 XNUMX teksta faili. Katrs no tiem ir jāatver, nedaudz jāpārveido pēc kāda vienkārša algoritma, jāsaglabā un jāaizver. Ja esat Python meistars, tad es jūs apsveicu, jums ir viss. Bet, ja esat rūdīts arduino (un tādu ir daudz), tad Nanonyam palīdzēs jums atrisināt šo problēmu. Šis ir mans otrais mērķis programmā Nanonyam: pievienot daudzas noderīgas funkcijas, piemēram, teksta apstrādi, ekrānuzņēmumu uzņemšanu vai taustiņsitienu simulēšanu sistēmā (kas, starp citu, jau ir), kā arī daudzas citas funkcijas ikdienas uzdevumu risināšanai. .
Aparatūras pārbaude, izmantojot COM portu
Nanonyam var darboties kā terminālis, kas darbojas saskaņā ar jūsu algoritmu. Varat uzzīmēt nelielu izvēlni, lai kontrolētu ierīci un parādītu no porta saņemtos datus. Varat saglabāt un lasīt datus no failiem analīzei. Ērts rīks vienkāršai aparatūras atkļūdošanai un kalibrēšanai, kā arī vienkāršu virtuālo instrumentu vadības paneļu izveidei. Studentiem un jaunajiem zinātniekiem šis projekts var būt ļoti noderīgs.
Programmēšanas apmācība
Tomēr, tāpat kā visā Arduino projektā, Nanonyam galvenā lietderība slēpjas funkciju, interfeisa un sāknēšanas ielādes vienkāršošanā. Tāpēc šim projektam vajadzētu interesēt iesācēju programmētājus un tos, kuri ir apmierināti ar arduino līmeni. Starp citu, es pats joprojām neesmu sīkāk pētījis arduino, jo vienmēr izmantoju WinAVR vai AVR Studio, bet sāku ar assembler. Tāpēc zemāk esošā programmas paraugs būs nedaudz nepareizs, taču diezgan darbojošs.
Sveiki, Habr!
Ir pienācis laiks iepazīties ar dažām Nanonyam funkcijām un uzrakstīt vienkāršu programmu. Rakstīsim Arduino, bet ne ierastajā veidā, bet tā, kā es tagad varu (jau teicu, ka šo vidi vēl neesmu īsti izdomājis). Vispirms izveidojiet jaunu skici un atlasiet Mega2560 dēli.
Saglabājiet skici failā un kopējiet nākamo
#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"
Vēl pareizāk būtu izgatavot speciālu moduli “Nanonyam for Arduino”, ko var uzstādīt tieši no Arduino. Tiklīdz izdomāšu, tā arī izdarīšu, bet pagaidām tikai parādu būtību darbam ar virtuālo mašīnu. Mēs rakstām šādu kodu:
//Сразу после запуска рисуем текст в окне
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);//Задержка и разгрузка процессора
}
Skice ar šo programmu
Mēs nospiežam pogu "Pārbaudīt", un kļūdām nevajadzētu būt.
Tagad jums ir jāiegūst binārais fails (programmaparatūra). Izvēlieties izvēlni "Skice>> Eksportēt bināro failu (CTRL+ALT+S)".
Tādējādi skices mapē tiks kopēti divi HEX faili. Mēs ņemam tikai failu bez prefiksa "with_bootloader.mega".
Ir vairāki veidi, kā norādīt HEX failu Nanonyam virtuālajai mašīnai, un tie visi ir aprakstīti
Tāpat varat izveidot programmas citās vidēs, piemēram, AVR Studio vai WinAVR.
Šeit mēs pabeidzam mūsu iepazīšanos ar Nanonyam. Galvenajai domai jābūt skaidrai.
Paldies visiem par uzmanību un labo programmēšanu!
Avots: www.habr.com