Eclipse #include

Halo semuanya!
Baru-baru ini, beberapa artikel diterbitkan di GT menentang dan untuk menggunakan Arduino untuk sesuatu yang lebih menguntungkan daripada lampu berkedip dan membuat stasiun cuaca rumah. Wacana seperti biasa dari dunia teknologi, ketika teknologi menjadi semakin mudah diakses oleh masyarakat umum, berenang, kita tahu.
Memiliki pendidikan teknis dan spesialisasi universitas yang berhubungan langsung dengan pemrograman mikrokontroler, saya memahami mereka yang menentangnya. Dan memiliki pengalaman bertahun-tahun dalam mengkomersilkan tidak hanya keahlian saya, tetapi juga untuk pengetahuan dan keterampilan asing yang lebih luas, saya sangat memahami mereka yang mendukungnya.
Anda benar, dan Anda juga benar, dan kebenaran, seperti biasa, ada di suatu tempat dekat di tengah.

Pertama-tama, Anda perlu memahami apa argumennya. Arduino tidak hanya dikemas dengan indah oleh orang Italia di papan sirkuit cetak dan kotak mikrokontroler, dan tidak hanya lingkungan pengembangan IDE Arduino. Pertama-tama, ini adalah perpustakaan untuk pengembangan cepat, dan menurut saya itu adalah nilai yang paling besar. Jika Anda melihat diagram sirkuit papan Arduino, maka kita tidak akan melihat sesuatu yang sangat mengesankan. Lingkungan pengembangan ... Katakan saja itu tidak cukup mencapai model Borland C ++ tahun 1994 .
Seperti yang kita ketahui, perpustakaan ini didistribusikan di bawah lisensi GNU, mereka dapat diambil dan digunakan tanpa membayar royalti kepada pencipta mereka. Model bisnis seperti itu membutuhkan uang dari sesuatu selain royalti. Jadi mereka menghasilkan dengan memproduksi dan menjual dalam paket indah seharga 20 dolar apa yang akan dibeli seorang insinyur elektronik seharga 20 sen.
Dan yang penting di sini bukanlah bahwa mereka borjuis rakus, merampok rakyat pekerja dan tercela dari semua umat manusia progresif, tetapi mengapa mereka dapat melakukan ini. Karena:
  • Mereka muncul pada waktu yang tepat di tempat yang tepat dan melihat peluang pertama yang tidak dilihat orang lain;
  • Mereka menyediakan bagi konsumen apa yang sebelumnya tersedia untuk lingkaran sempit individu-individu terbatas;
  • Semuanya dikemas dengan indah dan disajikan kepada konsumen dalam bentuk siap pakai.


, . Arduino โ€” .
โ€” . , .

, , - -, 86% . :
  1. ?
  2. ?

( ยซยป)
, , ., , . M X Y Z .

Berdasarkan pengalaman bisnis, saya berani mengatakan bahwa pelanggan akan memilih jalur perokok arduino.

Lebih lanjut tentang bagaimana menggunakan Arduino untuk tujuan egois mereka sendiri, dengan blackjack dan pengembangan kelompok, kontrol versi, mendokumentasikan proyek dan angsa boneka lainnya dari dunia pengembangan komersial.
Padahal, semuanya sangat sederhana. Untuk ini, selain dari pengembang, kita membutuhkan lingkungan pengembangan dan pendirian yang dapat mereka kembangkan. C ++, di Afrika C ++, AVR dan di Arduino tetap AVR.

Sebagai lingkungan, pertimbangkan Eclipse. Berikut ini adalah artikel yang sangat bagus tentang cara mengkonfigurasi Eclipse pertama yang bekerja dengan AVR Toolchain, dan kemudian menghubungkan perpustakaan Arduino dan mengedipkan LED pada Uno.Dan di sini bahkan lebih baik , tetapi dalam bahasa Inggris.
Saya akan melengkapi mereka dengan beberapa garu yang telah saya injak, mungkin ini akan menghemat waktu beberapa jam bagi seseorang.
Semua hal berikut dijelaskan untuk Linux dan Leonardo. Untuk Windows, Anda harus menginstal MinGW / msys terlebih dahulu .

