Halo, sesama programmer, perangkat keras, dan semua yang bersimpati pada mereka. Saya ingin menyajikan tinjauan singkat tentang kemampuan IDE Qt Creator dalam hubungannya dengan sistem build QBS terkait pemrograman mikrokontroler. Kepada siapa topik ini menarik, selamat datang di kucing.
Beberapa hari yang lalu, secara diam-diam dan tanpa disadari, rilis
Qt Creator 4.10 dirilis, yang menambahkan beberapa perbaikan untuk bekerja dengan mikrokontroler (pada orang umum - perangkat "baremetal"). Rilis Qt Creator ini mengintegrasikan sistem
build QBS 1.14 , yang juga memiliki peningkatan baru. Beberapa peningkatan ini akan dibahas di bawah ini.
Perbaikan pada Qt Creator
Semua peningkatan ini hanya tersedia ketika plugin BareMetal diaktifkan, yang diaktifkan melalui menu "Bantuan -> Tentang Plugin -> Dukungan Perangkat -> BareMetal".
- Tiga kompiler baru sekarang didukung, informasi dasar tentang yang diberikan dalam tabel di bawah ini:
Catatan: Perlu dicatat bahwa produk-produk dari IAR EW dan KEIL untuk arsitektur yang berbeda disediakan oleh paket terpisah yang harus diinstal secara independen. Perbedaannya, katakanlah, dari kompiler SDCC yang mendukung beberapa arsitektur sekaligus.
- Sekarang ini kompiler baru secara otomatis terdeteksi pada tab "Tools -> Options -> Kits -> Compiler -> Auto-detected".
Misalnya, bagi saya tampilannya seperti ini:

Catatan: Seperti yang Anda lihat, untuk C ++ tidak ada kompiler KEIL untuk MCS51, yang benar, karena kompiler ini hanya mendukung C. Juga, kompiler SDCC akan hilang di sini karena alasan yang sama.
- Dimungkinkan juga untuk menambahkan kompiler baru ini secara manual melalui menu "Tools -> Options -> Kits -> Compiler -> Add":

- Untuk kompiler, ABI-nya (arsitektur, format dan lebar kata) akan ditentukan secara otomatis. Informasi tentang ini dapat dilihat hanya dengan mengklik pada kompiler.
Sebagai contoh, untuk IAR EW dan arsitektur 8051 (MCS51) saya, terlihat seperti ini:

Catatan: Dalam hal ini, kompiler dipilih yang terdeteksi secara otomatis, sehingga bidang ABI tidak aktif di sini. Tetapi ketika menambahkan kompiler secara manual, pengguna dapat memilih ABI yang benar, jika karena alasan tertentu itu ditentukan secara salah.
- Untuk kompiler, semua makronya akan terdeteksi secara otomatis. Dengan demikian, mereka akan disorot dengan benar di editor kode.
Catatan: Pengecualian hanya kata kunci dari beberapa kompiler (misalnya, untuk arsitektur 8051), yang akan disorot dengan peringatan. Tapi itu cerita lain.
- Untuk kompiler, direktori dengan file header-nya akan terdeteksi secara otomatis. Dengan demikian, mereka akan disorot dengan benar di editor kode.
- Parser untuk kesalahan dan peringatan dari kompiler baru ini diimplementasikan, yang ditampilkan di panel Masalah.
Perbaikan dalam QBS
QBS akan menjadi bagian integral dari ulasan ini, jadi masuk akal untuk berbicara tentang peningkatannya:
- Dukungan tambahan untuk kompiler baru ini (beberapa di antaranya sejak versi 1.13).
- Menerapkan kemampuan untuk secara otomatis mendeteksi kompiler yang diinstal dan membuat profil. Untuk apa utilitas qbs-setup-toolchains digunakan.
Dalam kasus saya, tampilannya seperti ini:
c:\Qt-meta\Tools\QtCreator\bin>qbs-setup-toolchains.exe --detect ... Trying to detect IAR toolchains... Profile 'iar-arm' created for 'C:/Program Files (x86)/IAR Systems/Embedded Workbench 8.3/arm/bin/iccarm.exe'. Profile 'iar-mcs51' created for 'C:/Program Files (x86)/IAR Systems/Embedded Workbench 8.0/8051/bin/icc8051.exe'. Profile 'iar-avr' created for 'C:/Program Files (x86)/IAR Systems/Embedded Workbench 8.0/avr/bin/iccavr.exe'. Trying to detect KEIL toolchains... Profile 'keil-mcs51' created for 'C:/Keil_v5/C51/BIN/c51.exe'. Profile 'keil-arm' created for 'C:/Keil_v5/ARM/ARMCC/bin/armcc.exe'. Trying to detect SDCC toolchains... No SDCC toolchains found. ...
Untuk melihat apa yang ditemukan di sana, Anda dapat menggunakan utilitas GUI qbs-config-ui .
Dalam kasus saya, tampilannya seperti ini:

Fitur membuat proyek
Adalah penting untuk memiliki ide dan dapat dengan benar mengisi properti proyek untuk
modul cpp dan
qbs .
Marilah kita memikirkan yang paling penting dari mereka dan mempertimbangkannya secara lebih rinci:
Untuk menentukan file skrip untuk linker, ada tag khusus "linkerscript", yang harus Anda gunakan, misalnya:
Group { name: "Linker Scripts" fileTags: ["linkerscript"] files: ["cfg3soim.xcl", "cfgcan128.xcl"] }
Catatan: Alasannya karena untuk kompiler yang berbeda ada opsi berbeda untuk penamaan file-file ini. Untuk GCC yang sama, dapat berupa file dengan ekstensi * .ld, * .x, * .xn, * .xbn, dll. (Apa yang dapat kita katakan tentang kompiler lain ...). Oleh karena itu, diputuskan untuk tidak repot-repot menandai semua ekstensi file yang mungkin untuk kompiler tertentu, tetapi hanya menggunakan tag tautan untuk tujuan dan situasi yang dimaksud.Untuk melihat bagaimana semuanya bekerja, QBS menyediakan serangkaian
contoh sederhana yang hanya βmenyentakβ kaki dan mengedipkan LED.
Ada apa dengan debugging
Sayangnya, situasi debugging sangat menyedihkan. Produk (IDE) IAR EW dan KEIL menggunakan debugger mereka, tetapi sejak itu Karena produk-produk ini adalah hak milik, maka tidak mungkin mendapatkan deskripsi tentang pengoperasian protokol para penentang ini di suatu tempat. Satu-satunya pilihan adalah mencoba merekayasa balik plugin untuk Eclipse (misalnya, IAR EW menyediakan plugin ini), tetapi ini membutuhkan motivasi serius.
Tapi saya bisa sedikit senang jika saya mengatakan bahwa untuk arsitektur ARM Anda dapat menggunakan debugger GDB. Setidaknya itu bekerja untuk saya untuk IAR EW (tetapi, sesuatu tidak berhasil dengan KEIL, mungkin beberapa bendera tambahan harus ditunjukkan ke tautan di sana).
Apa selanjutnya
Di sini saya sedikit spoiler, saya akan mengatakan bahwa dalam versi berikutnya (saya tidak tahu yang mana), arsitektur STM8 dan MSP430 harus ditambahkan, dan juga pada generator QBS akan diimplementasikan dalam proyek IAR EW dan KEIL asli (yang akan memungkinkan, misalnya, untuk melakukan debug proyek).
Pada catatan ini, saya akhiri kisah saya, terima kasih semua yang akan memperhatikan ulasan ini.