SiFli-Wiki SiFli-Wiki SiFli-Wiki
  • 用户指南
  • 示例
  • API文档
  • 关于我们
/
  • English
  • 中文

快速入门

  • 入门指南
  • 芯片手册汇总

软件开发

  • SDK文档
  • FAQ常见问题解答
    • 开发工具相关问题
      • 1 编译相关
      • 2 Jlink
      • 3 KEIL
      • 4 Ozone
      • 5 SiFli
      • 6 Trace32
      • 7 SystemView
      • 8 串口
      • 9 Source Insight相关
    • 芯片相关问题
      • 1 GPIO相关
      • 2 定时器相关
      • 3 中断相关
      • 4 看门狗相关
      • 5 RTC相关
      • 6 ADC相关
      • 7 I2C相关
      • 8 低功耗相关
      • 9 PWM
      • 10 系统
      • 11 蓝牙
      • 12 USB相关
      • 13 UART相关
      • 14 双核相关
      • 15 I2S相关
      • 13 SPI相关问题
    • 外设驱动调试问题
      • 1 LCD调试常见问题
      • 2 Sensor调试常见问题
      • 3 flash调试常见问题
      • 4 马达motor调试常见问题
    • 软件调试相关问题
      • 1 Log调试
      • 2 在线调试方法
      • 3 Dump内存恢复死机现场
      • 4 死机现场保存方法
  • 应用笔记
    • SF32LB52X启动与低功耗流程
    • 低功耗开发指南

硬件开发

  • 思澈选型手册
    • 思澈芯片型号指南
    • 模组型号指南
  • 芯片硬件设计指南
    • SF32LB52x-硬件设计指南
    • SF32LB52X-硬件设计指南
    • SF32LB56xU-硬件设计指南
    • SF32LB56xV-硬件设计指南
    • SF32LB58x-硬件设计指南
  • 开发板
    • SF32LB52-DevKit-LCD开发板使用指南
    • SF32LB52-DevKit-LCD转接板制作指南
    • 立创·黄山派开发板使用指南
    • SF32LB52-DevKit-Nano开发板使用指南

软件工具

  • 软硬件工具汇总
    • 固件烧录工具 Impeller
    • 图形转换工具
    • 存储调试工具
      • Flash Chipid 和Type配置指南
    • 屏幕模组调试
      • 屏幕模组介绍
      • 思澈SDK的显示框架介绍
      • 添加新的屏幕模组
        • 添加新的屏幕驱动
        • 添加新的屏幕背光驱动
        • 添加新的TP驱动
        • 为新的屏幕模组添加menuconfig选项
      • 使用新的屏幕模组
      • 525添加QSPI-LCD实例
      • 566添加DPI-LCD实例
      • FAQ
      • 附录
        • 屏驱回调函数
        • 应用层vs模组驱动层函数对应表
        • 已适配屏幕模组列表
    • sftool

产品介绍

  • 关于思澈

该页内容

  • 2.1 如何用JLINK RTT打印log信息?
  • 2.2 Hcpu的log通过Jlink segger打印不出来
  • 2.3 Jlink读写flash的内容,
  • 2.4 Jlink其他常用命令
  • 2.5 没有SWD口用SiFliUsartServer连接Jlink方法
  1. SiFli-Wiki /
  2. FAQ常见问题解答 /
  3. 开发工具相关问题 /
  4. 2 Jlink

2 Jlink¶

2.1 如何用JLINK RTT打印log信息?¶

目前我们默认软件Hcpu的log是从uart1 PA17/PA19(SF32LB555), PA49/51(SF32LB551)输出log
Lcpu的log是从uart3 输出,
客户只引出了uart3 PB45/PB46,或者Uart1被占用
解决方案:
考虑到uart3是连接到lcpu,后面lcpu也需要输出log, 可以采用menuconfig改成swd输出log
Jlink swd打印hcpu的log 修改方法:

  1. 进入到SDK\example\rt_driver\project\ec-lb555目录

  2. menuconfig->Third party packages->选中Segger RTT package
    alt text

  3. menuconfig->RTOS -> RT-Thread Kernel->Kernel Device Object->the devices name for console 改成segger
    alt text

  4. 连接jlink。 方法1:打开C:\Program Files (x86)\SEGGER\JLink\jlink.exe -> connect ->? ->s->默认4000khz->连接成功,如下图:
    alt text
    方法2:打开C:\Program Files (x86)\SEGGER\JLink\JLinkRTTViewer.exe配置和菜单File -> Connect, 连接成功能看到如下的 LOG: RTT Viewer connected.提示连接成功。
    alt text
    alt text

  5. 运行Xshell,secureCRT等软件,通过telnet(hostname: 127.0.0.1 port: 19021)连接到jlink RTT viewer,查看日志;支持输出输入,如下图:
    alt text
    注意 如果Hcpu从standby醒来或者重启,需要重连jlink RTT viewer.
    F,如果按照如上配置,Segger还是没有打印,可以参考#2.2排查

