Forum » Operacijski sistemi » [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:
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:
Dobim pa vrednost 0, kar ni prav. Očitno nekaj ne delam prav, ampak ne najdem kaj.
Ima kdo kako idejo?
$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.
Č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?
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 ()
slovencl ::
Kaj pa ethtool pride v poštev?
Mrežna kartica je samo za primer - bistvo je PCI vodilo.
Zgodovina sprememb…
- spremenil: slovencl ()
AndrejO ::
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.
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.
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 ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | C in funkcije ter #defineOddelek: Programiranje | 3928 (2289) | misek |
» | Linux za MIPSOddelek: Operacijski sistemi | 1335 (1192) | čuhalev |
» | Kako ugotoviti kaj mi serje? Bluescreeni...Oddelek: Pomoč in nasveti | 2707 (2098) | Cold1 |
» | BluescreenOddelek: Pomoč in nasveti | 1962 (1664) | slickerSLO |
» | kde in resolucijaOddelek: Operacijski sistemi | 1504 (1372) | moj_nick |