Untuk membangun semua sumber yang termasuk dalam inti Arduino, Anda perlu mengatur konstanta preprosesor dengan benar. Jika Anda melihat kode sumber perpustakaan, Anda dapat melihat banyak struktur kompilasi bersyarat #ifdef #else #endif. Dalam sebuah artikel dengan referensi, penulis menilai semuanya dengan mengambil file .a siap pakai yang dikompilasi oleh Arduino IDE. Tetapi tidak semua perpustakaan jatuh ke kernel, misalnya, SPI dan Ethernet tidak jatuh ke dalamnya, dan lelucon yang sama dengan kompilasi bersyarat menunggu kita di dalamnya.
Mencari tahu konstanta mana dan bagaimana mengatur bisa sangat sederhana.
  1. Arduino IDE
  2. ,
  3. โ€” โ€” โ€”
  4. ,
    *** avr-g++ -c -g -Os -w -std=gnu++11 -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics  -w -x c++ -E -CC -mmcu=atmega32u4 -DF_CPU=16000000L -DARDUINO=10607 -DARDUINO_AVR_LEONARDO -DARDUINO_ARCH_AVR  -DUSB_VID=0x2341 -DUSB_PID=0x8036 '-DUSB_MANUFACTURER="Unknown"' '-DUSB_PRODUCT="Arduino Leonardo"' ***
    

    , -D ( F_CPU, Eclipse ) Eclipse.


Agar kompiler dapat menemukan semua file .h yang ingin kita gunakan dalam proyek, kita perlu menentukan path ke mereka dalam pengaturan. Ada dua cara. Anda dapat menentukan jalur absolut ke folder Arduino IDE atau menautkan perpustakaan ke proyek dan menentukan jalur relatif dari {workspase} / {ProjName}. Metode kedua akan memungkinkan Anda untuk mengkompilasi kernel di Eclipse, meskipun tidak ada perbedaan mendasar, dan di Arduino IDE dan Eclipse, avr-g ++ bertanggung jawab untuk mengkompilasi.
Selain itu, tentukan jalur ke pins_arduino.h untuk papan yang kami gunakan dalam proyek.

Agar tidak melanggar struktur harmonis dari file library main.cpp, kami tidak akan mengeditnya. Cukup sertakan dari kernel ke proyek, dan kami akan memanggil file kami dengan nama lain. Tidak perlu mendeklarasikan fungsi main () di dalamnya, ia sudah ada di main.cpp, menginisialisasi semua yang diperlukan dan memanggil fungsi loop () dalam infinite loop, linker akan mengumpulkan semuanya sebagaimana mestinya.

Lingkungan siap berangkat. Kami menulis dengan cara yang hampir sama dengan di Arduino IDE, tetapi di sini mereka memantau kepatuhan terhadap kanon C ++ sedikit lebih ketat. Dan setiap saat kita dapat turun dari pemrograman tingkat tinggi ke lantai di bawah ini. Jika kecepatan bekerja dengan port melalui digitalWrite tidak cukup, kami menulis langsung ke porta.
Sayangnya, kebiasaan menggantung prosesor dengan panggilan
delay(5000);
Gerhana tidak menyembuhkan. Ini diajarkan di suatu tempat baik di sekolah menengah atau di sekolah menengah pertama, itu menembus kepribadian begitu dalam sehingga tidak ada moral yang dapat memimpin seseorang di jalan yang benar.

Untuk mengisi Arduino IDE dan Eclipse gunakan utilitas programmer AVRDude. Dia benar-benar tahu papan seperti Uno dengan nama "arduino", tetapi dia pasti menolak untuk mengenali papan yang lebih murah seperti Leonardo.
Kami pergi ke boards.txt dan mengetahui bahwa untuk programmer, Programmer dalam pengaturan AVRDude disebut "Atmel AppNote AVR109 Boot Loader", ini dia: Sedikit ketidaknyamanan hanya karena Eclipse tidak akan melakukan ini. Anda harus menekan reset dengan pena sebelum memuat. Kesimpulannya, proyek yang sama, dirakit di Arduino IDE
leonardo.upload.protocol=avr109




leonardo.upload.use_1200bps_touch=true




28 432 (99%) . 28 672 .
1 254 (48%) , 1 306 . : 2 560 .

dan di Eclipse A trifle, tetapi untuk menyelesaikannya hanya setengah kilo ini dan tidak cukup.
Invoking: Print Size
avr-size --format=avr --mcu=atmega32u4 EthernetController.elf
AVR Memory Usage
----------------
Device: atmega32u4

Program: 27834 bytes (84.9% Full)
(.text + .data + .bootloader)

Data: 1257 bytes (49.1% Full)
(.data + .bss + .noinit)

Finished building: sizedummy

Source: https://habr.com/ru/post/id390441/


All Articles