- 1. Perkembangan Kebutuhan Produk
- 2. Perancangan Sistem dan Pengembangan Algoritma
- 3. Pengkodean untuk Firmware Tertanam
- Menguji Firmware Tertanam
Pengembangan perangkat lunak umumnya sulit tetapi untuk sistem tertanam, itu berada pada tingkat kesulitan yang sama sekali baru. Pengembang firmware perlu memiliki pengetahuan yang baik tentang pengembangan perangkat keras dan memahami cara kerja internal prosesor yang disematkan. Untuk Artikel hari ini, saya akan membagikan alat dan tip yang dapat digunakan untuk mencapai tingkat efisiensi yang tinggi dan menghilangkan beberapa hal yang membuat pengembangan firmware menjadi membosankan.
Pengembangan perangkat lunak tertanam mengalami proses pengembangan yang serupa dengan pengembangan perangkat lunak "biasa". Terlepas dari model pengembangan / manajemen yang diadopsi, Pengembangan Perangkat Lunak Tertanam umumnya melibatkan langkah-langkah di bawah ini:
- Perkembangan kebutuhan produk
- Desain Sistem dan Pengembangan Algoritma
- Pengodean
- Menguji
Kami akan memeriksa beberapa kesulitan yang datang dengan tahapan ini dan beberapa alat yang dapat meningkatkan efisiensi dan produktivitas.
1. Perkembangan Kebutuhan Produk
Spesifikasi produk sering kali dilakukan dengan mempertimbangkan perancang papan. Biasanya berisi sedikit informasi yang dapat membantu pengembangan firmware sehingga, pengembang perangkat lunak yang disematkan berakhir dengan dokumen 250 halaman (rata-rata) yang cacat yang tidak dapat digunakan untuk referensi dan jika tidak dipertimbangkan dengan hati-hati dapat dengan mudah menyebabkan kekeliruan dalam desain yang pada gilirannya akan, pada gilirannya, menyebabkan kerangka waktu proyek diperpanjang jika bukan kegagalan proyek secara keseluruhan. Dokumen jarang berisi informasi tentang register atau bidang bitnyaantara lain dan ini membebani pengembang firmware beberapa jam kerja karena mereka mencari melalui dokumen untuk mengidentifikasi hal-hal seperti register mana yang termasuk dalam grup mana dan field bit mana yang termasuk register mana. Di bawah ini adalah beberapa tip yang dapat dipertimbangkan untuk memastikan pengembangan dokumen spesifikasi proyek yang lebih berguna.
Penggunaan Deskripsi Register
Seperti dibahas di atas, pengembang firmware perlu memahami seluk-beluk semua register, memori, dll. Dari semua elemen kontrol (CPU, MCU, dll.) Dalam sebuah proyek agar dapat mengontrol semua bagian sistem secara efektif. Untuk menempatkan ini, pengembang firmware dapat memastikan dokumen spesifikasi membawa deskripsi register yang tepat bersama dengan peta memori. Semua register dalam elemen kontrol dapat diberi nama khusus yang membuatnya mudah untuk diidentifikasi di seluruh dokumen dan semuanya dapat di-hot-linked sehingga mengarah ke daftar di dalam dokumen yang menyatakan nama, lokasi, blok dan alamat setiap register.
Deskripsi Tugas
Cara lain untuk membuat dokumen spesifikasi berguna bagi pengembang perangkat lunak tertanam adalah dengan menjelaskan apa yang seharusnya dilakukan setiap blok dan bagaimana seharusnya melakukannya. Juga pada tahap ini, harus ada rencana penanganan error di setiap blok. Pada dasarnya ini terlihat seperti kata pengembang firmware; “Ketika saya sampai di sini, saya harus melakukan ini, ini dan ini, memastikan ini, ini dan itu, tidak terjadi”. Ini membantu memandu pekerjaan pengembang dan membantu mengevaluasi proyek bahkan sebelum desain mulai mengidentifikasi potensi kesalahan dan bug, menghemat waktu dan uang yang berharga.
Ada faktor-faktor lain termasuk struktur dokumen, penggunaan font yang mudah dibaca (sesuatu yang dapat dikerjakan oleh pengembang bahkan ketika lelah), bagan dan gambar jika memungkinkan yang semuanya dapat meningkatkan efisiensi tim firmware setelah tahap ini.
2. Perancangan Sistem dan Pengembangan Algoritma
Tahap ini melibatkan pengembangan pseudocodes, diagram alur, mesin negara dan segala sesuatu yang terlibat dengan desain firmware apa. Untuk tahap ini, cukup banyak alat yang dapat digunakan untuk membantu mengatur pemikiran, menjelajahi perangkat lunak lama / yang ditulis sebelumnya di sekitar proyek dan mengembangkan diagram alur Anda sendiri, mesin status, dll. Beberapa alat ini dibahas di bawah.
PIM
Pada tahap pengembangan produk ini, pengembang cenderung mencoret-coret banyak saat mereka mengumpulkan sumber daya pada proyek dari tautan web hingga rumus, dll. Salah satu cara terbaik untuk melacak informasi ini agar berguna nanti adalah melalui penggunaan PIM alat (manajemen informasi produk). Ada cukup banyak PIM di luar sana tetapi saya akan menyebutkan beberapa dengan beberapa fitur luar biasa.
1. Evernote
Evernote membantu Anda membuat catatan yang tersedia di semua platform sehingga Anda dapat memeriksa catatan yang Anda buat di PC saat berada di dalam bus. Catatan diatur dengan baik dan benar-benar dapat dicari sehingga Anda akan selalu menemukan apa yang Anda butuhkan.
2. TrunkNote
Catatan batang adalah aplikasi pencatatan mirip Wiki. Ini membawa semua kekuatan organisasi wiki ke pencatatan. Ini adalah aplikasi berbasis ponsel tetapi dapat dengan mudah disinkronkan dengan PC melalui WIFI.
Jenis PIM lainnya seperti Tiddlywiki, dll. Masing-masing dilengkapi dengan fitur yang dapat membuatnya lebih menarik bagi individu tertentu dan dapat mengambil beberapa contoh sebelum Anda akhirnya memutuskan salah satunya.
Memahami Kode Legacy
Kelompok alat lain yang sangat berguna selama tahap desain adalah alat untuk memahami kode warisan. Dalam situasi di mana produk yang sedang dirancang merupakan versi perbaikan dari produk sebelumnya, pengembang mungkin akan berguna untuk meninjau pekerjaan yang telah dilakukan untuk mendapatkan beberapa ide dan mungkin sedikit kode untuk proyek baru ini. Ini mungkin jalan yang cukup panjang, terutama jika Anda bukan bagian dari tim yang membuat perangkat lunak sebelumnya. Ada cukup banyak perangkat lunak yang membantu membangun pohon, membuat dokumentasi, dan diagram alur dari kode yang sudah tertulis.
1. Doksigen
Doxygen adalah alat yang cukup kuat yang membantu membuat dokumentasi dari kode sumber. Itu sebagian besar dirancang untuk bekerja dengan C ++ tetapi juga bekerja dengan C, Python dan beberapa bahasa lainnya. Ia memiliki kemampuan untuk mengekstrak struktur kode dari kode apa pun, menyediakan grafik ketergantungan yang dihasilkan secara otomatis dan diagram Warisan untuk membantu memvisualisasikan kode.
2. Graphviz
Menurut situs web mereka, graphviz membantu menyajikan informasi struktural sebagai diagram grafik dan jaringan abstrak. Ini dapat digunakan bersama Doxygen untuk lebih memahami grafik yang dihasilkan olehnya.
3. Rekam
Srecord adalah alat yang ampuh untuk memanipulasi gambar firmware dan mengonversi antara format file yang berbeda. Ini dapat digunakan untuk menghitung dan melakukan CRC dan Checksum pada blok byte, memperbaiki file kesalahan yang dibuat karena rantai alat buggy, dan memfilter atau memindahkan bagian file antara lain. Informasi lebih lanjut tentang penggunaannya dapat ditemukan di halaman SourceForge.
Beberapa alat lain yang termasuk dalam kategori ini adalah CrystalRev dan Hexplorer .
Mengembangkan Algoritma
Semua kumpulan penelitian dan pencatatan untuk pengembangan algoritme yang berputar menjadi pseudocodes dan diagram alur untuk proyek tersebut. Beberapa alat tersedia untuk mengembangkan diagram alur dan sementara kebanyakan dari mereka tidak eksklusif untuk pengembangan firmware, mereka menyediakan fitur yang berguna dan penting yang hanya menyelesaikan pekerjaan dan juga membantu menjaga grafik selama siklus pengembangan produk. Di bawah ini adalah beberapa alat terbaik di luar sana untuk diagram alur.
1. QFSM
QFSM adalah alat grafis untuk merancang dan mensimulasikan mesin keadaan hingga. Kemampuannya untuk mensimulasikan desain membuatnya jauh lebih baik daripada kebanyakan perangkat lunak lain dalam grup ini. Ini sangat berguna ketika Anda mendesain mesin negara untuk FPGA dan perangkat keras target serupa.
2. Bagan Lucid
Bagan jernih bisa dibilang adalah perangkat lunak diagram alur terbaik dan paling fleksibel di luar sana. Ini berbasis web dan memiliki fitur tim yang memungkinkan Anda untuk bekerja di antara banyak perangkat dan berkolaborasi secara real-time dengan rekan satu tim.
3. Microsoft Visio
Visio adalah salah satu alat grafis terbaik saat ini. Ini memiliki larik objek dari berbagai bidang yang membuatnya mudah untuk menggambarkan apa pun. Namun, itu tidak datang dengan fitur yang meningkatkan kolaborasi di antara tim dan hanya dapat digunakan pada mesin windows yang menginstalnya.
4. Google Slide
Salah satu hal utama dalam pengembangan produk di dunia saat ini adalah penggunaan alat yang memungkinkan tim untuk berkolaborasi secara efektif dari mana pun mereka berada dan itu adalah satu hal yang dibawa oleh Google slide. Ini dapat digunakan untuk mengembangkan semua jenis bagan dari bagan alir perangkat lunak hingga bagan organisasi dan peta pikiran. Ini berbasis cloud dan bekerja di hampir semua browser populer.
Beberapa alat lain tersedia untuk pembuatan diagram alur dan pengembangan algoritme umum, seperti biasa, masing-masing dengan pro dan kontranya sendiri.
3. Pengkodean untuk Firmware Tertanam
Segala sesuatu yang telah disebutkan sampai saat ini mengarah ke sini. Dunia SDK dan IDE, pilihan alat pada tahap ini tergantung pada perangkat target dan fitur yang akan dibangun ke dalam perangkat, untuk alasan ini, saya akan mengecualikan SDK dan IDE populer seperti MPLAB, dll dari diskusi dan hanya menempel hingga alat yang sifatnya lebih saling melengkapi.
1. QT (Pengembangan GUI)
Tampilan (interaktif atau tidak) adalah media paling populer untuk memberikan umpan balik kepada pengguna saat ini dan QT's SDK adalah salah satu yang terbaik di luar sana dan mungkin tidak asing bagi siapa pun di dalam lingkaran tersemat. Ini menyediakan fitur "drag and drop" yang membuatnya mudah untuk mengembangkan aplikasi berbasis GUI yang kompleks untuk perangkat tertanam, terlepas dari platform target, atau bahasa pemrograman yang digunakan untuk pengembangan proyek secara keseluruhan. Ini pada dasarnya menghilangkan tekanan terkait dengan penggunaan kode untuk membuat antarmuka pengguna.
2. (Pembuatan Prototipe Cepat)
Salah satu hambatan terbesar dalam pengembangan perangkat lunak yang disematkan adalah kenyataan bahwa perangkat keras biasanya tidak tersedia untuk menguji berbagai hal saat dalam perjalanan saat perangkat lunak sedang dikembangkan. Seringkali ketika tersedia, pengembang firmware akan dibuat menunggu sepanjang waktu yang dibutuhkan untuk perangkat keras siap melakukan sedikit atau tidak sama sekali. Ini meningkatkan waktu tunggu dan tidak menciptakan ruang untuk jenis sinkronisasi antara insinyur perangkat keras dan pengembang firmware yang akan meningkatkan kualitas produk. Untuk membantu memecahkan masalah ini, orang-orang di VaST membuat platform prototipe virtual tingkat sistem elektronik yang dapat digunakan untuk membuat prototipe perangkat keras virtual di mana perangkat lunak tertanam dapat dijalankan untuk menentukan kinerja sistem sebelum perangkat keras siap.
3. Doxygen (Dokumentasi)
Salah satu bagian terpenting dari penulisan kode apa pun adalah dokumentasi dan salah satu alat paling populer untuk itu adalah Doxygen. Selain penggunaannya untuk memahami perangkat lunak lama, Doxygen memiliki kemampuan untuk mengekstrak komentar secara otomatis dari kode dan membuat dokumentasi yang menyertakannya. Struktur oksigen menyertakan file secara grafis dan membuat referensi untuk setiap fungsi, Variabel, dan makro yang digunakan dalam kode Anda. Diagram alir dan diagram aliran data juga dapat disematkan dalam dokumentasi dengan menggabungkan Doxygen dengan graphviz.
4. GIT (Sistem Kontrol Versi)
Sulit untuk percaya bahwa ada orang yang mengembangkan perangkat lunak jenis apa pun tanpa semacam sistem kontrol versi akhir-akhir ini, tetapi jika Anda melakukannya, Ini adalah ide yang sangat buruk yang dapat menyebabkan kesalahan yang akan menghabiskan waktu dan uang Anda. Git menonjol di antara semua alat kontrol versi di luar sana karena beberapa alasan. Ini open source, cepat, efisien dan kebanyakan lokal. Selain Git, alat seperti subversi juga perlu disebutkan.
Menguji Firmware Tertanam
Pengujian adalah bagian penting dari proses pengembangan untuk apa pun. Perusahaan kehilangan ribuan dolar ketika perangkat ditarik kembali karena kesalahan firmware, jadi itu salah satu bagian dari pengembangan yang harus ditangani dengan sangat serius. Hal ini sering dilakukan, bergandengan tangan, dengan pengkodean dan set alat pertama untuk pengujian kode, mungkin debugger dalam IDE atau SDK yang digunakan untuk proyek tersebut. Pengujian datang dalam berbagai bentuk dan dilakukan pada tahap yang berbeda, karena itu, melibatkan berbagai jenis alat. Alat pengujian dari pengembangan firmware melintasi validasi desain hingga alat analisis statis dan pengujian runtime. Di bawah ini adalah beberapa alat yang menurut saya sangat berguna.
1. Kristal REV
Crystal revs adalah alat untuk mempelajari kode. Ini dapat digunakan untuk menghasilkan diagram alur dari kode C / C ++ yang menjadikannya alat yang hebat untuk meninjau kode Anda sendiri dan melihat apakah desain awal yang diterapkan. Dengan rev kristal, Anda akan dapat dengan cepat melihat perbedaan antara desain dan implementasi. Kemampuannya untuk menghasilkan diagram alir, data, dan aliran panggilan dari kode juga menjadikannya alat yang berguna untuk menganalisis kode lama.
2. PC-Lint
PC-lint adalah salah satu alat pengujian firmware tertua. Ia mampu menganalisis perangkat lunak untuk mengidentifikasi bug, kerentanan keamanan, dan memastikan kode ditulis sesuai dengan standar industri. Alat serupa termasuk polyspace, dan LRDA, Eggplant, dan Tessy antara lain.
3. Wireshark
Ini berguna saat membangun perangkat jaringan. Ini pada dasarnya adalah sniffer paket dan dapat membantu melihat data yang dikirimkan perangkat Anda. Ini bisa membantu mengamankan perangkat.
4. Driver Port Serial Virtual
Perangkat lunak VSPD by eltima adalah alat yang baru-baru ini saya perkenalkan juga oleh seorang teman. Ini sangat berguna saat bekerja pada driver perangkat dan pengembangan terkait com port lainnya. Port com serial virtual memberi Anda kemampuan untuk menguji perilaku port com tanpa perangkat target. Anda dapat membuat port dalam jumlah tak terbatas yang mampu meniru semua pengaturan port com nyata. Perangkat lunak ini juga dilengkapi dengan fitur-fitur seperti Pembelahan port serial, penggabungan port Com, penggunaan koneksi bundel port com di antara fitur-fitur keren lainnya.
Sekian untuk artikel ini, terima kasih telah meluangkan waktu untuk membaca. Meskipun tidak mungkin untuk mencantumkan semua alat di luar sana, saya harap Anda menemukan beberapa alat ini berguna.