Egun batean ekartzeko ideia zoroa izan nuen
Nanonyam (Nanonyam) proiektuari deitu nion eta logo bat ere asmatu nuen (5 minutuz marraztu nuen).
Arduinori dagokionez pentsatzen dutenentzat, Nanonyam Windows kontrolatzeko Arduino ezkutu birtuala dela esan dezakegu.
Beste era batera esanda, Nanonyam AVR mikrokontrolagailurako firmwarea erabiltzen duen makina birtual bat da (ATMEGA2560 gomendatzen da) bytecode gisa. Makina birtual honen barruan AVR core simulagailu bat dago, baina 0x0060-tik 0x01FF-ra SRAM helbideetan kokatzen diren periferikoen ordez, funtzio birtualetarako interfaze berezi bat dago (Windows API funtzioak barne). Eta hemen oso garrantzitsua da berehala ulertzea: Nanonyam-en kodeak ez luke zehaztutako memoria barrutirako sarbiderik izan behar, hala nola, nahi gabe ez deitzeko, adibidez, fitxategiak ezabatzeko edo disko bat formateatzeko funtzioa. SRAM memoriaren gainerako 0x0200 eta 0xFFFF bitartekoa (hau benetako mikrokontrolagailu batean baino gehiago da) erabiltzailearentzat eskuragarri dago edozein helburutarako. Berehala ohartzen naiz benetako mikrokontrolagailu baten firmwarea (edo beste arkitektura bateko firmwarea) ustekabean abiarazteko babes berezia dagoela: funtzio "arriskutsuak" aktibatu aurretik, funtzio birtual delikatua berezi bat deitu behar duzu. Beste segurtasun ezaugarri batzuk ere badaude.
Nanonyam-erako programak sortzeko, gaur egun erabilgarri dauden funtzio birtual guztiak inplementatzen dituzten liburutegi bereziak erabili behar dituzu. Deskargatu Nanonyam makina birtuala eta liburutegiak horretarako
Nanonyam doakoa da etxeko erabilerarako eta merkataritzarako. Nanonyam programa "dagoen moduan" eskaintzen da. Iturburu kodea ez da ematen.
Gaur egun programa proba fasean dago. Windows-erako programa errazak sortzeko aukera ematen duten 200 funtzio birtual inguru inplementatu ditu.
Jakina, halako makina birtualean zerbait konplikatua sortzeak ez du funtzionatuko, kodearen memoria 256 kB baino ez baita. Datuak fitxategi bereizietan gorde daitezke, zati grafikoaren buffer-a kanpoan ezartzen da. Funtzio guztiak sinplifikatu eta 8 biteko arkitekturarako egokituta daude.
Zer egin dezakezu Nanonyam-en? Arazo batzuk bururatu zitzaizkidan.
Programa-blokeen garapena
Behin menu konplexu bat diseinatu behar nuen 128x64 puntuko pantaila grafiko baterako. Benetan ez nuen nahi firmwarea etengabe kargatu benetako mikrokontrolagailu batean pixelak nola ikusten diren ikusteko. Eta horrela sortu zen Nanonyam-en ideia. Beheko irudiak menu bereko elementuetako baten benetako OLED pantaila bateko irudia erakusten du. Orain lan egin dezaket benetako gailurik gabe.
Nanonyam (bere azken ideian) tresna ona da mikrokontrolagailuentzako programa-blokeak lantzeko, grafikoekin lan egiteko funtzioak baitaude (pantailak eta adierazleak simulatu ditzakezu), fitxategiekin (erregistroak egin ditzakezu, proba-datuak irakurri), teklatu bat (gehienez 10 botoi irakur ditzakezu aldi berean), COM atakekin (hemen aparteko elementu bat).
Programa azkarrak sortzea
Adibidez, 100500 testu fitxategi azkar prozesatu behar dituzu. Bakoitza ireki behar da, algoritmo sinple baten arabera pixka bat aldatu, gorde eta itxi. Python maisua bazara, zoriondu egiten zaitut, dena daukazu. Baina arduino gogortua bazara (eta horietako asko badaude), Nanonyam-ek arazo hau konpontzen lagunduko dizu. Hau da nire bigarren helburua Nanonyam-en: funtzio erabilgarria asko gehitzea, hala nola, testuak prozesatzea, pantaila-argazkiak egitea edo sisteman tekla sakatzeak simulatzea (horiek guztiak, bide batez, dagoeneko hor daude), baita ohiko zereginak konpontzeko beste hainbat funtzio ere. .
Hardwarea probatzen COM atakaren bidez
Nanonyam-ek zure algoritmoaren arabera funtzionatzen duen terminal gisa jardun dezake. Menu txiki bat marraz dezakezu gailua kontrolatzeko eta atakatik jasotako datuak bistaratzeko. Fitxategietako datuak gorde eta irakur ditzakezu aztertzeko. Hardwarea arazketa eta kalibratzeko tresna erabilgarria, baita tresna birtual kontrol-panel sinpleak sortzeko ere. Ikasle eta zientzialari gazteentzat, proiektu hau oso erabilgarria izan daiteke.
Programazio prestakuntza
Hala ere, Arduino proiektu osoan bezala, Nanonyam-en erabilgarritasun nagusia funtzioen, interfazearen eta abiarazlearen sinplifikazioan datza. Horregatik, proiektu honek programatzaile hasiberrientzat eta arduino mailarekin gustura daudenentzat interesgarria izan behar du. Bide batez, nik neuk oraindik ez dut arduino zehatz-mehatz aztertu, beti WinAVR edo AVR Studio erabiltzen bainuen, baina muntatzailearekin hasi nintzen. Hori dela eta, beheko adibideko programa apur bat oker egongo da, baina nahiko funtzionatuko du.
Kaixo Habr!
Bada garaia Nanonyam-en ezaugarri batzuk ezagutzeko eta programa sinple bat idazteko. Arduinoz idatziko dugu, baina ez ohiko moduan, orain ahal dudan moduan baizik (esan dut oraindik ez dudala ingurune hau oso ondo asmatu). Lehenik eta behin, sortu zirriborro berri bat eta hautatu Mega2560 taula.
Gorde krokisa fitxategi batean eta kopiatu hurrengoan
#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"
Are zuzenagoa litzateke "Nanonyam Arduinorako" modulu berezi bat egitea, Arduinotik zuzenean instalatu daitekeena. Asmatu bezain laster, egingo dut, baina oraingoz makina birtual batekin lan egitearen funtsa erakusten ari naiz. Kode hau idazten dugu:
//Π‘ΡΠ°Π·Ρ ΠΏΠΎΡΠ»Π΅ Π·Π°ΠΏΡΡΠΊΠ° ΡΠΈΡΡΠ΅ΠΌ ΡΠ΅ΠΊΡΡ Π² ΠΎΠΊΠ½Π΅
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);//ΠΠ°Π΄Π΅ΡΠΆΠΊΠ° ΠΈ ΡΠ°Π·Π³ΡΡΠ·ΠΊΠ° ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°
}
Zirriborroa programa honekin
"Egiaztatu" botoia sakatzen dugu eta ez luke akatsik egon behar.
Orain fitxategi bitar bat (firmware) lortu behar duzu. Hautatu menua "Sketch>>Esportatu fitxategi bitarra (CTRL+ALT+S)".
Honek bi HEX fitxategi kopiatuko ditu zirriborroen karpetara. "with_bootloader.mega" aurrizkirik gabeko fitxategia bakarrik hartzen dugu.
Nanonyam makina birtualean HEX fitxategi bat zehazteko hainbat modu daude, guztiak deskribatuta daude
Era berean, programak sor ditzakezu beste ingurune batzuetan, hala nola AVR Studio edo WinAVR.
Hemen amaitzen dugu Nanonyam-ekin dugun ezagutza. Ideia nagusiak argia izan behar du.
Eskerrik asko guztioi zuen arretagatik eta programazio onagatik!
Iturria: www.habr.com