현재 위치 - 대출자문플랫폼 - 외환 플랫폼 - MTK 플랫폼에서 드라이버를 디버깅하는 방법

MTK 플랫폼에서 드라이버를 디버깅하는 방법

1. 파일 생성

MXX_GPRS.mak(mcu\make)

Option.mak(mcu\make)

프로젝트마다 동일한 플랫폼에 대해 서로 다른 기능 구성이 있습니다. 구동 디버깅의 경우 일부 매크로 스위치 컨트롤을 수정하고 추가해야 합니다.

기본 형식 및 절차:

MXX_GPRS.mak:

XXX_XXX = XXX

XXX_XXX = 없음

XXX_XXX = 참

XXX_XXX = FALSE

Option.mak:

Ifdef XXX_XXX

Ifneq ($(strip $( XXX_XXX)), FALSE)

COM_DEFS += XXX_XXX

엔디프

엔디프

코드에서 XXX_XXX 를 사용하여 관련 코드를 제어합니다.

# 정의된 경우 (XXX_XXX)

//여기에 코드 추가

#endif

Custominfo.pl(mcu\tools)

이 파일은 LCD, image_sensor 등의 모듈을 추가할 때 수정해야 하는 파일입니다. Mcu\custom\drv 에서 ADS 컴파일 시스템을 이 모듈로 컴파일할 수 있습니다.

Image_sensor 를 참조할 수 있습니다.

