» »

[linux] branje registrov na pci kartici

[linux] branje registrov na pci kartici

slovencl ::

Rad bi prebral registre na pci kartici (mrežna kartica v mojem primeru) ampak nekaj ne delam prav:

$lspci -v
02:00.0 Ethernet controller: Intel Corporation I210 Gigabit Network Connection (rev 03)
	Subsystem: ASUSTeK Computer Inc. I210 Gigabit Network Connection
	Flags: bus master, fast devsel, latency 0, IRQ 22
	Memory at df000000 (32-bit, non-prefetchable) [size=512K]
	I/O ports at d000 [size=32]
	Memory at df080000 (32-bit, non-prefetchable) [size=16K]
	Capabilities: <access denied>
	Kernel driver in use: igb
	Kernel modules: igb


Se pravi registri so mapirani na naslov df000000 (tukaj se začnejo). Za test sem želel prebrati eno vrednost, za katero vem katera je in kje mora biti, to je MAC naslov. Po datasheetu (str 530) je ta zapisan v registru 0x5910 in 0x5914 (to je offset).

Se pravi če to sedaj preberem bi moral to dobit:
$ sudo devmem2 0xdf005910 w
/dev/mem opened.
Memory mapped at address 0x7fea418b1000.
Value at address 0xDF005910 (0x7fea418b1910): 0x0
$ sudo devmem2 0xdf005914 w
/dev/mem opened.
Memory mapped at address 0x7f8e2b580000.
Value at address 0xDF005914 (0x7f8e2b580914): 0x0


Dobim pa vrednost 0, kar ni prav. Očitno nekaj ne delam prav, ampak ne najdem kaj.
Ima kdo kako idejo?

AndrejO ::

Pobrkljal si registre do katedrih moraš dostopati preko iobar in preslikan flash, do katerega lahko dostopaš potem, ko so vsi membar-i že inicializirani (kar uredi gonilnik).

Če želiš brati podatke iz flash-a, potem, ko je gonilnik že opravil svoje, si poglej 3.3.2 in 9.3.11. Še bolje, dobro preberi celotno poglavje 3.3.

slovencl ::

Hvala za odgovor, ampak še vedno ne štekam kaj točno delam narobe:

Following a Power On Reset (POR), the I210 copies the valid lower 4 KB sector of the Flash device into an internal shadow RAM. Any further accesses of the software or firmware to this section of the Flash are directed to the internal shadow RAM.

Table 3-13. Clients and Access Types to the Flash => Memory mapped via BARs.

Se pravi flash se sam skopira v RAM. In preko njega dostopaš preko BAR. A ni to to kar delam?

Saj gonilnik je svoje že naredil - mrežna dela. Ne razumem kaj točno si mislil. A lahko prosim napišeš kak stavek več oz. še bolje ali lahko daš primer, kateri konkreten register moram prebrat da bom dobil en podatek iz tabele - npr MAC naslov?

Zgodovina sprememb…

  • spremenil: slovencl ()

srus ::

Kaj pa ethtool pride v poštev?

slovencl ::

srus je izjavil:

Kaj pa ethtool pride v poštev?

Mrežna kartica je samo za primer - bistvo je PCI vodilo.

Zgodovina sprememb…

  • spremenil: slovencl ()

AndrejO ::

slovencl je izjavil:

Hvala za odgovor, ampak še vedno ne štekam kaj točno delam narobe:

Following a Power On Reset (POR), the I210 copies the valid lower 4 KB sector of the Flash device into an internal shadow RAM. Any further accesses of the software or firmware to this section of the Flash are directed to the internal shadow RAM.

Table 3-13. Clients and Access Types to the Flash => Memory mapped via BARs.

Se pravi flash se sam skopira v RAM. In preko njega dostopaš preko BAR. A ni to to kar delam?

Kar si po lastnem opisu poskusil storiti je to, da si v membar, kamor je pomnilnik preslikan, poskušal dostopati s podatki, ki so uporabni za dostop preko iobar.

Dostop preko iobar pomeni, da vpišeš ukaz in lokacijo (oz. register), nato pa prebereš podatek, pri čemer moraš paziti na ustrezne timinge.

slovencl je izjavil:

Saj gonilnik je svoje že naredil - mrežna dela.

Eeem. Če "mrežna dela", potem si naložil gonilnik za mrežno kartico, ki je zelo verjetno za sebe vzel vse te lokacije bar-ov in jih tudi ne boš mogel uporabiti.

slovencl je izjavil:

Ne razumem kaj točno si mislil. A lahko prosim napišeš kak stavek več oz. še bolje ali lahko daš primer, kateri konkreten register moram prebrat da bom dobil en podatek iz tabele - npr MAC naslov?

Ugh, ok. Dobiš, če bom imel konec tedna preveč časa in me ne bo nihče drug prehitel.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

C in funkcije ter #define

Oddelek: Programiranje
463928 (2289) misek
»

Linux za MIPS

Oddelek: Operacijski sistemi
81335 (1192) čuhalev
»

Kako ugotoviti kaj mi serje? Bluescreeni...

Oddelek: Pomoč in nasveti
192708 (2099) Cold1
»

Bluescreen

Oddelek: Pomoč in nasveti
101963 (1665) slickerSLO
»

kde in resolucija

Oddelek: Operacijski sistemi
101505 (1373) moj_nick

Več podobnih tem