踩坑记 在STM32上移植emWin和RTOS,进HardFault_Handler

最近在捣鼓在STM32上移植emWin,不亲自试不知道,一试全是各种问题。而且我们在使用emWin时往往是搭配RTOS一块使用,于是这天我想搞一个emWin+LiteOS(华为的物联网操作系统)的工程。

我先是在LiteOS工程上移植emWin,然后各种玄学,最后放弃。

然后我再在emWin裸机工程上移植LiteOS,相对来说,移植LiteOS我比较熟一点,也简单一些,最后程序还是进HardFault_Handler。

第三次我再在一个emWin+FreeRTOS的工程上,把FreeRTOS的代码全部换成LiteOS的,结果还是进HardFault_Handler。

我求助朋友,他们说很可能是内存问题。加上我之前使用LiteOS的互斥信号量出的问题,我想到很可能是LiteOS中哪个地方没配置好。最后发现问题果然是在内存分配上,emWin的管理内存地址和LiteOS管理内存地址冲突了。我使用的是STM32F103ZET6,64KB的RAM,没有外扩SDRAM,因此我给emWin分配20KB,给LiteOS分配20KB,起始地址不一样。

下图这个头文件是LiteOS初始化配置的,类似FreeRTOS的FreeRTOS.h和FreeRTOSConfig.h,内存管理地址从0x20008000开始。
这个头文件是LiteOS初始化配置的,类似FreeRTOS的FreeRTOS.h和FreeRTOSConfig.h
然后下图是emWin的内存管理代码,基本不用改变。默认内存管理地址从0x20000000开始的。
在这里插入图片描述
总结:
1.在emWin裸机工程上移植RTOS更简单
2.注意内存分配问题

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值