If (($ projectne "basic") & & amp ($ projectne "l1s)) & & amp 정의됨 ($ $cmos_sensor)) {

If ($cmos_sensor ne "NONE") {

Push(@thatdirs, "drv \ \ image _ sensor \ \ $ CMOS _ sensor));

}

}

2.LCM 백라이트; 진동기

SUNRISE_0255_LCM 을 예로 들어 보겠습니다.

단계 1:

LCD_MODULE 및 main _ LCD _ size 는 MXX_GPRS.mak 에 구성되어 있습니다.

LCD _ 모듈 = SUNRISE_0255_LCM

메인 _ LCD _ size = 240x320

다음을 Option.mak 에 추가합니다.

Com _ defs _ for _ sunrise _ 0255 _ LCM = sunrise _ 0255 _ LCM hx8312 color _ lcdtff

여기서 HX83 12 는 LCD 의 모델입니다.

COLOR_LCD, TFT_MAINLCD 및 QVGA_MAINLCD 는 LCD 의 유형입니다.

Qvga _ 메인 LCD: 240x320

QCIF_MAINLCD: 176X220

Qqvga _ main LCD:120x160

예를 들어, SUNRISE_0255_LCM 을 기반으로 호환 화면을 추가합니다. 그런 다음 HX83 12 다음에 LCD 모델을 차례로 추가합니다.

하위 LCD; 가 있는 경우 순서대로 DUAL _ LCD 를 추가해야합니다. COLOR_SUBLCD 및 모델 이름 :

2 단계:

Mcu\custom\drv\LCD 디렉토리에 SUNRISE_0255_LCM 모듈을 추가합니다. 디렉토리 이름은 SUNRISE_0255_LCM 으로 지정됩니다.

다른 LCM; 을 참조할 수 있습니다. 5 개의 파일 추가 및 수정:

Lcd.c

Lcd_hw.h

Lcd_sw.h

평면 패널 모니터 _ 소프트웨어 _ 회사

Lcd _ SW _ rnd.h.

Lcd.c: Lcd 를 구현하는 드라이버 인터페이스입니다.

보통 init; 가 있습니다. 늦잠을 자다 노숙하다 블록 쓰기 등

Lcd_hw.h: 일반적으로 수정할 필요가 없습니다.

데이터 주소 구성 명령 주소 및 출력 형식

Lcd 의 너비와 높이를 구성하십시오.

Lcd_sw_rnd.h: 일반적으로 수정할 필요가 없습니다.

세 번째 단계:

백라이트 제어 코드 추가

Mcu \ 사용자 지정 \ drv \ misc _ drv \ 사용자 지정 _ 디바이스. c

Kal _ bool custom _ CFG _ gpio _ set _ level (kal _ uint8 gpio _ dev _ type, kal _ uint8 gpio \

{

//SUNRISE_0255_LCM 제어 코드를 사용합니다.

}

GPIO 모드 및 PWM 모드; (기본 기능은 PWM 모드입니다.)

GPIO 모드라면, 그런 다음 함수에 시뮬레이션 코드를 추가하십시오.

PWM 모드인 경우 : Mcu \ custom \ drv \ misc _ drv \ custom _ HW _ default.c 파일에서 PWM1_ level _ 을 적절하게 수정해야 합니다 주파수와 듀티 사이클,

또한 MCU \ plutoMMI \ MMI \ gpio \ gpiosrc \ general device interface.c 에는 자세한 백라이트 MMI 제어 코드가 있습니다.

또한 위의 인터페이스에 대한 lcd_if.c(mcu\drv\src) 호출에 익숙해야 합니다.

카메라 모듈; 센서

외부 DSP 에 대해서는 잠시 논의하지 않습니다. OV9650 을 예로 들어 보겠습니다.

단계 1:

ISP_SUPPORT 및 CMOS _ SENSOR 는 MXX_GPRS.mak 에서 구성됩니다.

ISP_SUPPORT = TRUE

CMOS_SENSOR = OV9650

카메라 픽셀 = 백만 픽셀

참고: (일반적으로 30 만 픽셀은 654.38+0 만 픽셀로 보간할 수 있습니다. 1.30,000 을 2 백만 픽셀로 보간할 수 있음)

2 단계:

Mcu\custom\drv\image_sensor 아래에 OV9650 디렉토리를 추가합니다.

파일을 추가하거나 수정하려면 다음과 같이 하십시오.

Camera _ hw.c: 모듈 전원 켜기/끄기 제어; (GPIO 할당은 하드웨어 리소스 할당 테이블에 따라 다름)

Camera _ para. c:ISP 및 센서 관련 레지스터 구성 실제 디버깅에서는 비교 효과가 수정됩니다.

Image_sensor.c: 타이밍; 센서 초기화 전원 켜기/끄기 미리 보기 캡처와 같은 인터페이스 구현

Image_sensor.h: 센서에 대한 일부 속성 설정 (일부 매크로 정의);

Camera_info.c: 일반적으로 수정할 필요가 없습니다.

모든 기능을 완료한 후 효과 디버깅 기반;

주요 도구: 메타; CCT 등

ISP 주소는 데이터 시트를 참조하십시오. MTK 플랫폼

세 번째 단계:

다음 디렉토리에 있는 파일에 대해 어느 정도 알아야 합니다!

미디어 \ 카메라 \;

미디어 \ 비디오 \;

Plutommi\mtkapp\Camera\

Plutommi\mtkapp\Video\

프루토미 \mtkapp\MDI\

특정 프로젝트에 대한 키보드 정의 및 매핑 및 기타 특수 처리 코드는 PHONE_TYPE 및 PLATFORM_NAME 조합에 의해 제어됩니다.

Phone _ type = slide 와 같은

PLATFORM_NAME = M678

코드 제어는 다음과 같습니다.

Custom \ drv \ misc _ drv \ m678 _ bb \ keypad _ def.c.

Constkeypad _ structkeypad _ custom _ def = {

#if defined(__PHONE_SLIDE__) // 슬라이드 모드

# 정의된 경우 (__SLIDE_M678)

//여기에 m678 키보드 정의 추가

//0 행 (첫 번째 열)

장치 키 XX,

......

//행 1 (두 번째 열)

......

//

......

# 그렇지 않으면

#endif

#elif defined(__PHONE_BAR__) // 직선 막대 모델

//

#elif defined(__PHONE_SPIN) // 회전 모드

//

# elif defined (_ _ phone _ clam 셸)//플립 모델

//

#endif

}

플랫폼에서 제공하는 기본 키 외에 특정 키 정의도 추가해야 하는 경우 위의 내용 외에도 다음 사항을 수정해야합니다.

Interface\hwdrv\kbd_table.h

장치 키 정의 xx : 순서에 주의하다

# 장치 키 XX 시퀀스 값 정의

Plutommi ₩ MMI ₩ framework ₩ OSL ₩ oslsrc ₩ keybrd.c.

장치 키 XX 가 특정 키라고 가정합니다.

//특정 키 정의

Constu16 presentallkeys [] =

{

키 _ 0,

키 _1,

키 _ 2,

키 _ 3,

키 _ 4,

키 _ 5,

......

//특정 키 정의

# 정의된 경우 (__SLIDE_M678)

, 키 _ xx

#endif

}

//키보드 매핑 (추가 순서는 PresentAllKeys[]) 과 일치해야 함)

정적 상수 KeyPadMap nKeyPadMap[] = {

{디바이스 _ 키 _0, 키 _0, 키 _ 타이머 _ID0, 톤 _ 이중 톤 다중 주파수 _0, 디바이스 _ 오디오 _ 재생 _ 무제한}

{디바이스 _ 키 _ 1, 키 _ 1, 키 _ 타이머 _ID 1, 음조 _ DTMF _/kr

......

......

//특정 키를 매핑합니다.

# 정의된 경우 (__SLIDE_M678)

{디바이스 _ 키 _XX, 키 _XX, 키 _ 타이머 _IDXX, 톤 _DTMF_ 1, 디바이스 _ 오디오 _ 재생 _ 무제한}

#endif

}

//타이머 id 정의 즉 KEY_TIMER_IDXX 입니다

Plutommi\mmi\Inc\TimerEvents.h

키 _ timer _ idxx 를 차례로 추가합니다

또한 drv \ src \ kbdmain.c 에서.

디더링 시간을 수정할 수 있습니다. 에서; 누르는 데 오랜 시간이 걸립니다. 특별한 요구를 충족시키기 위해 시간 및 기타 매개 변수를 반복하십시오.

헤드폰 감지; 선제어 운전 시스템

Custom \ drv \ misc _ drv \ m678 _ bb \ auxmain.c.

헤드폰 감지 일반적으로 AUX_EINT_NO (범용 플랫폼 기본값) 와 SENDKEY_ADC (auxmain.c 참조) 에만 관심을 가지면 됩니다.

하드웨어의 실제 상황에 따라 관련 조정을 할 수 있습니다.

회로 제어에 사용됩니다. 해당 REMOTE_EINT_NO, REMOTE_ADC 및 ADC 값을 누르기/해제하도록 구성해야 합니다.

구체적인 처리 절차는 플랫폼 _ _ line _ control _ 헤드폰 _ support _ _ control 의 코드를 참조하십시오.

6. 물리적 출력 코어

MT6226 플랫폼 ADC0-ADC6 에 사용 가능한 리소스 을 눌러 섹션을 인쇄할 수도 있습니다

선 제어를 예로 들어 수정 또는 추가 프로세스를 소개합니다.

Interface\hwdrv\Bmt.h

Typedef 열거 {

Vbat_adc_channel=0,

Visense_adc_channel,

Vbattmp_adc_channel,

......

# 정의된 경우 (__ LINE _ CONTROL _ 헤드폰 _ 지원 _ _)

원격 ADC 채널,

#endif

......

} ADC _ channel _ type

Custom \ drv \ misc _ drv \ m678 _ bb \ ADC _ channel.c.

# 정의된 경우 (__ LINE _ CONTROL _ 헤드폰 _ 지원 _ _)

Constkal _ uint8 ADC _ remote = 6; //하드웨어가 ADC6 에 연결되어 있다고 가정합니다.

#endif

Kal _ uint8 custom _ ADC _ get _ channel (ADC _ channel _ type 유형)

{

스위치 (유형)

{

......

# 정의된 경우 (__ LINE _ CONTROL _ 헤드폰 _ 지원 _ _)

사례 원격 _ ADC _ 채널:

Return ((kal _ uint8) ADC _ remote);

#endif

......

}

#endif

}

Custom \ drv \ misc _ drv \ m678 _ bb \ auxmain.c.

Voidaux _ task _ main (task _ entry _ struct * task _ entry _ ptr)

{

# 정의된 경우 (__ LINE _ CONTROL _ 헤드폰 _ 지원 _ _)

Kal _ uint8 remote _ ADC _ logic _ id

Kal_uint8 원격 _adc_no

#endif

......

......

//만들기

# 정의된 경우 (__ LINE _ CONTROL _ 헤드폰 _ 지원 _ _)

Remote _ ADC _ no = custom _ ADC _ get _ channel (remote _ ADC _ channel)

Remote _ ADC _ logic _ id = ADC _ sche _ create _ object (mod _ aux, remote_adc_no,

#endif

......

While( 1)

{

Receive _ msg _ ext _ q (task _ info _ g [task _ entry _ ptr-> Task_indx]. Task _ ext _ qid & amp;; Current _ ILM);

스위치 (current_ilm.msg_id)

{

......

//ADC 읽기

사례 메시지 _ ID _ 읽기 _ 모두 _ ADC _ 채널 _ 요청:

......

# 정의된 경우 (__ LINE _ CONTROL _ 헤드폰 _ 지원 _ _)

Aux _ read _ ADC _ channel (remote _ ADC _ logic _ id);

#endif

......

깨뜨리다

......

//제거

사례 메시지 _ ID _ BMT _ ADC _ measures _ 완료 _CONF:

......

# 정의된 경우 (__ LINE _ CONTROL _ 헤드폰 _ 지원 _ _)

Elseif (mea _ done _ ptr-> Adc _ sche _ id = = remote _ ADC _ logic _ id)

{

ADC _ measure _ count++;+;

Remote _ value = (kal _ int32) mea _ done _ ptr-> 볼트;

Aux _ remove _ ADC _ channel (remote _ ADC _ logic _ id);

}

#endif

......

}

}

}

조개 껍질에 의해 중단된 REGISTOR 는 위의 기능에 추가할 수 있다.

7.EINT

EINT 에 대한 설명은 플랫폼의 데이터 시트를 참조하십시오.

선 제어를 예로 들어 수정 또는 추가 프로세스를 소개합니다.

Interface\hwdrv\Eint.h:

Typedef 열거

{

......

# 정의된 경우 (__ LINE _ CONTROL _ 헤드폰 _ 지원 _ _)

원격 채널,

#endif

......

} eint _ channel _ type

Custom \ drv \ misc _ drv \ m678 _ bb \ eint _ def.c.

# 정의된 경우 (__ LINE _ CONTROL _ 헤드폰 _ 지원 _ _)

Constkal _ uint8 remote _ eint _ no = 3; //하드웨어 구성이 EINT3 이라고 가정합니다.

#endif

Kal _ uint8 custom _ eint _ get _ channel (eint _ channel _ type 유형)

{

스위치 (유형)

{

......

# 정의된 경우 (__ LINE _ CONTROL _ 헤드폰 _ 지원 _ _)

사례 원격 입력 채널:

Return ((kal _ uint8) remote _ eint _ no);

#endif

......

}

}

Custom \ drv \ misc _ drv \ m678 _ bb \ auxmain.c.

//인터럽트 처리기

HISR 외진 지역

{

If (remote_state) // 하이 레벨

{

//관련 처리 코드

}

Else// 하위 수준

{

//관련 처리 코드

}

}

//등록 중단

Voidaux _ task _ main (task _ entry _ struct * task _ entry _ ptr)

{

Kal _ uint8 remote _ eint _ no

......

# 정의된 경우 (__ LINE _ CONTROL _ 헤드폰 _ 지원 _ _)

Remote _ eint _ no = custom _ eint _ get _ channel (remote _ eint _ chann);

EINT_Registration (원격 _eint_no, KAL_TRUE, 원격 _state, 원격 _EINT_HISR, kal _ true

#endif

......

}

등록이 중단되면 다음 사항에 유의하십시오.

인터럽트 트리거 모드: 레벨 트리거/가장자리 트리거?

디더링: 사용/사용 안 함?

레벨 트리거가 높은 레벨에서 활성화되는지 낮은 레벨에서 활성화되는지 여부입니다.

Eint0-eint3 의 경우 : 디더링 시간을 수정할 수 있습니다. 다음 문서를 통해 Eint4-eint7 에는 점프 방지 메커니즘이 없습니다.

Custom \ drv \ misc _ drv \ m678 _ bb \ eint _ def.c.

Kal _ uint8 custom _ eint _ SW _ debounce _ time _ delay [eint _ max _ channel] =

{

50, /*EINT0*/

25, /*EINT 1*/

50, /*EINT2*/

50 /*EINT3*/

}

단위: 50ms

다음과 같은 방법으로 수정할 수도 있습니다.

아인슈타인 박사

EINT_Set_HW_Debounce ()

EINT_SW_Debounce_Modify ()

기능 수정과 같은 것들이죠.

8. 충전기 /USB

고객 참조 _ BMT _ v0. 1.pdf

관련 문서:

Custom \ drv \ misc _ drv \ m678 _ bb \ chr _ parameter.c 고려 사항:

Bmt _ customized _ structbmt _ custom _ chr _ def [] = {};

이것은 충전 관련 전압 및 전류 설정입니다.

정적 상수 kal _ int32 chr _ USB _ detect _ volt

충전기 /USB 에서 감지 한 전압 값입니다.

Mcu\bmt\*. *

Mcu \ drv \ src \ pwic.c.

9. 터치 컨트롤 보드

Custom \ drv \ misc _ drv \ m678 _ bb \ touch _ panel _ custom.c.

Custom \ drv \ misc _ drv \ m678 _ bb \ touch _ panel _ custom.h

Custom \ drv \ misc _ drv \ m678 _ bb \ touch _ panel _ spi.c.

Custom \ drv \ misc _ drv \ m678 _ bb \ touch _ panel _ spi.h

Drv \ src \ touch _ panel.c.

Drv \ src \ touch _ panel _ main.c.

수정된 점은 다음과 같습니다.

GPIO 할당; ADC 값; 좌표값 구성 중단 압력 감지 등

구체적인 수정은 코드를 참조할 수 있다.

10. 양수 색전증

Custom\audio\M678_BB\afe.c (아날로그 스위치, PA 스위치 등). ) 을 참조하십시오

Custom \ audio \ m678 _ bb \ audcoeff.c (fir 입력/출력 매개변수)

Custom \ audio \ m678 _ bb \ NVRAM _ default _ audio.c (게인 값)

L 1audio\afe2.c (AFE 관리 코드)

이상은 하드웨어에서 제공하는 데이터에 따라 조정됩니다!

1 1. 작업

MTK 플랫폼에서 작업을 사용하려면 어떻게 해야 합니까?

DMB 프로젝트를 예로 들어 보겠습니다. 다음 파일을 참조하십시오. Dmb _ 지원 제어

사용자 지정 \ 시스템 \ M678 _ BB \ 사용자 지정 _ 구성. c

사용자 지정 \ 시스템 \ M678 _ BB \ 사용자 지정 _ 구성. h

사용자 지정 \drv\DMB\TCC78X\dmb_hw.c

12 Nor/Nand 플래시 메모리 : T-플래시

새 NAND 추가:

Drv \ src \ NAND _ mtd.c.

정적 상수 flash_list NAND_ID_Table[] =

{

//{ ID, planesize (MB), blocksize (kb), pagesize (b), 주소 주기, 입출력 버스 폭, MTD 하위 드라이버}

//새로운 NAND 관련 정보 추가 (참조 칩 사양)

}

DA (다운로드 에이전트) 부분 코드 (일반적으로 수정할 필요가 없음)

Da _ src \ src \ NAND _ dev _ tbl.c.

Constnand _ device _ s g _ nandflashdevtbl [] =

{

//새로운 NAND 정보 추가 (참조 칩 사양)

}

새로운 Nor 플래시 메모리 추가

Da _ src \ src \ flash _ dev _ tbl.c.

Constnor _ device _ s g _ flashdevtbl [] =

{

//새로운 Nor 정보 추가 (참조 칩 사양)

}

DA 수정 Flash 다운로드 도구에 대한 DA 파일을 다시 생성해야 합니다.

copyright 2024대출자문플랫폼