- 1. Ürün Gereksiniminin Geliştirilmesi
- 2. Sistem Tasarımı ve Algoritma geliştirme
- 3. Gömülü Ürün Yazılımı için Kodlama
- Gömülü Ürün Yazılımını Test Etme
Yazılım geliştirme genellikle zordur, ancak gömülü bir sistem için tamamen yeni bir zorluk düzeyindedir. Firmware geliştiricilerinin donanım geliştirme hakkında iyi bilgiye sahip olması ve gömülü bir işlemcinin dahili işleyişini anlamaları gerekir. Bugünün Makalesinde, yüksek düzeyde verimlilik elde etmek ve ürün yazılımı geliştirmeyi sıkıcı hale getiren bazı şeyleri ortadan kaldırmak için kullanılabilecek araçları ve ipuçlarını paylaşacağım.
Gömülü yazılım geliştirme, "sıradan" yazılım geliştirme ile benzer geliştirme sürecinden geçer. Benimsenen geliştirme / yönetim modeline bakılmaksızın, Gömülü Yazılım Geliştirme genellikle aşağıdaki adımları içerir:
- Ürün gereksiniminin geliştirilmesi
- Sistem Tasarımı ve Algoritma Geliştirme
- Kodlama
- Test yapmak
Bu aşamalarla gelen bazı zorlukları ve verimliliği ve üretkenliği artırabilecek bazı araçları inceleyeceğiz.
1. Ürün Gereksiniminin Geliştirilmesi
Ürün özellikleri genellikle kart tasarımcıları düşünülerek yapılır. Genellikle ürün yazılımı geliştirmeye yardımcı olabilecek çok az bilgi içerir, bu nedenle, gömülü yazılım geliştiricisi, referanslar için kullanılamayan ve dikkatlice düşünülmezse tasarımda kolayca göz ardı edilebilecek olan 250 sayfalık (ortalama) bir belge ile sonuçlanır. Genel proje başarısızlığı değilse, proje zaman çerçevesinin uzatılmasına yol açar. Belgeler nadiren kayıtlar veya bit alanları hakkında bilgi içerirdiğer şeylerin yanı sıra ve bu, bellenim geliştiricilerine, hangi kaydın hangi gruba ait olduğu ve hangi bit alanının hangi sicile ait olduğu gibi şeyleri belirlemek için belgede arama yaparken birkaç iş saatine mal olur. Aşağıda, daha faydalı bir proje spesifikasyon belgelerinin geliştirilmesini sağlamak için dikkate alınabilecek bazı ipuçları verilmiştir.
Kayıt Tanımlarının Kullanımı
Yukarıda tartışıldığı gibi, aygıt yazılımı geliştiricilerinin, sistemin tüm parçalarını etkin bir şekilde kontrol edebilmek için bir projedeki tüm kontrol öğelerinin (CPU, MCU, vb.) Tüm kayıtlarının, belleklerinin vb. İnceliklerini anlamaları gerekir. Bunu yerine getirmek için, aygıt yazılımı geliştiricileri, şartname belgesinin bellek haritalarının yanı sıra kayıtların uygun bir açıklamasını da taşımasını sağlayabilir. Kontrol öğesindeki tüm kayıtlara, belge boyunca tanımlanmalarını kolaylaştıran ayırt edici bir ad atanabilir ve tümü, belge içinde adı, konumu, bloğu ve adresini belirten bir listeye yönlendirecek şekilde sıcak bağlantılı olabilir. her kayıt.
Görev Açıklamaları
Spesifikasyon belgelerinin gömülü yazılım geliştiriciler için yararlı hale getirilebileceği bir başka yol, her bloğun ne yapması gerektiğini ve nasıl yapması gerektiğini açıklamaktır. Ayrıca bu aşamada, her bloğun altında hata işleme planları olmalıdır. Esasen bu, üretici yazılımı geliştiricisinin söylediği gibi görünüyor; "Buraya geldiğimde bunu, bunu ve bunu yapacağım, bunun, bunun ve bunun gerçekleşmemesini sağlıyorum". Bu, geliştiricinin çalışmasına rehberlik etmeye yardımcı olur ve projenin potansiyel hataları ve hataları tanımlamaya başlamadan önce bile değerlendirilmesine yardımcı olarak değerli zaman ve paradan tasarruf sağlar.
Belge yapısı, okunması kolay yazı tiplerinin kullanımı (geliştiricilerin yorulduğunda bile çalışabileceği bir şey), tablolar ve resimler gibi diğer faktörler de vardır ve bunların tümü bu aşamadan sonra ürün yazılımı ekibinin verimliliğini artırabilir.
2. Sistem Tasarımı ve Algoritma geliştirme
Bu aşama, sözde kodların, akış şemalarının, durum makinelerinin ve donanım yazılımının tasarımıyla ilgili her şeyin geliştirilmesini içerir. Bu aşama için, düşünceleri düzenlemeye, proje etrafında eski / önceden yazılmış yazılımları keşfetmeye ve kendi akış çizelgenizi, durum makinenizi vb. Geliştirmeye yardımcı olmak için pek çok araç kullanılabilir. Bu araçlardan bazıları aşağıda tartışılmıştır.
PIM'ler
Ürün geliştirmenin bu aşamasında, geliştiriciler proje üzerinde web bağlantılarından formüllere vb. Kaynaklar toplarken çok fazla karalama eğilimindedirler. Bu bilgileri takip etmenin en iyi yollarından biri, daha sonra yararlı olmaları için PIM kullanımıdır. (ürün bilgisi yönetimi) araçları. Dışarıda oldukça fazla sayıda PIM var, ancak bazı olağanüstü özelliklere sahip birkaçından bahsedeceğim.
1. Evernote
Evernote, herhangi bir platformda bulunan notları almanıza yardımcı olur, böylece otobüsteyken PC'nizde yaptığınız notu kontrol edebilirsiniz. Notlar iyi organize edilmiş ve tamamen aranabilir, böylece her zaman ihtiyacınız olanı bulacaksınız.
2. TrunkNote
Trunk note, Wiki benzeri bir not alma uygulamasıdır. Wiki'lerin tüm organizasyon gücünü not almaya getiriyor. Cep telefonu tabanlı bir uygulamadır ancak WIFI aracılığıyla bir PC ile kolayca senkronize edilebilir.
Tiddlywiki vb. Gibi diğer PIM türleri. Her biri, onu belirli bireyler için daha çekici hale getirebilecek özelliklere sahiptir ve sonunda bir tanesine yerleşmeden önce biraz örnekleme alabilirler.
Eski Kodu Anlamak
Tasarım aşamasında çok yararlı olan bir diğer araç grubu, eski kodları anlamak için kullanılan araçlardır. Tasarlanmakta olan ürünün önceki bir ürünün geliştirilmiş bir sürümü olduğu durumlarda, geliştirici, bu yeni proje için bazı fikirler ve belki de kod parçaları almak için halihazırda yapılmış olan çalışmayı gözden geçirmeyi faydalı bulabilir. Bu oldukça uzun bir yol olabilir, özellikle de önceki yazılımı geliştiren ekibin bir parçası değilseniz. Ağaç oluşturmaya, önceden yazılmış koddan belgeler ve akış şemaları oluşturmaya yardımcı olan pek çok yazılım vardır.
1. Oksijen
Doxygen, kaynak kodlardan belge oluşturmaya yardımcı olan oldukça güçlü bir araçtır. Büyük ölçüde C ++ ile çalışmak üzere tasarlanmıştır, ancak C, Python ve diğer bazı dillerle de çalışır. Kodun görselleştirilmesine yardımcı olmak için otomatik olarak oluşturulan bağımlılık grafikleri ve Devralma diyagramları sağlayarak herhangi bir kodun kod yapısını çıkarma yeteneğine sahiptir.
2. Graphviz
Web sitelerine göre, graphviz yapısal bilgileri soyut grafikler ve ağların diyagramları olarak sunmaya yardımcı oluyor. Oluşturduğu grafikleri daha iyi anlamak için Doxygen ile birlikte kullanılabilir.
3. Kayıt
Srecord, aygıt yazılımı görüntülerini değiştirmek ve farklı dosya formatları arasında dönüştürme yapmak için güçlü bir araçtır. Bayt blokları üzerindeki CRC'leri ve Sağlama Toplamlarını hesaplamak ve yapmak, buggy araç zincirleri nedeniyle oluşturulan hata dosyalarını düzeltmek ve diğer şeyler arasında dosyaların bölümlerini filtrelemek veya taşımak için kullanılabilir. Kullanımıyla ilgili daha fazla bilgiyi SourceForge sayfasında bulabilirsiniz.
Bu kategoriye giren diğer bazı araçlar, diğerleri arasında CrystalRev ve Hexplorer'dır .
Algoritma Geliştirme
Projeye yönelik sözde kodlara ve akış şemalarına dönüşen algoritmaların geliştirilmesiyle ilgili tüm araştırma ve not alma kümeleri. Akış çizelgelerini geliştirmek için çeşitli araçlar vardır ve bunların çoğu aygıt yazılımı geliştirmeye özel olmasa da, işi basitçe yapan ve aynı zamanda ürün geliştirme döngüsü boyunca çizelgelerin korunmasına yardımcı olan yararlı ve önemli özellikler sağlarlar. Aşağıda, akış şeması için en iyi araçlardan bazıları verilmiştir.
1. QFSM
QFSM, sonlu durum makinelerini tasarlamak ve simüle etmek için grafiksel bir araçtır. Tasarımları simüle etme yeteneği, bu gruptaki diğer yazılımların çoğundan çok daha iyi olmasını sağlar. FPGA ve benzer hedef donanımlar için durum makineleri tasarlarken özellikle kullanışlıdır.
2. Lucid Grafiği
Lucid şeması, tartışmasız en iyi ve en esnek akış şeması yazılımıdır. Web tabanlıdır ve birden fazla cihaz arasında çalışmanıza ve ekip arkadaşlarınızla gerçek zamanlı olarak işbirliği yapmanıza olanak tanıyan ekip özelliklerine sahiptir.
3. Microsoft Visio
Visio, şu anda en iyi grafik araçlardan biridir. Herhangi bir şeyi tanımlamayı kolaylaştıran farklı alanlardan bir dizi nesneye sahiptir. Ancak, ekipler arasındaki işbirliğini geliştiren özelliklere sahip değildir ve yalnızca kurulu olduğu bir Windows makinesinde kullanılabilir.
4. Google Slaytlar
Günümüz dünyasında ürünlerin geliştirilmesindeki en önemli şeylerden biri, ekiplerin nerede olurlarsa olsunlar etkili bir şekilde iş birliği yapmalarına olanak tanıyan araçların kullanılmasıdır ve bu, Google slaytlarının sunduğu bir şeydir. Yazılım akış şemalarından organizasyon şemalarına ve zihin haritalarına kadar her türlü şemayı geliştirmek için kullanılabilir. Bulut tabanlıdır ve neredeyse tüm popüler tarayıcılarda çalışır.
Her zamanki gibi, akış şemalarının oluşturulması ve genel algoritma geliştirme için her birinin kendi profesyonelleri ve eksileri olan birkaç başka araç vardır.
3. Gömülü Ürün Yazılımı için Kodlama
Bu noktaya kadar anlatılan her şey buraya götürür. SDK'lar ve IDE'lerin dünyası, bu aşamadaki araç seçimi, hedef cihaza ve cihaza yerleştirilecek özelliklere bağlıdır, bu nedenle MPLAB gibi popüler SDK'ları ve IDE'leri tartışmanın dışında tutacağım ve sadece sopa doğada daha tamamlayıcı olan araçlara.
1. QT (GUI Geliştirme)
Ekranlar (etkileşimli olsun ya da olmasın), bu günlerde kullanıcılara geri bildirim sağlamak için en popüler ortamlardır ve QT'nin SDK'sı oradaki en iyilerden biridir ve muhtemelen gömülü çevrede hiç kimseye yabancı değildir. Hedef platformdan veya genel proje geliştirme için kullanılan programlama dilinden bağımsız olarak, gömülü cihazlar için karmaşık, GUI tabanlı uygulamalar geliştirmeyi kolaylaştıran "sürükle ve bırak" özellikleri sağlar. Temel olarak, kullanıcı arayüzleri oluşturmak için kod kullanımıyla ilişkili stresi ortadan kaldırır.
2. (Hızlı Prototipleme)
Gömülü yazılımların geliştirilmesindeki en büyük darboğazlardan biri, donanımın genellikle yazılım geliştirilirken hareket halindeyken bir şeyleri test etmek için mevcut olmamasıdır. Çoğu zaman, mevcut olduğunda, donanım yazılımı geliştiricileri, donanımın çok az veya hiçbir şey yapmaya hazır olması için gereken süre boyunca bekletilirdi. Bu, teslim süresini artırır ve donanım mühendisleri ile ürün yazılımı geliştiricileri arasında ürünün kalitesini artıracak türden bir senkronizasyon için yer açmaz. Bu sorunu çözmeye yardımcı olmak için VaST çalışanları , sanal bir donanım prototipi oluşturmak için kullanılabilecek bir Elektronik sistem düzeyinde sanal prototip oluşturma platformu oluşturdu. Donanım hazır olmadan önce sistem performansını belirlemek için hangi gömülü yazılımın çalıştırılabileceği.
3. Doxygen (Belgeler)
Herhangi bir kod yazmanın en önemli kısımlarından biri dokümantasyondur ve bunun için en popüler araçlardan biri Doxygen'dir. Eski yazılımı anlamak için kullanımının yanı sıra Doxygen, bir koddan yorumları otomatik olarak çıkarma ve onu içeren dokümantasyon oluşturma yeteneğine sahiptir. Doxygen yapıları dosyaları grafik olarak içerir ve kodunuzda kullanılan her işlev, Değişken ve makro için referanslar oluşturur. Akış çizelgeleri ve veri akış diyagramları, Doxygen'i graphviz ile birleştirerek dokümantasyona da yerleştirilebilir.
4. GIT (Sürüm Kontrol Sistemleri)
Bu günlerde herhangi birinin herhangi bir türden sürüm kontrol sistemi olmadan herhangi bir yazılım geliştirdiğine inanmak zor, ancak bunu yapmanız durumunda, size zaman ve paraya mal olacak hatalara yol açabilecek oldukça kötü bir fikir. Git, çeşitli nedenlerle tüm sürüm kontrol araçları arasında öne çıkıyor. Açık kaynak kodlu, hızlı, verimli ve çoğunlukla yereldir. Git asides, yıkım gibi araçlardan da bahsetmeye değer.
Gömülü Ürün Yazılımını Test Etme
Test, herhangi bir şey için geliştirme sürecinin önemli bir parçasıdır. Firmware hataları nedeniyle cihazlar geri çağrıldığında firmalar binlerce dolar kaybederler, bu yüzden bu, geliştirmenin çok ciddiye alınması gereken bir parçası. Genellikle kodlama ile birlikte yapılır ve kod testi için ilk araç seti muhtemelen proje için kullanılan IDE veya SDK içindeki hata ayıklayıcılardır. Test, farklı şekillerde gelir ve farklı aşamalarda gerçekleştirilir, bu nedenle çeşitli türden araçlar içerir. Test araçları, ürün yazılımı geliştirme aşamalarını, tasarım doğrulamasından statik analize ve çalışma zamanı test araçlarına kadar keser. Aşağıda gerçekten yararlı bulduğum birkaç araç var.
1. Kristal REV
Crystal revs, kodu incelemek için bir araçtır. C / C ++ kodundan akış şeması oluşturmak için kullanılabilir, bu da onu kendi kodunuzu gözden geçirmek ve ön tasarımın uygulanıp uygulanmadığını görmek için harika bir araç haline getirir. Kristal devir ile tasarım ve uygulama arasındaki farkı hızlı bir şekilde görebileceksiniz. Kodlardan akış şemaları, veri ve çağrı akışı oluşturma yeteneği, onu eski kodu analiz etmek için kullanışlı bir araç haline getirir.
2. PC- Lint
PC-lint, piyasadaki en eski ürün yazılımı test araçlarından biridir. Hataları, güvenlik açıklarını belirlemek ve kodun endüstri standartlarına uygun olarak yazıldığından emin olmak için yazılımı analiz edebilir. Benzer araçlar arasında polyspace ve LRDA, Patlıcan ve Tessy bulunur.
3. Wireshark
Bu, ağ cihazları oluştururken kullanışlıdır. Esasen bir paket dinleyicidir ve cihazınızın ilettiği verileri görüntülemeye yardımcı olabilir. Bu, cihazın güvenliğini sağlamaya yardımcı olabilir.
4. Sanal Seri Bağlantı Noktası Sürücüsü
Eltima yazılımının VSPD'si, yakın zamanda bir arkadaşım tarafından da tanıttığım bir araçtır. Aygıt sürücüleri ve iletişim bağlantı noktasıyla ilgili diğer gelişmeler üzerinde çalışırken gerçekten kullanışlı oluyor. Sanal seri com portu, hedef cihaz olmadan com portlarının davranışını test etme yeteneği sağlar. Gerçek com bağlantı noktalarının tüm ayarlarını taklit edebilen sınırsız sayıda bağlantı noktası oluşturabilirsiniz. Yazılım ayrıca, diğer harika özelliklerin yanı sıra Seri bağlantı noktası bölme, Com bağlantı noktaları birleştirme, paket com bağlantı noktası bağlantılarını kullanma gibi özelliklerle birlikte gelir.
Bu makale için bu kadar, okumaya zaman ayırdığınız için teşekkürler. Muhtemelen oradaki tüm araçları listelemek imkansız olsa da, umarım bu araçlardan bazılarını yararlı bulursunuz.