character-device

문자 장치 파일에 쓰면 list_del 또는 list_add가 손상됩니다. 어떻게 해결할 수 있나요?
character-device

문자 장치 파일에 쓰면 list_del 또는 list_add가 손상됩니다. 어떻게 해결할 수 있나요?

LDD3를 팔로우하고 있습니다. 스컬 모듈의 읽기 및 쓰기 기능을 구현했습니다. 테스트 쓰기 기능을 실행할 때마다 echo hello > /dev/scull0list_add/list_del 손상 및 스택 추적이 발생합니다. 이것은 내 코드입니다. #include <linux/module.h> #include <linux/init.h> #include <linux/moduleparam.h> #include <linux/stat.h> #include &lt...

Admin

캐릭터 장치 파일에는 무엇이 있나요?
character-device

캐릭터 장치 파일에는 무엇이 있나요?

문자 장치 파일은 커널 장치 드라이버에서 정의할 수 있는 문자 및 기타 파일 작업을 무제한으로 읽고 쓸 수 있는 특수 Linux 파일입니다. 그런데 이 파일이 실제로 존재하는 걸까요? 일반 텍스트 파일로 취급하면 내용을 읽을 수 있나요? 예를 들어 큰 숫자 또는 소수? 소프트 링크에도 비슷한 것이 있습니다. Linux 시스템에서 링크는 실제로 시스템의 경로이지만 git에 커밋한 후에는 소스 디렉터리 경로인 문자열이 포함된 "일반" 텍스트 파일만 표시됩니다. ...

Admin

/dev/에 장치 파일을 생성하는 현대적인 방법은 무엇입니까?
character-device

/dev/에 장치 파일을 생성하는 현대적인 방법은 무엇입니까?

너무 길어요. 내 모듈이 최신 관행을 따르도록 하려면 /dev/쉘 스크립트에서 via를 통해 장치를 만들어야 합니까, 아니면 via 및 C 함수를 통해 모듈 소스 코드에서 직접 만들어야 합니까? 한 방법이 다른 방법에 비해 어떤 장점이 있나요?mknodclass_createdevice_create 상세한 존재하다3 장~의Linux 장치 드라이버, 제3판, 45페이지에서는 register_chrdev_region장치 번호를 알고 있는 경우 문자 장치를 등록하는 기능으로 사용됩니다. 그러나 오늘 사용하지...

Admin

chardev에서 cat을 head -c 5로 파이프하면 chardev에서 head -c 5를 호출하는 것보다 드라이버 읽기에 더 많은 호출이 발생하는 이유는 무엇입니까?
character-device

chardev에서 cat을 head -c 5로 파이프하면 chardev에서 head -c 5를 호출하는 것보다 드라이버 읽기에 더 많은 호출이 발생하는 이유는 무엇입니까?

