← Etusivu
Konseptista prototyyppiin — itsenäinen tuotekehitys
Elektronisten laitteiden kokonaiskehitys: kytkentäkaavio, levyn veto, laiteohjelmisto, FPGA-suunnittelu, simulointi ja verifiointi. Määrittely, koodi, testi, toimitus — kaikki yhdestä kädestä.
Sulautetut laitteet syntyvät harvoin yhdestä tieteenalasta. Uusi idea vaatii kytkentäkaavion, kytkentäkaavio levyn vedon, levyn veto laiteohjelmiston tai FPGA-suunnittelun, ja kaikki tämä vaatii lopulta verifioinnin ja dokumentoinnin. Tämän vuorovaikutuksen jakaminen useille toimittajille on rajapintojen ostamista — ja rajapinnat ovat yleisin virhelähde.
Itsenäinen kokonaiskehitys tarkoittaa: yksi yhteyshenkilö, päästä päähän -vastuu, yhtenäinen dokumentointitila. Sinä säästät koordinointia, minä voin päättää ilman, että minun on kuultava toimittajaketjua.
Miten tyypillinen kokonaisprojekti etenee
Vaikka jokainen projekti on erilainen, kulku noudattaa tunnistettavaa kaavaa:
- Tehtävän ymmärtäminen. Ensikeskustelu selvittää, mitä laitteen on tehtävä, mitä reunaehtoja sovelletaan (volyymi, kustannukset, koko, kulutus, normivaatimukset) ja mitä rajapintoja olemassa oleviin järjestelmiin on.
- Konsepti ja määrittely. Tehtävän pohjalta hahmotellaan tekninen konsepti: mikä mikro-ohjain- tai FPGA-alusta sopii, mitkä väylät, mitkä analogiset ja digitaaliset signaalit, mikä ohjelmistoarkkitehtuuri. Tuloksena on määrittelyasiakirja, joka toimii pohjana kaikelle muulle.
- Kytkentäkaavion suunnittelu. Kytkentäkaavion laatiminen valituilla komponenteilla, kriittisten komponenttien mitoitus, simulointi ratkaisevissa kohdissa.
- Levyn veto. Monikerroksinen PCB-suunnittelu ottaen huomioon nopeat signaalit, EMC, lämmönpoisto ja valmistettavuus. Levynvalmistajan valinta ja valmistuksen seuranta.
- Laiteohjelmisto tai FPGA-suunnittelu. Ohjaus- tai signaalinkäsittelylogiikan toteutus C/C++:lla mikro-ohjaimille, VHDL:llä/SystemVerilogilla FPGA:ille — tai yhdistelmänä. Bare-metal pienissä mikro-ohjaimissa, FreeRTOS tai vastaava RTOS suuremmissa järjestelmissä.
- Verifiointi ja testi. Kytkentäsimulointi kriittisissä kohdissa, testipenkit FPGA-suunnitteluille, laitteistotestit prototyypillä, tarvittaessa HIL-penkki ohjelmistolle.
- Toimitus ja dokumentointi. Täydellinen lähdekoodi, kytkentäkaavio, vetotiedot, materiaaliluettelo, lähestymistavan ja suunnittelupäätösten dokumentointi. Toivomuksesta tiedonsiirto asiakastiimille.
Tarvittaessa otan vastuulleni myös koordinoinnin sarjavalmistajan kanssa, joka toimittaa halutun laadun — kuten Audi-projektissa (ks. referenssit), jossa käsin juotettu prototyyppi muuttui koneellisesti valmistetuksi teolliseksi levyksi.
Kolme tieteenalaa — yksi käsi
Seuraavat kolme tieteenalaa kohtaavat kokonaisprojektissa:
Laitteisto
Laitteistokehitys
Elektronisen laitteiston suunnittelu ja toteutus — kytkentäkaaviosta levyn vedon kautta sarjatuotannon koordinointiin. Erikoisalat: mikro-ohjainjärjestelmät, FPGA-levyt ja sekoittuneet analogis-digitaaliset kytkennät.
- Mikro-ohjainjärjestelmät (ARM Cortex-M, ESP32, Atmel/Microchip)
- FPGA-suunnittelu ja -integrointi (Xilinx Artix-7, Zynq)
- Analogiset ja digitaaliset kytkennät
- PCB-suunnittelu (Pulsonix, monikerroksinen, nopea, EMC)
- Kytkentöjen mitoitus ja komponenttien valinta
- PCB-valmistuksen seuranta ja koordinointi teollisuuskumppaneiden kanssa
- Käyttöönotto ja laitteiston bring-up
Ohjelmisto
Ohjelmistokehitys
Sulautetun ohjelmiston toteutus kehitetylle laitteistolle — laitteistoläheisestä bare-metal-ohjelmoinnista monisydämisiin reaaliaikakäyttöjärjestelmiin. Kielet, alustat ja protokollat valitaan projektin vaatimusten mukaan, ei mieltymyksen mukaan.
- Sulautettu ohjelmisto (C, C++, assembleri)
- FPGA-ohjelmointi (VHDL, Verilog, SystemVerilog)
- Reaaliaikajärjestelmät (FreeRTOS, bare-metal, monisydäminen)
- Viestintäprotokollat (CAN, CAN FD, Ethernet, EtherCAT, I²C, SPI, MOST)
- Ajurikehitys laitteistoläheisille rajapinnoille
- Käynnistyslataaja, vahtikoira, laiteohjelmiston päivitysmekanismit
- Algoritmit signaalinkäsittelyyn ja säätöön
Verifiointi
Simulointi ja verifiointi
Kehitetyn ratkaisun järjestelmällinen validointi — kytkentätasolla, FPGA-tasolla, järjestelmätasolla. Verifiointi ei ole jälkikäteen lisätty askel, vaan kehityksen olennainen osa.
- Kytkentäsimulointi aika- ja taajuusalueella
- Monte Carlo -analyysi ja worst-case-tutkimukset
- FPGA-verifiointi SystemVerilog-testipenkeillä
- HDL-simulointi (Vivado, Icarus Verilog, Verilator)
- Bode-diagrammi, Nyquist-analyysi, vakaustutkimukset
- Hardware-in-the-loop-testit integroiduille järjestelmille
Mikä erottaa kokonaiskehityksen «pelkästä koodaamisesta»
Kun asiakas tänään etsii «sulautettujen järjestelmien kehittäjää», hän ajattelee useimmiten jotakuta, joka suorittaa osatehtävän: C-moduulin, FPGA-komponentin, ajurin. Sellaisia palveluntarjoajia on paljon.
Kokonaiskehitys on jotain muuta. Se vaatii jotakuta, joka pystyy päättämään — arkkitehtuurista, komponenttien valinnasta, rajapinnoista, kustannusten ja toiminnallisuuden välisistä kompromisseista. Tätä päätöksentekokykyä ei ole jokaisessa CV:ssä, eikä sitä korvata lisäämällä asiantuntijoita.
Otan kokonaiskehityksen vastuulleni siellä, missä asiakas ei halua ylläpitää omaa sulautettujen järjestelmien osastoa — ja missä siitä syntyvä työmäärä ja vastuu voi taloudellisesti levätä yhdellä henkilöllä.
Yhteistyömuodot
Kokonaisprojektit hoidetaan pääsääntöisesti kiinteähintaisella sopimuksella lujalla toimituslupauksella. Työmäärä arvioidaan ennen projektin alkua, hinta taataan. Tutkivaan työhön ilman selkeää päätepistettä on vaihtoehtona tuntikiintiö. Yksityiskohdat sivulla Toimeksianto.