2012-05-18 3 views
2

기본 USB HID 기능을위한 코드를 컴파일하려고합니다. MPLAB 8.43 및 마이크로 칩 C18 컴파일러와 함께 PIC18F14K50을 사용하고 있습니다.마이크로 칩 PIC (MPLAB/C18) 용 USB HID 코드의 링커 오류

마이크로 칩 웹 사이트의 일부 표준 파일을 사용하고 있습니다. Here is my C filehere is my header file. 나는 다음과 같은 오류를 받고 있어요

내가 빌드 할 때 :

실행 : "C : \ 프로그램 파일 \ 마이크로 칩 \ mplabc18 v3.40의 \ 빈 \의 mplink.exe \"/ p18F14K50/L "C : \ MCC18 \ lib "/ k"C : \ MCC18 \ bin \ LKR ""usb_function_hid.o ""usb_device.o ""enumeration.o ""usb_descriptors.o "/ u_CRUNTIME/u_DEBUG/z__MPLAB_BUILD = 1/z__MPLAB_DEBUG = 1/O "C : \ LPCUSBDK_Labs \ Lab1_files 출력 \ 프로젝트 랩 1.cof \ '/ M"C : \ LPCUSBDK_Labs \ Lab1_files 출력 \ 프로젝트 랩 1.map \ "/

MPLINK 4.40 W, 링커

장치 데이터베이스 버전 1.3

저작권 (C) 1,998에서 2,011 사이 마이크로 칩 테크놀로지

오류 - 파일의 심볼 'HIDDescriptor1'의 정의를 찾을 수 없습니다 './usb_function_hid.o'.

오류 : 1

링크 단계가 실패했습니다.

HIDDescriptor1 심볼은 코드의 두 위치에 나타납니다 : C 파일의 PasteBin 라인 173과 헤더 파일의 PasteBin 라인 356.

이 코드는 마이크로 칩에서 직접 제공합니다. 나는 왜 그것이 연결되지 않을지 모르겠다. 컴파일러의 다른 버전을 위해 설계되었거나 외부 종속성이 없거나 컴파일러/링커 스위치가 누락되었다고 생각합니다.

빌드를하려면 어떻게해야합니까?

답변

1

헤더 파일에는 외부에서 정의 된 HIDDescriptor1이 있습니다. 따라서 usb_function_hid.c를 컴파일하면 링크를 시도 할 때까지 컴파일됩니다. 그런 다음 그 심볼을 찾을 수 없습니다.

고객님의 코드에 HIDDescriptor1을 정의해야하는 것으로 보입니다. 아니면 다운로드 한 소스의 다른 곳에서 링크를해야합니다. 그러나 .c 파일에는 확실히 정의되어 있지 않습니다.

는 편집 :

나는 다운로드하여 Microchip Application Libraries를 설치했습니다. HIDDescriptor1에 대한 언급은 더 이상 없습니다. 그러나, 나는 가정 usb_function_hid.h 자세한 내용은 다른 구조를 대체합니다 :

//USB HID Descriptor header as detailed in section 
//"6.2.1 HID Descriptor" of the HID class definition specification 
typedef struct _USB_HID_DSC 
{ 
    BYTE bLength;   //offset 0 
    BYTE bDescriptorType;   //offset 1 
    WORD bcdHID;   //offset 2 
    BYTE bCountryCode;  //offset 4 
    BYTE bNumDsc;   //offset 5 


    //USB_HID_DSC_HEADER hid_dsc_header[HID_NUM_OF_DSC]; 
    /* HID_NUM_OF_DSC is defined in usbcfg.h */ 

} USB_HID_DSC; 

예제 프로젝트를 찾아보기는 C18 컴파일러와 잘 구축 많은 많은 HID 프로젝트, 모두가 있습니다. 이 라이브러리를 다시 다운로드하는 것이 좋습니다. 불완전하거나 오래된 도서관이있을 수 있습니다. 아래 강조된 프로젝트는 PIC18F14K50을위한 것입니다.

Microchip Application Libraries\USB\Device - HID - Keyboard\Firmware

+0

이 점은 분명합니다.그러나 내가 말했듯이이 코드는 마이크로 칩으로부터 직접 제공되며 HIDDescriptor를 정의하는 것과 관련하여 지침에 아무것도 제공하지 않습니다. 게다가, 만약 내가 직접 정의 할 필요가 있다면, 그것은 'extern'으로 분류되지 않을 것이다. – Ozzah

+0

명백하게 지적해서 죄송합니다. 사람의 경험이있는이 사이트에는 아무도 모릅니다. 내 생각에 당신의 장치는 자신의'HIDDescriptor'를 제공해야하며 모든 필드를 수정하여 올바른 것으로 만들고 HIDDescriptor1이라고 이름을 붙입니다. 코드를 조금만 들여다 보겠습니다. C18과 함께 제공되거나 별도로 다운로드 한 소스입니까? –

+0

USB HID를 구현하는 방법에 대한 예제의 일부로 Microchip과 별도로 다운로드됩니다. 내가 그 고리를 파 내는지 알 수있을거야. – Ozzah

관련 문제