2.2 Hcpu的log通过Jlink segger打印不出来¶

根本原因:
新版本sdk为了优化内存,Jlink的Control block address: _SEGGER_RTT变量从HPSYS SRAM0x20000000改链接到了内存区域 HPSYS ITCM RAM0x00010000 0x0001FFFF 64*1024 如下图:
alt text

而Jlink默认搜索内存从0x20000000开始,因而搜索不到,连接不成功,
老版本0.9.7编译后的地址在0x20000000之后,jlink能自动连接搜索到。
解决方案1:
J-Link RTT Viewer.exe 内指定地址,该地址可以从map文件中搜索到,如下图:
alt text
解决方案2:
改用Ozone.exe,Ozone.exe能通过axf文件中找到该地址,如下图,存在SetRTTAddr地址命令:
alt text

解决方案3:
做一个JLinkScript的命令,在jlink启动时会自动调用设置或者搜索Control block address范围,如下图命令:
可以自己进行修改选择:
alt text

对应:xml文件修改:
alt text

JLink.exe,J-Link RTT Viewer.exe ,还是像之前一样自动能连接上,方便很多.
推荐用rttview.exe和telnet 127.0.0.1查看log的使用! 文件patch如附件,复制到Jlink对应安装目录:
Program Files (x86).7z

2.3 Jlink读写flash的内容,¶

  1. jlink连接成功后, 用mem32读 , 用w4写, 用erase 擦写

mem32 0x40014000 1 #读1个32bit的寄存器值
mem32 0x64000000 10 #读10个byte从flash2地址0x64000000开始,
w4 0x64000000 0x2f 0x2f 0x2f 0x2f 0x2f 0x2f #写内存或者寄存器值 从flash2地址0x64000000开始, 写入后续的数据
  1. 用jflash读写
    跟jlink.exe在一个目录,有一个jflash工具,如下图菜单读取flash内容, alt text

  2. savebin命令读取

savebin d:\1.bin 0x101b4000 0x100000 

如上0x101b4000为内存地址,0x100000为读写内存大小单位为byte d,save出来的bin,再烧写回去方法

loadbin  d:\1.bin 0x101b4000

2.4 Jlink其他常用命令¶

  1. halt,go命令
    输入命令h,可以让CPU停下来,查看PC指针所在位置
    输入命令g,可以让CPU继续跑起来, alt text

  2. 设置PC指针
    常用于配合 __asm(“B .”); 指令来用,当代码中执行到该指令后,会停住,
    如上图,如果此时PC指针在0x10140D28,此时PC指针加2,输入setpc 0x10140D2A, 可以跳过 __asm(“B .”);指令,继续往下运行。

  3. 其他指令
    erase 0x00000000.0x0000FFFF
    loadbin

    – 下载filename文件到地址
    usb--------连接目标板
    r---------重启日标板
    halt-------停止cpu运行的程序
    loadbin----加载可执行的二进制文件
    g-------跳到代码段地址执行
    s-------单步执行 (调试用)
    setpc-----设置pc寄存器的值(调试用)
    setbp-----设置断点,断点停后可以指令g继续运行
    Regs-------读寄存器组织
    wreg-------写寄存器
    mem--------读内存
    w4--------写内存

2.5 没有SWD口用SiFliUsartServer连接Jlink方法¶

52系列之后MCU没有了SWD接口,如果要用Jlink或者Ozone来debug,可以采用SiFliUsartServer.exe工具,Jlink使用方法如下图设置: alt text

上一章
1 编译相关
下一章
3 KEIL

2025, SiFli

Made with Sphinx and Shibuya theme.