share:J-Link Download PSoC4 & iHex2Bin & RTT printf

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
lock attach
Attachments are accessible only for community members.
idream
Level 3
Level 3
50 sign-ins First comment on blog 10 replies posted

分享:J-Link Download PSoC4 & iHex2Bin & RTT printf

链接:https://xarm.gitee.io/2023/01/22/PSoC4/JLinkDLP4/

一直遗憾于PSoC Creator不支持J-Link,摸索了一种方法可以曲线使用J-Link下载PSoC4,虽不是完美,但也还算优雅~

  1. 首先实现Creator生成的Hex文件转BIN

    由于Creator生成的Hex文件中包含了Meta data的内容,地址位于0x90300000~0x90600000,所以没办法直接对hex文件下载,也没办法直接使用现有的hex2bin工具实现转换。meta data的具体内容格式参考上上一篇笔记:
    PSoC4 Programming & Hex file Dump:
    https://xarm.gitee.io/2022/10/21/PSoC4/PSoCHexDump/

    可实现方法可以有:

    • 手动删除hex文件后十行,去掉metadata。
    • 批处理删除或写个小程序删除。
    • 写个小程序,删除meta data并转存为BIN文件。

    刚好前几天在 Community看见有人问如何将hex转为bin,于是就顺手写了个这个小工具,使用方式极其简单: ihex2bin.exe + *.hex即可,会自动生成同名的bin文件。可以使用J-Flash对比原hex文件及生成的bin文件的正确性。

  2. 移植Segger的RTT实现printf

    这个就太简单了,将Segger安装目录下的RTT文件copy至工程中,然后选择 SEGGER_RTT_Syscalls_GCC.c 这个文件即可。要使用printf记得将Heap改大!RTT:Real Time Transfer,有了RTT,从此UART的printf是路人~
    RTT的官网介绍:https://www.segger.com/products/debug-probes/j-link/technology/about-real-time-transfer/

    题外话:RTT还支持离线使用,比如你的设备运行1天后会莫名其妙的HardFault,肿么办?总不能一直挂着仿真器或串口吧?挂着仿真器即使能看到进入hardfault也没办法定位是从哪跳进hardfault来的!使用RTT+CMBackTrace可以完美的解决这个问题:等进入Hardfault后,挂上仿真器,RTTView一下,就可以了,因为信息都记录在ram中! 以后再记录这个问题。

  3. Creator工程将hex文件copy至指定目录

    工程选项 / Build Settings / ARM GCC5.4… / User Command / post build中写入: .\copyHex.bat

    然后在工程目录文件下创建copyHex.bat,内容为:

     
    bat
    copy .\CortexM0p\ARM_GCC_541\Debug\P4RTT.hex ..\JlinkDLPSoC4\P4RTT.hex

​ 这样每次编译完成后会自动将生成的hex文件copy至JlinkDLPSoC4目录下,名称为同名称的P4RTT.hex。

  1. JlinkDLPSoC4目录下放置J-Link烧录的批处理文件:

    创建 S2Convert&Load.bat文件,首先将hex文件另存为bin文件,然后实现JLink的下载

     
    bat
    ihex2bin.exe P4RTT.hex
    @echo off
    set "_DEVICE_=CY8C4147XXX-SXXX"
    if exist "JLink.exe" (
    JLink.exe -device %_DEVICE_% -CommanderScript S2LoadJLinkFW.jlink
    goto END
    ) else (
    echo JLink.exe not present in folder. Press any key in order to use windows registry to locate JLink.exe
    )
    pause
    :END
    pause
    goto :EOF
    :ERR
    echo Error: J-Link software and documentation package not installed or not found.
    pause

    S2LoadJLinkFW.jlink内容为:

     
    bat
    speed 4000
    si SWD
    r
    sleep 10
    loadbin P4RTT.bin, 0
    r
    g
    q
  2. 剩下的就是打开RTTView,编译完成后双击S2Convert&Load.bat即可,会自动下载并运行app。如下图示:

     

     

    JLink DL P4
  3. 欢迎留言交流,稍后更新源码下载地址。

1 Reply
Vison_Zhang
Moderator
Moderator
Moderator
First comment on KBA 750 replies posted 250 sign-ins

感谢分享

0 Likes