汇顶BLE知识库
  • 开发向导
  • 应用笔记
  • 技术方案
  • 常见问题
    • 系统问题
    • 外设问题
    • 蓝牙问题
    • 工具问题
      • 构建类工具
        • J-Link RTT使用问题
        • 基于VSCode构建Goodix Bluetooth LE开发环境
        • Ellisys 使用常见问题
      • 图形类工具
      • 量产烧录工具
    • 硬件问题
    • 商务问题
  • 语言选择 | Language
汇顶BLE知识库
  • 常见问题
  • 工具问题
  • 构建类工具
  • J-Link RTT使用问题

J-Link RTT使用问题

1. 如何在示例工程中开启RTT功能

  • 确保文件${SDK}\external\segger_rtt\SEGGER_RTT.c加入工程编译。

  • 将工程配置文件_custom_config.h_的宏APP_LOG_PORT值修改为1。

    // <o> APP log port type
    // <0=> UART
    // <1=> RTT
    // <2=> ITM
    #ifndef APP_LOG_PORT
    #define APP_LOG_PORT            1
    #endif
    
  • 确保位于文件${SDK}\platform\boards\board_SK.c的函数bsp_log_init在main外设初始化时候被调用(或确保示例工程的board_init函数被调用,此函数会调用bsp_log_init),因为SDK中RTT功能的初始化放在函数bsp_log_init中进行。

2. 获取_SEGGER_RTT编译地址的技巧

  • 在使用J-Link RTT时,会填写_SEGGER_RTT的地址,一种是填写范围工具进行自动搜索,一种是填写固定的地址。本文介绍第二种方法:

    • 先参考上文开启RTT功能,然后编译工程。

    • 编译完成后,打开.map文件搜索_SEGGER_RTT的变量地址,参考如下:

      _SEGGER_RTT      0x2000c220   Data     120  segger_rtt.o(.bss)
      
    • 修改_SEGGER_RTT.c_中变量的定义,将map文件的变量地址使用attribute at属性,强制固定下来,这样后续_SEGGER_RTT变量地址就不会随工程功能和变量的增加而发生变化了。

      SEGGER_RTT_CB _SEGGER_RTT __attribute__ ((at(0x2000c220))); 
      

3. J-Link RTT打印日志时,工作一会后日志不再打印

  • 检查是否工作在Sleep模式下,RTT属于非AON模块,对Sleep模式支持不友好,请在芯片的Active模式使用RTT。

  • 如果是Active模式下存在RTT日志停止打印,尝试将RTT工作模式修改为SEGGER_RTT_MODE_BLOCK_IF_FIFO_FULL阻塞模式测试下,如果工作正常,则尝试调整RTT缓存区大小。

    #define SEGGER_RTT_MODE_DEFAULT                   SEGGER_RTT_MODE_BLOCK_IF_FIFO_FULL 
    
上一页 下一页

© 版权所有 2024, Goodix。

利用 Sphinx 构建,使用的 主题 由 Read the Docs 开发.