Yapay zekadan makale özeti
- Kısa
- Ayrıntılı
- Bu video, bir eğitmen tarafından sunulan gömülü sistemler konusunda kapsamlı bir eğitim içeriğidir. Eğitmen, mikro programlama ve STM32 mikrodenetleyicilerde çevre birimlerinin programlanması hakkında detaylı bilgiler vermektedir.
- Video, gömülü sistemlerde mikro programlama temellerinden başlayarak, ARM Cortex serisi mimarilerdeki bellek haritası, GPIO portları, C programlama dilinin temel yapıları (struct, union, pointerlar, işaret bit işlemleri) ve donanım sürücüsü geliştirme sürecini ele almaktadır. İçerik, gömülü sistem programlamasına yeni başlayanlar için temel bilgiler sunmakta ve sıfırdan sürücü geliştirme konusunda temel prensipleri açıklamaktadır.
- Eğitim, donanım, sürücüler ve uygulama katmanları arasındaki ilişkiyi göstererek, basit sistemlerden karmaşık sistemlere kadar farklı mimari yapılarını incelemektedir. Ayrıca, hazır kütüphanelerin sınırlamalarını vurgulayarak, C programlama bilgisinin mikrodenetleyici programlamasına geçiş için temel olduğunu belirtmektedir.
- 00:01Gömülü Sistemlerde Mikro Programlama Temelleri
- Gömülü sistemlerde mikro programlama temelleri arasında işlemci mimarisine hakim olmak ve C diline hakim olmak bulunmaktadır.
- Mikro programlamada kullanılan mimari (örneğin ARM tabanlı veya başka bir mimari) fark etmeksizin temel konular vardır.
- Gömülü sistem programlamasında C dili en çok kullanılmaktadır, yavaş yavaş C++'a geçiş olmasına rağmen şu an büyük oranda C kullanılmaktadır.
- 00:58C Dili ve Gömülü Sistemlerde Kullanımı
- C dilini öğrenme konusunda sorunlar vardır çünkü üniversitelerde bu dersin öğretildiği yerler azalmıştır.
- Gömülü sistemlerde C dilinin en güçlü yönlerinden biri, mikrodenetleyicinin kendi komutlarıyla donanıma yaklaştırması ve doğrudan bellek adreslerine erişim sağlanmasıdır.
- Bu özellik, C dilinin pointer (işaretçi) mekanizması sayesinde sağlanır.
- 02:26Bellek Haritası ve Çevre Birimleri
- Donanıma erişmek, özellikle ARM Cortex serisi gibi mimarilerde, bellek bölgelerinden işlemcinin kendi register'larına veya çevre birimlerinin ayarlarına erişmek anlamına gelir.
- İşlemcinin register'ları iki türdür: işlemcinin yapısındaki genel register'lar ve çevre birimlerinin ayarlarını kontrol eden özel fonksiyon register'ları.
- İşlemcinin bellekten RAM'den kendi register'lara değer çekip yazmasıyla, çevre biriminin ayarları ile ilgili register'a yazıp okuması arasında temel fark yoktur, hepsi belleğe erişim üzerine kuruludur.
- 04:02Bellek Haritası ve Çevre Birimlerinin Adresleme
- İşlemcinin bellek haritasında kod belleği, RAM ve çevre birimleri için ayrı bölgeler bulunmaktadır.
- Cortex-M çekirdeğinin çevre birimleri için 32 bitlik, 3 GB'lık bir bellek bölgesi vardır ancak bu alanın çoğu boşta kalır.
- Her çevre birimi için ayrılmış bellek bölgesi vardır ve bu adreslere erişerek çevre birimlerinin ayarlarına ulaşılabilmektedir.
- 05:57GPIO Portları ve Adres Offsetleri
- GPIO portları (A, B, C, D) her birinde aynı registerlar (bit reset, register vb.) bulunur ve her port için adres offset değeri vardır.
- Adres offset, bir GPU IO'nun başladığı adresin ne kadar uzağında olduğu bilgisini verir.
- GPIO A'nın adresi başlangıç adresine offset değeri eklenerek bulunur ve bu şekilde tüm portların register adresleri hesaplanır.
- 08:04Pointer Kullanımı
- C programlama dilinde bellekteki spesifik adreslere erişmek için pointerlar kullanılır.
- Pointerlar, bellekteki belirli adreslere erişmek için kullanılır ve bu adresler normal değişkenlere atanan sıradan sayılar değil.
- Pointerlar aracılığıyla GPIO registerlarına doğrudan erişim sağlanabilir.
- 10:47Header Dosyaları ve Adres Tanımlamaları
- Mikrodenetleyici üreticileri, register adreslerini tanımlayan hazır header dosyaları sağlar.
- Header dosyalarında define kullanılarak register adresleri tanımlanır ve bu adresler mikrodenetleyicinin dokümanındaki tablolardaki adreslerle aynıdır.
- Adresler izafi olarak tanımlanır: öncelikle base adresi belirlenir, sonra bu base adresine offset değerleri eklenerek spesifik register adresleri bulunur.
- 14:15C Programlama ve Gömülü Sistemler
- C'de struck (veri yapıları) kullanılarak birden fazla değişkeni içeren yapılar tanımlanabilir.
- Gömülü sistemlerde C programlama için sadece temel if, for, while yapılarını bilmek yeterli değildir.
- Gömülü yazılım yazmak için C'nin pointerlar, strucklar, unionlar ve işaret bit işlemleri gibi daha ileri konularını da iyi bilmek gerekir.
- 15:48Mikrodenetleyicilerde Register Erişimi
- Mikrodenetleyicilerdeki register'ların isimleri rastgele değil, her birinin bir anlamı ve işlevi vardır.
- Struct yapısı kullanılarak register'lar bellekte sıralanır ve her register 32 bit (4 byte) alan kaplar.
- Bellekteki adresler byte bazlı olduğundan, register'lar 4 byte arayla artarak sıralanır.
- 17:14Struct ve Pointer Kullanımı
- GPIO çevre birimlerinin her birinde aynı register'lar bulunur ve bu register'ları tek bir struct ile tanımlayarak tüm GPIO'lar için kullanabiliriz.
- Bellekteki register'ları erişmek için "mapping" (haritalama) işlemi yapılır ve register'lar belirli bir adres bölgesine oturtulur.
- Define kullanılarak pointer tanımlanır ve bu pointer üzerinden register'lar işaretçi elemanlarına erişim operatörü sayesinde kolayca erişilebilir.
- 20:44Kod Yazımında Kolaylık Sağlama
- C dilinin özellikleri kullanılarak register'lar kod yazarken daha rahat erişilebilir hale getirilir.
- Sayısal adresler yerine semboller ve isimler kullanmak, kodu okumasını ve anlama kolaylaştırır.
- STM32 gibi mikrodenetleyicilerde hazır header dosyaları sayesinde register'lar kolayca erişilebilir hale getirilmiştir.
- 22:05Donanım Sürücüsü Geliştirme
- Donanım sürücüsü geliştirme, çevre birimlerine erişip register'lara değer yazıp okumak üzerine gider.
- Register'ların nasıl kullanılacağı, ne yazılacağı ve ne okunacağı üretici firmaların user manuelinde belirtilir.
- Mikrodenetleyici programlaması C dilini iyi bilmekle ilgilidir ve C öğrenmek için özel bir mikrodenetleyici kartına ihtiyaç yoktur.
- 24:29Yazılım Sisteminin Katmanları
- Bir yazılım sisteminde en altta donanım bulunur, bu donanım işlemci, kart veya özel elektronik donanımları içerebilir.
- Donanım katmanının üzerine sürücüler (driverlar) gelir, bu sürücüler bilgisayarlarımızda da olduğu gibi işletim sistemlerinin üzerinde çalışır.
- Sürücülerin üzerine uygulama katmanı yazılır, bu katmanda sistem neyse (buzdolabı, çamaşır makinesi, otomobil vb.) o sistemin işlevini uygulayan yazılım bulunur.
- 25:20Ara Katman Yazılımları ve Sistem Mimarisi
- Bazı sistemlerde sürücü ve uygulama katmanı arasında ara katman yazılımları da bulunabilir, örneğin ethernet sürücüsü üzerine TCP/IP ara katmanı yer alabilir.
- Gömülü yazılımlarda mimari basit sistemlerde sadece donanım, sürücü ve uygulama katmanlarından oluşabilirken, karmaşık sistemlerde işletim sistemleri de eklenerek daha karmaşık mimariler oluşturulabilir.
- Videoda CD registerlara nasıl erişildiği ve arka planda çalışan mekanizma gösterilmiş, bu hazır olarak bulunan ve define edilmiş dosyalar kullanılır.
- 26:38Hazır Sistemlerin Kullanımı ve Sürücü Geliştirme
- Hazır sistemleri ezbere kullanmak belli sorunları çözebilir ancak bazen bu sistemlerde sorunlar olabilir veya hazır bir çözüm bulunamayabilir.
- Arduino gibi sistemlerde her şey hazır kütüphanelerle kullanılırken, bir noktada sensör kütüphanesi yazılmamış olabilir ve bu durumda kendi sürücünüzü geliştirmeniz gerekebilir.
- Sürücü geliştirme temeli bu konulara dayanır ve videoların devamında hem temel konular hem de uygulama konuları ele alınacaktır.