一、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给过来的代码,在他们的参考设计上是一种供电方式,但是在我们的设计上可能就是不一样了。所以在找到芯片供电部分代码的时候,查找对应资料,看是否调用正常。