CSR867x学习笔记:查看库文件运行时debug信息

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wzz4420381/article/details/79980963

为了让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库文件后,程序只能运行在调试模式,否则无法正常开机。
阅读更多

没有更多推荐了,返回首页