초보자를 위한 USB 기술 소개의 완벽한 요약

USB를 배우는 초보자 , 초보자를 위한 USB 입력 요약

1. 개요
요즘에는 많은 메인 컨트롤러에 USB 기능이 있지만 초보자에게는 USB의 펌웨어 프로그램뿐만 아니라 PC 측의 드라이버와 드라이버를 잘 작성해야 하는데 호스트 컴퓨터를 작성해야 효과를 볼 수 있습니다. 이 방법은 디버깅이 매우 어렵기 때문에 USB 키보드와 마우스로 시작하는 것을 권장하며 명확하게 이해하고 나면 비교적 간단하게 나만의 프로토콜을 만들 수 있을 것입니다.
USB 개념의 역사는 여기에서 언급하지 않습니다. 특정 데이터 패킷 형식에 대해 신경쓰지 말자. 이 섹션에서는 전체 패킷 수준에서 간단히 말할 것입니다. 프로세스는 다음과 같습니다. ----------------------------------
-- ---------------장치 삽입----------------------------- ---- -------------------------- 1) 호스트는 각 USB 포트를
차례로 쿼리 하고 호스트는 D+와 사이에 연결이 있음을 감지합니다 . D-전압 차이, 새로운 설정 액세스가 있는 것으로 간주됩니다. 호스트는 100ms를 기다린 후 재설정 요청을 보냅니다. 장치는 재설정 요청을 받은 후 외부 인터럽트 신호를 생성합니다 . ---------------------------------------열거 과정-------- - -------------------------------------------------- - - 2) 이때 호스트는 새 장치가 꽂힌 것만 알 뿐, 무엇이 꽂혀 있는지 모르기 때문에 어떤 장치인지, 어떻게 사용하는지, 어떻게 사용하는지 묻기 시작한다. 부하 용량에 대해. 이때 열거 프로세스에 들어갑니다. 방금 삽입한 장치에는 할당된 주소가 없기 때문에 기본 주소 0을 사용하고 먼저 Get_descript를 보내 거나

(Get Device Descriptor) 명령 패키지는 장치가 패키지를 받은 후 패키지를 구문 분석하기 시작하고(사실 펌웨어 프로그램에서 판단하고 처리함) 고정된 형식으로 자체 장치의 장치 설명자를 반환합니다. 이 단계는 주로 호스트가 지원되는 전송 데이터 길이, 현재 로드, 지원되는 USB 버전, 컴퓨터가 쉽게 찾을 수 있는 PID 및 VID 와 같은 USB 장치의 기본 속성을 알기 위한 것입니다. 미래의 드라이버 .
3) 이때 호스트가 당신(당신이 만든 장치, 당신이라고 함)의 데이터 길이와 현재 크기를 알게 된 후, 다음 단계는 당신에게 속한 주소를 할당하는 것입니다.
4) 주소를 입력하면 특정 구성을 묻기 시작합니다. 먼저 임시 장치 구성 요청 Get_configuration ( 9개 장치 구성 단어의 고정 반환 필요)을 보내고 수신한 후 구성 단어의 총 길이를 포함하여 9바이트 장치 구성 단어를 보내기 시작하여 호스트가 방법을 알 수 있도록 합니다. 구성이 오래 지속되면 다른 장치 구성 요청을 보낸 다음 모든 구성 단어를 업로드하기 시작합니다. 이때 호스트는 이미 귀하의 작업 방법과 다양한 특성을 이해하고 정상적으로 작동할 수 있습니다
.문자열 설명자를 업로드합니다.
6) 마우스나 키보드인 경우 보고서 설명자 업로드
--------------------- -- -- 일반 데이터 스테이지 ---------------------------- -- ---------
7) 이때 호스트에서 공식적으로 승인 및 등록을 하게 되며, 테스트 드라이버 또는 일반 드라이버를 작성하여 컴퓨터와 통신할 수 있습니다.

