MTK驅動總結

一、Charge Parameters.                                                                                                                                           

1,相關文件chr_parameter.c

2,I/O相關的設置。在bmt_custom_chr_def定義,GPIO_CHRCTRL,GPIO_VIBRATOR,分別定義充電控制腳和振機控制腳。

3,其它的相關的參數設置可以參見文件GSM_GPRS_System_Configuration_V1.93.pdf中P42的說明

二、EINT Parameter 外部中斷

1,  相關文件eint_def.c

2,  在文件頭根據電路圖設置關於AUX_EINT_NO等外部中斷的具體引腳設置。

三、Key Pad 定義部分

1,  相關文件keypad_def.c

2,  根據物理上按鍵的相關定義,填寫keypad_custom_def部分,定義按鍵。疑問,關於Power按鍵等,在哪裏定義的?

四、UART Parameter

1,相關文件uart_def.c

五、用戶自定義的驅動初始化

1, 相關文件custom_drv_init.c,在函數custom_drv_init中,會調用GPIO,SPI,LCD等的Init函數,需要對這些對應的函數執行相應的設置初始化操作。

2,對於GPIO_init函數中,可以調用函數DRV_WriteReg(GPIO_MODE1,0x0000);等執行相應地設置操作,關於該GPIO_MODE1等的定義,可以參考文件MT6219.pdf中,P98的相關說明.

六、Custom Equipment Config

1,  相關的文件:custom_equipment.c,custom_equipment.h

2,  GPIO的定義部分:需要根據實際的電路圖填寫gpio_map_tbl表格,對應修改GPIO_LABELID_ENUM和netname定義等

3,  需要根據定義和設置,修改custom_cfg_gpio_set_level函數

七、設置驅動相關的level信息,主要包括:LCD對比度,音量,電池,pwm等

1,  相關的文件:custom_hw_default.h, custom_hw_default.c

2,  設置相關的參數,包括默認的初始時間等

八、LED,LCD,Vibrator模式設置

1,p71頁爲分步驟設置模式的詳細說明。

九、NVram Config

1,  相關的文件:nvram_user_def.h,

2,  添加一個新的存儲項的步驟:

3,  在文件nvram_user_def.h中,在enum nvram_LID_cust_enum結構中添加需要添加的項。

4,  在文件nvram_user_def.h中,使用define來定義size和total常量。注意,需要根據類型的不同來定義,可以參見p78的說明

5,  在文件custom_nvram_editor_data_item.h中,定義自定義的數據信息的版本信息部分

6,  在文件custom_nvram_editor_data_item.h中,添加用於meta的函數,類似LID_VBIT VER_LID(NVRAM_EF_XXXXXX_LID) 這樣的函數

7,  在文件nvram_user_config.c中,設置默認的數據信息部分.

8,  設置數據信息:Size Max<480  Total Max<300  Max Number of user configurable data item<25

十、LCD Config

1,  lcd讀寫時序設置,在函數init_lcd_interface中處理,在文件lcd.c中,具體可以參見p88的說明

2,  關於lcd具體設置的步驟說明在P96

十一、       Flash Config

1,  NORFlash Config:相關的文件FlashConf.c

2,  NANDFLash Config:相關的文件NANDFlashConf.c

3,  疑問:FlashConf.c中,如何看需要分配的程序空間的大小?也就是說,分配3M的空間用於程序,怎麼知道是否夠了呢

4,  

十二、       RF Driver Config

1,  相關的文件的目錄:D:/project/6219/custom/l1_rf/T6219_MT6129D

2,  具體的參數設置請參見P106,一般不需要修改

十三、       AFE Config (Audio Front end前端/置音頻) P119

1,相關的文件的目錄:D:/project/6219/custom/audio/T6219_BB

 

本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/sergeycao/archive/2008/09/15/2933405.aspx

Ø      GPIO設置篇

一、GPIO有關的函數

1.GPIO_ModeSetup:

函數原型:void GPIO_ModeSetup(kal_uint16 pin, kal_uint16 conf_dada)

功能:設置GPIO的工作模式是作爲GPIO,還是作爲專有功能接口。

參數:

pin:GPIO 的pin腳號,對應於原理圖上MTK62XX 主CPU芯片的上的GPIO標號

conf_dada:值有0~3。其中0是表示作爲GPIO模式,其他根據專有功能的不同進行設置。

 

2.GPO_InitIO

函數原型:void GPIO_InitIO(char direction, char port)

功能:初始化GPIO的工作方向是作爲輸入,還是作爲輸出

參數:

    direction:工作方向,0表示輸入,1表示輸出

    port:GPIO的pin腳

 

 

3.GPIO_ReadIO

函數原型:char GPIO_ReadIO(char port)

功能:從GPIO讀取數據

參數:

    port:GPIO的pin腳

 

4.GPIO_WriteIO

函數原型:void GPIO_WriteIO(kal_char data, kal_char port)

功能:往GPIO寫數據

參數:

data: 1表示給高電平,0表示給低電平

    port:GPIO的pin腳

 

備註:這些函數在Gpio.C中可以找到。

 

 

