硬汉嵌入式论坛

 找回密码
 立即注册
查看: 378|回复: 3
收起左侧

[客户分享] segger_rtt + pyocd + lettershell

[复制链接]

26

主题

394

回帖

472

积分

高级会员

积分
472
发表于 2025-11-3 17:24:18 | 显示全部楼层 |阅读模式

src.zip (7.25 KB, 下载次数: 10)
c程序文件是 GB2312 的

!!!需要修改 pyocd 的代码,请参考 rtt_shell_port.c 中的注释



rtt 移植很简单,站里就有,letter shell 使用过的话,移植也很简单

下班前发帖,急,就不详述了。





回复

使用道具 举报

26

主题

394

回帖

472

积分

高级会员

积分
472
 楼主| 发表于 2025-11-4 15:47:12 | 显示全部楼层
本帖最后由 tovinz 于 2025-11-5 09:45 编辑

2025-11-04 优化了一下

src_251104.zip (208.32 KB, 下载次数: 11)

相比 11-03 上传的文件,
- 为了优化密码输入和未登录模式下尾行输出的效果,修改了 letter shell 的核心源码,压缩包中有图片说明哪些地方做了修改
- 不知道什么原因,使用 vsnprintf 来做尾行模式下格式化输出,前十条打印显示会有问题,只能改用宏的形式配合 snprintf 来实现 (shell_api.h 中实现)
- 添加了借助 DHCSR 寄存器状态来判断调试器是否接入(不过对于来回拔插调试器、低功耗等状态还没有测试过),发现过 pyocd 错误退出导致 DHCSR 仍显示调试器接入的问题。
  (现在来看还可以优化一下,甚至可以将判断提前到 shell_log_x() 中,能减少在没有调试器接入的情况下徒劳使用 snprintf 带来的损耗)


pyocd rtt -f "5m" -t cortex_m -a 0x2000_0000 -s 0x5_0000
使用上面的命令(数字可以加下划线提高可读性)可以在不复位设备的情况下连接到设备,从 -t cortex_m 来看应该是适合所有 Cortex-M 处理器的
可以使用 pyocd rtt --help 查看其他选项说明

从测试体验来看,推荐使用 vscode 中的终端
如果使用的是 KEIL 下载程序,直接在 windows 中打开 cmd 或者 powershell 使用 pyocd 时,发现在下载程序和 pyocd rtt 命令连接交替使用时会出现 usb 没释放的问题,导致需要不断拔插调试器的USB

PixPin_2025-11-04_15-34-37.gif




回复

使用道具 举报

26

主题

394

回帖

472

积分

高级会员

积分
472
 楼主| 发表于 2025-11-3 17:25:57 | 显示全部楼层
# PyOCD RTT 方向键支持修复

## 🎯 修改的文件

需要修改 **2 个文件**(缺一不可):

### 1. `pyocd\utility\kbhit.py` ⭐ **关键修复**
- **问题**: `getch()` 方法强制使用 UTF-8 解码,导致 0xE0 字节(方向键前导)解码失败
- **修复**: 添加 latin-1 作为后备解码方式
- **修改行**: 第 93-99 行

### 2. `pyocd\subcommands\rtt_cmd.py`
- **功能**: Windows 扫描码转换为 ANSI 转义序列
- **修改**: `viewer_loop()` 方法,添加方向键检测逻辑
- **修改行**: 第 194-213 行
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
119430
QQ
发表于 2025-11-4 09:40:11 | 显示全部楼层
谢谢楼主分享。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-11-22 00:24 , Processed in 0.044345 second(s), 30 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表