CSR867x学习笔记:查看库文件运行时debug信息
Posted NiceBT
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CSR867x学习笔记:查看库文件运行时debug信息相关的知识,希望对你有一定的参考价值。
为了让CSR867x的开发更容易,现与思度科技联合推出CSR867x学习板【淘宝链接:思度科技CSR开发板】。
技术交流QQ群号:743434463
开发板会员QQ群号:725398389(凭订单号入群,赠PPT、项目源码、视频教程)
——————————正文分割线———————————–
1. 引言
今天有群友问到如何查看库文件运行log。先给这位群友的好学点赞。
查看库文件运行log可以有针对性地了解特定功能块的代码执行情况,是快速学习和理解代码的好方法。
2. 查看方法
以ADK的source工程举例。默认情况下看不到C:\\ADK4.0.0\\src\\lib\\a2dp\\a2dp_api.c的运行log:
void a2dpSignallingConnectInd (remote_device *device)
MAKE_A2DP_MESSAGE(A2DP_SIGNALLING_CONNECT_IND);
PRINT(("a2dpSignallingConnectInd"));
message->device_id = findDeviceId(device);
if (device != NULL)
message->addr = device->bd_addr;
else
BdaddrSetZero(&message->addr);
MessageSend(a2dp->clientTask, A2DP_SIGNALLING_CONNECT_IND, message);
打开source的VM工程的properties界面:
可以看到Libraries栏里有很多库文件名,这些库文件都保存在ADK的.\\tools\\lib\\BlueLab-7.0.1-Release\\assisted路径,如下:
细心的读者可能已经发现了,在properties里的库文件是没有lib前缀的,而上述路径下的库文件都是有前缀的。我想可能是xIDE耍的小花招吧。
新的问题是,这些.a文件是怎么来的呢?以liba2dp.a和liba2dp_debug.a为例,他们对应的源码在路径为C:\\ADK4.0.0\\src\\lib\\a2dp的文件夹中。进入此文件夹,用notepad++等文本阅读工具打开VARIANTS文件,可以看到如下内容:
VARIANTS := 12 debug
CFLAGS_12 := -DA2DP_1_2 # Define A2DP V1.2 (default V1.3)
CFLAGS_single_slot := -DSINGLE_MEM_SLOT # flag for building standard version of A2DP lib that uses a single memory slot for internal data storage
CFLAGS_debug := -DA2DP_DEBUG_LIB # flags for building debug version of A2DP lib
CFLAGS_single_slot_debug := -DSINGLE_MEM_SLOT -DA2DP_DEBUG_LIB # Single memory slot and debug
CFLAGS_atrac := -DINCLUDE_ATRAC # flags for building ATRAC version of A2DP lib
CFLAGS_sbc_only := -DA2DP_SBC_ONLY # flags for building an SBC only version of A2DP lib
可以看到第一行的VARIANTS后面有12、debug这两个名称。第2、4行分别是这两个名称对应的编译选项。当你修改了a2dp路径下的源码并运行开始菜单->ADK->Rebuild->VM libraries后,新的liba2dp.a、liba2dp_debug.a、liba2dp_12.a会生成在上述库文件的路径中。
如果你想查看a2dp库的运行log,可以简单地将properties中的a2dp修改为a2dp_debug,如下:
修改完成后进入调试模式,即可在printf 0窗口中打印出此库文件中包含的log信息。
同样的,每个库文件夹下的debug信息都可以用这种方法,即使没有VARIANTS文件,也可以依葫芦画瓢自己创建一个。
3. 总结
一些注意点:
- 受限于CSR867x的const区只有24KB,不能一次性包含多个后缀为_debug的库文件,否则工程会编译失败。
- 工程包含_debug.a库文件后,程序只能运行在调试模式,否则无法正常开机。
以上是关于CSR867x学习笔记:查看库文件运行时debug信息的主要内容,如果未能解决你的问题,请参考以下文章