Haberler:

Foruma Resim Yükleme ve Boyut Sınırlaması ( ! )  https://bit.ly/2GMFb8H

Ana Menü

enter_critical_section();

Başlatan kantirici, 06 Eylül 2016, 11:36:16

X-Fi

Alıntı yapılan: gerbay - 07 Eylül 2016, 16:21:22
aslında yukarda yazdığım uzun note da belirtmiştim, bazı mimarilerde atomik olarak direk hafıza üzerine okuma/yazma yapmak mümkün değil. ARM bunlardan biri ve 32 bit de olsa bu böyle. Dolayısı ile "volatile" tanımlamak ya da tanımlamamamak arasında çok bir fark olmuyor. Bazı platformlarda bazı derleyiciler kocaman bir objeyi bile volatile tanımlasanız kendi içinde ilgili platforma göre mutual-exclusion mekanizması bulunduruyor ve koyuyor. özellikle bare-metal ortamlarda bu destek bulunmuyor. bare-metal ortamlarda her durumda sizin tedbir almanızda fayda var.


Evet hocam yazınızı şimdi gördüm örnekle açıklamışsınız çok bir fark yok haklısınız.
http://www.coskunergan.dev/    (Yürümekle varılmaz, lakin varanlar yürüyenlerdir.)

X-Fi

O zaman bende bir düzeltme yapayım hocam önceki mesajımda flag örneği vermiştim volatile tanımlı register da flag kullanmak için struct tanımlayıp __attribute__((bitband)) diye belirtmek gerekiyormuş.

Aksi taktirde flag temizleme için kullanılan aritmatik işlemlerde de interrupt gelmesi durumunda hatalı sonuçlar doğuracaktır.

Sayenizde yeni bişey daha öğrenmiş olduk.

Saygılarımla.
http://www.coskunergan.dev/    (Yürümekle varılmaz, lakin varanlar yürüyenlerdir.)

z

Alıntı yapılan: gerbay - 07 Eylül 2016, 17:47:15
hocam dalgınlıkla yanlış yazmışım aslında, hafızaya atomik okuma/yazma yapabiliyor ama atomik aritmetik işlemler gibi işlem yapamıyor hafıza üzerinde..

bunu düzeltiyorum..

İşlemcisine bağlı. Ramının her bir alanının  register olduğu AVR gibi işlemcileri göz ardı etmemek lazım.

Bana e^st de diyebilirsiniz.   www.cncdesigner.com