วันหนึ่งฉันมีความคิดบ้าๆที่จะนำ
ฉันตั้งชื่อโปรเจ็กต์นี้ว่า Nanonyam (นานนยัม) และยังคิดโลโก้ให้อีกด้วย (ฉันวาดอยู่ 5 นาที)
สำหรับผู้ที่คิดในแง่ของ Arduino เราสามารถพูดได้ว่า Nanonyam เป็นโล่ Arduino เสมือนสำหรับควบคุม Windows
กล่าวอีกนัยหนึ่ง Nanonyam เป็นเครื่องเสมือนที่ใช้เฟิร์มแวร์สำหรับไมโครคอนโทรลเลอร์ AVR (แนะนำให้ใช้ ATMEGA2560) เป็นรหัสไบต์ ภายในเครื่องเสมือนนี้เป็นเครื่องจำลองหลัก AVR แต่แทนที่จะเป็นอุปกรณ์ต่อพ่วงซึ่งอยู่ที่ที่อยู่ SRAM ตั้งแต่ 0x0060 ถึง 0x01FF มีอินเทอร์เฟซพิเศษสำหรับฟังก์ชันเสมือน (รวมถึงฟังก์ชัน Windows API) และนี่เป็นสิ่งสำคัญมากที่จะต้องเข้าใจทันที: รหัสสำหรับ Nanonyam ไม่ควรเข้าถึงช่วงหน่วยความจำที่ระบุเพื่อไม่ให้เรียกใช้ฟังก์ชันลบไฟล์หรือฟอร์แมตดิสก์โดยไม่ตั้งใจ ช่วงหน่วยความจำ SRAM ที่เหลือตั้งแต่ 0x0200 ถึง 0xFFFF (ซึ่งมากกว่าในไมโครคอนโทรลเลอร์จริง) มีให้สำหรับผู้ใช้ในทุกวัตถุประสงค์ ฉันทราบทันทีว่ามีการป้องกันพิเศษจากการเปิดตัวเฟิร์มแวร์ของไมโครคอนโทรลเลอร์จริงโดยไม่ได้ตั้งใจ (หรือเฟิร์มแวร์จากสถาปัตยกรรมอื่น): ก่อนเปิดใช้งานฟังก์ชัน "อันตราย" คุณต้องเรียกฟังก์ชันเสมือนพิเศษที่ยุ่งยาก มีคุณสมบัติความปลอดภัยอื่น ๆ เช่นกัน
ในการสร้างโปรแกรมสำหรับ Nanonyam คุณต้องใช้ไลบรารีพิเศษที่ใช้ฟังก์ชันเสมือนที่มีอยู่ทั้งหมดในปัจจุบัน ดาวน์โหลดเครื่องเสมือนและไลบรารีของ Nanonyam
Nanonyam ฟรีสำหรับใช้ในบ้านและในเชิงพาณิชย์ โปรแกรม Nanonyam ให้บริการตามสภาพที่เป็นอยู่ ไม่มีซอร์สโค้ด
ขณะนี้โปรแกรมอยู่ในขั้นตอนการทดสอบ ใช้ฟังก์ชันเสมือนประมาณ 200 ฟังก์ชันที่ช่วยให้คุณสร้างโปรแกรมอย่างง่ายสำหรับ Windows
เห็นได้ชัดว่าการสร้างบางสิ่งที่ซับซ้อนในเครื่องเสมือนจะไม่ทำงานเนื่องจากหน่วยความจำสำหรับรหัสมีเพียง 256 kB ข้อมูลสามารถจัดเก็บในไฟล์แยกกัน บัฟเฟอร์สำหรับส่วนกราฟิกจะถูกนำไปใช้ภายนอก ฟังก์ชันทั้งหมดได้รับการปรับให้เรียบง่ายและเหมาะสำหรับสถาปัตยกรรม 8 บิต
คุณสามารถทำอะไรใน Nanonyam? ฉันพบปัญหาเล็กน้อย
การพัฒนาบล็อกโปรแกรม
ครั้งหนึ่งฉันต้องออกแบบเมนูที่ซับซ้อนสำหรับการแสดงผลกราฟิกขนาด 128x64 จุด ฉันไม่ต้องการโหลดเฟิร์มแวร์ลงในไมโครคอนโทรลเลอร์จริง ๆ ตลอดเวลาเพื่อดูว่าพิกเซลมีลักษณะอย่างไร ดังนั้นความคิดของ Nanonyam จึงเกิดขึ้น ภาพด้านล่างแสดงภาพจากหน้าจอ OLED จริงของรายการใดรายการหนึ่งบนเมนูเดียวกัน ตอนนี้ฉันสามารถทำงานได้โดยไม่ต้องใช้อุปกรณ์จริง
Nanonyam (ในแนวคิดสุดท้าย) เป็นเครื่องมือที่ดีสำหรับการทำงานบล็อกโปรแกรมสำหรับไมโครคอนโทรลเลอร์ เนื่องจากมีฟังก์ชันสำหรับการทำงานกับกราฟิก (คุณสามารถจำลองการแสดงผลและตัวบ่งชี้) พร้อมไฟล์ (คุณสามารถสร้างบันทึก อ่านข้อมูลการทดสอบ) ด้วย แป้นพิมพ์ (คุณสามารถอ่านปุ่มได้สูงสุด 10 ปุ่มพร้อมกัน) พร้อมพอร์ต COM (นี่คือรายการแยกต่างหาก)
การสร้างโปรแกรมด่วน
ตัวอย่างเช่น คุณต้องประมวลผลไฟล์ข้อความ 100500 ไฟล์อย่างรวดเร็ว แต่ละรายการจำเป็นต้องเปิด แก้ไขเล็กน้อยตามอัลกอริทึมง่ายๆ บันทึกและปิด หากคุณเป็นผู้เชี่ยวชาญ Python ฉันขอแสดงความยินดีกับคุณ คุณมีทุกอย่างแล้ว แต่ถ้าคุณเป็น arduino ที่แข็งกระด้าง (และมีจำนวนมาก) Nanonyam จะช่วยคุณในการแก้ปัญหานี้ นี่คือเป้าหมายที่สองของฉันใน Nanonyam: เพื่อเพิ่มฟังก์ชันที่มีประโยชน์มากมาย เช่น การประมวลผลข้อความ การจับภาพหน้าจอ หรือการจำลองการกดแป้นพิมพ์ในระบบ (ซึ่งทั้งหมดนี้มีอยู่แล้ว) รวมถึงฟังก์ชันอื่นๆ อีกมากมายสำหรับการแก้ปัญหางานประจำ .
การทดสอบฮาร์ดแวร์ผ่านพอร์ต COM
Nanonyam สามารถทำหน้าที่เป็นเทอร์มินัลที่ทำงานตามอัลกอริทึมของคุณ คุณสามารถวาดเมนูขนาดเล็กเพื่อควบคุมอุปกรณ์และแสดงข้อมูลที่ได้รับจากพอร์ต คุณสามารถบันทึกและอ่านข้อมูลจากไฟล์เพื่อการวิเคราะห์ เครื่องมือที่มีประโยชน์สำหรับการดีบั๊กและการสอบเทียบฮาร์ดแวร์อย่างง่าย รวมถึงการสร้างแผงควบคุมเครื่องมือเสมือนอย่างง่าย สำหรับนักเรียนและนักวิทยาศาสตร์รุ่นใหม่ โครงการนี้มีประโยชน์มาก
อบรมการเขียนโปรแกรม
อย่างไรก็ตาม เช่นเดียวกับโครงการ Arduino ทั้งหมด ประโยชน์หลักของ Nanonyam อยู่ที่การทำให้ฟังก์ชัน อินเทอร์เฟซ และ bootloader ง่ายขึ้น ดังนั้นโครงการนี้ควรเป็นที่สนใจของโปรแกรมเมอร์มือใหม่และผู้ที่พอใจกับระดับของ 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"
การสร้างโมดูลพิเศษ "Nanonyam สำหรับ 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 สองไฟล์ไปยังโฟลเดอร์ร่าง เรารับเฉพาะไฟล์ที่ไม่มีคำนำหน้า "with_bootloader.mega"
มีหลายวิธีในการระบุไฟล์ HEX ไปยังเครื่องเสมือน Nanonyam ซึ่งอธิบายไว้ทั้งหมด
ในทำนองเดียวกัน คุณสามารถสร้างโปรแกรมในสภาพแวดล้อมอื่นๆ เช่น AVR Studio หรือ WinAVR
นี่คือจุดที่เราทำความรู้จักกับ Nanonyam แนวคิดหลักควรชัดเจน
ขอขอบคุณทุกท่านที่ให้ความสนใจและเขียนโปรแกรมที่ดี!
ที่มา: will.com