임베디드 Linux 시스템용 키보드 드라이버 구현 (1)
1 소개
Linux는 강력하고 안정적인 커널, 쉬운 확장 및 축소, 풍부한 하드웨어 지원 등 많은 장점으로 인해 임베디드 시스템에 널리 사용되었습니다. 많은 임베디드 Linux 시스템, 특히 사용자와의 상호 작용이 강한 시스템에는 특수 키보드를 장착해야 하는 경우가 많습니다. 이때 개발자는 실제 조건에 따라 자신만의 특수 키보드용 드라이버를 작성해야 합니다.
2 Linux 키보드 드라이버 소개
Linux의 대부분의 드라이버는 계층적 아키텍처를 채택하며 키보드 드라이버도 예외는 아닙니다. Linux에서 키보드 드라이버는 두 개의 레이어로 구현됩니다. 그 중 상위 계층은 일반적인 키보드 추상화 계층으로, 기본 특정 하드웨어에 의존하지 않는 키보드 드라이버의 일부 기능을 완성하고 기본 계층에 서비스를 제공하는 역할을 담당합니다. 하위 계층은 하드웨어 처리 계층입니다. , 이는 특정 하드웨어와 밀접하게 관련되어 있으며 주로 하드웨어 처리를 담당합니다. 키보드 드라이버의 상위 공개 부분은 drivers/keyboard.c에 있습니다. 이 파일에서 가장 중요한 것은 EXPORT_SYMBOL 매크로를 사용하여 커널이 내보낸 handler_scancode 함수입니다. handler_scancode에 의해 완성된 기능은 다음과 같습니다. 먼저 스캔 코드를 키 코드로 변환한 다음 Shift, Alt 및 기타 확장 키(일반적으로 ASCII 코드)를 눌러 키 코드를 대상 코드로 변환하고 마지막으로 ASCII 코드를 입력합니다. 터미널 장치 버퍼에 넣고 태스크릿을 예약하여 모니터에 표시합니다. 이 함수는 키보드 드라이버의 핵심 작업 중 일부를 완료하고 이러한 핵심 논리 기능은 기본 하드웨어에 의존하지 않으므로 기본 하드웨어 처리 함수 호출로 격리하여 내보낼 수 있음을 알 수 있습니다. 키보드 드라이버의 상위 공개 부분에 의해 호출되고 기본 하드웨어 처리 기능에 의해 구현되는 몇 가지 다른 콜백 함수도 이 파일에 정의되어 있습니다. 예를 들어 kbd_init_hw, kbd_translate, kbd_unexpected_up 등이 있습니다. 그 중 kbd_translate는 스캔 코드를 키 코드로 변환하는 역할을 하는 handler_scancode에 의해 호출됩니다. 키보드 드라이버의 기본 하드웨어 처리 부분은 하드웨어에 따라 구현이 다릅니다. 예를 들어, PC 플랫폼의 표준 키보드의 기본 하드웨어 처리 기능은 드라이버/Pc_keyb.c에 집중되어 있습니다. 이 파일에는 키보드 인터럽트 처리 기능인keyboard_interrupt, 스캔 코드에서 키 코드로의 변환 기능인 pckbd_translate 및 기본 하드웨어와 밀접하게 관련된 기타 기능이 포함되어 있습니다.
이 아키텍처에서는 시스템에 특수 키보드를 추가하는 것이 특히 명확합니다. 개발자는 키보드를 구동하기 위해 드라이버에 기본 하드웨어 처리 기능만 작성하면 됩니다. 일반적으로 기본 하드웨어 처리 기능에서 가장 중요한 작업은 키보드 인터럽트 처리에서 누른 키의 스캔 코드를 가져오고 이를 매개변수로 사용하여 handler_scancode를 호출하는 것입니다. 스캔 코드는 직접 정의할 수 있지만 반드시 수행해야 합니다. 키보드에서 누른 키의 위치를 고유하게 식별합니다. 또한 개발자는 사용자 정의 스캔 코드에서 키 코드로 해당 변환 기능 kbd_translate도 제공해야 합니다. 특정 키 코드 변환, 터미널의 입력 버퍼에 대상 코드 배치 및 에코는 모두 handler_scancode에 의해 완료됩니다. 또한 여기서 커널 내보내기 함수인 handler_scancode가 전체 키보드 드라이버에서 상위 일반 추상화 계층과 기본 하드웨어 처리 계층을 연결하는 데 핵심 역할을 한다는 것을 알 수 있습니다.
3 응용 예
아래에서는 특정 응용 예를 사용하여 임베디드 Linux 시스템에서 특수 키보드용 드라이버를 작성하는 구체적인 프로세스를 설명합니다.
3.1 하드웨어 모듈 설명
이 시스템의 구성은 삼성의 S3C2410 개발 보드를 하드웨어 플랫폼으로 사용합니다. 특수 키보드의 하드웨어 모듈은 주로 2개의 SN74hc164 칩과 4행 16열의 매트릭스 스캐닝 회로로 구성됩니다. SN74hc164는 8비트 직렬 입력 및 병렬 출력 시프트 레지스터로, 직렬로 연결된 8개의 D 플립플롭으로 구성됩니다. 작동 원리는 다음과 같습니다. SN74hc164 칩은 클록 CLK 펄스의 상승 에지에서 8개의 클록 펄스 후에 A 및 B 핀의 직렬 입력을 출력 핀 QA ~ QH로 출력합니다. 진리표는 그림 1에 나와 있습니다.
두 개의 SN74hc164 칩을 직렬로 연결한 후 CLK 핀과 CLR 핀을 각각 S3C2410 개발 보드의 GPB2 및 GPB4 포트에 연결하고 첫 번째 SN74hc164 칩의 A 및 B 핀을 연결합니다. 개발 보드의 GPB1 포트에서는 이 3개의 GPIO 포트가 출력 포트로 구성됩니다. 이러한 방식으로 우리는 2개의 SN74hc164 레지스터를 사용하여 3개의 GPIO 포트만 점유하고 매트릭스 스캐닝 회로의 16개 열에 입력을 제공함으로써 비용을 절감하고 GPIO 리소스 낭비를 방지합니다. 그러나 이는 또한 키보드 드라이버 구현에 특정 문제를 가져옵니다. 드라이버는 먼저 SN74hc164를 구동해야 하며 그런 다음 매트릭스 회로의 16개 열을 제어할 수 있습니다. 매트릭스 회로의 4개의 행 핀은 각각 S3C2410의 GPG6, GPG7, GPG8, GPG9 포트에 연결되며, 이 4개의 포트는 인터럽트 소스로 구성됩니다. 키를 누르지 않으면 높은 전위로 직접 읽혀지며, 키보드의 16개 열은 먼저 SN74hc164 칩을 통해 낮은 전위로 설정됩니다. 아무 키나 누르면 해당 행 GPG 포트에 전압이 발생합니다. 높은 곳에서 낮은 곳으로 점프하면 인터럽트가 발생합니다.
3.2 소프트웨어 모듈 설명
위 내용은 임베디드 리눅스 시스템의 키보드 드라이버 구현 내용입니다. (1) 더 많은 관련 내용은 PHP 중국어 홈페이지(www.kr)를 참고해주세요. .php.cn)!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