二、GPIO模式設置

    GPIO口在系統上電的時候,有的是默認高電平,有的是默認低電平,這是MCU內部決定的,軟件無法更改,但是在系統開機過程中,會對GPIO進行初始化,MCU中有幾個GPIO模式初始化寄存器,通過這個寄存器給GPIO設置初始模式。

    例如:以下這個寄存器就是用來設置0-7號GPIO的模工作模式的。

    這個初始化過程在Gpio_Drv.C中的函數GPIO_init()中,項目開始的時候,先要檢查這個部分的模式設置是否正確。

 

 

三、各個功能模塊的GPIO設置

 

1.    LCD背光,馬達

有的LCD背光是靠GPIO進行控制的,有的則靠PMIC進行控制。但不管那個方式進行控制,都只需修改Custom_equipment.c中的相關部分就可以了,具體如下:

首先,檢查數組

GPIO_MAP_ENTRY gpio_map_tbl[] = {

/*GPIO_LABEL_LCD_BACKLIGHT */   {GPIO_VAILD, GPIO_PORT_24, netname[GPIO_LABEL_LCD_BACKLIGHT], NULL },

};

將沒有使用的GPIO,用GPIO_INVALID給屏蔽掉。

然後,修改函數custom_cfg_gpio_set_level,在對應的GPIO類型上將控制函數添加進去即可。比如:

   switch(gpio_dev_type)    

   {

   case GPIO_DEV_LED_MAINLCD:

     if( gpio_dev_level == LED_LIGHT_LEVEL0)// LEVEL0- LEVEL5是背光由若到強的控制,LEVEL0表示關閉背光

GPIO_WriteIO(GPIO_OFF, custom_cfg_outward_gpio_port(GPIO_LABEL_LCD_BACKLIGHT) );

        else

           GPIO_WriteIO(GPIO_ON, custom_cfg_outward_gpio_port(GPIO_LABEL_LCD_BACKLIGHT) );

 

        PWM2_level(gpio_dev_level);

        break;

 

2.    藍牙

在文件bt_hw_define.h中參照原理圖進行對應GPIO的修改。

   #define BT_GPIO_RESET     52//39 //GPIO_39 : PMIC reset

   #define BT_GPIO_DSC       36//;4 //GPIO_4 : to disconnect RFComm link

   #define BT_GPIO_POWER 4//12 //GPIO_12: Power

   #define BT_GPIO_DATASELECT 0//;3 //GPIO_3: DataSelect

 

3.    Camera

在文件Camera_hw.c和sccb.h中參照原理圖進行對應GPIO的修改。

【Camera_hw.c】

       #define MODULE_POWER_PIN        6  // GPIO NO.

#define MODULE_RESET_PIN        12  // GPIO NO.

#define MODULE_CMPDN_PIN        13  // GPIO NO.

 

【sccb.h】

#define SCCB_SERIAL_CLK_PIN     8

#define SCCB_SERIAL_DATA_PIN       9

 

4.    TouchPanel

在文件Touch_panel_spi.h中參照原理圖進行對應GPIO的修改

   #define SPI_DIN_PIN     1 //17  /*1GPO*/

   #define SPI_CLK_PIN     8 //20   /*8GPO*/

   #define SPI_DOUT_PIN    38 //22  /*18GPI*/

   #define SPI_CS_PIN      9 //23  /*9GPO*/

   #define SPI_BUSY_PIN    5 //21  /*5GPI*/

 

四、總結

    GPIO的設置相對來講比較簡單,只要仔細參對原理圖,基本上就可以將GPIO配置好。當然有些時候GPIO配置好了也達不到效果,就需要和硬件工程師一 起來進行檢測分析,測量對應電路的工作電壓或電流,來判斷工作是否正常。總之在前期的調試方面,多跟硬件工程師溝通、討論、分析,會很快解決問題。

 

Ø      中斷調試篇

中斷調試一般來說包括以下幾個方面,一一做簡單介紹:

1.      中斷號匹配

這個部分在文件eint_def.c中進行設置,參照原理圖設置即可。

 

2.      中斷觸發方式的設置

在文件eint_def.c中,首先要對中斷的觸發響應時間進行設置,是在數組變量 custom_eint_sw_debounce_time_delay中。一般情況下這個部分是不用動的,但有時候中斷觸發有問題的時候,這就是一個調 試點。比如對於Touchpanel的中斷,對應的響應時間一般是0,如果不是0,就需要修改。

另外,因爲中斷觸發分電平觸發和邊沿觸發,電平觸發又分高電平觸發和低電平觸發,邊沿觸發又分爲上升沿觸發和下降沿觸發,因此先需要跟硬件工程師瞭解對應的中斷觸發方式,然後在對應的中斷初始化的地方修改觸發方式。

 

3.      中斷處理流程調試

有時候中斷設置好了,對應功能也不能正常使用,那麼就需要調試中斷處理流程了,需要增加trace,一般我們會用系統帶的trace函數 kal_prompt_trace,有時候調試這個函數不能正常工作,那麼我們就用這個文件中的函數sys_print打印trace信息,要使用這個函 數,需要在系統最開始啓動的時候,調用sys_uart_init進行初始化。這個函數庫是在6228平臺上做的,可能在其他平臺上寄存器因爲不同,需要 進行修改。

往往在調試的過程中,經常發現是給芯片供電方面出了問題。因爲有時候MTK給過來的代碼,在他們的參考設計上是一種供電方式,但是在我們的設計上可能就是不一樣了。所以在找到芯片供電部分代碼的時候,查找對應資料,看是否調用正常。

發佈了23 篇原創文章 · 獲贊 3 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章