위는 간단한 설명이며 자세한 소개는 이후 장에서 할 것입니다 무언가를 배우는 열쇠는 먼저 그것이 무엇인지, 간단한 작동 원리를 아는 것입니다 . 여기서 USB 작업에 대해 비유하자면
     호스트는 회사와 같습니다 당신은 USB 장치입니다 회사에 들어가려면 먼저 면접(열거)을 해야 합니다 면접 장소에 도착하면(연결을 위해 장치를 연결합니다 1차) 면접관이 먼저 지원자의 외모, 성별, 지원하고자 하는 직위(장비 설명어)를 파악한 후 번호를 부여한 후 번호로 사람을 부르기 시작하고 호명되면 질문하기 시작합니다. 귀하의 전문 지식, 성격 등 (구성 설명자), 귀하가 더 적합하면 (열거 통과) 귀하가 승인되고 귀하의 정보를 회사에 등록합니다 (드라이버 설치 및 레지스트리에 쓰기). 다음에 회사에 오실 때 작업 번호(PID, VID)를 보고하기만 하면 여기 있다는 것을 알게 될 것입니다.

초심자 USB 입문, 초심자 USB 입문 요약 (2) 디바이스 펌웨어 프로그램

둘째, 실제 데이터 처리 테스트
(사진의 색상을 표시할 수 없습니다. 제 블로그 http://blog.csdn.net/arthur05611/archive/2009/02/23/3929778.aspx로 이동하실 수 있습니다.)
이 섹션은 주로 펌웨어에 USB용 요청 처리 개념이 있고, 디버깅 방법이 있습니다. 이 부분에 신경 쓰지 않으면 대규모 프로그램 협력을 건너 뛸 수 있습니다, 하하.
전체 USB 부팅 프로세스를 더 잘 설명하기 위해 직렬 포트를 사용하여 각 USB 인터럽트를 실시간으로 추적할 수 있습니다. 그러나 여기에서 직렬 포트는 테스트에 사용되지 않고 프로세스는 단순히 일련의 변수로 기록됩니다. 테스트 절차는 다음과 같습니다(아래 절차에 대한 설명이 있음).

uchar  test [100];//100 길이 변수, 기록 프로세스
uchar conters =0;//기록 카운트 값,
/*------------------- -- -----------------------------------------
        University Electronics Alliance--Xiao Jida
     QQ: 258347765   
- ------------------------------------------------ -- ----------*/

void EXT_int(void)//USB 인터럽트 응답 함수
{     /*------------------------------------ ------------------------           인터럽트 소스를 알기 위해 인터럽트 상태 레지스터를 확인     하십시오        . --------------------------------------------*/



    if (USB_BUSRESET_ASS_INT())
    { /* USB 버스 재설정 */
        /* for USB Rev.1.1
                     USB 버스 재설정이 해제된 후 10msec의 복구 시간이 있습니다.
                     다음 요청은 정상적으로 처리되어야 합니다.
        */

        CLR_BUS_RESET_STATE(); /* USB 버스 리셋 상태 클리어 */

        /*------------------------------------------------ ------------
           Endpoint0 설정
        --------------------- ------------------------*/
        /* Tx/Rx 페이로드 광고  크기 설정 */
        /* Rx 페이로드는 8바이트 또는 32-로 고정 바이트이므로
           설정에 의미가 없습니다 */

        SET_PAYLOAD_EPn(EP0RX, device_descriptor.bMaxPacketSize0);
        SET_PAYLOAD_EPn(EP0TX, device_descriptor.bMaxPacketSize0);
        /* 스톨 비트, 리셋 후 정의되지 않은 값, 클리어됨 */
        CLR_STALL_EPn(EP0);
             
        /*------------------------------------------------ ---------------------------
           기타 상태 변수 초기화
        ---------------------------------- --------------------------*/
        usb_status.configuration = NULL;
        usb_status.remote_wakeup = 0;
        usb_status.address = 0;
        usb_status.dvcstate = DEFAULT_STATE; /* 장치 상태: DEFAULT */
        usb_status.stall_req = 0;
               #ifdef 디버그
                     test[conters]='!';
                     컨터++;
                     #endif

        /*------------------------------------------------ ------------ 애플리케이션 레이어
           콜백         ------------------------------ _ ---------------------------------------------*/         (*usb_status.callback)();     }     else if (SUSPENDED_INT())     { /* 정지 상태 */         /* for USB Rev.1.1                      USB 라인이 3msec 이상 유휴 상태를 유지한 것을 감지한 후 정지 상태로 전환합니다.                      재개가 감지되면 호스트 요청에                      응답할 수 있도록 3msec 내에 일시 중지 상태를 종료합니다 .         */               CLR_SUSPENDED_STATE();                      #ifdef 디버그












                     test[conters]='@';
                     컨터++;
                     #endif

    }

    else if (AWAKE_INT())
    { /* 장치 활성 상태 */
        /* AWAKE 절차 */

        CLR_AWAKE_STATE(); /* 클리어 요청 */
                     #ifdef Debug
                     test[conters]='#';
                     컨터++;
                     #endif

    }
    else if (USB_BUSRESET_DES_INT())
    { /* USB 버스 재설정 해제 */
        /* USB 버스 재설정 해제 절차 */
       
        CLR_BUS_RESET_DES_STATE(); /* 클리어 요청 */
                     #ifdef Debug
                     test[conters]='$';
                     컨터++;
                     #endif

    }

    else if (SOF_INT())
    { /* SOF 인터럽트 상태 */
        CLR_B_SOF_STATE();  
               #ifdef 디버그
                     test[conters]='%';
                     컨터++;
                     #endif
       /* SOF 인터럽트 상태 클리어 */
    } /* SOF 인터럽트 상태 */

    if (SETUP_RDY_INT())
    { /* 설정 준비 */
                  #ifdef Debug
                     test[conters]='^';
                     컨터++;
                     #endif

        read_Device_Requests();
    }

    else if(EP1_PKTRDY_INT())
    { /* EP1 패킷 준비 */    
        read_FIFO(EP1);
       }
    else if (EP2_PKTRDY_INT())
    { /* EP2 패킷 준비 */

        write_FIFO(EP2);
    }

    else if (EP0_RXPKTRDY_INT())
    { /* EP0 수신 패킷 준비 */
        read_FIFO(EP0RX);
    }
    else if (EP0_TXPKTRDY_INT())
    { /* EP0 전송 패킷 준비 */
        write_FIFO(EP0TX);
    }

}
기록된 결과는 다음과 같이 변수 보기에 표시됩니다.

먼저 이 프로그램이 USB 장치를 만들 때 인터럽트 기능이라고 설명하겠습니다. 마스터 컨트롤(펌웨어 프로그램을 작성하는 것)은 장치가 작동해야 할 때 해당 인터럽트를 생성합니다(인터럽트 방법 또는 쿼리 방법을 사용할 수 있습니다. 인터럽트 방법의 장점은 호스트가 작동해야 할 때 호출되지만 호스트에게 "무엇이 문제인지"를 계속 물어봐야 합니다. 여기에 인터럽트 방법이 있습니다.) 예를 들어 호스트는 장치의 주소를 설정하고 호스트는 "주소 설정"을 보냅니다. 고정 채널(point0) 패키지를 통해 장치 마스터는 패키지를 받은 후 인터럽트를 생성하고 해당 레지스터 에 응답 상태를 저장합니다. 우리는 인터럽트 프로그램의 각 레지스터를 판단하여 작업을 완료하기만 하면 됩니다. 주인.
프로그램의 파란색 단어는 인터럽트 유형의 판단이며 해당 매크로 정의는 나열되지 않습니다. 이 인터럽트이면 해당 인터럽트 동작이 실행됩니다. 그리고 하나의 인터럽트에는 한 가지 유형의 인터럽트만 존재합니다. 각 인터럽트 응답에 빨간색 프로그램을 추가하여 각 인터럽트의 상태를 저장합니다. 인터럽트 작업 후 상태를 기록합니다. test[conters]='!'; conters++; 의미 이 인터럽트를 입력한 후 이 숫자 그룹의 현재 위치를 '!'로 설정하고 위치에 기록된 변수에 1을 추가하여 다음 로그가 한 번에 다음 위치에 기록되도록 합니다. 이런 식으로 USB 프로세스를 기록하고
     기록 결과를 살펴 보겠습니다 (숫자와 문자는 표준 요청에 대한 응답으로 프로그램에서 생성되며 프로그램은 여기에 나열되지 않습니다).
file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/01/clip_image002.jpg

보시다시피 버스 재설정으로 시작한 다음 USB 버스 재설정 해제로 시작한 다음 버스를 일시 중단합니다. 두 번 반복한 다음 이전 섹션의 특정 구성입니다.
이 섹션은 주로 펌웨어에서 USB 요청 처리의 개념과 디버깅 방법에 관한 것입니다.
 


초보자를 위한 USB 입문서, 초보자를 위한 USB 엔트리 개요 (3) 데이터 패킷 설명

USB 전송의 일반적인 개념이 있고 다음 단계는 USB로 무엇을 업로드하고 어떤 형식으로 데이터를 전송하는지 살펴보는 것입니다.
다양한 버스의 데이터 전송은 고정 레벨 계약으로 이루어지며 USB도 예외는 아닙니다. 소위 수준은 추상적인 개념일 뿐이며 종속 관계를 표현합니다. 상위 수준은 하위 수준에 따라 달라집니다. 상위 수준은 하위 수준을 기반으로 합니다. 상위 수준은 자신의 일만 신경쓰면 됩니다. 어떤 것을 배울 때 한두 문장으로 요점을 이해하는 것은 불가능하며, 각각의 요점을 이해하기 위해서는 포괄적인 이해가 필요합니다. 두 기계 간의 통신을 실현하려면(기계의 범위는 비교적 넓으며 컴퓨터, 스위치 , 단일 칩 마이크로 컴퓨터
가 될 수 있음 ) 항상 캐리어가 있어야 합니다. 기계의 경우 레벨은 물론 캐리어입니다. 특히, 기계 A는 기계 B에게 한 가지(예: 명령)를 알려야 하고, 기계 A는 라인(직렬 데이터 버스)을 통해 기계 B의 IO 포트에 연결될 수 있으며, A는 하나씩 높은 수준과 낮은 수준을 보냅니다. 하나, B는 고정된 시간에 자신의 IO 포트를 감지한 다음 하나씩 기록하고 자신의 버퍼에 넣어 B가 A가 보낸 데이터를 수신합니다. 위는 간단한 데이터 링크 계층(컴퓨터 네트워크에서 소위 말하는)에 대한 설명입니다 . 이 계층에서 보장해야 하는 것은 A가 보낸 모든 데이터 비트를 B가 정확하고 시기 적절하게 수신할 수 있고 전송 과정에서 오류가 발생한다는 것입니다 . 데이터가 반응합니다. 사실 물리계층은 실제 물리매체인 데이터링크보다 하위에 있는 기계의 경우 전선이고, 데이터는 전선으로 전달되는 전압이다.USB는 4개의 전선, 2개의 전원, 그리고 2개의 데이터 와이어 . 여기에도 비유가 있습니다. .단어는 음파로 변환되어 상대방에게 전달됩니다.데이터 링크 계층은 상대방이 각 단어를 올바르게 들을 수 있도록 하는 역할을 합니다.잘 들리지 않으면 상대방에게 다시 말하라고 말할 수 있습니다.

위의 두 개의 하위 레이어 후에 각 데이터 비트가 상대방에게 올바르게 전송될 수 있음을 보장할 수 있습니다. 다음 단계는 당연히 데이터가 무엇을 나타내는지 분석하는 것인데, 일반적으로 데이터는 일련의 숫자 단위로, 일반적으로 패킷이라고 하며 기계 간의 전송은 사람이 말하는 것처럼 패킷 단위입니다. 한 문장 단위로 출력하는 것과 동일합니다. 각 패킷에는 많은 비트의 데이터가 포함되어 있으며 이러한 데이터 세그먼트는 다른 의미를 나타냅니다.그림 1에서 볼 수 있듯이 이것은 USB 토큰 단계 패킷이며 Sync는 동기 데이터입니다 (말할 때 인사하고 상대방에게 Talked to라고 말하는 것과 같습니다. 그), PID는 패키지 라벨(상대방에게 패키지가 무엇인지 알려주기), ADDR은 상대방의 주소(상대방 이름이라고 함), ENDP는 엔드포인트 간의 통신(먼저 소개하지 않음) , CRC5는 확인 비트(패킷 전송 오류 여부 판단), EOP는 패킷의 끝입니다.
|------------------------------------------------- -------|
동기화|PID|ADDR|ENDP|CRC5
|

                      그림 1
USB 데이터 패킷은 토큰 패킷, 데이터 패킷, 핸드셰이크 패킷의 세 가지 유형으로 나뉩니다. 모든 USB 통신 거래는 토큰 패킷으로 시작하여 상대방에게 누구와 대화하고 이 문장이 무엇에 사용되는지 알려줍니다. 데이터 전송이 필요한 경우 다음 단계는 데이터 패킷이고 상대방이 피드백을 받아야 하는 경우 핸드셰이크 패킷이 전송됩니다. 토큰 패키지는 단순히 OUT, IN, STEP의 세 가지 유형을 포함합니다. , STEUP은 호스트가 USB 장치로 데이터를 전송하는 데 사용되며, 장치는 열거 프로세스에서 사용되는 구성 정보를 전송합니다. 또한 데이터 패킷과 핸드셰이크 패킷의 구체적인 형식은 상세 프로토콜을 참조하면 된다.
모든 통신 프로세스에서 호스트가 개시자이며 호스트가 USB 장치에 데이터를 보내든 USB 장치가 호스트에 데이터를 보내든 호스트가 제어해야 합니다. 그림 2는 트랜잭션의 프로세스 토큰 단계
  
        ——” 데이터 단계 ——” 핸드셰이크 단계를 보여줍니다.

                                그림 2
프로세스는 다음과 같이 설명할 수 있습니다. A와 B는 대화를 나누고 A는 상사이고 B는 직원입니다. 첫 번째 섹션에서 언급한 바와 같이 B의 인터뷰는 열거형이며, 이 과정에서 A는 STEP 토큰 패킷을 여러 단계에 걸쳐 B에게 전송합니다. B가 데이터를 수신하고 데이터 피드백을 원하면 A에게 데이터 패킷을 전송합니다. 올바르게 , A와 악수하여 대화가 성공했음을 나타냅니다.
B가 공식적으로 승인된 후 A는 작업을 할당합니다(OUT). 이때 A는 B에게 당신을 위한 작업이 있다고 말하고(토큰 단계) B가 듣기 시작합니다. A는 당신의 작업이 데이터를 기록하는 것이라고 말합니다. 보고하고(이 단락은 데이터 패킷) B는 동의했습니다(핸드셰이크 패킷).
B는 정식 작업을 시작하고 데이터를 기록합니다. 일정 시간이 지난 후 A는 데이터 제출(IN)을 요청하기 시작하고 B는 A에게 데이터를 보고하고(데이터 단계) A는 예라고 대답합니다(핸드셰이크 성공). 여기서 B는 주도적으로 상사에게 보고할 수 없고 소극적으로만 일할 수 있습니다.
위에서 USB 호스트와 디바이스 간의 데이터 전송 과정을 말씀드렸는데요 제 개인적인 이해이니 틀린 부분이나 틀린 부분이 있다면 추천 부탁드립니다 초보자분들이 이해하기에도 편리합니다 감사합니다••

USB 시작하기, 초보자를 위한 USB 소개 요약 (4) USB 통신 장치의 급속한 발전

위 세 섹션의 설명을 마친 후에는 USB에 대한 예비 이해가 있어야 하며 특정 프로토콜(예: 각 디스크립터의 정의)은 여기에서 설명하지 않으며 인터넷에 많이 있습니다. 아래에서 예를 들어 USB 장치의 급속한 발전 단계를 자세히 설명하겠습니다.
먼저 계획을 세우십시오
.모든 것이 미리 이루어지며 그렇지 않으면 비용이 많이 듭니다.따라서 계획을 세워야 합니다. 어떤 기능을 구현하고 싶은지 상상하는 등 작은 USB를 개발할 때 조금.전송을 위한 데이터 프로토콜은 무엇입니까?
2. 펌웨어 프로그래밍
.솔직히 말해서 펌웨어 프로그래밍은 단일 칩 마이크로 컴퓨터 프로그램을 작성하는 것입니다.USB를 구현하려면 일반적으로 USB 기능이 있는 단일 칩 마이크로 컴퓨터를 사용할 수 있으며 두 번째는 전용 USB 칩을 추가하는 입니다 . 여기서 우리는 내부 통합 USB 기능 마이크로 컨트롤러를 예로 들어,
펌웨어의 USB 개발은 일반적으로 먼저 USB를 활성화하고, USB 클록을 활성화하고, 각 USB 제어 인터럽트(일시 중단, 재설정, 표준 요청, 쓰기, 쓰기, 등등) 그런 다음 USB는 정상적으로 작동할 수 있습니다. 새 USB 장치가 발견되었음을 나타내는 관리자 다음으로 프로그램이 현재 완전히 작성되지 않았기 때문에 컴퓨터에 다양한 표준 요청이 전송되며 이러한 요청에 대한 응답이 없으므로 불가능합니다. 그것이 무엇인지 컴퓨터가 인식합니다.
다음 작업은 인터럽트에서 컴퓨터의 다양한 표준 요청에 응답하는 것입니다. 필요한 요청이 올바르게 응답되면 이때 컴퓨터에 올바른 드라이버가 있으면 컴퓨터가 드라이버를 로드합니다.처음 장치를 삽입하는 경우 드라이버를 설치해야 장치가 시작됩니다. 정상 작동 시작 작업 후 컴퓨터에 "이 USB가 성공적으로 설치되었으며 사용할 수 있습니다"라는 메시지가 표시됩니다.
여기에서 엔드포인트의 개념에 대해 간략히 설명하겠습니다. 일반적으로 USB 장치에는 여러 엔드포인트가 있습니다. 엔드포인트는 데이터 버퍼 제어 영역(FIFO)입니다. 각 버퍼는 하나의 내보내기와 하나의 가져오기가 있는 풀과 같습니다. 데이터는 다음을 통해 입력됩니다. 풀로 가져온 다음 펌웨어의 데이터를 사용합니다. 펌웨어가 컴퓨터에 데이터를 쓸 때 데이터를 먼저 풀에 넣은 다음 콘센트를 열어 데이터를 하나씩 보내는 대신 풀의 콘센트를 자동으로 보내는 대신 자체 작업을 수행할 수 있습니다. 데이터가 흘러 나옵니다.
일반 포트 0은 표준 요청 응답에 사용됩니다. 즉, 열거 단계에서 사용됩니다. 저는 일반적으로 포트 1을 출력(OUT)으로, 포트 2를 입력(IN)으로 정의합니다. IN은 컴퓨터로의 장치 데이터입니다). 이러한 정의는 표준 요청에서도 컴퓨터에 전달됩니다.
다음으로 컴퓨터와의 통신을 실현할 수 있으며 해당 풀에 데이터를 넣기만 하면 됩니다. 다음으로 통신의 데이터 형식을 직접 정의할 수 있습니다. 예를 들어 제어 개발 보드의 8개 LED 중 첫 번째 표시등이 켜지면 호스트 컴퓨터는 데이터 0x55, 0x01, 0x80, 0xaa를 보냅니다. 첫 번째 데이터를 계몽 비트라고 규정할 수 있으며, 이를 만나면 제어 명령의 시작을 알리고, 0x01은 전등을 켜고 끄는 제어 명령을 의미하고, 0x80은 LED의 제어 데이터를 의미한다. 비트가 0이면 둘 다 어둡다는 의미입니다. 마지막 데이터는 0xaa로 이것이 끝임을 나타냅니다. 사실, 소위 데이터 프로토콜은 양 당사자가 서로를 올바르게 이해하기 위해 통신할 수 있도록 하는 일련의 자체 정의 데이터 형식일 뿐입니다. 컴퓨터는 컴퓨터와 비슷하며 올바르게 작동하려면 모든 것을 지정해야 합니다.
3. 드라이버의 빠른 개발을 위해
    Driverstudio를 사용하시면 됩니다.저는 VC6.0을 먼저 설치하고 DDK2600을 설치하고 마지막으로 Driverstudio를 설치했습니다.인터넷에 이 순서가 문제를 일으키기 쉽지 않다는 이야기가 있고, 다른 명령을 시도 할 시간이 없습니다 어떤 특수 효과가 나올지 속이는 지 아닌지에 관계없이 이렇게 먼저 눌러도 해가 없습니다.
    초기에 좀 더 유행하던 DriverStudio 3.2 버전을 설치하고 인터넷에 있는 방법대로 크랙을 해봤는데 생성된 드라이버는 장치를 열 수는 있지만 데이터 전송은 안되네요 up? 아니면 균열이 완전하지 않습니까? 그런 다음 3.2를 제거하고 3.1을 설치했는데 제대로 작동했습니다. Compuware가 저에게 장난을 쳤는지 아니면 제가 멍청해서 실수를 했는지 정말 모르겠습니다.
