pisu se uglavnom u C-u mada su veliki delovi koda pisani u asm-u
vrlo cesto se koriste "kombinovani" procesori (asic cip koji na sebi ima neko cpu jezgro, od skoro to je najcesce neki arm, neku memoriju, nesto periferije i neko dsp jezgro) i za svako jezgro se pise kod u zasebnom jeziku (tj najcesce ovaj ili onaj asm ili se kompajlira ovim ili onim c kompajlerom) ... dodatno se kontrolise externa perfierija koja je, zavisno od uredjaja u jednom ili vise cipova (drajveri za izlaze tipa kompozit, hdmi.., phy za ethernet, ulazni tuner, dekoder...) ... vecina tih cipova je dizajnirana in-house tako da dokumentacija za iste nije poznata van kuce koja ih pravi i koristi, a neki "univerzalni" cipovi uglavnom imaju dokumentaciju samo na kineskom, reverse engineering je svakako moguc ali preskup, razvoj - pa vrlo cesto ti je jeftinije da napravis from scratch...
i sad finalno odgovor na glavno pitanje "sta je potrebno za pisanje firmvera za satelitske risivere"
potrebno je puno znanja, uzmo ovako, kada budes sam znao da das odgovor na ovo pitanje "sa razumevanjem", dakle da ti je potpuno jasno sta sve treba da znas da bi to radio, onda si jedno godinu - dve dana ucenja do toga da bi mogao da pises firmware za sat risiver :)
ono sto moze da te izvadi je to sto su sada svi moderni obicne linux masine pa ne moras da se bavis sa 99% stvari i mozes da se usresredis na onih 1% koji te zanimaju a koji nisu neka velika filozofija