硬汉嵌入式论坛

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

[Ozone] Ozone调试注意事项

[复制链接]

4

主题

51

回帖

68

积分

初级会员

积分
68
发表于 2020-5-25 09:01:34 | 显示全部楼层 |阅读模式
本帖最后由 ndx1986 于 2020-5-25 09:18 编辑

Ozone不识别中文路径。好像如果在中文路径下建立了Ozone调试工程,即使后面更改了路径,Ozone仍然会提示路径错误找不到文件(c文件、h文件)。所以推荐在IDE建立工程时就不使用中文路径,或者在Ozone建立调试工程时,已经更改为不含中文的路径。

Ozone使用Keil编译生成的axf也可以正常工作,不过注意打开方式,因为直接Download的运行模式(默认)有时是有Bug的,目前不知道这个bug产生的原因,因为按理说时通过keil生成的axf文件,Ozone也不会去更改,而且axf在运行时解析应该是直接按照指令集进行解析的。

一开始觉得黄了,以后只能双工程了。但是如果使用keil的RTE生成工程,后续会及其难搞(移植到ES的困难会比较大)。后来问了硬汉之后,发现有这个解决方案:

开始不知道这个问题的时候,曾经比对过这个问题:

同一个程序,在keil在进行编译生成axf文件,在Ozone中新建工程,导入axf文件,再通过Ozone直接进行Download,如下图
download.png

开始运行时一切正常,但是每当操作我设备的按键时(会进入Ente_Key_Dispose函数),就会进入Hardfault(通过Ozone的trace或者通过Keil的Call Statck窗口跳转回去查询到是该函数跳转进入了HardFault)。一开始怀疑是程序问题,后来觉得不对,因为这种写法在之前不论是Keil、ES编译、调试都是没有任何问题的。
然后通过仔细比对后发现,尽管使用的是同一个axf文件,但是在反汇编窗口,看到得汇编指令是不同的。

Keil调试时的汇编指令:(Enter_Key_Dispose函数),如下图:
keil-asm.png

Ozone选取Keil生成的axf文件,直接Download后,相同位置汇编指令如下图:
ozone-asm.png

Ozone选取ES(Segger本家IDE工具)生成的elf文件就不会有任何问题(废话,如果本家都有问题,Segger可以不用混了),可以看到入栈时的指令是不同的
es-asm.png

选取第二个选项后,则不会出现上述奇葩问题
attach.png

注意即使已经选取了Attach的方式,一旦在Ozone下点击复位按钮,也会出现相同问题(进入HardFault)
reset.png

查询了下Ozone的手册,也没仔细说有啥区别,现在只能说通过这种方法来规避。不知道Download与否会对Debug有什么样子影响
um.png




评分

参与人数 1金币 +100 收起 理由
eric2013 + 100 赞一个!

查看全部评分

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106882
QQ
发表于 2020-5-25 11:39:10 | 显示全部楼层
谢谢楼主分享经验。
回复

使用道具 举报

0

主题

5

回帖

5

积分

新手上路

积分
5
发表于 2021-7-10 09:49:37 | 显示全部楼层
q请问用ES编译没问题,使用SWD接口连接提示连接错误,STM32: Connecting to CPU via connect under reset failed.接口仔细检查了,连了五根线GND SWDIO SWCLK (VCC 直接接JTAG内部的)。不知道我是不是连接错误
回复

使用道具 举报

1

主题

9

回帖

12

积分

新手上路

积分
12
发表于 2021-8-16 00:59:49 | 显示全部楼层
我也遇到了
回复

使用道具 举报

1

主题

9

回帖

12

积分

新手上路

积分
12
发表于 2021-8-16 01:00:30 | 显示全部楼层
0x08100EC4 F6FFFC00  BL.W          HAL_RCC_GetSysClockFreq (0x080006C8)
0x08100EC8 F8D81000  LDR           r1,[r8,#0x00]
回复

使用道具 举报

1

主题

9

回帖

12

积分

新手上路

积分
12
发表于 2021-8-16 01:02:04 | 显示全部楼层
我也遇到了
这是keil的汇编
0x08100EC4 F6FFFC00  BL.W          HAL_RCC_GetSysClockFreq (0x080006C8)
0x08100EC8 F8D81000  LDR           r1,[r8,#0x00]
这是Ozone的汇编
08100EC4   BL             HAL_RCC_GetSysClockFreq       ; 0x080006C8
08100EC8   LDR.W          R1, [R8]
Ozone连着一复位到这就死机,不知道怎么搞
回复

使用道具 举报

4

主题

51

回帖

68

积分

初级会员

积分
68
 楼主| 发表于 2021-8-17 07:08:02 | 显示全部楼层
wrdt24435 发表于 2021-8-16 01:02
我也遇到了
这是keil的汇编
0x08100EC4 F6FFFC00  BL.W          HAL_RCC_GetSysClockFreq (0x080006C8)
...

可以试着用keil编译好后在keil下直接运行,再用ozone绿色的按钮处选择另外两个attact  to running/halt program看一下。我之前实验用download and reset的时候,直接调用keil编译后的axf会死机(keil和ses编译的方式不同),ozone使用ses编译文件可以正常跑起来。用iar的编译相同工程的适用性好像比keil要好些。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-8 18:06 , Processed in 0.200050 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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