Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
RT-Thread一般讨论
gdb stubs研究直播贴
发布于 2013-03-28 02:27:14 浏览:8904
订阅该版
相关资料: ecos源码:[https://github.com/prife/ecos](https://github.com/prife/ecos) 论文(来自于CNKI) 1). 基于gdb的嵌入式系统调试器的设计与实现 龚伟 其他资源(非教育网可获取) 2) 《ARM Cortex M3权威指南》 电子版(宋岩译) 3). [http://ieee.uwaterloo.ca/coldfire/gcc-doc/docs/porting_4.html](http://ieee.uwaterloo.ca/coldfire/gcc-doc/docs/porting_4.html) 4). [http://davis.lbl.gov/Manuals/GDB/gdb_17.html](http://davis.lbl.gov/Manuals/GDB/gdb_17.html) 5). gdb官方手册。 2013年03月28日 02:10:51 -------------------------------------------------------------------------------------------- 花了两个小时分析了下ecos里stm32的gdb stubs的源码,很有意思。gdb stubs相关源码分布在 ecospackageshalcommoncurrentsrc 与 ecospackageshalcortexmarchcurrentsrc 目录下。说实话,感觉ecos的代码比RTT的复杂多了啊。无论是源码组织还是代码实现。RTT显得很简洁。 首先分析ecospackageshalcortexmarchcurrentsrc 目录下的源码文件 首先应阅读 vector.c,读此文件可以搞清楚eCos里的中断/异常向量有哪些。 另外需注意,此文件实现很独特,在这个文件中只安装了两个vector。其他vector是在hal_reset_vsr(hal_misc.c)函数中安装的的。 gdb相关需要重点关注 hal_default_exception_vsr,它会调用 hal_deliver_exception函数(hal_misc.c)分发异常。 void hal_deliver_exception( HAL_SavedRegisters *regs ) 需要仔细阅读hal_default_exception_vsr汇编实现,还没有分析如何构造的hal_deliver_exception的参数。 hal_deliver_exception--> __handle_exception (ecospackageshalcortexmarchcurrentsrcgeneric-stub.c) 待分析。 2013年04月08日 11:49:09 -------------------------------------------------------------------- 昨天想到一个问题:如何设定gdb 使用串口(RS232/UART)呢? 答案是: gdb启动后,可以通过命令指定设备名字与端口 target remote 后面可以直接跟一个设备。 如 target remote /dev/ttyS1 参见参考文献5,其中附录E给出了gdb Remote Serial Protocol的详细介绍。 不过在windows下的CMD窗口里运行gdb,这个设备名该怎么写,资料上都没说 所以首先还是现在linux下或者cygwin中调试 avr的gdb stubs参考实现,见附件 avr-stub.c,点击下载![avr-stub.7z](/uploads/3230_e46a6401441ce2e4b82ae10367589547.7z) 2013年04月08日 22:45:15 -------------------------------------------------------------------------------- 设计实验:将STM32的两个串口连接到PC上,一个串口用来与GDB通信,并将从GDB上接收到的数据转发到第二个串口,这样我们就可以知道GDB到底向单片机发送了什么数据。 所以stm32里写入一个程序,实现串口数据转发即可。 在window上,打开CMD命令行,执行arm-none-eabi-gdb,即进入gdb命令行模式 D:Program FilesMicrosoft Visual Studio 8VC>arm-none-eabi-gdb GNU gdb (Sourcery G++ Lite 2011.03-42) 7.2.50.20100908-cvs Copyright (C) 2010 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later
This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "--host=i686-mingw32 --target=arm-none-eabi". For bug reporting instructions, please see:
. 首先需要设置串口波特率 (gdb) set remotebaud 115200 接下来指定GDB连接串口,从设备管理器查到,STM32的两个串口分别为COM3和COM35,注意GDB中不能识别COM35,似乎是GDB中识别的串口设备有限,因此指定COM3与GDB通信,COM35用于转发从GDB收到的命令。打开串口调试软件(secureCRT/putty/超级终端等), 我们使用target remote命令连接串口, target remote 设备 注意,windows中,设备名需要使用COMx,其中x是具体的串口数字。linux中则需要使用 /dev/ttyS0。 键入命令并按下回车后,注意观察连接COM35的串口软件上的打印数据 (gdb) target remote COM3 果然,键入回车后,COM35上打印了如下数据 +$qSupported:qRelocInsn+#9a$qSupported:qRelocInsn+#9a$qSupported:qRelocInsn+#9a$qSupported:qRelocInsn+#9a---+$Hg0#df$Hg0#df$Hg0#df$Hg0#df- gdb串口上打印: Ignoring packet error, continuing... warning: unrecognized item "timeout" in "qSupported" response 显然由于我们的板子上没有对接收到的gdb协议包做任何处理,所以gdb无法收到任何响应,因此一段时间后,爆错。
查看更多
15
个回答
默认排序
按发布时间排序
bernard
2013-03-28
这家伙很懒,什么也没写!
记得gdb stub是动态替换断点处的指令,然后当执行到这个地方时陷入到异常向量去,然后gdb stub捕获 所以可以分成两部分: 1. gdb stub协议的处理,以及上下文保存 2. 异常向量处理
prife
2013-03-28
这家伙很懒,什么也没写!
占位 另,gdb stubs的资料相对较少。大部分都是用在linux上,少有RTOS的。说实话,我还没有对gdb stubs的流程有一个特别清晰的认识,只有一个大概的轮廓。
prife
2013-03-28
这家伙很懒,什么也没写!
占位
prife
2013-03-28
这家伙很懒,什么也没写!
占位
prife
2013-03-28
这家伙很懒,什么也没写!
占位
prife
2013-03-28
这家伙很懒,什么也没写!
占位。
grissiom
2013-03-28
这家伙很懒,什么也没写!
如果是动态替换的话,在 ROM 上会不会比较麻烦?想 MDK/Ecllipse 的断点调试是怎么实现的?
aozima
2013-03-28
调网络不抓包,调I2C等时序不上逻辑分析仪,就像电工不用万用表!多用整理的好的文字,比截图更省流量,还能在整理过程中思考。
>如果是动态替换的话,在 ROM 上会不会比较麻烦?想 MDK/Ecllipse 的断点调试是怎么实现的? --- 应该是内核直接支持断点的,并不一定需要修改ROM上面的内容,当硬件断点都用完了,且目标是FLASH的话,需要在线烧写(超慢)。
northcamel
2013-04-04
这家伙很懒,什么也没写!
顶!努力补习基础知识中。
visitor83
2013-05-14
这家伙很懒,什么也没写!
在packages/hal/cortexm/arch/current/src/hal_misc.c中hal_reset_vsr(void)--> ``` #if defined(CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS) // Enable DebugMonitor exceptions. This is needed to enable single // step. This only has an effect if no exteranl JTAG device is attach { CYG_ADDRESS base = CYGARC_REG_DEBUG_BASE; cyg_uint32 demcr; HAL_READ_UINT32(base + CYGARC_REG_DEBUG_DEMCR, demcr); demcr |= CYGARC_REG_DEBUG_DEMCR_MON_EN; HAL_WRITE_UINT32(base + CYGARC_REG_DEBUG_DEMCR, demcr); } ``` 看代码里_DEMCR这个宏是另一套stub实现,具体在看。 initialize_stub() : package/hal/common/current/src/generic-stub.c 初始化 1) install the standard set of trap handlers for the stub 在pakcages/hal/cortexm/stm32/var/current/include/plf_stub.h中指定 HAL_STUB_PLATFROM_INTERRUPTIBLE = 0不允许中断发生,其他中断与非stub使能状态一样。 2) 安装stub的设备例如串口 packages/hal/cortexm/stm32/var/current/src/hal_diag.c-->cyg_hal_plf_comms_int(void),然后发出去个'+' 回应。 粗略读了下ecos代码,下来在读hal_deliver_exception
撰写答案
登录
注册新账号
关注者
0
被浏览
8.9k
关于作者
prife
这家伙很懒,什么也没写!
提问
20
回答
550
被采纳
0
关注TA
发私信
相关问题
1
有关动态模块加载的一篇论文
2
最近的调程序总结
3
晕掉了,这么久都不见layer2的踪影啊
4
继续K9ii的历程
5
[GUI相关] FreeType 2
6
[GUI相关]嵌入式系统中文输入法的设计
7
20081101 RT-Thread开发者聚会总结
8
嵌入式系统基础
9
linux2.4.19在at91rm9200 上的寄存器设置
10
[转]基于嵌入式Linux的通用触摸屏校准程序
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
env中添加lvgl软件包后,keil编译包--c99错误
2
【NXP-MCXA153】 定时器驱动移植
3
GD32F450 看门狗驱动适配
4
【NXP-MCXA153】看门狗驱动移植
5
RT-Thread Studio V2.2.9 Release Note
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
UART
WIZnet_W5500
ota在线升级
PWM
freemodbus
flash
cubemx
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
编译报错
Debug
rt_mq_消息队列_msg_queue
SFUD
keil_MDK
msh
ulog
C++_cpp
MicroPython
本月问答贡献
踩姑娘的小蘑菇
7
个答案
2
次被采纳
a1012112796
18
个答案
1
次被采纳
红枫
5
个答案
1
次被采纳
Ryan_CW
5
个答案
1
次被采纳
张世争
4
个答案
1
次被采纳
本月文章贡献
YZRD
3
篇文章
6
次点赞
catcatbing
3
篇文章
6
次点赞
lizimu
2
篇文章
10
次点赞
qq1078249029
2
篇文章
2
次点赞
xnosky
2
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部