本文主要是介绍【GreenHills】GHS-Point导致的调试HardFault错误,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
【更多软件使用问题请点击亿道电子官方网站】
1、 文档背景
该客户使用的IDE为S32 Design Studio for ARM ,使用的编译器为GHS compiler,调试器为PE。
客户在使用Ceil函数进行函数调用时,编译可以正常通过,但调试无法成功运行。
并且出现下方错误信息:
UsageFault: The processor has attempted to execute an undefined instruction.
HardFault: A fault has been escalated to a hard fault.
处理器试图执行一个未定义的指令。
HardFault:已升级为硬故障。
2、软硬件环境
1)、软件版本:S32 Design Studio for ARM 2.2
2)、电脑环境:Windows 11
3)、外设硬件:PE
3、解决步骤
1)、原厂建议使用“-fsoft and then -fsingle”,查看GHS编译选项,
"Floating-Point Mode"设置为:"Hardware Single, Software Double"后尝试调试,该硬件报错依旧存在。
图3-1
注:
Hardware Single, Software Double (-fsingle) 用于单精度操作的硬件浮点模式,用于双精度操作的软件浮点模式。与-hard相同的处理器支持此设置。对于Cortex-M4F,默认开启-fsingle。
Software Emulation (-fsoft) SFP (Software floating-point)模式。此设置使目标使用整数寄存器来保存浮点数据,并使用库子例程调用来模拟浮点操作。对于没有FPU的目标,这是默认设置。如果目标有一个FPU,这个设置选择一组不同的浮点库。
2)、查看汇编语言出现vcmp.64调用,并且函数执行到该地址时出现故障,同步修改配置选择。
图3-2
3)、将 “Floating-Point Coprocessor Version”同步设置为“VFP v5, 32 Double Registers”,设置完成后程序运行成功。无vcmp.64调用。
图3-3
注:
VFP v5, 32 Double Registers (-fpu=vfpv5) VFP v5, 32双寄存器(-fpu=vfpv5)使用VFP指令集的v5版本指定硬件浮点数,具有32个双精度浮点寄存器。
————————————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
关于亿道电子
亿道电子技术有限公司(www.emdoor.cn)是国内资深的研发工具软件提供商,公司成立于2002年,面向中国广大的制造业客户提供研发、设计、管理过程中使用的各种软件开发工具,致力于帮助客户提高研发管理效率、缩短产品设计周期,提升产品可靠性。
这篇关于【GreenHills】GHS-Point导致的调试HardFault错误的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!