Skip to content

Yeni yazı: Cortex-A Boot — Reset Vektöründen main()'e Gerçekten Ne Oluyor?#145

Open
Mavrikant wants to merge 1 commit into
masterfrom
post/2026-06-17-cortex-a-boot-reset-vektorunden-main-e
Open

Yeni yazı: Cortex-A Boot — Reset Vektöründen main()'e Gerçekten Ne Oluyor?#145
Mavrikant wants to merge 1 commit into
masterfrom
post/2026-06-17-cortex-a-boot-reset-vektorunden-main-e

Conversation

@Mavrikant

Copy link
Copy Markdown
Owner

Özet

ARM Cortex-A9 (somut örnek olarak Zynq-7000) için reset sinyalinin ayağa kalktığı andan main() fonksiyonunun ilk satırının yürüdüğü ana kadar olan boot zincirini adım adım inceleyen yeni yazı.

  • Dosya: _posts/2026-06-17-cortex-a-boot-reset-vektorunden-main-e.md
  • Dal: post/2026-06-17-cortex-a-boot-reset-vektorunden-main-e
  • Alan: gömülü / SoC
  • Uzunluk: ~2900 kelime
  • Konum: "Renode ile Zynq7000 Simülasyonu" (2026-05-14) yazısının doğal devamı

Neden Bu Konu?

  • Türkçe boşluk büyük. Bilgi parçaları dağınık: ARM ARM (DDI 0406C), Cortex-A9 TRM, Xilinx UG585, embeddedsw boot.S, newlib crt0.S — her parça farklı bir kaynakta. Sentezlenmiş, somut Renode trace'i ile birleştirilmiş Türkçe bir kaynağa rastlamadım.
  • Yaygın yanılgılar var. FPU EN unutma, MMU enable sonrası ISB eksikliği, D-cache invalidate atlama gibi klasikler hata semptomu→sebep tablosu olarak işlendi.
  • Yazarın uzmanlığına oturuyor. Aviyonik/DAL A bağlamında vendor BSP'lerini "kara kutu" saymanın sertifikasyonda neye yol açtığına temas ediyor.
  • Açık PR'lar veya yayınlanmış yazılarla çakışma yok. En yakın olan PR Yeni yazı: MPU vs MMU — ARM'da Donanım Tabanlı Bellek Korumasının Anatomisi #135 (MPU vs MMU) farklı bir konu (bellek koruması), bu yazı boot dizilimi ve register init odaklı.

Derinlik Öğesi (Bölüm 7 — Derinlik Zorlaması)

Üç farklı kanıt türü taşıyor:

  1. Standart yorumu (ambiguity interpretation). ARMv7-A ARM bölüm referansları, Cortex-A9 TRM r4p1 reset davranışı, UG585 BootROM/FSBL akışı.
  2. Simülasyon (Renode trace tablosu). Boot sırasının her register yazımının cpu LogPeripheralAccess true ile yakalandığı adım adım PC + komut tablosu (~10 satır).
  3. Assembly inceleme. Xilinx embeddedsw/boot.S referansıyla VBAR, ICIALLU, TLBIALL, BPIALL, MSR CPSR mode değişimleri, CPACR/FPEXC ve SCTLR yazımları satır satır.

Alan Rotasyonu

Son 3 yayın farklı alt-alanlardaydı:

  • 2026-06-04 coupling-dengesi → yazılım mimarisi
  • 2026-06-02 kalman-filtresi → navigasyon
  • 2026-05-26 sistem-muhendisligi-nedir → sistem

Bu yazı gömülü/SoC: tabandan farklı bir alt-alan.

Kullanılan Kaynaklar (yazı sonunda)

  • ARM Architecture Reference Manual ARMv7-A and ARMv7-R (DDI 0406C)
  • Cortex-A9 Technical Reference Manual r4p1
  • Xilinx Zynq-7000 TRM (UG585)
  • Xilinx embeddedsw boot.S (Cortex-A9, gcc)
  • Zynq-7000 FSBL (AMD Adaptive Computing Wiki)
  • ARM Cortex-A Series Programmer's Guide (DEN0013)
  • Renode dokümantasyonu
  • Bare-metal ARM (D. Umanovskis), Embedded Artistry Newlib startup, newlib arm/crt0.S

Öz-Eleştiri Özeti

  • ✅ Front matter şeması mevcut yazılarla birebir.
  • ✅ Türkçe gövde + İngilizce subtitle + sahadan birinci tekil ton.
  • ✅ Her olgusal iddia doğrulanabilir (CP15 kodlamaları, SCTLR bit numaraları, CPACR bit alanları, Zynq adres haritası web aramalarıyla teyit edildi).
  • ✅ Mermaid diyagramı, tablo, dil-etiketli kod blokları (armasm) yerinde kullanıldı.
  • ✅ AI klişeleri yok ("delve", "günümüzün hızla değişen dünyasında", boş sonuç paragrafı yok).
  • ✅ Gizlilik denetimi: tüm bilgi kamuya açık standart, açık kaynak boot.S ve Renode'dan. Proje/müşteri/ürün adı yok; yazarın iç deneyimine atıf yok.
  • ✅ Olası tuzak: vektör tablosunda LDR pc, =... vs B ... farkı, MMU enable sonrası ISB zorunluluğu, FPEXC unutma gibi anti-pattern'ler bug imzaları olarak somutlaştırıldı.
  • ⚠️ ARMv7-A ARM bölüm numaraları (örn. "B4.1.156") farklı baskılar arasında küçük farklılıklar gösterebilir; okuyucunun manualinde aramasını kolaylaştırmak için register adlarıyla birlikte verildi.

Test Plan

  • CI yeşil
  • Front matter YAML geçerli (Ruby YAML parser ile teyit edildi)
  • Markdown render düzgün (Mermaid blokları, kod blokları, tablolar)
  • "Renode ile Zynq7000 Simülasyonu" yazısına atıflar doğru
  • Tüm dış bağlantılar açılabiliyor

Bu PR otonom ajan tarafından açıldı. Merge kararı yalnızca insana aittir (CLAUDE.md ve görev promptu Bölüm 4 gereği). Ajan kendi PR'ını merge etmez, onaylamaz, kapatmaz.

🤖 Generated with Claude Code

ARMv7-A Cortex-A boot sürecini reset vektöründen main()'e kadar adım adım
ele alan yazı. CP15 register kodlamaları (VBAR, SCTLR, CPACR, FPEXC),
Xilinx embeddedsw boot.S referansı, Renode üzerinde somut bir boot trace
ve sık görülen boot hatalarının trace imzaları içeriyor. "Renode ile
Zynq7000 Simülasyonu" yazısının doğal devamı olarak konumlandı.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant