Pertanyaan Bagaimana cara membaca perangkat PCI tertentu yang mendaftar di Linux dari CLI?


Untuk mengontrol lampu latar, saya perlu melakukan hal berikut:

sudo setpci -s 00:02.1 F4.B=x

Ini bisa dibaca sebagai:

Untuk perangkat PCI dengan ID 00: 02.1, atur register F4 (hanya byte) ke x.

Untuk mengetahui nilai yang saya inginkan untuk x, saya ingin membaca nilai saat ini (dalam skrip saya menulis). Bagaimana saya melakukan ini?

Pekerjaan awal:

Ini tampaknya menjadi domain lspci. Saya mencoba

sudo lspci -x -s 00:02.1

tetapi ini tidak memberikan kisaran yang cukup (tidak mencapai daftar / alamat F4). Saya bisa melakukannya dengan -xxx baris perintah, namun. Ini memberi saya dump di mana saya bisa melihat byte di F4, yang saya verifikasi saya dapat memanipulasi dengan setpci perintah. Namun, manual mengatakan:

  -xxx   Show hexadecimal dump of the whole PCI configuration space. It is  available  only  to  root  as  several  PCI
         devices  crash when you try to read some parts of the config space (this behavior probably doesn't violate the
         PCI standard, but it's at least very stupid). However, such devices are rare, so you needn't worry much.

Jadi saya lebih suka tidak memasukkan itu dalam program yang berjalan secara otomatis sebagai root. Ada cara untuk hanya membaca nilai untuk mendaftar F4? SEBUAH getpci program? SEBUAH setpci bendera? Beberapa spesial lspci bendera saya merindukan?

(Lingkungan adalah Ubuntu Netbook Remix 9.04 (karma) (32-bit) pada netbook Samsung N140)


4
2017-12-26 00:22


asal


superset non pci: unix.stackexchange.com/questions/4948/… - Ciro Santilli 新疆改造中心 六四事件 法轮功


Jawaban:


Anda menginginkan programnya setpci. Sepertinya format ini akan melakukan apa yang Anda inginkan:

setpci -s 00:02.1 F4.B

Lihat man setpci: satu-satunya perbedaan dengan versi Anda adalah Anda mencoba untuk mengatur daftar, sehingga Anda memberi nama dan menetapkan nilai ("F4.B=x"). Di sini, sebutkan saja; jangan berikan nilai.

Dari halaman manual:

Operasi

Untuk menanyakan nilai register konfigurasi, beri nama saja (baik dengan   mengetikkan namanya atau dengan mengetikkan alamat register dengan opsi .B, .W atau .L   akhiran menentukan lebar register sebagai byte, kata atau kata panjang).

Untuk mengatur register, tulis reg = nilai di mana reg sama seperti yang Anda lakukan   gunakan untuk menanyakan daftar dan nilai adalah daftar nilai yang dipisahkan koma   Anda ingin menulis mulai dengan alamat yang diberikan. Setiap nilai harus ditulis   dapat ditentukan sebagai angka heksadesimal atau sebagai bit: pasangan masker   yang menyebabkan bit yang sesuai dengan yang biner di topeng untuk diubah   ke nilai bit yang sesuai dalam bit


8
2017-12-26 00:51



Bagaimana saya tidak memikirkan ini. Sempurna, terima kasih. - Paul Biggar
saya akan mencari a getpci pertama juga ... - quack quixote
Cantumkan nama semua regnames setpci --dumpregs. Juga mungkin untuk menggunakan ID perangkat langsung dengan -d 1234:5678. - Ciro Santilli 新疆改造中心 六四事件 法轮功


Memperhitungkan bahwa ini tidak akan berfungsi jika tampilan Anda menggunakan antarmuka intel_backlight yang baru (sampai saat ini hanya gnome power manager yang dapat mengelolanya).

Tolong baca ini: https://askubuntu.com/questions/57236/unable-to-change-brightness-in-a-lenovo-laptop/81389#81389 dan tautan yang tercantum Terutama posting saya (dengan nama Álvaro)


1
2017-11-22 10:19