STM32F429同时使用LTDC和外部SDRAM作堆栈导致HardFault死机
2018-03-01 09:51
771 查看
最近在研究STM32F429的LTDC驱动LCD和emWin运行DEMO时候,发现程序总是异常死机,DEBUG发现是进入了HardFault!查看堆栈数据发现数据异常,难道是程序有BUG导致堆栈被破坏了吗?
于是新建一个最小工程,使用最精简的代码,只创建一个GUI线程跑emWin的DEMO程序,发现还是会不定时死机!难道是GUI线程的堆栈设置太小了吗?
于是加大GUI任务的堆栈,由8K增加到16K,故障依旧!!!不应该啊,难道是我的RTOS有问题吗?
于是去掉RTOS,修改emWin的配置文件,改为裸机运行,跑了一段时间,竟然不死机了!WTF!!!
于是又单独测试RTOS,去掉GUI任务反复测试,运行非常正常,各种测试代码都没有问题啊!!!
到底是怎么回事呢,为什么GUI和RTOS同时使用就会死机呢?
对比两份代码,区别就是使用RTOS的时候,把外部SDRAM用作了任务堆栈,而裸机程序使用的是内部RAM做堆栈。
于是把RTOS的任务堆栈设置为内部RAM,结果程序运行正常了! 真是奇怪,难道STM32F429的SDRAM不能作堆栈吗?
不对,不对,不对,在移植GUI之前一直都是用外部SDRAM作任务堆栈,从来没有出现过这种死机的问题啊,难道是LTDC的问题吗?
于是又恢复刚才的代码,继续使用外部SDRAM作堆栈,但是去掉LTDC的初始化代码,再次运行程序,屏幕虽然没有任何显示,但是从板子上的不断闪烁的LED来看,程序并没有死机,继续观察10多分钟,也没有死机.
我的天!!!这是为何???
在启用LTDC之后,使用外部SDRAM用作堆栈会导致程序异常死机,至今没有找到原因。
于是新建一个最小工程,使用最精简的代码,只创建一个GUI线程跑emWin的DEMO程序,发现还是会不定时死机!难道是GUI线程的堆栈设置太小了吗?
于是加大GUI任务的堆栈,由8K增加到16K,故障依旧!!!不应该啊,难道是我的RTOS有问题吗?
于是去掉RTOS,修改emWin的配置文件,改为裸机运行,跑了一段时间,竟然不死机了!WTF!!!
于是又单独测试RTOS,去掉GUI任务反复测试,运行非常正常,各种测试代码都没有问题啊!!!
到底是怎么回事呢,为什么GUI和RTOS同时使用就会死机呢?
对比两份代码,区别就是使用RTOS的时候,把外部SDRAM用作了任务堆栈,而裸机程序使用的是内部RAM做堆栈。
于是把RTOS的任务堆栈设置为内部RAM,结果程序运行正常了! 真是奇怪,难道STM32F429的SDRAM不能作堆栈吗?
不对,不对,不对,在移植GUI之前一直都是用外部SDRAM作任务堆栈,从来没有出现过这种死机的问题啊,难道是LTDC的问题吗?
于是又恢复刚才的代码,继续使用外部SDRAM作堆栈,但是去掉LTDC的初始化代码,再次运行程序,屏幕虽然没有任何显示,但是从板子上的不断闪烁的LED来看,程序并没有死机,继续观察10多分钟,也没有死机.
我的天!!!这是为何???
在启用LTDC之后,使用外部SDRAM用作堆栈会导致程序异常死机,至今没有找到原因。
相关文章推荐
- 基于STM32F429的SDRAM使用
- libz.so.1文件丢失,同时导致yum和rpm命令不能使用的解决办法?
- android:maxLines和android:ellipsize同时使用导致显示异常
- 如何在STM32F429上使用DSP库
- oracle小记之游标和order by同时使用导致性能慢
- 使用模板类导致error LNK2019: 无法解析的外部符号
- 关于使用Transparent导致无法解析的外部符号的解决办法
- STM32F429(HAL库)_USART串口发送&接收(使用STM32CubeMX)
- 从0开始学Keil下的S3C2440裸机开发-2使用外部SDRAM
- 同时安装ASA10以及ASA11两个数据库导致不能使用SQLSERVER2005 management studio的问题解决
- 遭遇sprintf导致的堆栈崩溃。不使用sprintf_s()的代价
- (转) 遭遇sprintf导致的堆栈崩溃。不使用sprintf_s()的代价
- 从0开始学Keil下的S3C2440裸机开发-2使用外部SDRAM
- 使用模板类导致error LNK2019: 无法解析的外部符号
- 使用STM32CubeMX进行STM32F429 LCD编程<一> 全局配置
- <form>表单和ajax同时使用导致json报错
- 表单input项使用label同时引用Bootstrap库导致input点击效果区增大问题
- vs2010 MFC所使用字符集不同时导致控件外观不一样的解决办法
- 关于UseSubmitBehavior和OnClientClick同时使用,导致无法触发后台事件的问题
- 使用模板类导致error LNK2019: 无法解析的外部符号