드라이버 생성 단계는 Baidu 및 Google에서 "10분 안에 USB 드라이버 완료"로 검색할 수 있으며 다음을 찾을 수 있습니다.


많이, 검색하기 번거롭다면 이것을 클릭하고 잊어 버리십시오. http://www.4oa.com/Article/html/6/33/482/2005/17317.html 단계를 따르고 마법사를 따르십시오. 완료 후 VC는 드라이버 프레임 워크와 함께 나올 것입니다. 이때 컴파일하면 많은 문제가 발생합니다. 내 작업은 다음과 같습니다. 먼저 DDK 라이브러리를 컴파일하고 인터넷에서 작업을 사용할 수 있으며 인터넷에 클라우드가 있습니다.
1. Visual  C++를 시작합니다  .
2. File | Open Workspace 메뉴를 선택합니다. DriverStudio/DriverWorks/Source/vdwlibs.dsw에 있는 작업 공간 파일을 엽니다.
3. Build|Batch Build 메뉴를 선택하고 팝업 대화 상자에서 컴파일할 라이브러리를 선택합니다.
4. 빌드를 클릭하여 선택한 라이브러리를 컴파일합니다.
그런 다음 VC의 Driverstudio 도구 모음에서 "환경 변수 변경"을 클릭하고 첫 번째 선택 카드에서 DDK의 경로를 선택합니다. 내 경로는 C:\WINDDK\2600입니다. 그런 다음 확인을 클릭하고 DriverStudio 도구 모음에서 컴파일을 클릭하면 됩니다.여전히 문제가 발생하면 VC에서 표시된 오류를 Baidu로 복사할 수 있습니다.

[위의 정보는 Aibo Testing에서 편집 및 공개했습니다. 불일치가 있으면 제때 수정하십시오. 인용이 있으면 출처를 표시하십시오. 함께 토론하는 것을 환영합니다. 우리는 개발에 주의를 기울였습니다! 초점: CCC/SRRC/CTA/운영자 창고]

おすすめ

転載: blog.csdn.net/weixin_47371464/article/details/131891733