2016-03-21 20 views
0

Şu anda FPGA'da geliştirilen özel bir modülü kullanmak için Linux sürücüsü geliştirmeye çalışıyorum. Bunun için, 2 ARM çekirdeğinde çalışan bir Linux dağıtımı ile bir Xilinx Zynq SoC kullanıyorum ve VHDL modüllerim FPGA bölümünde uygulanıyor, ancak bu benim problemimi anlamak için gerçekten önemli değil.Çekirdek modüllerinde önbelleği devre dışı bırakma

FPGA modülüm doğrudan RAM'e yazıyor ve sürücü ile ne yazdığını okumak istiyorum ancak önbellek nedeniyle sorun yaşıyorum. Sürücü, RAM için değil, önbellekten okur ve eski verileri okur.

FPGA'nın yazabileceği bellek alanını tanımlamak için kmalloc işlevini kullanıyorum. Önbellek yerine RAM belleğinden okuma zorlamak için kullanabileceğim bayraklar var mı? önbellek sıcak sayfaları döndürür çalışmakla Talebi önbellek soğuk sayfalar yerine:

__GFP_COLD:

ben arıyorum ama gerçekten ne yaptıklarını bilmedikleri şeylerden olabilir 2 bayraklarını gördük. -> Sadece önceden önbelleğe alınmamış bir sayfanın kullanılmasını zorluyor ancak sonradan önbelleğe almayı düşünüyorum. Bu doğru mu ?

GFP_DMA: Tam olarak aradığım şey gibi görünüyor, onu okuduğumda sadece DMA ile uyumlu belleğin bir parçasının kullanımını zorluyorum.

Oluşturduğum dizinin kmalloc ile önbelleğe alınmasını nasıl devre dışı bırakabilirim? Ya da en azından işlemciyi önbellekten okumak yerine RAM'den okumayı nasıl zorlayabilirim?

Yardımlarınız için teşekkür ederiz!

cevap

İlgili konular