~에서 영감을 얻다이 블로그 게시물, 저는 Linux 장치 드라이버 작업을 하고 있습니다(그들에게서 배우고 있습니다). read드라이버 관련 필드는 file_operations다음 기능으로 초기화됩니다. static ssize_t mychardev_read(struct file *file, char __user *buf, size_t count, loff_t *offset) { uint8_t *data = "Hello from the kernel world!\n"; size_t data...

Admin

#include와 #include의 차이점은 무엇입니까그리고 #include?
character-device

#include와 #include의 차이점은 무엇입니까그리고 #include?

IOCTL을 사용하여 온도 센서용 장치 드라이버 코드를 작성해야 하는데 수많은 샘플 코드를 검색하던 중 헤더 파일에서 이러한 차이점을 발견하고 이에 대한 정확한 답변을 얻을 수 없다는 것을 발견했습니다. 내 코드를 어디에 사용해야 할지에 대한 단서를 얻을 수 있기를 바라며 여기에 게시됩니다. ...

Admin

Linux 커널에서 대기 대기열의 내용을 인쇄하는 데 문제가 있습니다.
character-device

Linux 커널에서 대기 대기열의 내용을 인쇄하는 데 문제가 있습니다.

문맥:다음 작업 집합 {A, B, C, D, E}를 고려하세요. (A): 내 장치 드라이버 기능에서 read()드라이버 버퍼가 비어 있으면 호출 스레드를 대기 대기열에 추가합니다.wqbuf 보다 구체적으로 호출 스레드는 다음을 통해 대기열에 추가됩니다. wait_event_interruptible(wq, strlen(buf) > 0) (B): 마찬가지로 드라이버 기능에서 전달된 명령이 이고 드라이버의 플래그가 인 경우 ioctl()호출 스레드를 동일한 대기열에 추가합니다.wqioctlMY...

Admin

Linux 커널 Register_chdev 반환 값
character-device

Linux 커널 Register_chdev 반환 값

이 비디오새로운 캐릭터 장치를 생성하는 Raspberry Pi Linux 커널 모듈의 예를 보여줍니다. 커널 API를 사용합니다 register_chdev. 동영상의 댓글(직접 링크를 생성할 수 없음)에서 의 반환 값과 관련하여 register_chdev작성자는 다음과 같이 말합니다. 반환 값이 0이 아닌 경우 해당 장치 번호는 이미 사용 중인 것입니다. 반환 값의 상위 12비트는 주 장치 번호이고, 하위 20비트는 부 장치 번호입니다. "장치 번호가 이미 사용 중입니다"라는 말은 "커널 모듈에서...

Admin

문자 장치를 바이너리 파일로 열고 읽는 방법은 무엇입니까?
character-device

문자 장치를 바이너리 파일로 열고 읽는 방법은 무엇입니까?

저는 USB를 사용하고 있으며 /dev/bus/usb/00x/00y에 있는 USB 장치 설명자의 내용을 읽고 싶습니다. 이는 문자 장치입니다. 저는 fopen을 사용하여 "rb" 매개변수가 있는 바이너리 파일로 엽니다. 그러나 파일 크기를 얻기 위해 "find" 및 "tell"을 수행하면 0바이트 크기가 반환됩니다. 바이너리 파일로 읽는 방법이 있나요? void ReadUsbDeviceDescriptor( const char* path ) { FILE* usb_fd = NULL; siz...

Admin

캐릭터 디바이스용 MITM/에이전트
character-device

캐릭터 디바이스용 MITM/에이전트

나는캐릭터 장치 파일, /dev/X라고 가정해 보겠습니다. /dev/X 안팎의 모든 상호 작용을 캡처하고 싶습니다. 이 파일에 대해 일종의 MITM/프록시를 만드는 방법을 찾고 있습니다. 편집하다: X가 무엇인지에 관해서는 안드로이드의 FM 인터페이스입니다. 따라서 /dev/fm은 문자 장치 파일입니다. 궁극적인 목표는 이 파일로 전송된 모든 명령을 가로채는 것입니다. ...

Admin

문자 장치는 차단 I/O만 처리할 수 있나요?
character-device

문자 장치는 차단 I/O만 처리할 수 있나요?

다음(가설) 장치를 고려해 보겠습니다. 쿼리하는 데 1초가 걸리고 현재 시간을 반환하는 시계입니다. 우리는 읽기 작업만 지원하는 문자 장치 드라이버를 작성할 것입니다. 나는 읽기 결과를 캐시할 수 없기 때문에 이와 같은 장치에서는 비차단 읽기가 의미가 없다고 생각합니다. 동의하시나요? 차단 읽기만 처리되도록 허용됩니까? 그렇다면 비차단 읽기는 어떤 오류 코드를 반환해야 합니까? 아니면 다른 방법으로 비차단 작업을 지원하지 않는다고 지정해야 합니까? 실제 장치에 대한 문자 장치 드라이버를 구현하기 ...

Admin

TTY와 serial_core의 관계는 무엇입니까?
character-device

TTY와 serial_core의 관계는 무엇입니까?

일반적으로 허용되는 것보다 더 많은 파일 작업(열기, 쓰기 등이 아닌)을 허용하는 UART용 새 문자 장치 파일을 작성해야 합니다. 저는 임베디드 메인라인 Linux 커널(v 5.4)을 사용하고 있습니다. UART 드라이버를 살펴보기 시작했고 많은 것을 발견했습니다. 첫째, tty 파일이 많이 있습니다. 나는 tty가 텔레타이프라이터(Teletypewriter)의 약자라는 것을 안다. 하드웨어 부품이 아닌가 싶습니다. 그런 다음 UART의 인터럽트를 처리하는 프로세서용 특정 드라이버가 있습니다. 그...

Admin

/dev/i2c-1과 /dev/mem이 충돌합니까?
character-device

/dev/i2c-1과 /dev/mem이 충돌합니까?

모션 센서와 초음파 센서를 모두 처리해야 하는 프로그램을 작성했습니다. 저는 40개의 GPIO 핀이 있는 Jetson Nano를 사용하고 있습니다. 첫 번째는 I2C 인터페이스를 사용하므로 linux-intern libi2c-library를 사용하여 /dev/i2c-1에 액세스하고, 다른 하나는 /dev/mem을 사용하여 16진수 값을 핀에 직접 씁니다. 이제 개별적으로 실행하면 제대로 작동하지만 코드 파일로 결합하려고 하면 충돌이 발생합니다. I2C 센서에서 알 수 없는 오류가 발생하고 정지됩니다....

Admin