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信息的主要内容,如果未能解决你的问题,请参考以下文章

CSR867x学习笔记:SPP Server and Client

csr867x开发日记——常用软件工具介绍

CSR8670的A2DP与AVRCP的应用笔记

CSR867X sink例程的VM工程属性编译选项简析

CSR8670项目实战:BlueCar蓝牙音频网关

CSR8670项目实战:BlueHeart心率监测耳机