OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5275|回复: 3

FreeRTOS移植到STM32l475上,出现pvPortMalloc申请不到空间,返回NULL。

[复制链接]

2

主题

3

帖子

0

精华

新手入门

积分
11
金钱
11
注册时间
2020-11-6
在线时间
1 小时
发表于 2020-11-6 11:16:03 | 显示全部楼层 |阅读模式
各位大神你好,小弟最近在自学freeRTOS的移植,遇到了个问题,如题所述:
1.MDK5工程里面添加的是heap4.c源文件。
2.问题是,通过xTaskCreate函数想开启一个task来实现LED的闪烁,加载到板子上发现,LED没反应,然后调试发现是xTaskCreate函数中的pxStack = ( StackType_t * ) pvPortMalloc......这里返回NULL,
是我有什么配置没设置对吗?
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

3

帖子

0

精华

新手入门

积分
11
金钱
11
注册时间
2020-11-6
在线时间
1 小时
 楼主| 发表于 2020-11-6 11:36:49 | 显示全部楼层
本帖最后由 HeHeOldDriver 于 2020-11-6 11:44 编辑

刚硬着头皮,看了下pvPortMalloc里面返回空间指针pvReturn的逻辑(从前往后看那些判断看不懂,索性从后往前看返回值怎么赋值的),一下就找到原因了,果然还是方法总比困难多。
pvReturn被赋值的地方,有个条件:if( pxBlock != pxEnd ),就是说没有到结束标记就找到,则能申请到。这就说明我申请的空间太大,或者是堆设置的太小。
1.先检查这次要申请多大,一共是512*4字节,2048个字节;2.在看FreeRTOS_config.h里面heap设置了多大:#define configTOTAL_HEAP_SIZE                   ( ( size_t ) ( 2 * 1024 ) ),也是2048
果断修改配置#define configTOTAL_HEAP_SIZE                   ( ( size_t ) ( 3 * 1024 ) ),重新编译、加载,问题解决
回复 支持 反对

使用道具 举报

5

主题

353

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4300
金钱
4300
注册时间
2019-4-30
在线时间
877 小时
发表于 2020-11-6 14:31:51 | 显示全部楼层
哎呀,你给操作系统的空间也太小了,我一般即使是C8T6都会给10-15
回复 支持 反对

使用道具 举报

2

主题

474

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6077
金钱
6077
注册时间
2018-6-27
在线时间
524 小时
发表于 2021-4-11 14:35:53 | 显示全部楼层
学习学习,学习学习。
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 16:09

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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