7- Arrays and Pointer Arithmetic
Bit manipülasyonu yaparken, read-modify-write yapıyoruz mesela GPIO ile. Bu MCU’da sanıyorum tüm bitlerin byte’lara eşleşmesi gibi bir özellik de var. Böylece atomic olarak single write operation ile manipülasyon yapılabilir. Çoğu durumda read-modify-write, hız açısından bir problem oluşturmaz, yeteri kadar hızlıdır. Bu özelliğin temel olayı atomik bir erişim getirmesidir. Buna bit-banding deniyor.
Tabi burada 8-bit GPIO için, 256 adet register gerekiyor, her kombinasyon için bir register. Sanıyorum bunlar 32-bit aligned olduğu için, 256x4 = 1024 byte’lık bir alan kaplıyorlar.
Bu durumda hiç read yapmadan tek STR buyruğu ile interrupt safe bir kod
çıkartabiliyoruz.
TI’in bu kartında GPIO donanımı hem APB, Advanced Peripheral Bus, hem de AHB, Advanced High-Performance Bus bağlı. Default APB ve yavaş. Backward compatibility için tutuluyormuş. APB ve AHB geçişini bir bit ile yapıyoruz ama GPIO’un tüm adresleri değişiyor, aynı yerde değiller.