it-swarm-ko.tech

장치 레지스터를 읽는 쉘 명령?

Linux를 실행하는 단일 보드 컴퓨터에서 하드웨어를 제어하는 ​​장치 구성 레지스터의 내용을 읽는 방법이 있습니까? inw()의 래퍼가 될 것이라고 생각합니다.

드라이버 디버깅의 맥락에서 사용될 U-boot memory dump (md) 명령과 동등한 것을 찾고 있습니다.

18
pingswept

장치의 실제 주소를 알고 있으면 devmem2를 사용할 수 있습니다.

devmem2 <physical address> <size (b/h/w)> [value]
14
Eric

바닐라 커널로 직접 할 수 있는지 모르겠습니다.

그러나/proc에 "파일"을 사용하여보고자하는 메모리 내용을 내보내는 간단한 드라이버를 작성하는 것은 상당히 어려운 일입니다.

그런 다음 간단한 스크립트로 "파일"을 읽고 해당 메모리에 액세스 할 수 있습니다.

3
Johan

나는 이것에 대해 완전히 그리고 완전히 틀릴 수 있고, 내가 있다면 용서하지만, uboot의 md 명령이 장치 레지스터에 매핑 된 메모리 주소를 읽고 내용을 반환하면 현명하게 사용하여 동일한 메모리 위치를 읽을 수 없습니다 의 dd if=/dev/mem ...?

1
LawrenceC

busybox devmem

busybox devmem는 내가 선호하는 devmem2 버전입니다. https://unix.stackexchange.com/a/134661/32558

devmem2는 Buildroot http://free-electrons.com/pub/mirror/devmem2.c 와 같은 여러 업스트림에서 여러 버전으로 나왔습니다.

그러나 Busybox 유틸리티는보다 표준적이고 광범위하게 사용 가능하며 유지 관리됩니다.

예를 들어, devmem2는 데비안에서 거부되었습니다 : https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=595805 (그러나 우분투 패키지는 깔끔하게 만들어졌습니다. ).

우분투에서 다음을 얻을 수 있습니다.

Sudo apt-get install busybox

사용법 : 실제 주소 0x12345678에서 4 바이트를 읽습니다.

Sudo busybox devmem 0x12345678

해당 주소에 0x9abcdef0를 작성하십시오.

Sudo busybox devmem 0x12345678 w 0x9abcdef0

다음은 devmem out을 테스트하는 멋진 방법입니다. https://stackoverflow.com/questions/12040303/accessing-physical-address-from-user-space/45127890#4512789

/ sys/bus/pci/devices/*/config의 PCI 장치 구성이 도움이됩니까?

0
user3487

pcimem ( https://github.com/billfarrow/pcimem )이라는 유틸리티가 있습니다

Pci 장치에서 읽고 쓰는 데 사용할 수 있습니다.

0
simba