展讯平台初步调试笔记
最近公司换新的平台,之前用MTK的,现在主要是展讯的,当然也要重新学习了。
1.project_sc6600l_sp6601l_trisim_64X32.mk为三卡的FLASH大小为6432的。
MS_Customize里面放的都是驱动部分,MS_MMI里面放的是MMI部分,下载文件在E:\MOCOR_09A.W10.25_P2\build\sc6600l_sp6601l_trisim_64X32_builddir\img里面。
2.添加屏的驱动
比如要添加IC为NT35601的屏驱动,则要重新建立一个tft_NT35601.c的文件,然后要在LCM_cfg_info.c中s_main_lcm_cfg_tab[]列表中添加g_lcd_NT35601驱动。还要在custom_drv.mk中添加tft_NT35601.c的编译。另外要注意的是
constLCD_SPEC_Tg_lcd_NT35601[]={
{LCD_WIDTH,
LCD_HEIGHT,
LCD_MCU,
BUS_MODE_8080,
WIDTH_8,//是8位的屏就写WIDTH_8,是16位的屏写WIDTH_16
&s_NT35601_timing,
(LCD_OPERATIONS_T*)&NT35601_operations}
};
如果还是点不亮请查看宏MAINLCD_SIZE和MAINLCD_DEV_SIZE定义的分辨率是否和药驱动的屏的分辨率一致。
3.按键的驱动
在keymap_cfg.c中修改,keymap[]列表中的前八个代表col0列的8行,依次类推。
USB下载时先上电,再按住(col0,row0)对应的键,然后点击下载后插上USB线即可。另外要注意修改宏KEYPAD_TYPE的类型。如果定义了有些按键还是不能用,请注意pm_func[]中的KEY对应的PIN脚是否设置成KEY模式,配置是否正确。还有pm_default_global_map[]中的{0x87000000,0x00730007},//Enablekeyin3/4是否允许KEY功能。
4.如何将UART1脚和GPIO口的脚复用
接到老大的任务,由于GPIO口不够用,要将一直单独用于UART1的脚要用来和GPIO口复用,要我测试一下是否可以。
具体可以这样来做,将UART1用来做FM的I2C用,没有打开FM时,用作UART,打开FM功能后,将其改为GPIO功能,一旦退出FM,又改回UART功能。
voidUART_change_to_gpio(void)//UART方式转换为GPIO口方式
{
*(volatileuint32*)(PIN_U0CTS_REG)=(PIN_O_EN|PIN_PU_EN|PIN_DS_1|PIN_FUNC_3);
*(volatileuint32*)(PIN_U0RTS_REG)=(PIN_O_EN|PIN_PU_EN|PIN_DS_1|PIN_FUNC_3);
}
voidgpio_change_to_UART(void)//GPIO口方式转换为串口UART方式
{
*(volatileuint32*)(PIN_U0CTS_REG)=(PIN_I_EN|PIN_PU_EN|PIN_DS_1|PIN_FUNC_1);
*(volatileuint32*)(PIN_U0RTS_REG)=(PIN_O_EN|PIN_PX_EN|PIN_DS_1|PIN_FUNC_1);
}
在FM_Init()函数中调用UART_change_to_gpio(),在FM_close调用gpio_change_to_UART()即可。
另外还要在pm_gpio_default_map[]中添加声明
{49,1,PM_OUTPUT,PM_NO_INT},
{48,1,PM_OUTPUT,PM_NO_INT},
否则,FM在使用时会出现断言。
5.FLASH空间不够用了怎么办?
我们经常会遇到这样的情况,尤其是展讯平台的需要TRACE时将TRACE_INFO_SUPPORT打开后的代码就会加大300KB左右,这时如果用的是6432FLASH,而BIN文件的大小一般不超过5.5MB左右时可以通过修改FLASH的驱动LOCAL const NOR_FLASH_CONFIG_T s_flash_64Mbit_64Kbyte_cfg =
{
1, //4-bank
5, //(prodinfo_addr-efs_start_addr)/sect_size
0, //file system sector num
0x00010000, //sector size
0x00000000, //start address
0x007B0000, //the bank managed by EFs
0x00800000, //flash size
0x007A0000, //fixed nv address
0x007AC000, //product info, the last secto
0x00560000, //MMI_res //主要通过加大此处的值,具体计算不详细介绍
UMEM_INVALID_ADDR, //uabin
UMEM_INVALID_ADDR, //upbin
FLASH_INVALID_ADDR //blbin
};如果BIN文件比较大,还有可以将各国语言的宏关闭,只留下一国语言的宏(英语或简体中文),还可以删掉一些开关机动画,开关机动画占用的大小比较大。还可以关掉一些其他应用的宏(蓝牙的宏在没有必要的时候可以关闭,它占用的大小也比较大,一般有200KB左右)。
6.编译时每次都要输入make p=sc6600l_sp6601l_trisim_64X32 new 等字样的命令,那样我们只需要在make.bat文件中编辑make\make_cmd\make -r -R MAKESHELL=CMD p=sc6600l_sp6601l_trisim_64X32 ib=1 %*保存之后,编译只需要输入make new即可。
本人也是刚接触展讯,做的小小的笔记而已,可能有些地方还写得不周到,大虾见笑了,如果大家觉得好的话就顶一个!