Altıncı derste, ARM mimarisinde kesmelerin yapısı ve sistem açılışındaki rolleri teknik olarak
analiz edilmektedir. IVT (Interrupt Vector Table) kullanılarak sistemin başlangıç süreci
anlaşılmakta ve her bir kesmenin sistem içerisindeki yeri açıklanmaktadır.
NVIC mimarisi, klasik mikrodenetleyici sistemleriyle karşılaştırmalı olarak incelenmekte; Little
Endian veri yerleşimi, inline fonksiyonların derleyici optimizasyonlarına etkisi ve bit-banding’in
neden yaygın tercih edilmediği gibi konular teknik düzeyde değerlendirilmektedir.
Ders, CMSIS ile yazılımın donanım üzerindeki kontrolünü düzenleme yollarını detaylandırarak,
load-store mimarisi ve volatile kullanımı gibi ARM çekirdeğine özgü yapıların pratikteki
karşılıklarını sunmaktadır.
Yedinci haftada, ARM Cortex-M mimarisine özgü bit-banding tekniği ele alınmakta; atomik bit
manipülasyonu gereksinimleri bağlamında kullanım gerekçeleri açıklanmaktadır. Bit-banding'in kesme
güvenliği ve kod basitliği üzerindeki etkisi örneklerle sunulmaktadır.
CMSIS standardı ile birlikte donanım erişiminin nasıl sadeleştirildiği, yazılım katmanlarının (ASM,
CMSIS, LL, HAL, BSP, Application) sistematik olarak nasıl inşa edildiği anlatılmaktadır.
Donanım-soyutlama katmanlarının rolü üzerinden taşınabilir ve sürdürülebilir gömülü yazılım
mimarilerinin temelleri aktarılmaktadır.
Sekizinci derste, Tri-State buffer yapısının mantığı, High-Z (yüksek empedans) kavramı ve ARM
mikrodenetleyicilerde bu yapıların nasıl uygulandığı ele alınmaktadır. Veri yolunun paylaşımı,
open-drain modları ve floating girişlerin donanım seviyesinde nasıl kontrol edildiği örneklerle
açıklanmaktadır.
Ayrıca çevresel birimlere clock verilme mantığı teknik olarak ele alınmakta; güç tüketimi, sistem
kontrolü ve RCC yapılandırmaları ile ilişkisi detaylandırılmaktadır. CMSIS tabanlı konfigürasyon
sistematiği, hedef işlemcinin tanımlanması, başlık dosyalarının dahil edilmesi ve build ayarları
üzerinden doğru derleme süreci anlatılmaktadır.
Son olarak, `Run to main()` debug ayarının etkileri, `Reset_Handler`, `SystemInit`, .data/.bss
segmentleri, libc init ve main() çağrısı gibi sistem başlangıç aşamaları teknik düzeyde
aktarılmakta, CMSIS-mimarili sistem açılış süreci açıklanmaktadır.
Dokuzuncu derste gömülü sistemlerde yazılımın donanım üzerinde çalışabilir hale gelmesini
sağlayan temel süreçler teknik düzeyde ele alınmaktadır. Derleyici tarafından oluşturulan `.o`
uzantılı nesne dosyalarının, linkleme süreciyle `.hex` veya `.elf` formatlarına dönüştürülmesi;
bu işlemlerin neden ayrı adımlarla yapıldığı, object code’un tek başına neden yeterli olmadığı
detaylandırılmaktadır.
Ayrıca startup assembly dosyalarında kullanılan `PUBWEAK` ifadesi üzerinden zayıf sembol tanımı
kavramı açıklanmakta; kullanıcı tanımı yapılmadığında default fonksiyonların çalışması gibi
sistematikler anlatılmaktadır. Bu yapıların IRQ handler gibi kritik işlevlerde nasıl
kullanıldığı örneklenmiştir.
Load/Store mimarisi, ARM işlemcilerinin bellekle yalnızca `LDR` ve `STR` komutlarıyla etkileşim
kurmasını sağlayan mimari yapı olarak işlenmektedir. Doğrudan bellekten işlem yapılmamasının
sebebi, sistem tasarımı ve performans açısından değerlendirilmiştir.
Dersin son bölümünde PLL yapısı detaylı biçimde açıklanmakta; M, N ve P parametrelerinin sistem
saatine etkisi üzerinden örneklemelerle gösterilmektedir. SYSCLK’in güvenli aralıkta kalması ve
giriş/çıkış frekanslarının neden kritik olduğu teknik düzeyde ele alınmaktadır.