- 1. Pag-unlad ng Kinakailangan ng Produkto
- 2. Pag-unlad ng Disenyo ng System at Algorithm
- 3. Coding para sa naka-embed na Firmware
- Pagsubok sa naka-embed na Firmware
Ang pag-unlad ng software sa pangkalahatan ay mahirap ngunit para sa isang naka-embed na system, nasa isang bagong antas ng kahirapan. Ang mga developer ng firmware ay kailangang magkaroon ng mahusay na kaalaman tungkol sa pag-unlad ng hardware at maunawaan ang panloob na paggana ng isang naka-embed na processor. Para sa Artikulo ngayon, magbabahagi ako ng mga tool at tip na maaaring magamit upang makamit ang isang mataas na antas ng kahusayan at matanggal ang ilan sa mga bagay na nakakapagod ang pag-unlad ng firmware.
Ang naka-embed na pag-unlad ng software ay dumadaan sa katulad na proseso ng pag-unlad na may "ordinaryong" pag-unlad ng software. Hindi alintana ang modelo ng pagbuo / pamamahala na pinagtibay, ang naka- embed na Pag-unlad ng Software sa pangkalahatan ay nagsasangkot ng mga hakbang sa ibaba:
- Pag-unlad ng kinakailangan ng produkto
- Disenyo ng System at Pag-unlad ng Algorithm
- Coding
- Pagsubok
Susuriin namin ang ilan sa mga paghihirap na kasama ng mga yugtong ito at ilan sa mga tool na maaaring dagdagan ang kahusayan at pagiging produktibo.
1. Pag-unlad ng Kinakailangan ng Produkto
Ang mga pagtutukoy ng produkto ay madalas na ginagawa sa isip ng mga taga-disenyo ng board. Karaniwan itong naglalaman ng kaunting impormasyon na maaaring makatulong sa pag-unlad ng firmware sa gayon, ang naka-embed na developer ng software ay nagtapos sa isang may bahid na 250 pahina (average) na dokumento na hindi maaaring gamitin para sa mga sanggunian at kung hindi maingat na isinasaalang-alang ay madaling humantong sa mga oversight sa disenyo na kung saan ay,, humantong sa pagpapalawak ng time frame ng proyekto kung hindi pangkalahatang kabiguan ng proyekto. Ang mga dokumento ay bihirang maglaman ng impormasyon tungkol sa mga pagrehistro o kanilang mga patlangbukod sa iba pang mga bagay at nagkakahalaga ito ng mga developer ng firmware ng ilang mga oras ng tao habang naghahanap sila sa dokumento upang makilala ang mga bagay tulad ng kung aling rehistro ang kabilang sa aling pangkat at aling patlang ang kabilang sa aling rehistro. Nasa ibaba ang ilang mga tip na maaaring isaalang-alang upang matiyak ang pag-unlad ng isang mas kapaki-pakinabang na mga dokumento sa pagtutukoy ng proyekto.
Paggamit ng Mga Paglaraw sa Paglalarawan
Tulad ng tinalakay sa itaas, kailangang maunawaan ng mga developer ng firmware ang mga intricacies ng lahat ng pagrehistro, alaala, atbp. Ng lahat ng mga elemento ng pagkontrol (CPU, MCU, atbp) sa isang proyekto upang mabisang kontrolin ang lahat ng bahagi ng system. Upang mailagay ito sa lugar, maaaring matiyak ng mga developer ng firmware ang dokumento ng detalye na magdala ng tamang paglalarawan ng mga rehistro kasama ang mga mapa ng memorya. Ang lahat ng mga pagrehistro sa elemento ng pagkontrol ay maaaring italaga ng isang natatanging pangalan na nagpapadali sa kanila na makilala sa kabuuan ng dokumento at lahat sila ay maaaring mai-link na mainit na humantong sa isang listahan sa loob ng dokumento na nagsasaad ng pangalan, lokasyon, harangan at address ng bawat rehistro.
Mga Paglalarawan sa Gawain
Ang isa pang paraan kung saan maaaring gawing kapaki-pakinabang ang mga dokumento sa pagtutukoy sa naka-embed na mga developer ng software ay sa pamamagitan ng paglalarawan sa dapat gawin ng bawat bloke at kung paano ito dapat gawin. Sa yugto din na ito, dapat mayroong mga plano para sa paghawak ng error sa ilalim ng bawat bloke. Mahalaga na mukhang ito ang sinasabi ng developer ng firmware; "Pagdating ko dito, kailangan kong gawin ito, ito at ito, tinitiyak na ito, ito at iyon, ay hindi mangyayari". Tumutulong ito na gabayan ang gawain ng developer at makakatulong suriin ang proyekto bago pa magsimula ang disenyo upang makilala ang mga potensyal na error at bug, makatipid ng mahalagang oras at pera.
Mayroong iba pang mga kadahilanan kabilang ang istraktura ng dokumento, ang paggamit ng madaling basahin ang mga font (isang bagay na maaaring gumana ang mga developer kahit na pagod), mga tsart at larawan kung saan posible na maaaring dagdagan ang kahusayan ng koponan ng firmware pagkatapos ng yugtong ito.
2. Pag-unlad ng Disenyo ng System at Algorithm
Ang yugto na ito ay nagsasangkot sa pagbuo ng mga pseudocode, flowchart, state machine at lahat na kasangkot sa disenyo ng kung ano ang firmware. Para sa yugtong ito, maraming bilang ng mga tool ang maaaring magamit upang makatulong na ayusin ang mga saloobin, galugarin ang legacy / dating nakasulat na software sa paligid ng proyekto at bumuo ng iyong sariling flowchart, state machine at iba pa Ang ilan sa mga tool na ito ay tinalakay sa ibaba.
Mga PIM
Sa mga yugto ng pag-unlad ng produkto, mga developer ay may posibilidad upang isulat nang mabilis ng isang pulutong ng kanilang pinupulot resources sa proyekto mula sa web mga link sa mga formula atbp Isa sa mga pinakamahusay na paraan upang subaybayan ang ang impormasyong ito upang ang mga ito ay kapaki-pakinabang sa ibang pagkakataon ay sa pamamagitan ng paggamit ng PIM (pamamahala ng impormasyon ng produkto) mga tool. Mayroong isang bilang ng mga PIM doon, ngunit babanggitin ko ang ilang mga may ilang mga natitirang mga tampok.
1. Evernote
Tinutulungan ka ng Evernote na kumuha ng mga tala na magagamit sa anumang platform upang masuri mo ang tala na iyong ginawa sa iyong PC habang nasa bus pauwi. Maayos ang kaayusan ng mga tala at ganap na mahahanap upang lagi mong makita kung ano ang kailangan mo.
2. TrunkNote
Ang trunk note ay isang application na tulad ng pagkuha ng tala sa Wiki. Dinadala nito ang lahat ng lakas ng organisasyon sa wiki upang kumuha ng tala. Ito ay isang application na batay sa mobile phone ngunit maaaring madaling mai-sync sa isang PC sa pamamagitan ng WIFI.
Iba pang mga uri ng PIM tulad ng Tiddlywiki atbp Ang bawat isa sa kanila ay may mga tampok na maaaring gawin itong mas kaakit-akit sa mga tukoy na indibidwal at maaaring tumagal ng ilang sampling bago ka tuluyang makapag-ayos sa isa.
Pag-unawa sa Legacy Code
Ang isa pang pangkat ng mga tool na kung saan ay napaka kapaki-pakinabang sa panahon ng yugto ng disenyo ay mga tool para sa pag-unawa sa mga legacy code. Sa mga sitwasyon kung saan ang produkto na dinisenyo ay isang pinabuting bersyon ng isang nakaraang produkto, maaaring makita ng developer na kapaki-pakinabang upang suriin ang gawaing nagawa na upang makakuha ng ilang mga ideya at maaaring mga piraso ng code para sa bagong proyekto. Maaaring ito ay isang mahabang kalsada, lalo na kung hindi ka bahagi ng koponan na nagtayo ng nakaraang software. Mayroong isang bilang ng mga software na makakatulong sa pagbuo ng mga puno, lumikha ng dokumentasyon at mga flowchart mula sa nakasulat na code.
1. Doxygen
Ang Doxygen ay isang napakalakas na tool na makakatulong sa paglikha ng dokumentasyon mula sa mga source code. Ito ay pangunahing dinisenyo upang gumana sa C ++ ngunit gumagana rin sa C, Python at ilang iba pang mga wika. Ito ay may kakayahang kunin ang istraktura ng code ng anumang code, na nagbibigay ng mga awtomatikong nabuong mga graph ng dependency at Mga diagram ng mana na makakatulong na mailarawan ang code.
2. Graphviz
Ayon sa kanilang website, nakakatulong ang graphviz na ipakita ang impormasyong pang-istruktura bilang mga diagram ng mga abstract na graph at network. Maaari itong magamit sa tabi ng Doxygen upang mas maunawaan ang mga graphic na ginawa nito.
3. Srecord
Ang Srecord ay isang malakas na tool para sa pagmamanipula ng mga imahe ng firmware at pag-convert sa pagitan ng iba't ibang mga format ng file. Maaari itong magamit upang kalkulahin at gawin ang mga CRC at Checksum sa mga byte block, itama ang mga error file na nilikha dahil sa mga tool tool ng buggy, at i-filter o ilipat ang mga seksyon ng mga file bukod sa iba pang mga bagay. Ang karagdagang impormasyon sa paggamit nito ay maaaring matagpuan sa pahina ng SourceForge.
Ang ilang iba pang mga tool na napapailalim sa kategoryang ito ay ang CrystalRev at Hexplorer bukod sa iba pa.
Pagbubuo ng Mga Algorithm
Ang lahat ng mga pagsasaliksik at pagkuha ng tala ay pinagsama-sama sa pagbuo ng mga algorithm na umiikot sa mga pseudocode at flowchart para sa proyekto. Maraming mga tool ang umiiral para sa pagbuo ng mga flowchart at habang ang karamihan sa mga ito ay hindi eksklusibo sa pag-unlad ng firmware, nagbibigay sila ng kapaki-pakinabang at mahahalagang tampok na simpleng natatapos ang trabaho at tumutulong din na mapanatili ang mga tsart sa buong ikot ng pag-unlad ng produkto. Nasa ibaba ang ilan sa mga pinakamahusay na tool doon para sa flowcharting.
1. QFSM
Ang QFSM ay isang grapikong kasangkapan para sa pagdidisenyo at pagtulad sa mga makina ng estado na may wakas. Ang kakayahang gayahin ang mga disenyo ay ginagawang mas mahusay ito kaysa sa karamihan ng iba pang software sa pangkat na ito. Partikular itong kapaki-pakinabang kapag nagdidisenyo ka ng mga machine ng estado para sa FPGA at katulad na target na hardware.
2. Lucid Chart
Ang Lucid chart ay masasabing ang pinakamahusay at pinaka nababaluktot na flowcharting software doon. Ito ay batay sa web at may mga tampok sa koponan na magbibigay-daan sa iyo upang gumana sa pagitan ng maraming mga aparato at makipagtulungan sa real-time sa mga kasamahan sa pangkat.
3. Microsoft Visio
Ang Visio ay isa sa mga pinakamahusay na tool sa grapiko ngayon. Mayroon itong isang hanay ng mga bagay mula sa iba't ibang mga patlang na ginagawang madali upang ilarawan ang anumang bagay. Gayunpaman, hindi ito kasama ng mga tampok na nagpapahusay sa pakikipagtulungan sa mga koponan at maaari lamang magamit sa isang windows machine kung saan ito naka-install.
4. Google Slides
Ang isa sa mga pangunahing bagay sa pag-unlad ng mga produkto sa mundo ngayon ay ang paggamit ng mga tool na nagbibigay-daan sa mga koponan na makipagtulungan nang epektibo mula saanman sila naroroon at iyan ang isang bagay na dinadala ng slide ng Google. Maaari itong magamit upang bumuo ng lahat ng uri ng mga tsart mula sa mga tsart ng daloy ng software hanggang sa mga chart ng pang-organisasyon at mga mapa ng isip. Ito ay nakabatay sa cloud at gumagana sa halos lahat ng mga tanyag na browser.
Maraming iba pang mga tool ang umiiral para sa paglikha ng mga flowchart at pangkalahatang pag-unlad ng algorithm, tulad ng dati, bawat isa ay may sariling pro at cons.
3. Coding para sa naka-embed na Firmware
Lahat ng nabanggit hanggang sa puntong ito ay humahantong dito. Ang mundo ng mga SDK at IDE, ang pagpili ng mga tool sa yugtong ito ay nakasalalay sa target na aparato at mga tampok na itatayo sa aparato, sa kadahilanang ito, ibubukod ko ang mga tanyag na SDK at IDE tulad ng MPLAB, atbp mula sa talakayan at mananatili lamang sa mga tool na higit na komplementaryo sa likas na katangian.
1. QT (Pag-unlad ng GUI)
Ang mga pagpapakita (interactive o hindi) ay ang pinakatanyag na daluyan para sa pagbibigay ng puna sa mga gumagamit sa mga panahong ito at ang QK's SDK ay isa sa pinakamahusay na naroon at malamang na walang estranghero sa sinumang nasa loob ng naka-embed na bilog. Nagbibigay ito ng mga tampok na "drag and drop" na ginagawang madali upang makabuo ng mga kumplikadong, mga application na nakabatay sa GUI para sa mga naka-embed na aparato, hindi alintana ang target na platform, o ginagamit ang wika ng programa para sa pangkalahatang pag-unlad ng proyekto. Karaniwan nitong tinatanggal ang stress na nauugnay sa paggamit ng code upang lumikha ng mga interface ng gumagamit.
2. (Mabilis na Prototyping)
Ang isa sa pinakamalaking bottlenecks sa pagbuo ng naka-embed na software ay ang katunayan na ang hardware ay karaniwang hindi magagamit upang subukan ang mga bagay habang naglalakbay habang ang software ay binuo. Kadalasan ang mga oras kung ito ay magagamit, ang mga developer ng firmware ay gagawin upang maghintay sa buong oras na kinakailangan para sa hardware na maging handa na gumawa ng kaunti o wala. Pinapataas nito ang lead-time at hindi lumilikha ng silid para sa uri ng pag-sync sa pagitan ng mga inhinyero ng hardware at mga developer ng firmware na nadagdagan ang kalidad ng produkto. Upang matulungan ang paglutas ng problemang ito, lumikha ang mga lalaki sa VaST ng isang antas ng mga virtual system na antas ng virtual na prototyping na maaaring magamit upang lumikha ng isang virtual na prototype ng hardware kung saan maaaring maisagawa ang naka-embed na software upang matukoy ang pagganap ng mga system bago handa ang hardware.
3. Doxygen (Dokumentasyon)
Ang isa sa pinakamahalagang bahagi ng pagsulat ng anumang code ay ang dokumentasyon at isa sa pinakatanyag na tool para doon ay ang Doxygen. Bukod sa paggamit nito upang maunawaan ang legacy software, ang Doxygen ay may kakayahang awtomatikong kumuha ng mga komento mula sa isang code at lumikha ng dokumentasyon na kasama dito. Ang mga istraktura ng doxygen ay nagsasama ng mga file nang grapiko at lumilikha ng mga sanggunian para sa bawat pagpapaandar, variable, at macro na ginamit sa iyong code. Ang mga flowchart at diagram ng daloy ng data ay maaari ring mai-embed sa dokumentasyon sa pamamagitan ng pagsasama ng Doxygen sa graphviz.
4. GIT (Mga Sistema ng Control na Bersyon)
Mahirap paniwalaan ang sinumang bubuo ng software ng anumang uri nang walang ilang uri ng sistema ng kontrol sa bersyon sa mga panahong ito, ngunit kung sakaling gawin mo ito, Ito ay isang masamang ideya na maaaring humantong sa mga pagkakamali na babayaran ka ng oras at pera. Si Git ay nakatayo sa lahat ng mga tool sa pagkontrol ng bersyon doon para sa maraming mga kadahilanan. Ito ay bukas na mapagkukunan, mabilis, mahusay at karamihan sa mga lokal. Bilang Git, ang mga tool tulad ng pagbabagsak ay nagkakahalaga ring banggitin.
Pagsubok sa naka-embed na Firmware
Ang pagsubok ay isang mahalagang bahagi ng proseso ng pag-unlad para sa anumang bagay. Ang mga kumpanya ay nawalan ng libu-libong dolyar kapag naalala ang mga aparato dahil sa mga error sa firmware kaya't ito ay isang bahagi ng pag-unlad na dapat seryosohin. Madalas itong ginagawa, magkasabay, na may pag-coding at ang unang hanay ng mga tool para sa pagsubok sa code, marahil ang mga debugger sa loob ng IDE o SDK na ginagamit para sa proyekto. Ang pagsubok ay nagmumula sa iba't ibang anyo at ginaganap sa iba't ibang yugto, tulad nito, nagsasangkot ito ng magkakaibang uri ng mga tool. Ang mga tool sa pagsubok ay bumubuo ng pagbawas ng firmware sa kabuuan ng pagpapatunay ng disenyo sa static na pagtatasa at mga tool sa pagsubok ng runtime. Nasa ibaba ang ilang mga tool na sa tingin ko talagang kapaki-pakinabang.
1. Crystal REV
Ang Crystal revs ay isang tool para sa pag-aaral ng code. Maaari itong magamit upang makabuo ng flowchart mula sa C / C ++ code na ginagawang isang mahusay na tool upang suriin ang iyong sariling code at tingnan kung ang paunang disenyo ang ipinatupad. Sa pamamagitan ng crystal rev, mabilis mong makikita ang pagkakaiba sa pagitan ng disenyo at pagpapatupad. Ang kakayahang makabuo ng mga tsart ng daloy, data at daloy ng tawag mula sa mga code ay ginagawang isang tool din, kapaki-pakinabang para sa pagsusuri ng legacy code.
2. PC- Lint
Ang PC-lint ay isa sa pinakamatandang tool sa pagsubok ng firmware sa paligid. Ito ay may kakayahang pag-aralan ang software upang makilala ang mga bug, kahinaan sa seguridad, at tiyakin na ang code ay nakasulat alinsunod sa mga pamantayan ng industriya. Kasama sa mga katulad na tool ang polyspace, at LRDA, Eggplant, at Tessy bukod sa iba pa.
3. Wireshark
Magagamit ito kapag nagtatayo ng mga aparato sa network. Mahalaga ito ay isang packet sniffer at maaaring makatulong na matingnan ang data na ipinapadala ng iyong aparato. Makakatulong ito sa pag-secure ng aparato.
4. Virtual Serial Port Driver
Ang VSPD ng eltima software ay isang tool na kamakailan lamang ay ipinakilala rin ng isang kaibigan. Ito ay talagang magagamit kapag nagtatrabaho sa mga driver ng aparato at iba pang mga pag-unlad na nauugnay sa com port. Nagbibigay sa iyo ang virtual serial com port ng kakayahang subukan ang pag-uugali ng com port nang walang target na aparato. Maaari kang lumikha ng isang walang limitasyong bilang ng mga port na may kakayahang gayahin ang lahat ng mga setting ng mga real com port. Ang software ay mayroon ding mga tampok tulad ng paghahati ng Serial port, pagsasama ng mga Com port, paggamit ng mga koneksyon sa bundle com port sa gitna ng iba pang mga cool na tampok.
Iyon lang para sa artikulong ito, salamat sa paglalaan ng oras upang mabasa. Habang imposibleng marahil na nakalista ang lahat ng mga tool doon, inaasahan kong makita mong kapaki-pakinabang ang ilan sa mga tool na ito.