展讯平台初步调试笔记
最近公司换新的平台,之前用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即可。
本人也是刚接触展讯,做的小小的笔记而已,可能有些地方还写得不周到,大虾见笑了,如果大家觉得好的话就顶一个!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述