Suatu hari saya mempunyai idea gila untuk dibawa
Saya memanggil projek Nanonyam (Nanonyam) dan juga menghasilkan logo untuknya (saya melukis selama 5 minit).
Bagi mereka yang berfikir dari segi Arduino, kita boleh mengatakan bahawa Nanonyam adalah perisai Arduino maya untuk mengawal Windows.
Dalam erti kata lain, Nanonyam ialah mesin maya yang menggunakan perisian tegar untuk mikropengawal AVR (ATMEGA2560 disyorkan) sebagai kod bait. Di dalam mesin maya ini terdapat simulator teras AVR, tetapi bukannya persisian, yang terletak di alamat SRAM dari 0x0060 hingga 0x01FF, terdapat antara muka khas untuk fungsi maya (termasuk fungsi API Windows). Dan di sini adalah sangat penting untuk difahami dengan segera: kod untuk Nanonyam tidak sepatutnya mempunyai sebarang akses kepada julat memori yang ditentukan, supaya tidak memanggil secara tidak sengaja, sebagai contoh, fungsi memadam fail atau memformat cakera. Selebihnya julat memori SRAM dari 0x0200 hingga 0xFFFF (ini lebih banyak daripada dalam mikropengawal sebenar) tersedia kepada pengguna untuk sebarang tujuan. Saya segera perhatikan bahawa terdapat perlindungan khas terhadap pelancaran tidak sengaja perisian tegar mikropengawal sebenar (atau perisian tegar dari seni bina lain): sebelum mengaktifkan fungsi "berbahaya", anda perlu memanggil fungsi maya rumit khas. Terdapat beberapa ciri keselamatan lain juga.
Untuk mencipta program untuk Nanonyam, anda perlu menggunakan perpustakaan khas yang melaksanakan semua fungsi maya yang tersedia pada masa ini. Muat turun mesin maya Nanonyam dan perpustakaan untuknya
Nanonyam adalah percuma untuk kegunaan rumah dan komersial. Program Nanonyam disediakan atas dasar "seadanya". Kod sumber tidak disediakan.
Program ini kini dalam fasa ujian. Melaksanakan kira-kira 200 fungsi maya yang membolehkan anda mencipta program mudah untuk Windows.
Jelas sekali, mencipta sesuatu yang rumit dalam mesin maya sedemikian tidak akan berfungsi, kerana memori untuk kod itu hanya 256 kB. Data boleh disimpan dalam fail berasingan, penimbal untuk bahagian grafik dilaksanakan secara luaran. Semua fungsi dipermudahkan dan disesuaikan untuk seni bina 8-bit.
Apa yang boleh anda lakukan di Nanonyam? Saya datang dengan beberapa masalah.
Pembangunan blok program
Saya pernah perlu mereka bentuk menu yang kompleks untuk paparan grafik 128x64 titik. Saya benar-benar tidak mahu sentiasa memuatkan perisian tegar ke dalam mikropengawal sebenar untuk melihat bagaimana piksel kelihatan. Maka lahirlah idea Nanoyam. Rajah di bawah menunjukkan imej daripada paparan OLED sebenar bagi salah satu item pada menu yang sama. Sekarang saya boleh mengatasinya tanpa peranti sebenar.
Nanonyam (dalam idea terakhirnya) ialah alat yang baik untuk menyusun blok program untuk mikropengawal, kerana terdapat fungsi untuk bekerja dengan grafik (anda boleh mensimulasikan paparan dan penunjuk), dengan fail (anda boleh membuat log, membaca data ujian), dengan papan kekunci (anda boleh membaca sehingga 10 butang pada masa yang sama), dengan port COM (di sini adalah item yang berasingan).
Mencipta Program Pantas
Sebagai contoh, anda perlu memproses 100500 fail teks dengan cepat. Setiap satu perlu dibuka, diubah suai sedikit mengikut beberapa algoritma mudah, disimpan dan ditutup. Jika anda seorang pakar Python, maka saya mengucapkan tahniah kepada anda, anda mempunyai segala-galanya. Tetapi jika anda adalah arduino yang keras (dan terdapat banyak daripada mereka), maka Nanonyam akan membantu anda dalam menyelesaikan masalah ini. Ini adalah matlamat kedua saya di Nanonyam: untuk menambah banyak fungsi berguna seperti pemprosesan teks, mengambil tangkapan skrin atau mensimulasikan ketukan kekunci dalam sistem (semuanya, dengan cara itu, sudah ada), serta banyak fungsi lain untuk menyelesaikan tugas rutin .
Menguji perkakasan melalui port COM
Nanonyam boleh bertindak sebagai terminal yang berfungsi mengikut algoritma anda. Anda boleh melukis menu kecil untuk mengawal peranti dan memaparkan data yang diterima daripada port. Anda boleh menyimpan dan membaca data daripada fail untuk analisis. Alat yang berguna untuk penyahpepijatan mudah dan penentukuran perkakasan, serta untuk mencipta panel kawalan instrumen maya ringkas. Bagi pelajar dan saintis muda, projek ini boleh menjadi sangat berguna.
Latihan pengaturcaraan
Walau bagaimanapun, seperti keseluruhan projek Arduino, kegunaan utama Nanonyam terletak pada pemudahan fungsi, antara muka dan pemuat but. Oleh itu, projek ini harus menarik minat pengaturcara baru dan mereka yang berpuas hati dengan tahap arduino. By the way, saya sendiri masih belum mempelajari arduino secara terperinci, kerana saya selalu menggunakan WinAVR atau AVR Studio, tetapi bermula dengan assembler. Oleh itu, program contoh di bawah akan menjadi sedikit salah, tetapi agak berfungsi.
Hello Habr!
Sudah tiba masanya untuk membiasakan diri dengan beberapa ciri Nanonyam dan menulis program mudah. Kami akan menulis dalam Arduino, tetapi tidak dengan cara biasa, tetapi dengan cara yang saya boleh sekarang (saya sudah mengatakan bahawa saya belum mengetahui persekitaran ini dengan baik lagi). Mula-mula, buat lakaran baharu dan pilih papan Mega2560.
Simpan lakaran ke fail dan salin seterusnya
#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"
Adalah lebih tepat untuk membuat modul khas "Nanonyam untuk Arduino", yang boleh dipasang terus dari Arduino. Sebaik sahaja saya memikirkannya, saya akan melakukannya, tetapi buat masa ini saya hanya menunjukkan intipati bekerja dengan mesin maya. Kami menulis kod berikut:
//Π‘ΡΠ°Π·Ρ ΠΏΠΎΡΠ»Π΅ Π·Π°ΠΏΡΡΠΊΠ° ΡΠΈΡΡΠ΅ΠΌ ΡΠ΅ΠΊΡΡ Π² ΠΎΠΊΠ½Π΅
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);//ΠΠ°Π΄Π΅ΡΠΆΠΊΠ° ΠΈ ΡΠ°Π·Π³ΡΡΠ·ΠΊΠ° ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°
}
Lakarkan dengan program ini
Kami menekan butang "Semak" dan tidak sepatutnya terdapat sebarang ralat.
Kini anda perlu mendapatkan fail binari (perisian tegar). Pilih menu "Lakaran>>Eksport fail binari (CTRL+ALT+S)".
Ini akan menyalin dua fail HEX ke folder lakaran. Kami hanya mengambil fail tanpa awalan "with_bootloader.mega".
Terdapat beberapa cara untuk menentukan fail HEX ke mesin maya Nanonyam, kesemuanya diterangkan
Begitu juga, anda boleh mencipta program dalam persekitaran lain, seperti AVR Studio atau WinAVR.
Di sinilah kami menamatkan perkenalan kami dengan Nanonyam. Idea utama harus jelas.
Terima kasih semua atas perhatian anda dan pengaturcaraan yang baik!
Sumber: www.habr.com