Montirana i zalemljena pločica nije još gotov uređaj. Dva koraka koja ga čine funkcionalnim — programiranje i testiranje — jednako su važni kao svaki korak prije njih, i jednako zahtijevaju iskustvo i pažnju. Uređaj koji nije ispravno programiran ili testiran nije proizvod; to je skupa hrpa komponenata koja čeka na problem.
Programiranje
Programiranje obuhvaća sve što je potrebno da uređaj dobije svoj softver i konfiguraciju. Za mikrokontrolere i procesore to znači flashanje firmware-a kroz odgovarajuće programatorsko sučelje — JTAG, SWD, UART bootloader ili programator specifičan za arhitekturu. Za FPGA i CPLD to znači učitavanje bitstreama koji definira logičku strukturu programabilnog sklopa. Svaki od ovih procesa ima svoje zahtjeve i svoje načine verifikacije da je programiranje uspješno završeno.
Za uređaje koji pokreću operacijski sustav — Linux, RTOS ili nešto treće — instalacija OS-a dio je procesa programiranja. Ovisno o platformi, to može značiti pisanje image-a na microSD karticu, programiranje eMMC memorijskog čipa direktno na pločici, ili inicijalizaciju NOR/NAND flash memorije s bootloaderom i particijama. Za serije izrađujemo procedure koje osiguravaju da svaki uređaj koji izađe iz pogona ima identičnu, verificiranu softversku konfiguraciju — bez ručnih koraka koji unose mogućnost pogreške.
Testiranje prototipa
Testiranje prototipa posebna je disciplina koja se razlikuje od testiranja serije. Prototip dolazi bez jamstava — to je prvi fizički primjerak dizajna koji još nije prošao nikakvu validaciju. Svaki prototip tretiramo s odgovarajućim oprezom.
Prije nego prototip uopće dobije napajanje, vizualno provjeravamo montažu u kritičnim zonama — naponski regulatori, zaštitni sklopovi, polaritet elektrolitskih kondenzatora. Tek nakon te provjere, napajanje se uvodi postepeno i kontrolirano. Mjerimo naponske linije — jesu li sve naponske domene na ispravnom naponu, ima li neočekivanih padova koji bi ukazivali na kratki spoj ili preopterećenje. Mjerimo ukupnu strujnu potrošnju i uspoređujemo je s proračunom iz faze dizajna. Odstupanje od očekivane potrošnje uvijek nešto govori — ponekad nešto bezazleno, ponekad nešto što treba riješiti prije nego krene dalje.
Kada je napajanje verificirano, slijedi programiranje i testiranje funkcionalnosti. Osciloskopom pratimo signale na ključnim točkama — taktni signal, komunikacijska sučelja, PWM izlazi, analogni signali. Signal generatorom stimuliramo ulaze i provjeravamo odgovara li uređaj očekivano. Ako uređaj ima video izlaz, spaja se na monitor. Ako ima USB, Ethernet ili serijsku komunikaciju, testiraju se te veze. Svaki funkcionalni blok uređaja prolazi kroz svoju verifikaciju prije nego zaključimo da prototip radi ispravno.
Testiranje serije
Testiranje u serijskoj proizvodnji mora biti brzo, ponovljivo i pouzdano. Za svaki projekt definiramo testni protokol koji pokriva ključne funkcije uređaja i koji se može izvesti konzistentno na svakom komadu bez ovisnosti o procjeni pojedinačnog tehničara. Što je testni protokol jasniji i precizniji, to je manji rizik da defektan uređaj prođe kroz mrežu.
Stress test
Za uređaje gdje je pouzdanost kritična — industrijska primjena, vanjski uvjeti, kontinuirani rad — provodimo hardware stress test. Uređaj se pušta u rad punom snagom kroz definirani vremenski period, pri čemu pratimo temperaturu, strujnu potrošnju i funkcionalne parametre. Cilj je provocirati sve potencijalne slabosti — termalne, električne, mehaničke — u kontroliranim uvjetima u pogonu, a ne kod krajnjeg korisnika na terenu.
Uređaj koji preživi stress test u našem pogonu s visokim stupnjem vjerojatnosti neće imati iznenađenja u stvarnoj primjeni. To nije garancija bez iznimke — ali to je najbliže što se može dobiti bez certifikacijskih laboratorija i godišnjih soak testova.