搜索
bottom↓
楼主: Eric2013

【原创】终极调试工具Event Recorder的使用方法,各种link通吃

  [复制链接]

出0入0汤圆

发表于 2018-6-16 21:49:07 来自手机 | 显示全部楼层
好东西,谢谢分享!

出0入0汤圆

发表于 2018-6-16 21:49:31 来自手机 | 显示全部楼层
好东西,谢谢分享!

出0入0汤圆

 楼主| 发表于 2018-6-16 23:09:07 | 显示全部楼层
wmc 发表于 2018-6-16 21:05
好像蛮实用的样子

很好用的,欢迎溜溜看

出0入42汤圆

发表于 2018-6-16 23:29:45 | 显示全部楼层
看起来很不错的样子

出0入0汤圆

发表于 2018-6-16 23:51:44 | 显示全部楼层
客户公司MDK正版,功能少有限制。

也能直接用?

出0入0汤圆

发表于 2018-6-17 00:01:18 | 显示全部楼层
这个牛啊,安富莱的弄出来的东西都很有特色。

出0入0汤圆

发表于 2018-6-17 00:08:45 | 显示全部楼层
這個很棒。
目前都是用ST Studio去追即時變量。

樓主這個還有訊息打印,太棒了。

出0入0汤圆

发表于 2018-6-17 00:26:36 | 显示全部楼层
收藏了,多谢

出0入24汤圆

发表于 2018-6-17 07:00:03 | 显示全部楼层
学习了,感谢硬汉老师!

出0入24汤圆

发表于 2018-6-17 07:00:03 | 显示全部楼层
学习了,感谢硬汉老师!

出0入0汤圆

 楼主| 发表于 2018-6-17 11:22:31 | 显示全部楼层
lcptw 发表于 2018-6-16 23:51
客户公司MDK正版,功能少有限制。

也能直接用?

没问题,这个功能没有限制的。

出0入0汤圆

 楼主| 发表于 2018-6-17 11:22:52 | 显示全部楼层
wmm20031015 发表于 2018-6-17 00:01
这个牛啊,安富莱的弄出来的东西都很有特色。

谢谢认可

出0入0汤圆

 楼主| 发表于 2018-6-17 11:23:24 | 显示全部楼层
g921002 发表于 2018-6-17 00:08
這個很棒。
目前都是用ST Studio去追即時變量。

比ST Studio方便。

出0入0汤圆

 楼主| 发表于 2018-6-17 11:23:45 | 显示全部楼层
ycwjl728 发表于 2018-6-17 07:00
学习了,感谢硬汉老师!

感谢支持

出0入0汤圆

 楼主| 发表于 2018-6-17 11:28:41 | 显示全部楼层
让小猪飞 发表于 2018-6-16 23:29
看起来很不错的样子

很好用的,欢迎溜溜看

出0入0汤圆

发表于 2018-6-17 13:43:06 | 显示全部楼层
下载下来试试,感谢楼主

出0入25汤圆

发表于 2018-6-17 14:44:06 | 显示全部楼层
本帖最后由 XIVN1987 于 2018-6-17 14:45 编辑

打印出来了,,非常好使,,感谢楼主!!


另外,我没有安装CMSIS 5.3.0,就用的自带的4.5.0,也能编译使用,,只不过出了好些警告!!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2018-6-17 14:46:19 | 显示全部楼层
好东西,谢谢楼主的分享

出0入0汤圆

发表于 2018-6-17 15:41:41 | 显示全部楼层
很好用的工具,功能强大,学习学习

出0入0汤圆

发表于 2018-6-17 16:16:45 | 显示全部楼层
看着很高级

出0入0汤圆

发表于 2018-6-17 19:41:13 来自手机 | 显示全部楼层
看起来不错,下个项目试下

出0入0汤圆

 楼主| 发表于 2018-6-17 22:34:09 | 显示全部楼层
XIVN1987 发表于 2018-6-17 14:44
打印出来了,,非常好使,,感谢楼主!!

是的,所以推荐用最新版本CMSIS软件包

出0入24汤圆

发表于 2018-6-18 06:58:32 来自手机 | 显示全部楼层
硬汉 有没有时间出个cjson的教程

出0入0汤圆

发表于 2018-6-18 08:40:44 | 显示全部楼层
看着真不错,谢谢分享

出0入0汤圆

 楼主| 发表于 2018-6-18 12:13:30 来自手机 | 显示全部楼层
