1225|12

2870

帖子

4

TA的资源

五彩晶圆(中级)

楼主
 

STM32的keil和GNU项目有何区别 [复制链接]

 
实验的板子是STM32F746G-DISCO,板子上带有lcd屏幕,mcu STM32 F7  ARM® Cortex®-M7 MCU 32-位,带有网络和麦克风等外设,

但是软件是ST的GUI,所以想把LVGL移植到板子上面,开始想使用keil来开发项目,但是总是不成功直到找到这个项目

链接已隐藏,如需查看请登录或者注册
,但是该项目是使用IAR和GNU类型地,所以自己就参考这个项目进行移植,非常辛苦的完成了项目。

  但是最好的效果就是,界面出现后,只要使用屏幕滑动一下就死机了。以后就再也不能使用了。

 

滑动以后

 

就再也不能移动了。

  程序就死在了这里,而且这时中断SysTick_Handler也无法进入,好像是出现了什么硬件故障。我的处理是把所有的关于所有的初始化和驱动代码都使用项目lv_port_stm32f746_disco的代码进行了替换,故障仍然依旧。

 如果使用gcc-arm-none-eabi和CMAKE编译的lv_port_stm32f746_disco项目,却可以正常运行,该问题不止我遇到了,在网上也有其它人也出现了。

 

不知道有没有人知道这是为什么?

此帖出自stm32/stm8论坛

最新回复

我记得有些硬件错误是可以看到调用栈(函数调用关系)的。   详情 回复 发表于 2023-12-7 09:13
点赞 关注
 

回复
举报

6773

帖子

2

TA的资源

版主

沙发
 

你可以看看是从哪里跳到硬件错误的。

此帖出自stm32/stm8论坛

点评

这个难度非常的高,因为使用的程序不能单步的进行,必须连续运行,除非调试器有回溯功能,在断电处上溯代码。  详情 回复 发表于 2023-12-6 16:35
 
 

回复

2870

帖子

4

TA的资源

五彩晶圆(中级)

板凳
 
wangerxian 发表于 2023-12-6 16:29 你可以看看是从哪里跳到硬件错误的。

这个难度非常的高,因为使用的程序不能单步的进行,必须连续运行,除非调试器有回溯功能,在断电处上溯代码。

此帖出自stm32/stm8论坛

点评

我记得有些硬件错误是可以看到调用栈(函数调用关系)的。  详情 回复 发表于 2023-12-7 09:13
直接可以查到hardfault的地址啊  详情 回复 发表于 2023-12-6 17:19
 
 

回复

7452

帖子

2

TA的资源

五彩晶圆(高级)

4
 

换高级的keil,v6 大部分兼容 gnu,v5 的编译器不在维护了。

此帖出自stm32/stm8论坛
 
个人签名

默认摸鱼,再摸鱼。2022、9、28

 
 

回复

6841

帖子

11

TA的资源

版主

5
 

你要看看栈堆分配合理不合理,想要知道在哪里出错了,打开lvgl的日志打印开关。我在前面的调试中总结就是lvgl与freertos的内存分配要合理,要不经常出错。希望对你有帮助。

此帖出自stm32/stm8论坛

点评

谢谢,我这就去看一下参数是不是合理,你说的很有道理。  详情 回复 发表于 2023-12-6 17:25
 
 
 

回复

108

帖子

0

TA的资源

一粒金砂(高级)

6
 
bigbat 发表于 2023-12-6 16:35 这个难度非常的高,因为使用的程序不能单步的进行,必须连续运行,除非调试器有回溯功能,在断电处上溯代 ...

直接可以查到hardfault的地址啊

此帖出自stm32/stm8论坛

点评

怎么查看hardfault是什么故障引起的。  详情 回复 发表于 2023-12-6 17:26
 
 
 

回复

2870

帖子

4

TA的资源

五彩晶圆(中级)

7
 
lugl4313820 发表于 2023-12-6 16:44 你要看看栈堆分配合理不合理,想要知道在哪里出错了,打开lvgl的日志打印开关。我在前面的调试中总结就是lv ...

谢谢,我这就去看一下参数是不是合理,你说的很有道理。

此帖出自stm32/stm8论坛
 
 
 

回复

2870

帖子

4

TA的资源

五彩晶圆(中级)

8
 
韵湖葱白 发表于 2023-12-6 17:19 直接可以查到hardfault的地址啊

怎么查看hardfault是什么故障引起的。

此帖出自stm32/stm8论坛

点评

从软件角度,产生hardfault的可能原因有: (1) 数组越界 (2)野指针 (3)未初始化硬件却开始操作,或无中断服务函数等 (4)任务堆栈溢出 《ARM Cortex-M0权威指南》中提到,关于 Cortex M0+内核主要  详情 回复 发表于 2023-12-6 17:29
 
 
 

回复

2870

帖子

4

TA的资源

五彩晶圆(中级)

9
 

各位能不能说说如何查看gnu项目的内存分配设置。这个不知道是在哪个文件里设置。

此帖出自stm32/stm8论坛
 
 
 

回复

6841

帖子

11

TA的资源

版主

10
 
bigbat 发表于 2023-12-6 17:26 怎么查看hardfault是什么故障引起的。

从软件角度,产生hardfault的可能原因有:

(1) 数组越界
(2)野指针
(3)未初始化硬件却开始操作,或无中断服务函数等

(4)任务堆栈溢出

《ARM Cortex-M0权威指南》中提到,关于 Cortex M0+内核主要有以下几点引起 HardFault 的原因:


非法存储器访问
非对齐数据访问
从总线返回错误
异常处理中的栈被破坏
程序在某些 C 函数中崩溃
意外地试图切换至 ARM 状态
在错误的优先级上执行系统服务调用指令(SVC)
 

此帖出自stm32/stm8论坛
 
 
 

回复

6841

帖子

11

TA的资源

版主

11
 
本帖最后由 lugl4313820 于 2023-12-6 17:32 编辑

stm32f746使用freertos+lvgl对内存的申请是开销非常大的,所以如果显存的buff申请不到内存就抛出harldfault错误,建议楼主用printf打一下断点,看走哪一步进的异常。

此帖出自stm32/stm8论坛
 
 
 

回复

2870

帖子

4

TA的资源

五彩晶圆(中级)

12
 

谢谢@lugl4313820,我将Stack_Size和Heap_Size都各加了0x200,问题真的没有了。

再次的感谢。

此帖出自stm32/stm8论坛
 
 
 

回复

6773

帖子

2

TA的资源

版主

13
 
bigbat 发表于 2023-12-6 16:35 这个难度非常的高,因为使用的程序不能单步的进行,必须连续运行,除非调试器有回溯功能,在断电处上溯代 ...

我记得有些硬件错误是可以看到调用栈(函数调用关系)的。

此帖出自stm32/stm8论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表