많은 사용자에게 Android TV 박스를 해킹하는 것은 어려운 일로 들립니다. 그러나 개발자 Murray R. Van Luyn은 Broadcom 칩 부족으로 인해 Raspberry Pi에 대한 적절한 대안을 찾아야 하는 과제에 직면했습니다. Armbia와의 협력 노력

DeepSeek은 웹 버전과 공식 웹 사이트의 두 가지 액세스 방법을 제공하는 강력한 지능형 검색 및 분석 도구입니다. 웹 버전은 편리하고 효율적이며 설치없이 사용할 수 있습니다. 개인이든 회사 사용자이든, DeepSeek를 통해 대규모 데이터를 쉽게 얻고 분석하여 업무 효율성을 향상시키고 의사 결정을 지원하며 혁신을 촉진 할 수 있습니다.

Docker 컨테이너를 사용하여 사전 컴파일 된 패키지 (Windows 사용자의 경우)를 사용하여 소스 (숙련 된 개발자)를 컴파일하는 것을 포함하여 DeepSeek를 설치하는 방법에는 여러 가지가 있습니다. 공식 문서는 신중하게 문서를 작성하고 불필요한 문제를 피하기 위해 완전히 준비합니다.

BitPie Bitpie Wallet 앱을 다운로드하는 방법은 무엇입니까? 단계는 다음과 같습니다. AppStore(Apple 기기) 또는 Google Play Store(Android 기기)에서 "BitPie Bitpie Wallet"을 검색하세요. 앱을 다운로드하려면 "받기" 또는 "설치" 버튼을 클릭하세요. 컴퓨터 버전의 경우 공식 BitPie 지갑 웹사이트를 방문하여 해당 소프트웨어 패키지를 다운로드하세요.