PowerHUB 发表于 2018-6-18 06:58
硬汉 有没有时间出个cjson的教程

后面有精力了搞

出0入42汤圆

发表于 2018-6-18 14:03:15 | 显示全部楼层
这个NB   用过RTT的路过

出0入0汤圆

发表于 2018-6-18 15:28:09 | 显示全部楼层
mark了  以后试试

出0入0汤圆

发表于 2018-6-18 15:40:36 | 显示全部楼层
谢谢分享,消化吸收一下

出0入0汤圆

发表于 2018-6-19 09:28:58 | 显示全部楼层
学习一下,很久没用过jtag调试,都是用log

出0入0汤圆

发表于 2018-6-19 11:34:35 | 显示全部楼层
试试看,看起来不错

出0入0汤圆

 楼主| 发表于 2018-6-19 14:53:27 | 显示全部楼层
njjh1718 发表于 2018-6-18 14:03
这个NB   用过RTT的路过

RTT有个缺点是不能打印浮点数,得做特别转换。这点没有Event Recorder省事。

出0入0汤圆

发表于 2018-6-19 15:39:00 | 显示全部楼层
这个实用!收藏备用

虽然最近很少用m3了,要是m0能支持就好了!

出0入0汤圆

发表于 2018-6-19 16:24:48 | 显示全部楼层
准备使用起来!


出0入0汤圆

发表于 2018-6-19 16:33:43 | 显示全部楼层
mark一下:Event Recorder

出0入0汤圆

发表于 2018-6-19 18:51:35 来自手机 | 显示全部楼层
mdk一定要5以上?还有st jlink能用吗?

出0入0汤圆

发表于 2018-6-19 19:14:31 | 显示全部楼层
mark,大神收下我的赞!!串口调试

出0入0汤圆

 楼主| 发表于 2018-6-20 01:43:38 | 显示全部楼层
kazuyuki 发表于 2018-6-19 15:39
这个实用!收藏备用

虽然最近很少用m3了,要是m0能支持就好了!

M0和M0+都支持的。

出0入0汤圆

 楼主| 发表于 2018-6-20 01:45:10 | 显示全部楼层
jayzah 发表于 2018-6-19 18:51
mdk一定要5以上?还有st jlink能用吗?

对,最好使用当前最新的MDK5.25。

下载器不限制,JLINK,STLINK,CMSIS-DAP,ULINK等都支持。

出0入0汤圆

 楼主| 发表于 2018-6-20 01:45:32 | 显示全部楼层
Honey_comb 发表于 2018-6-19 19:14
mark,大神收下我的赞!!串口调试

谢谢认可

出0入0汤圆

发表于 2018-6-20 08:49:47 | 显示全部楼层
牛人,有时间好好学学

出0入0汤圆

发表于 2018-6-20 09:04:53 | 显示全部楼层
有用过的人么?

出15入118汤圆

发表于 2018-6-20 10:33:43 来自手机 | 显示全部楼层
很牛b的东西

出0入0汤圆

 楼主| 发表于 2018-6-20 11:16:43 | 显示全部楼层
wangqun 发表于 2018-6-20 09:04
有用过的人么?

很多人已经用上,使用中有什么问题,欢迎交流

出0入0汤圆

发表于 2018-6-21 11:27:15 | 显示全部楼层
谢谢分享!        

出0入0汤圆

发表于 2018-6-21 11:28:43 | 显示全部楼层
按LZ的说明,我在m0的工程中加入了EventRecored的选项,设置也是按说明里面来的,但在编译时,出现了一大堆问题:


