Gömülü biraz saç baş yoldurabiliyor ama tabii işin neresinde olduğunuz ile de ilgili. Öncelikle devre tasarımı bilmeseniz bile en azından şematik okumayı (devrenin çizimi, PCB'nin değil) bilmeniz gerekiyor. Bu sayede neyi nasıl kontrol edebileceğinizi görüyorsunuz. Bahsettiğiniz gibi gömülü yazılım donanım ile aşırı iç içe olduğu için genelde elektrik-elektronik mühendisliğindeki arkadaşlar yazılım ve donanım diye ikiye ayrılıyorlar ama burada bahsi geçen yazılım genelde gömülü yazılım oluyor.
Bir de yukarıda konusu geçen Domain bilgisi yine gömülü yazılımda da var. Otomativde mi çalışıyorsunuz, havacılık ve uzayda mı çalışıyorsunuz, savunma sanayinde mi çalışıyorsunuz, sektöre göre standartlar hem devre kısmı hem de yazılım kısmı için değişiyor. Ayrıca mimarileri aynı bile olsa HAL (Hardware Abstraction Layer)'dan dolayı her marka/model işlemcide kullandığınız fonksiyonlar değişiyor. STM, NXP, Nordic, TI, ESP, Atmel, Microchip, Renesas gibi birçok marka ve bu markaların farklı işlemci aileleri var. Dolayısıyla hepsini öğrenmek zaman alıyor ve sektörde uzun çalışmalar gerektiriyor. Baktığınız zaman çoğu ARM tabanlı da olsa HAL'lar farklı. Öyle aşırı farklar olmasa bile alışması zaman alabiliyor. Tabii Register mertebesinde kod yazıyorsanız işler değişir, o da ayrı bir olay zaten.
x86/x64 mimarilerde genelde koşan bir OS olduğu için siz en azından o kısımlar ile uğraşmayıp direkt kendi kodunuza odaklanıyorsunuz. MCU'larda durum öyle olmuyor çünkü OS yok. Tabii ki duruma göre RTOS (Real-Time Operating System) da kullanmak gerekebiliyor. Zephyr RTOS, FreeRTOS, DeOS, embOS, Integrity, VxWorks gibi birçok RTOS türü mevcut. Onları öğrenmek de bir iş. Bazen kendi RTOS'unuzu kendiniz geliştiriyorsunuz.
x86/x64'lerde direkt bir COM port ya da TTY açıp veri alma/gönderme yapabiliyorsunuz çünkü Driver'lar Kernel'de hazır. MCU'larda öyle bir seçeneğiniz yok. Peripheral'ları konfigüre edip konuşulacak donanıma özel Driver geliştiriyorsunuz. Yani her şey projeye ve isterlere göre şekilleniyor. Low-Level gerçekten Low-Level ve çok uğraştırıcı olabiliyor. Hem x86/x64 hem gömülü tarafta çalışan biri olarak gömülü yazılımın ve Low-Level işlerin beni daha çok mutlu ettiğini söyleyebilirim ama kafa rahatlığı açısından sıralayacak olsam kesinlike gömülü yazılımı, sayısal tasarımın (chip tasarımı) sadece bir tık üstüne yerleştirirdim. Mobil yazılım ve Web Application kısmı ise kafa rahatlığı açısından en üst sıralamaya oynarlar. Tabii bu söylediğim yanlış anlaşılıp da Mobil ve Web kolay gibi bir anlam çıkarılmasın. Onların da bayağı zorluğu var. Yine saç baş yolabilirsiniz.
Gömülü yazılım ve sistemler ile ilgili ne kadar sorunuz varsa hepsine elimden geldiğince cevap vermeye çalışırım, sorabilirsiniz.