MTK6515 android打版软件配置(DrvGen.exe 使用)
2 二、配置emmc
3 三、配置LCM
3.1 1、增加LCM驅動文件
3.2 2、配置驅動文件
3.3 3、配置背光
4 四、配置touch panel
4.1 1、通過dct配置gipo及其對應的別名
4.2 2、配置mediatek/config/bbk15_td_ics/ProjectConfig.mk
4.3 3、增加 tp 驅動目錄及驅動文件
4.4 4、配置剛剛添加的驅動文件
4.5 5、配置pmic供電
5 五、注意事項
6 六、附錄
一、配置GPIO
通過工具:
mediatek/source/dct/DrvGen.exe
配置并替換dws文件:
mediatek/custom/bbk75_emmc_gb2/kernel/dct/dct/codegen.dws
配置GPIO的主要目的是使系統在uboot,甚至preloader階段時保持BB管腳的狀態;在kernel啟動階段加載驅動模塊時,不少驅動是會重新設置其用的gpio功能的,所以這一階段并不要求非常嚴格,然而同時也必須要保證gpio所配置的初始狀態不會影響到系統的啟動,如死機、復位等等。
二、配置emmc
1、在下面文件的MTK6575標簽欄添加對應的flash芯片型號信息:
mediatek/build/tools/emigen/MT6575/MemoryDeviceList_MT6575.xls
2、從以下文件獲取flash芯片對應的序號(從第1列為0,開始數,如到第L列則為11): mediatek/build/tools/ptgen/emmc_region.xls
3、mediatek/custom/bbk15_td_ics/preloader/inc/custom_MemoryDevice.h
#define BOARD_ID????????????????LENOVO75
#define CS_PART_NUMBER[0]?????? KMSJS000KM_B308
將上面的宏更改為MemoryDeviceList_MT6575.xls中對應的內容
4,mediatek/config/bbk15_td_ics/ProjectConfig.mk
將EMMC_CHIP更改為第2步獲取的數值,如EMMC_CHIP = 11。
三、配置LCM
1、增加LCM驅動文件
(1)、配置mediatek/config/bbk15_td_ics/ProjectConfig.mk
CUSTOM_KERNEL_LCM = sharp_S6D05A1X12_mcu
CUSTOM_UBOOT_LCM = sharp_S6D05A1X12_mcu
LCM_WIDTH = 320
LCM_HEIGHT = 480
BOOT_LOGO = cmcc_hvga
(2)、增加 lcm 驅動目錄及文件
mediatek/custom/common/kernel/lcm/sharp_S6D05A1X12_mcu/
ps.如果是從其他平臺拷貝而來,注意更改包含對應的頭文件:?
#ifdef BUILD_UBOOT
#include?
#define print(x...) printf(x)
#else
#include?
#define print(x...) printk(x)
#endif
改為:?
#ifdef BUILD_UBOOT
#include?
#define print(x...) printf(x)
#else
#include?
#define print(x...) printk(x)
#endif
(3)、修改 mt65xx_lcm_list.c 使支持剛添加的驅動
mediatek/custom/common/kernel/lcm/mt65xx_lcm_list.c
extern LCM_DRIVER sharp_S6D05A1X12_mcu_drv;
...
#if defined(SHARP_S6D05A1X12_MCU)
?&sharp_S6D05A1X12_mcu_drv,
#endif
ps.對于2、3步,uboot lcm驅動對應的驅動目錄mediatek/custom/common/uboot/lcm/本也要添加,不過現在我們這一版本uboot/lcm/就是link到kernel/lcm/的,故省去這一步
2、配置驅動文件
打開 mediatek/custom/common/kernel/lcm/sharp_S6D05A1X12_mcu/sharp_S6D05A1X12_mcu.c,根據BB管腳定義和實際硬件連接,更改如下GPIO宏定義:
#define LSA0_GPIO_PIN (GPIO49)
#define LSCE_GPIO_PIN (GPIO47)
#define LSCK_GPIO_PIN (GPIO51)
#define LSDA_GPIO_PIN (GPIO52)
#define DPICK_GPIO_PIN (GPIO41)
#define DPIDE_GPIO_PIN (GPIO30)
#define DPIVSYNC_GPIO_PIN (GPIO21)
#define DPIHSYNC_GPIO_PIN (GPIO19)
3、配置背光
背光配置包括uboot和kernal中的文件:
mediatek/custom/bbk15_td_ics/kernel/leds/mt65xx/cust_leds.c
mediatek/custom/bbk15_td_ics/uboot/cust_leds.c
主要配置
...
{"lcd-backlight",???? MT65XX_LED_MODE_CUST, (int)Cust_SetBacklight},
...
中的響應函數"Cust_SetBacklight",在其中要保證背光能亮,由于是打版軟件,這里只先配置成gpio讓其保持最亮。
查背光IC datasheet可知,只需設置VFB為低、CE為高即可:
...
//GPIO162->BL_EN->CE
mt_set_gpio_mode(GPIO162,GPIO_MODE_00);
mt_set_gpio_dir(GPIO162,GPIO_DIR_OUT);
mt_set_gpio_out(GPIO162,GPIO_OUT_ONE);
//GPIO67->PWM1->VFB
mt_set_gpio_mode(GPIO67,GPIO_MODE_00);
mt_set_gpio_dir(GPIO67,GPIO_DIR_OUT);
mt_set_gpio_out(GPIO67,GPIO_OUT_ZERO);
...
ps.uboot/cust_leds.c中還要包含頭文件"#include?",否則編譯會出錯
6.2 2、將觸屏配置成點觸模式
四、配置touch panel
1、通過dct配置gipo及其對應的別名
如:
#define GPIO_CTP_RST_PIN???????? GPIO100
#define GPIO_CTP_RST_PIN_M_GPIO??GPIO_MODE_00
#define GPIO_CTP_EINT_PIN???????? GPIO75
#define GPIO_CTP_EINT_PIN_M_GPIO??GPIO_MODE_00
#define GPIO_CTP_EINT_PIN_M_EINT??GPIO_MODE_01
#define GPIO_CTP_EINT_PIN_M_PWM??GPIO_MODE_02
2、配置mediatek/config/bbk15_td_ics/ProjectConfig.mk
CUSTOM_KERNEL_TOUCHPANEL = qt602240
3、增加 tp 驅動目錄及驅動文件
添加頭文件:
mediatek/custom/bbk15_td_ics/kernel/touchpanel/qt602240/
添加C文件:
mediatek/custom/common/kernel/touchpanel/qt602240/
4、配置剛剛添加的驅動文件
mediatek/custom/bbk15_td_ics/kernel/touchpanel/qt602240/
更改以下宏定義為對應平臺:
#define TPD_POWER_SOURCE???????? MT6575_POWER_VGP2
check觸摸屏驅動ic的i2c地址,確保代碼與datasheet中保持一致:
static unsigned short force[] = {3, 0x4a, I2C_CLIENT_END,I2C_CLIENT_END}; //0x4a則為i2c地址
ps: 在mtk6575_dev.c中的地址必須是除去讀寫位后的地址,而force里的則里的從機地址則需包含讀寫位的8位標志,如0x94(即mtk對i2c地址的規定和其他地方不一樣,一般情況下說i2c的地址都是不包含讀寫位的,但mtk則將最后一位讀寫標志算進去了,這點要注意一下).
另外注意check一下此頭文件中的其他宏定義信息,確保觸屏與LCM適配,如:
//#define TPD_RES_X????????????????480
//#define TPD_RES_Y????????????????800
//#define TPD_CALIBRATION_MATRIX??{962,0,0,0,1600,0,0,0};
#define TPD_CALIBRATION_MATRIX??{320*2,0,0,0,480*2,0,0,0};
5、配置pmic供電
一般在對應的.detect(重新供電操作), .suspend(關閉供電操作), .resume(打開供電操作)中添加進行相關操作,供電功能函數如下:
hwPowerDown(TPD_POWER_SOURCE,"TP"); //停止供電
hwPowerOn(TPD_POWER_SOURCE,VOL_2800,"TP");? //開始供電
另外也可直接在pmic的probe函數中配置(注意找對對應的pm電壓輸出口和電壓大小):
mediatek/platform/mt6575/kernel/drivers/power/pmic_mt6329.c
static int mt6329_driver_probe(struct i2c_client *client, const struct i2c_device_id *id) {?????????????
...
????pmic_ldo_enable(MT65XX_POWER_LDO_VGP2,KAL_TRUE);
????pmic_ldo_vol_sel(MT65XX_POWER_LDO_VGP2,UPMU_VOLT_2_8_0_0_V);
...
}
五、注意事項
在配置完音量鍵后,每次開機都會進入recovery mode(這一點在顯示屏無顯示時可通過串口抓打印消息驗證,顯示屏能顯示時當然就一目了然了)。
剛開始懷疑是硬件上的有問題,是不是哪里將音量鍵拉低了,因為我們是配置成開機時按住音量鍵才會進入recovery的,但電子的同事測試波形之后反饋說只有開機一小段時間輸出低,后續便輸出高了,于是再次將目光轉到軟件上來,后來我們查看dct得知連接volume的輸入線芯片默認是內部拉低的,于是用dct將其配置成pull up,再開機,一切ok.
六、附錄
1、i2C配置的兩種方法
方法一:在force中進行i2c id的指定,然后用i2c_add_driver掛載到對應的i2c總線上去:
static unsigned short force[] = {3, 0x4a, I2C_CLIENT_END,I2C_CLIENT_END};
注意:若使用mtk的硬件i2c注意上面的i2c地址要包括讀寫標志位,如上述的0x4a應改為0x94.
方法二:在mtk6575_dev.c中進行設置:
static struct i2c_board_info __initdata i2c_devs0[]={
??{ I2C_BOARD_INFO("fan5405", (0xd4>>1)),},??
??{ I2C_BOARD_INFO("qt602240ts", (0x94>>1)),},?
};
2、將觸屏配置成點觸模式
qt602240ts在配置完成時默認是使用鼠標模式,此時可將以下文件push到 /system/usr/idc/ 即可設置為點觸模式:
out/target/product/bbk15_td_ics/system/usr/idc/qt602240ts.idc
# Basic Parameters
touch.deviceType = touchScreen
touch.orientationAware = 1
# Size
touch.size.calibration = diameter
touch.size.scale = 10
touch.size.bias = 0
touch.size.isSummed = 0
# Pressure
# Driver reports signal strength as pressure.
#
# A normal thumb touch typically registers about 200 signal strength
# units although we don\'t expect these values to be accurate.
touch.pressure.calibration = amplitude
touch.pressure.scale = 0.005
# Orientation
touch.orientation.calibration = none
總結
以上是生活随笔為你收集整理的MTK6515 android打版软件配置(DrvGen.exe 使用)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何配置LCD背光和LED,调试方法
- 下一篇: WINCE设备开机灰屏问题(很怪异)