*** Using Compiler 'V5.06 update 4 (build 422)', folder: 'C:\Keil_v5\ARM\ARMCC\Bin'
Build target 'Stm32f030demo'
compiling EventRecorder.c...
C:\Keil_v5\ARM\PACK\Keil\ARM_Compiler\1.4.0\Source\EventRecorder.c(242): error:  #20: identifier "__STATIC_INLINE" is undefined
  __STATIC_INLINE uint32_t GetContext (void) {
C:\Keil_v5\ARM\PACK\Keil\ARM_Compiler\1.4.0\Source\EventRecorder.c(242): error:  #101: "uint32_t" has already been declared in the current scope
  __STATIC_INLINE uint32_t GetContext (void) {
C:\Keil_v5\ARM\PACK\Keil\ARM_Compiler\1.4.0\Source\EventRecorder.c(242): error:  #65: expected a ";"
  __STATIC_INLINE uint32_t GetContext (void) {
C:\Keil_v5\ARM\PACK\Keil\ARM_Compiler\1.4.0\Source\EventRecorder.c(287): warning:  #12-D: parsing restarts here after previous syntax error
      wval = rval & ~
VENT_RECORD_VALID;
C:\Keil_v5\ARM\PACK\Keil\ARM_Compiler\1.4.0\Source\EventRecorder.c(288): error:  #169: expected a declaration
    } else {
C:\Keil_v5\ARM\PACK\Keil\ARM_Compiler\1.4.0\Source\EventRecorder.c(291): warning:  #12-D: parsing restarts here after previous syntax error
    *mem = wval;
C:\Keil_v5\ARM\PACK\Keil\ARM_Compiler\1.4.0\Source\EventRecorder.c(292): error:  #169: expected a declaration
    if (irqmask == 0U) {
C:\Keil_v5\ARM\PACK\Keil\ARM_Compiler\1.4.0\Source\EventRecorder.c(296): warning:  #12-D: parsing restarts here after previous syntax error
    return rval;
C:\Keil_v5\ARM\PACK\Keil\ARM_Compiler\1.4.0\Source\EventRecorder.c(298): error:  #169: expected a declaration
  }
C:\Keil_v5\ARM\PACK\Keil\ARM_Compiler\1.4.0\Source\EventRecorder.c(321): warning:  #12-D: parsing restarts here after previous syntax error
    val = *mem;
C:\Keil_v5\ARM\PACK\Keil\ARM_Compiler\1.4.0\Source\EventRecorder.c(322): error:  #169: expected a declaration
    if ((val & EVENT_RECORD_VALID)) {
C:\Keil_v5\ARM\PACK\Keil\ARM_Compiler\1.4.0\Source\EventRecorder.c(329): warning:  #12-D: parsing restarts here after previous syntax error
    *mem = val;
C:\Keil_v5\ARM\PACK\Keil\ARM_Compiler\1.4.0\Source\EventRecorder.c(330): error:  #169: expected a declaration
    if (irqmask == 0U) {
C:\Keil_v5\ARM\PACK\Keil\ARM_Compiler\1.4.0\Source\EventRecorder.c(334): warning:  #12-D: parsing restarts here after previous syntax error
    return ret;
C:\Keil_v5\ARM\PACK\Keil\ARM_Compiler\1.4.0\Source\EventRecorder.c(336): error:  #169: expected a declaration
  }
C:\Keil_v5\ARM\PACK\Keil\ARM_Compiler\1.4.0\Source\EventRecorder.c(397): warning:  #12-D: parsing restarts here after previous syntax error
                tbit;
C:\Keil_v5\ARM\PACK\Keil\ARM_Compiler\1.4.0\Source\EventRecorder.c(398): error:  #169: expected a declaration
        if (UnlockRecord(&record->info, info) != 0U) {
C:\Keil_v5\ARM\PACK\Keil\ARM_Compiler\1.4.0\Source\EventRecorder.c(405): warning:  #12-D: parsing restarts here after previous syntax error
    IncrementRecordsDumped();
C:\Keil_v5\ARM\PACK\Keil\ARM_Compiler\1.4.0\Source\EventRecorder.c(406): error:  #169: expected a declaration
    return 0U;
C:\Keil_v5\ARM\PACK\Keil\ARM_Compiler\1.4.0\Source\EventRecorder.c(407): error:  #169: expected a declaration
  }
C:\Keil_v5\ARM\PACK\Keil\ARM_Compiler\1.4.0\Source\EventRecorder.c(444): warning:  #12-D: parsing restarts here after previous syntax error
  static uint32_t TimeStamp
_NO_INIT;
C:\Keil_v5\ARM\PACK\Keil\ARM_Compiler\1.4.0\Source\EventRecorder.c(503): error:  #757: variable "uint32_t"  is not a type name
  
_WEAK uint32_t EventRecorderTimerInit (void) {
C:\Keil_v5\ARM\PACK\Keil\ARM_Compiler\1.4.0\Source\EventRecorder.c(510): error:  #20: identifier "TimeStamp" is undefined
      TimeStamp = 0U;
C:\Keil_v5\ARM\PACK\Keil\ARM_Compiler\1.4.0\Source\EventRecorder.c(526): error:  #757: variable "uint32_t"  is not a type name
  
_WEAK uint32_t EventRecorderTimerGet (void) {
C:\Keil_v5\ARM\PACK\Keil\ARM_Compiler\1.4.0\Source\EventRecorder.c(531): error:  #20: identifier "TimeStamp" is undefined
      return (TimeStamp++);
C:\Keil_v5\ARM\PACK\Keil\ARM_Compiler\1.4.0\Source\EventRecorder.c(552): error:  #757: variable "uint32_t"  is not a type name
  uint32_t EventRecorderInitialize (uint32_t recording, uint32_t start) {
C:\Keil_v5\ARM\PACK\Keil\ARM_Compiler\1.4.0\Source\EventRecorder.c(552): error:  #757: variable "uint32_t"  is not a type name
  uint32_t EventRecorderInitialize (uint32_t recording, uint32_t start) {
C:\Keil_v5\ARM\PACK\Keil\ARM_Compiler\1.4.0\Source\EventRecorder.c(552): error:  #757: variable "uint32_t"  is not a type name
  uint32_t EventRecorderInitialize (uint32_t recording, uint32_t start) {
C:\Keil_v5\ARM\PACK\Keil\ARM_Compiler\1.4.0\Source\EventRecorder.c(555): error:  #65: expected a ";"
    uint32_t ts;
C:\Keil_v5\ARM\PACK\Keil\ARM_Compiler\1.4.0\Source\EventRecorder.c(556): error:  #65: expected a ";"
    uint32_t n;
C:\Keil_v5\ARM\PACK\Keil\ARM_Compiler\1.4.0\Source\EventRecorder.c(558): warning:  #223-D: function "crc16_ccitt" declared implicitly
    crc = crc16_ccitt((const uint8_t *)&EventRecorderInfo, sizeof(EventRecorderInfo));
C:\Keil_v5\ARM\PACK\Keil\ARM_Compiler\1.4.0\Source\EventRecorder.c(586): error:  #20: identifier "n" is undefined
      for (n = 0U; n < EVENT_RECORD_COUNT; n++) {
C:\Keil_v5\ARM\PACK\Keil\ARM_Compiler\1.4.0\Source\EventRecorder.c(601): error:  #20: identifier "ts" is undefined
    ts = EventGetTS();
C:\Keil_v5\ARM\PACK\Keil\ARM_Compiler\1.4.0\Source\EventRecorder.c(601): warning:  #223-D: function "EventGetTS" declared implicitly
    ts = EventGetTS();
C:\Keil_v5\ARM\PACK\Keil\ARM_Compiler\1.4.0\Source\EventRecorder.c(603): warning:  #223-D: function "EventRecordItem" declared implicitly
    EventRecordItem(ID_EVENT_INIT, ts, EventStatus.init_count, 0U);
C:\Keil_v5\ARM\PACK\Keil\ARM_Compiler\1.4.0\Source\EventRecorder.c(615): error:  #757: variable "uint32_t"  is not a type name
  uint32_t EventRecorderEnable (uint32_t recording, uint32_t comp_start, uint32_t comp_end) {
C:\Keil_v5\ARM\PACK\Keil\ARM_Compiler\1.4.0\Source\EventRecorder.c(615): error:  #757: variable "uint32_t"  is not a type name
  uint32_t EventRecorderEnable (uint32_t recording, uint32_t comp_start, uint32_t comp_end) {
C:\Keil_v5\ARM\PACK\Keil\ARM_Compiler\1.4.0\Source\EventRecorder.c(615): error:  #757: variable "uint32_t"  is not a type name
  uint32_t EventRecorderEnable (uint32_t recording, uint32_t comp_start, uint32_t comp_end) {
C:\Keil_v5\ARM\PACK\Keil\ARM_Compiler\1.4.0\Source\EventRecorder.c(615): error:  #757: variable "uint32_t"  is not a type name
  uint32_t EventRecorderEnable (uint32_t recording, uint32_t comp_start, uint32_t comp_end) {
C:\Keil_v5\ARM\PACK\Keil\ARM_Compiler\1.4.0\Source\EventRecorder.c(616): error:  #65: expected a ";"
    uint32_t ofs;
C:\Keil_v5\ARM\PACK\Keil\ARM_Compiler\1.4.0\Source\EventRecorder.c(617): error:  #65: expected a ";"
    uint32_t i, j;
C:\Keil_v5\ARM\PACK\Keil\ARM_Compiler\1.4.0\Source\EventRecorder.c(623): error:  #20: identifier "ofs" is undefined
    for (ofs = 0U, i = 0U; i < 4U; i++, ofs += 32U) {
C:\Keil_v5\ARM\PACK\Keil\ARM_Compiler\1.4.0\Source\EventRecorder.c: 12 warnings, 30 errors
compiling HW_init.c...
"..\OBJ\STM32F030Demo.axf" - 30 Error(s), 12 Warning(s).
Target not created.
Build Time Elapsed:  00:00:05

请问还需要修改什么地方吗?

出0入0汤圆

发表于 2018-6-21 11:48:08 | 显示全部楼层
先收藏,好好研究下。谢谢楼主分享

出0入169汤圆

发表于 2018-6-21 13:02:06 | 显示全部楼层
好强大好牛,支持,抽空学习学习

出0入0汤圆

 楼主| 发表于 2018-6-21 14:56:05 | 显示全部楼层
kazuyuki 发表于 2018-6-21 11:28
按LZ的说明,我在m0的工程中加入了EventRecored的选项,设置也是按说明里面来的,但在编译时,出现了一大堆 ...

这个是支持M0的,我现在手头没有M0的板子,后面专门测试了,交流

出0入0汤圆

发表于 2018-6-21 15:02:43 | 显示全部楼层
安富莱干货就是多

出0入0汤圆

 楼主| 发表于 2018-6-22 10:53:21 | 显示全部楼层
大锤小趴 发表于 2018-6-21 10:45
我就想问  怎么收藏帖子

楼主位的最下面,有个收藏按钮,点击一下就可以了。

出0入0汤圆

发表于 2018-6-22 16:12:28 | 显示全部楼层
Eric2013 发表于 2018-6-21 14:56
这个是支持M0的,我现在手头没有M0的板子,后面专门测试了,交流  ...

看提示,应该是设置没对。uint32_t这种基本类型都没找到定义。我猜会不会是需要手工修改加入stm32f0xx.h这种标准头文件

出0入0汤圆

 楼主| 发表于 2018-6-22 16:46:39 | 显示全部楼层
kazuyuki 发表于 2018-6-22 16:12
看提示,应该是设置没对。uint32_t这种基本类型都没找到定义。我猜会不会是需要手工修改加入stm32f0xx.h ...

给你找了个MDK自带的例子测试了下,用的F072,测试没问题




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2018-6-22 19:40:44 | 显示全部楼层
之前用过RTT,SWO很好用,一代比一代好用,来学习下这个新东西,谢谢楼主

出0入0汤圆

发表于 2018-6-22 21:11:25 | 显示全部楼层
没用过也要给赞

出0入0汤圆

发表于 2018-6-22 22:53:00 | 显示全部楼层
牛XX!                       

出0入0汤圆

发表于 2018-6-22 22:57:40 来自手机 | 显示全部楼层
感谢楼主分享

出0入0汤圆

发表于 2018-6-22 23:06:12 | 显示全部楼层

牛逼的工具 学习一下

出0入0汤圆

发表于 2018-6-22 23:16:48 | 显示全部楼层
好东西,多谢楼主分享

出0入0汤圆

 楼主| 发表于 2018-6-23 10:39:11 | 显示全部楼层

感谢

出0入76汤圆

发表于 2018-6-23 20:50:33 | 显示全部楼层
这个工具不错, 感谢分享

出615入1076汤圆

发表于 2018-6-24 02:15:54 | 显示全部楼层
本帖最后由 dukelec 于 2018-6-24 02:38 编辑

很早之前还用 openocd jtag 调试,后来进了某家自主 CPU 原厂之后,发现根本没有人用 jtag 调试,都是串口调试,哪怕是调底层汇编代码,因为系统跑的是 Linux, 比较庞大吧,再后来调试单片机也没用 jtag 的习惯了。。。

串口调试甚至可以远程通过总线回传到主机显示,也可以发命令动态设置调试等级,Linux 的串口终端都支持颜色,特定打印用红色高亮显示非常好找(字符串前后加控制字符就可以实现),等等好处多多。。。

jtag 这种你好不容易设置好的断点,很难修改不说,别人拿到你的代码根本不知道哪里是需要调试的地方。。。
而且关键的时候 jtag 触发断点 CPU 会停下来,实际很多时候是不可以让 CPU 停下来的,外部很多配合要处理,而串口就没有这个问题。。。

之前调试 Ti 的 DSP 芯片,只用它的 jtag 做 printf 打印输出,结果 CPU 运行的过程中打开 IDE 没有打印,必须在 IDE 中复位一下才有打印,TMD 我就是复现到问题才想连 IDE 查一下原因的好不好,难道我要同时测试 10 台机器要买 10 个 jtag 配 10 个电脑开 10 个 IDE 才能测试吗?!这之后 jtag 纯粹用来输出 printf 都不再用。

虽然楼主做的这个很不错,但是换个 IDE 就用不了了(我用 gcc + makefile, 不用 IDE),换个片子(譬如 STM8、AVR)可能也用不了了,所以终极的话还是串口(更底层还有点灯)。。。

用串口调试,如果串口不够的情况下,可以复用现有串口用做调试打印,可以通过不同命令号等方式来做区分,这样一来,装了外壳的产品不用拆壳就可以分析故障原因,或是绘制波形调整 PID 参数这些都不在话下。。。
而且用串口,没有额外学习成本。。。

出0入0汤圆

 楼主| 发表于 2018-6-24 03:21:52 | 显示全部楼层
dukelec 发表于 2018-6-24 02:15
很早之前还用 openocd jtag 调试,后来进了某家自主 CPU 原厂之后,发现根本没有人用 jtag 调试,都是串口 ...

这个算是一种趋势,这两年发展很快,后面生态将更加完善。

ARM去年还推出了新的调试架构CoreSight SoC-600,不再需要调试器,支持WIFI,以太网,CAN和USB接口调试。

a. 从产品的设计,量产到产品现场,产品的所有生命周期,我们都可以随时随地进行访问调试。
b. 通过wifi和以太网进行远程访问调试。
c. 更快的数据吞吐量,从而提高无与伦比的可视化效果。





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出615入1076汤圆

发表于 2018-6-24 12:03:00 | 显示全部楼层
Eric2013 发表于 2018-6-24 03:21
这个算是一种趋势,这两年发展很快,后面生态将更加完善。

ARM去年还推出了新的调试架构CoreSight SoC-6 ...

你说的趋势顶多只是大厂产品的趋势,产品之间是相互竞争的商业关系,为了圈客群,不可能通用的,譬如日后 RISCV 的片子,它不可能支持你说的 CoreSight SoC-600.

大厂推广不代表就是好东西,原厂自己的高级工程师都不会用的,只是圈养一群习惯於此的普通开发者。你用它的东西,就要花钱买它的工具、IDE 这些,允许破解也是为了养肥了再宰。

大厂很多时候出的一些产品或组件,很可能只是几个毕业生团队搞出来的而已,不要迷信。

串口、网络调试这些,自己的代码就可以实现,又可以跨平台通用,最主要是自己可以把控。譬如一个实时的 485 总线通讯,自己写的代码调试可以保证运动控制的最高优先级,但你用别人的调试,首先协议如何不相互干扰就是一个很大的问题,再者,优先级方面如何不去干扰运动控制,这又是一个问题。

开发成本方面,用自己写的库,每个产品也只不过把库拿来用就好,也可以选择很多优秀的开源库来做相关调试。

上位机的图形界面方面,譬如使用 python 脚本几十行代码就可以绘出自己想要的曲线,还可以方便进一步处理,譬如 PID 的曲线数据,进一步可以用来做自整定,如果你用的是商业的 IDE, 绘制一个波形不用写代码,但当现有的不满足需求的情况下,你要额外花几百倍时间去学习如何为一个庞大的商业软件开发插件。。。

最后想说的是,目前貌似没有优秀的开源项目是基于 jtag 来调试代码的。

出0入0汤圆

发表于 2018-6-24 12:06:42 | 显示全部楼层
硬汉出品,必属佳作。

出0入0汤圆

 楼主| 发表于 2018-6-24 12:07:50 | 显示全部楼层
dukelec 发表于 2018-6-24 12:03
你说的趋势顶多只是大厂产品的趋势,产品之间是相互竞争的商业关系,为了圈客群,不可能通用的,譬如日后 ...

其实想这么多干什么,好用的工具,用就好了。

比如这个帖子的Event Recorder,这么爽的工具,不用白不用。

出615入1076汤圆

发表于 2018-6-24 12:25:11 | 显示全部楼层
Eric2013 发表于 2018-6-24 12:07
其实想这么多干什么,好用的工具,用就好了。

比如这个帖子的Event Recorder,这么爽的工具,不用白不用 ...

呃,有相关需要的朋友用用当然无可厚非,我就随便说说。。。
我就算了,用 Linux 系统还真的没法用。。。

出0入0汤圆

发表于 2018-6-24 13:38:55 | 显示全部楼层
好东西,谢谢分享,先收藏

出0入0汤圆

 楼主| 发表于 2018-6-24 14:02:25 来自手机 | 显示全部楼层
edaworld 发表于 2018-6-24 12:06
硬汉出品,必属佳作。

感谢支持。

出0入0汤圆

发表于 2018-6-24 15:43:08 | 显示全部楼层
功能好强大啊,马上安装好试试,多谢楼主分享

出0入0汤圆

发表于 2018-6-24 16:41:54 | 显示全部楼层
Mark 一下,后面要用

出0入0汤圆

 楼主| 发表于 2018-6-30 16:49:32 | 显示全部楼层
更新一个小问题:

使用Event Recorder的时间统计功能,一定要是MDK5.25正式版及其以上版本,5.25的预览版是不行的。

Event Statistics是5.25正式版才增加的,之前的版本都没有的。



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2018-6-30 17:30:05 来自手机 | 显示全部楼层
学习一下。

出0入0汤圆

发表于 2018-8-17 14:08:26 | 显示全部楼层
谢谢分享!

出0入0汤圆

发表于 2018-8-17 14:19:51 | 显示全部楼层
segger的jlink要玩完了啊

出0入0汤圆

发表于 2018-8-17 15:29:05 | 显示全部楼层
太厉害了

出0入0汤圆

发表于 2018-8-17 20:17:36 | 显示全部楼层
太牛X了,感谢分享。

出0入4汤圆

发表于 2018-8-17 21:12:00 来自手机 | 显示全部楼层
很厉害,学习一下

出0入0汤圆

发表于 2018-8-17 21:20:56 | 显示全部楼层
dukelec 发表于 2018-6-24 02:15
很早之前还用 openocd jtag 调试,后来进了某家自主 CPU 原厂之后,发现根本没有人用 jtag 调试,都是串口 ...

不能再赞成了,我也是这样干的,好多年没用过仿真器了

出0入0汤圆

发表于 2018-8-17 21:30:58 | 显示全部楼层
    补充点,日志调试注意事项:
    在编写程序后,我们可以随手在需要的地方加入打印信息,同时需要考虑如下事项:
    1、日志输出是有代价的,特别是在嵌入式系统,或者对执行时序要求较高的应用场景,因此:
          a) 只有在需要的地方加入,不能滥用。
          b) 一定要有一个全局的开关,在不需要或者产品发布的时候,关闭输出,或者降低日志输出的频率。
    2、日志输出需要有优先级控制,例如:发生错误时的日志优先级最高,一般都要输出;一些重要的提示,优先级中等,可能会在debug版的软件中打开;一些不重要的提示,可能只会在需要的时候(例如跟踪bug)打开
    3、不要直接使用printf(或者printk)。日志输出的目标是多样的,例如通过printf输出到屏幕、通过串口输出到串口调试助手、通过文件操作写入到文件等等。要通过重定义的方式,将所有的日志输出指令定义到合适的输出路径,当需要修改输出路径的时候,只要修改重定义的部分即可。否则需要在整个代码中修改,就麻烦了;
    4、最好为每个软件模块提供单独的日志输出开关,以增加调试的灵活性;
    5、很多时候,日志输出语句,可以部分代替代码注释的功能;

    其它:
     - 观察事物就会影响事物(采集和发送会消耗/占用系统资源);               
     - 并发任务的调试(代码的可阅读性和读懂的必要性大大降低,监视系统的逻辑和数据);
     - 参考文档《软件测试中的测不准原理》;
     - 串口监视软件SecureCRT的使用;

出0入0汤圆

 楼主| 发表于 2018-8-18 12:48:05 | 显示全部楼层
mdcao 发表于 2018-8-17 21:30
补充点,日志调试注意事项:
    在编写程序后,我们可以随手在需要的地方加入打印信息,同时需要 ...

感谢补充,不过我觉得都是串口调试时代的经验了

Event Recorder有各种过滤功能,非常方便,想关就关。

现在的MDK集成的Event Recorder以及Embedded Studio集成的RTT,真的是太方面了。

出0入0汤圆

发表于 2018-8-31 14:16:34 | 显示全部楼层
感谢楼主无私奉献,已经应用在项目上了,非常棒。

出0入0汤圆

发表于 2018-9-18 17:04:03 | 显示全部楼层
谢谢分享,学习一下

出0入0汤圆

发表于 2018-9-18 17:23:41 | 显示全部楼层
有时间了试试,调试插件

出0入0汤圆

发表于 2018-9-22 10:16:30 | 显示全部楼层
楼主,我按照文档一步一步操作的,没有出来呀,我又打开了您的工程,也是没有。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2018-9-22 10:25:01 来自手机 | 显示全部楼层
先收藏了,谢谢分享!

出0入0汤圆

 楼主| 发表于 2018-9-22 10:43:22 | 显示全部楼层
hanbing333444 发表于 2018-9-22 10:16
楼主,我按照文档一步一步操作的,没有出来呀,我又打开了您的工程,也是没有。 ...

换个下载器试试,最近有几个网友反馈跟你的问题一样,比较奇怪。

我这里测试DAP,JLINK,STLINK都比较正常。MDK的周期性更新打开了吧。

出0入0汤圆

发表于 2018-9-22 11:06:34 | 显示全部楼层
Eric2013 发表于 2018-9-22 10:43
换个下载器试试,最近有几个网友反馈跟你的问题一样,比较奇怪。

我这里测试DAP,JLINK,STLINK都比较正 ...

周期性更新打开了,用的调试器是ST-link。

出0入0汤圆

发表于 2018-9-22 11:10:07 | 显示全部楼层
dukelec 发表于 2018-6-24 12:03
你说的趋势顶多只是大厂产品的趋势,产品之间是相互竞争的商业关系,为了圈客群,不可能通用的,譬如日后 ...

能不能推荐一个串口调试开源库或是有没有这方面调试方法讲讲;习惯了jtag,好像用串口调试有点思路僵硬了

出0入0汤圆

 楼主| 发表于 2018-9-22 12:26:47 | 显示全部楼层
hanbing333444 发表于 2018-9-22 11:06
周期性更新打开了,用的调试器是ST-link。

这里开了吧,这里开了的话,基本就没有别的什么问题了。

之前几个网友找我,他们自己的原始工程,他们那里测试有问题,我这里同样的工程就没问题,基本可以认为是下载器问题居多,或者可以换个电脑测试下。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2018-9-27 11:32:40 | 显示全部楼层
不错,以后调试就方便了

出0入0汤圆

发表于 2018-10-4 07:52:32 | 显示全部楼层
这个好东西。

出0入45汤圆

发表于 2018-10-4 08:05:34 来自手机 | 显示全部楼层
收藏了,多谢!

出20入0汤圆

发表于 2018-10-9 11:07:43 | 显示全部楼层
谢谢分享,非常有用

出0入0汤圆

发表于 2018-10-9 13:27:41 | 显示全部楼层
好資料,謝謝分享

出0入0汤圆

发表于 2018-10-11 18:47:48 来自手机 | 显示全部楼层
mdk更新真多

出0入4汤圆

发表于 2018-10-27 22:40:39 | 显示全部楼层
楼主,推荐哈靠谱点的 keil mdk 5.26版的链接,怕下载有bug的版本,耽误时间呀。

出0入0汤圆

 楼主| 发表于 2018-10-27 23:04:19 | 显示全部楼层
fbwcpu 发表于 2018-10-27 22:40
楼主,推荐哈靠谱点的 keil mdk 5.26版的链接,怕下载有bug的版本,耽误时间呀。 ...


官方的:
http://www.keil.com/fid/ag114gwx ... les/eval/mdk526.exe

复制此连接到迅雷下载就行,注意浏览器点击开联合后复制。

出0入0汤圆

发表于 2018-10-28 10:03:59 | 显示全部楼层
好东西,谢谢分享

出20入0汤圆

发表于 2018-10-28 10:20:42 | 显示全部楼层
强大无比,谢谢分享

出0入0汤圆

发表于 2018-10-31 16:29:14 | 显示全部楼层
謝謝提供分享!!!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-3-29 16:58

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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