1、2.1增加蓝牙调试菜单,增加sbc和回音消除设置方法的说明声明1. 在未经RDA公司事先书面许可的情况下,严禁以任何形式复制、修改本手册中的任何内容;在编制手册过程中已经力求内容的正确与完整,但并不保证本手册没有任何错误或遗漏。本公司将不对本手册可能出现的错误或者疏漏负责;我们保留在不预先通知的情况下,对本手册中描述的任何产品进行修改和改进的权利。代码结构系统分为两个部分,应用程序和平台代码。平台代码位于platform目录,应用程序位于apps目录。目录列表内容appsap_xxx应用程序代码ap_gui公用显示程序,比如菜单、进度条等gui显示函数库,显示文字、图片等projects_cf
2、g应用项目配置,包括选项、资源等system访问平台软件相关的代码env编译脚本和makefilelib库文件platformchip芯片定义和rom文件edrv外部设备驱动程序flash_prog下载程序Ramruninclude平台库文件的头文件。Simulator模拟器代码target平台定义文件build编译中间文件hex系统目标文件,每个target会有一个子目录。toolpool编译调试工具。系统入口函数是BAL_TaskInit。BAL_TaskInit里面首先调用BAL_Initalise函数进行系统的初始化。然后创建了4个任务。任务列表总共有4个任务中系统中运行:1. 系统任
3、务,主要处理底层驱动的消息2. 媒体任务,运行和调度解码模块3. 蓝牙任务,运行协议栈和profile4. 应用任务,运行应用程序,处理消息和显示界面。4个任务中除了应用任务都是在平台代码里的。应用开发模块应用程序一般是一个消息处理循环,调用MESSAGE_Wait函数得到消息,根据应用分别处理对应的消息,不处理的消息调用MESSAGE_HandleHotkey函数处理热键。示例代码:INT32 Sample_Entry(INT32 param) UINT32 key; UINT8 result=RESULT_MAIN; MESSAGE_Initial(g_comval); / 重置系统计数器
4、 while(1) if(need_draw) / 如果需要显示 #if APP_SUPPORT_LCD=1 if(AP_Support_LCD() GUI_ClearScreen(NULL);/清全屏幕 GUI_DisplayBattaryLever(); GUI_UpdateScreen(NULL); #endif need_draw = FALSE; key = MESSAGE_Wait(); / 取得系统消息 switch( key ) / 根据消息执行不同动作。 case AP_MSG_RTC: need_draw = TRUE; break; case AP_KEY_MODE|AP
5、_KEY_HOLD: ; / default: result = MESSAGE_HandleHotkey(key); / 处理热键 if(result = RESULT_REDRAW) else if(result != 0) return result;驱动开发接口需要用户定制的驱动主要是flash和lcd,其他部分的驱动一般不需要改动。驱动的选择在平台的定义文件target.def里面。Flash驱动Flash驱动位于platformedrvmemd目录下,驱动的接口定义在文件memd_m.h中,主要包括读、写、擦等函数接口。/初始化函数,系统启动后会调用。PUBLIC MEMD_FLA
6、SH_LAYOUT_T* memd_FlashOpen(CONST MEMD_FLASH_CONFIG_T* cfg);/读函数,一般需不要使用,可以用memcpy实现PUBLIC MEMD_ERR_T memd_FlashRead(UINT8 *flashAddress, UINT32 byteSize, UINT32* pReadByteSize, UINT8* buffer);/写函数,下载程序和保存程序配置时调用PUBLIC MEMD_ERR_T memd_FlashWrite(UINT8 *flashAddress, UINT32 * pWrittenByteSize, CONST
7、UINT8* buffer);/擦函数,调用写函数前会先调用擦函数来擦除要写的扇区。PUBLIC MEMD_ERR_T memd_FlashErase( UINT8 *startFlashAddress, UINT8 *endFlashAddress);LCD驱动LCD驱动位于platformedrvlcdd目录下,驱动的接口定义在文件lcdd_m.h中,主要包括打开,更新等接口。PUBLIC LCDD_ERR_T lcdd_Open(VOID);/刷屏函数,把Data指向的buff里的内容显示到屏幕上PUBLIC LCDD_ERR_T lcdd_update_screen (UINT8* D
8、ata, LCDD_ROI_T *rect);/8段数码管显示刷屏函数PUBLIC LCDD_ERR_T led8s_update_screen(UINT16 flag, UINT8* Data);项目定义平台定义平台定义在目录target下,每个平台一个目录,包括一个target.def文件和两个头文件tgt_board_cfg.h和tgt_app_cfg.h。平台定义包括了芯片的定义和硬件平台的定义,比如驱动的配置、按键的设置等信息。target.def文件中需要修改的部分:#=# 3 # FLASH驱动 #SPI Flash (RAM is packaged inside baseban
9、d chip)FLSH_MODEL ?= flsh_gd25q32TARGET_EXPORT_FLAG += MEMD_NO_ASSERT# Flash model interface: parallel/spiFLSH_IF ?= spi# EBC CLK cfg:_52MHz_/_78MHz_/_104MHz_/_156MHz_SYS_MEMD_EBC_CLK ?= _78MHz_#SPIFLASH spi CLK cfg:ifeq $(strip $FLSH_IF) spiSYS_MEMD_FLSH_SPI_CLK ?endif # ($FLSH_IF,)# Ram is ADMUX o
10、r not TARGET_EXPORT_FLAG += MEMD_RAM_IS_ADMUX# Flash is ADMUX or not #TARGET_EXPORT_FLAG += MEMD_FLASH_IS_ADMUX# Ram support burst mode or notTARGET_EXPORT_FLAG += MEMD_RAM_IS_BURST# Flash support burst mode or not#TARGET_EXPORT_FLAG += MEMD_FLASH_IS_BURST# 4 # LCD驱动 #LCD_MODEL ?= mzl02#ili9163c st7
11、735r# LCD interface: gouda/slcdLCD_IF ?= gouda# GOUDA can support serial LCD starting from 8808$LCD_IFgoudaUSE_SPI_LCD ?= 1TARGET_EXPORT_FLAG += USE_SPI_LCDendif# 9 #用户项目定义#项目名CT_PROJECT := 128_64#是否有资源CT_RESVALID := yesGLOBAL_EXPORT_FLAG += RESOURCE_SUPPORTtgt_app_cfg.h一般不需要修改。tgt_board_cfg.h可能需要修改
12、的部分:GPIO相关的定义#define TGT_GPIO_CONFIG_CFG / 红外使用的gpio.gpio_irc = HAL_GPIO_4, / led使用的gpio .led_count = 3, .leds = /led 列表 .gpoId = HAL_GPO_5 , /* MUSIC */ .gpoId = HAL_GPO_3 , /* FM */ .gpoId = HAL_GPO_0 , /* Bluetooth */ /按键使用的gpio .key_count = 0, /按键个数 .key_interrupt_mode = TRUE,/是否中断模式,否则使用查询模式 .h
13、igh_keydown = TRUE, / 按键按下时gpio值为高 / gpio 按键列表 .gpio_keys = HAL_GPIO_NONE , /line in检查gpio端口号 .gpio_lineIn = HAL_GPIO_NONE, / line in gpio 是高有效 .lineinPlugHigh = TRUE, / t卡检测脚 .cardDetectGpio = HAL_GPIO_7, / 低有效 .gpioCardDetectHigh = FALSE, / 耳机检测脚 .earpieceDetectGpio = HAL_GPIO_1, .earpiecePlugHigh = FALSE, /
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1