یک روز ایده دیوانه کننده ای به ذهنم رسید که بیاورم
من پروژه را Nanonyam (Nanonyam) نامیدم و حتی یک لوگو برای آن طراحی کردم (5 دقیقه طراحی کردم).
برای کسانی که به آردوینو فکر می کنند، می توان گفت که Nanonyam یک سپر مجازی آردوینو برای کنترل ویندوز است.
به عبارت دیگر، Nanonyam یک ماشین مجازی است که از سیستم عامل برای میکروکنترلر AVR (توصیه ATMEGA2560) به عنوان بایت کد استفاده می کند. در داخل این ماشین مجازی یک شبیه ساز هسته AVR وجود دارد، اما به جای تجهیزات جانبی که در آدرس های SRAM از 0x0060 تا 0x01FF قرار دارند، یک رابط ویژه برای توابع مجازی (از جمله توابع API ویندوز) وجود دارد. و در اینجا بسیار مهم است که فوراً درک کنید: کد Nanonyam نباید به محدوده حافظه مشخص شده دسترسی داشته باشد تا به طور تصادفی به عنوان مثال عملکرد حذف فایل ها یا قالب بندی دیسک را فرا نگیرد. بقیه محدوده حافظه SRAM از 0x0200 تا 0xFFFF (این بیشتر از یک میکروکنترلر واقعی است) برای هر منظوری در دسترس کاربر است. فوراً متذکر می شوم که محافظت ویژه ای در برابر راه اندازی تصادفی سیستم عامل یک میکروکنترلر واقعی (یا سیستم عامل از معماری دیگر) وجود دارد: قبل از فعال کردن عملکردهای "خطرناک" ، باید یک عملکرد مجازی فریبنده ویژه را فراخوانی کنید. برخی از ویژگی های امنیتی دیگر نیز وجود دارد.
برای ایجاد برنامهها برای Nanonyam، باید از کتابخانههای ویژهای استفاده کنید که تمام توابع مجازی موجود در حال حاضر را پیادهسازی کنند. ماشین مجازی Nanonyam و کتابخانه های آن را دانلود کنید
Nanonyam برای استفاده خانگی و تجاری رایگان است. برنامه Nanonyam بر اساس "همانطور که هست" ارائه می شود. کد منبع ارائه نشده است.
این برنامه در حال حاضر در مرحله آزمایش است. حدود 200 عملکرد مجازی را پیاده سازی کرده است که به شما امکان می دهد برنامه های ساده ای برای ویندوز ایجاد کنید.
بدیهی است که ایجاد چیزی پیچیده در چنین ماشین مجازی کار نخواهد کرد، زیرا حافظه کد فقط 256 کیلوبایت است. داده ها را می توان در فایل های جداگانه ذخیره کرد، بافر برای بخش گرافیکی به صورت خارجی پیاده سازی می شود. همه توابع ساده شده و برای معماری 8 بیتی تطبیق داده شده اند.
در Nanonyam چه کاری می توانید انجام دهید؟ من با چند مشکل مواجه شدم.
توسعه بلوک های برنامه
من یک بار نیاز به طراحی یک منوی پیچیده برای یک صفحه نمایش گرافیکی 128x64 نقطه داشتم. من واقعاً نمی خواستم سیستم عامل را به طور مداوم در یک میکروکنترلر واقعی بارگذاری کنم تا ببینم پیکسل ها چگونه به نظر می رسند. و بنابراین ایده Nanonyam متولد شد. شکل زیر تصویری از صفحه نمایش OLED واقعی یکی از آیتم های همان منو را نشان می دهد. اکنون می توانم بدون دستگاه واقعی از طریق آن کار کنم.
Nanonyam (در ایده نهایی خود) ابزار خوبی برای کار کردن بلوک های برنامه برای میکروکنترلرها است، زیرا عملکردهایی برای کار با گرافیک (شما می توانید نمایشگرها و نشانگرها را شبیه سازی کنید)، با فایل ها (شما می توانید گزارش ایجاد کنید، داده های تست را بخوانید)، با یک صفحه کلید (شما می توانید تا 10 دکمه را به طور همزمان بخوانید)، با پورت های COM (در اینجا یک مورد جداگانه است).
ایجاد برنامه های سریع
به عنوان مثال، شما باید 100500 فایل متنی را به سرعت پردازش کنید. هر کدام باید باز شوند، طبق برخی از الگوریتم های ساده کمی اصلاح شوند، ذخیره و بسته شوند. اگر استاد پایتون هستید، به شما تبریک می گویم، شما همه چیز دارید. اما اگر یک آردوینو سخت شده هستید (و تعداد آنها زیاد است)، Nanonyam به شما در حل این مشکل کمک می کند. این دومین هدف من در Nanonyam است: افزودن بسیاری از عملکردهای مفید مانند پردازش متن، گرفتن اسکرین شات یا شبیه سازی فشار دادن کلید در سیستم (که اتفاقاً همه آنها قبلاً وجود دارند) و همچنین بسیاری از عملکردهای دیگر برای حل کارهای معمول. .
تست سخت افزار از طریق پورت COM
Nanonyam می تواند به عنوان یک ترمینال عمل کند که طبق الگوریتم شما کار می کند. می توانید یک منوی کوچک برای کنترل دستگاه و نمایش داده های دریافتی از پورت بکشید. می توانید داده ها را از فایل ها برای تجزیه و تحلیل ذخیره و بخوانید. ابزاری مفید برای اشکال زدایی ساده و کالیبراسیون سخت افزار و همچنین برای ایجاد پنل های کنترل ابزار مجازی ساده. برای دانشجویان و دانشمندان جوان، این پروژه می تواند بسیار مفید باشد.
آموزش برنامه نویسی
با این حال، مانند کل پروژه آردوینو، سودمندی اصلی Nanonyam در ساده سازی توابع، رابط و بوت لودر نهفته است. بنابراین، این پروژه باید مورد توجه برنامه نویسان تازه کار و کسانی که از سطح آردوینو راضی هستند، باشد. به هر حال، من خودم هنوز آردوینو را با جزئیات مطالعه نکرده ام، زیرا همیشه از WinAVR یا AVR Studio استفاده می کردم، اما با اسمبلر شروع کردم. بنابراین، برنامه مثال زیر کمی اشتباه است، اما کاملا کار می کند.
سلام هابر!
وقت آن است که با برخی از ویژگی های Nanonyam آشنا شوید و یک برنامه ساده بنویسید. ما در آردوینو خواهیم نوشت، اما نه به روش معمول، بلکه به روشی که اکنون می توانم (قبلاً گفتم که هنوز این محیط را به خوبی کشف نکرده ام). ابتدا یک طرح جدید ایجاد کنید و برد 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);//Задержка и разгрузка процессора
}
با این برنامه طراحی کنید
ما دکمه "بررسی" را فشار می دهیم و نباید هیچ خطایی وجود داشته باشد.
اکنون باید یک فایل باینری (سیرم افزار) دریافت کنید. منو را انتخاب کنید "Sketch>>صادر کردن فایل باینری (CTRL+ALT+S)".
با این کار دو فایل HEX در پوشه sketch کپی می شود. ما فقط فایل را بدون پیشوند "with_bootloader.mega" می گیریم.
راه های مختلفی برای تعیین یک فایل HEX در ماشین مجازی Nanonyam وجود دارد که همه آنها توضیح داده شده اند
به همین ترتیب، می توانید برنامه هایی را در محیط های دیگر مانند AVR Studio یا WinAVR ایجاد کنید.
اینجاست که آشنایی خود را با Nanonyam به پایان می بریم. ایده اصلی باید روشن باشد.
با تشکر از همه شما برای توجه و برنامه نویسی خوب شما!
منبع: www.habr.com