PCIe Endpoint - Sistem Belleği / Bitiş Noktası İşlemi


1

PCIe Endpoint & Root Complex bilgisayarım linux çalıştıran bilgisayarım olacak. Şimdi PCIe Bellek Okuma İsteği (TLP) PCIe Bellek TLP Örneği kullanarak EP'den sistem belleğine (RC) birkaç bayt (örneğin, 4 bayt) göndermek istiyorum.

Bellek İsteği TLP


Bunu göndermek için bir EP'nin sistem belleğinin adresini bilmesi gerekir. Anladığım kadarıyla, RC sistem belleğine bağlanacak, böylece RC'yi hedefleyen herhangi bir işlem sistem belleğini hedefleyecek ve böylece bir EP RC'nin adres aralığını bilmeli. Örnek örnek:

EP'den Sistem'e bellek işlemi

Sorularım:

  1. Bir EP, sistem belleğinin adresini nasıl biliyor? RC BAR sistem belleğine eşlenmiş mi? Eğer evet ise, bir EP RC BAR'a erişebilir mi? Evet ise nasıl?

  2. Benzer şekilde, bir EP başka bir EP ile iletişim kurmak istediğinde, hedef EP BAR adresini bilmesi gerekir. Peki, bir EP başka bir EP'nin adresini nasıl biliyor?

    Örnek resim:EP'den EP'ye Bellek İşlemi

  3. EP'den Sistem belleğine / başka bir EP iletişimine başvurabileceğim linux kodu / sürücüsü var mı?


Herhangi bir yardım için çok teşekkürler.


Bunu daha önce sormadın mı? En azından çok benzer bir soruyu hatırlıyorum. Cevap hala: Siz sadece "hafıza okumak için" EP istekleri göndermiyorsunuz. Bu isteğin bir amacı var. Amacın ne olduğunu bize söylemelisin. Genellikle amaç bilgisayar tarafında bir sürücü içerecektir ve bu sürücü hafızayı bir iletişim alanı olarak ayırır ve donanımınıza DMA vb. İçin hafızanın fiziksel adresini söyler. Hayır. .
dirkt

Evet, soru çok benzer ancak bu daha ayrıntılı. Amaç sadece EP'den PC'ye (RC) veri aktarımı yapmaktır. Öyleyse linux tarafındaki RC sürücünün bir EP tarafından kullanılabilecek DMA için belleğin fiziksel adresini almak için api sağlayacağı anlamına mı geliyor? Eğer evet ise, bu API'yi bulmama yardım eder misiniz? Üzgünüm, ben sadece Linux'ta bir acemiyim.
Abhinav kumar

"Sadece veri aktarımı" yapamazsınız. "Sadece veri aktarımı yapmak istiyorsanız", verileri BAR'ların adres aralığının bir yerine koyun ve bilgisayarın uç noktaya bir okuma / yazma isteği göndermesini isteyin. Bu, cihazınıza / cihazınızdan veri aktarır. Sürücü olmadan bile çalışan IIRC / proc veya / sys içindeki herhangi bir yerde, BAR alanlarını temsil eden bir "dosya" var.
dirkt

Çok teşekkürler, cevap için dirkt. Sorunlarımdan birine olası çözümler sunduğunuzu düşünüyorum. EP'den EP'ye iletişim ile ilgili ikinci soru için, bu nasıl ele alınacak? Bunun gibi bir şey olacak mı: verileri bir EP'nin BAR'larından birinin adres aralığında bir yere koyun ve daha sonra başka bir EP'ye aktarmak için, PC sorunu başka bir son noktaya ilgili BAR'ı okudu / yazdı mı?
Abhinav kumar
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.