Bitget은 스팟 거래, 계약 거래 및 파생 상품을 포함한 다양한 거래 서비스를 제공하는 Cryptocurrency 교환입니다. 2018 년에 설립 된이 교환은 싱가포르에 본사를두고 있으며 사용자에게 안전하고 안정적인 거래 플랫폼을 제공하기 위해 노력하고 있습니다. Bitget은 BTC/USDT, ETH/USDT 및 XRP/USDT를 포함한 다양한 거래 쌍을 제공합니다. 또한 Exchange는 보안 및 유동성으로 유명하며 프리미엄 주문 유형, 레버리지 거래 및 24/7 고객 지원과 같은 다양한 기능을 제공합니다.

시스템 변수 $n은 스크립트나 함수에 전달되는 매개변수입니다. n은 매개변수의 개수를 나타내는 숫자입니다. 예를 들어 첫 번째 매개변수는 $1이고 두 번째 매개변수는 $2$입니다. 이전 명령의 종료 상태 또는 함수의 반환 값입니다. 성공 시 0, 실패 시 1을 반환합니다. $#스크립트 또는 함수에 전달된 매개 변수 수 $* 이러한 모든 매개 변수는 큰따옴표로 묶입니다. 스크립트가 두 개의 매개변수를 받으면 $*는 $1$2$0실행 중인 명령의 이름과 같습니다. 쉘 스크립트의 경우 이는 활성화된 명령에 대한 경로입니다. $@는 큰따옴표("")로 묶인 경우 $*와 약간 다릅니다. 스크립트가 두 개의 매개변수를 받으면 $@는 현재 쉘의 프로세스 번호인 $1$2$$와 같습니다. 쉘 스크립트의 경우 실행 중일 때의 프로세스입니다.

1. 설치 환경(Hyper-V 가상 머신): $hostnamectlStatichostname:localhost.localdomainIconname:computer-vmChassis:vmMachineID:renwoles1d8743989a40cb81db696400BootID:renwoles272f4aa59935dcdd0d456501Virtualization:microsoftOperatingSystem:CentOS Linux7(Co 다시)CPEOS이름:cpe:

세계 최고의 디지털 자산 거래소 인 Ouyi Okx는 이제 안전하고 편리한 거래 경험을 제공하기 위해 공식 설치 패키지를 시작했습니다. OUYI의 OKX 설치 패키지는 브라우저를 통해 액세스 할 필요가 없습니다. 설치 프로세스는 간단하고 이해하기 쉽습니다. 사용자는 최신 버전의 설치 패키지를 다운로드하고 설치를 단계별로 완료하면됩니다.
