astudent 发表于 2010-2-24 13:55:43

使用FreeRTOS有没有特别注意的地方?

准备在LM3S8962上使用FreeRTOS,有没有特别注意的地方?特别是需要注意的Bug?

songzi2018 发表于 2010-2-24 14:36:27

不要动态删除任务和创建任务,其他的没啥

astudent 发表于 2010-2-24 15:59:57

谢谢楼上

zhonghua_li 发表于 2010-2-24 16:08:21

每个任务堆栈分配大一点,别溢出了。

astudent 发表于 2010-2-24 20:08:44

多谢

astudent 发表于 2010-2-25 11:27:19

顶一下,希望用过的网友说一下经验。

MoMo_avr 发表于 2010-3-3 19:42:48

内存管理做的不行,动态删除和创建都不行,初始分配的时候要多留点,但是这样设计很浪费ram

ffxz 发表于 2010-3-3 20:18:54

回复【6楼】MoMo_avr
内存管理做的不行,动态删除和创建都不行,初始分配的时候要多留点,但是这样设计很浪费ram
-----------------------------------------------------------------------

限制这么多?看来这点上,RT-Thread很有先见之明,嘿嘿

MoMo_avr 发表于 2010-3-3 21:12:26

开始设计任务时候留多点,再debug时候要修改一个配置选项。

/* 此项用于DEBUG,来看是否有栈溢出,需要你自己编相应检查函数void vApplicationStackOverflowHook(xTaskHandle *pxTask, signed portCHAR *pcTaskName )*/
#define configCHECK_FOR_STACK_OVERFLOW      0

堆栈溢出是系统开发时候常有的事情。

一般我使用的是Heap_2.c,因为我是用stm32。但是这个管理内存方法效率真是不高。若任务频繁申请与释放“随机”大小的内存,RAM的分配会很糟糕哦,宏观看不再是一块一块的连续,而是碎片,这时再申请大容量的内存,虽然总容量足够,但由于全为碎片,却申请不到内存。大家设计要注意哦。

astudent 发表于 2010-3-5 14:35:39

谢谢

zhonghua_li 发表于 2010-4-22 09:34:56

自带的内存管理程序确实不是很好,但是绝对是代码量最小。
就两个函数,你可以用你满意的内存管理程序。
这个问题都是小问题。

shdzbsl 发表于 2010-5-18 18:33:27

同意ls,自带的比较小巧,功能简单。heap_3应该是功能强了,但又太占资源。自己编写或者移植个满意的就好。比如 ucosII的内存管理,看能移植过来不?

dr2001 发表于 2010-5-18 19:48:15

没什么发现需要特别注意的地方,本来代码量就不很大。不过,有时间的话,最好彻底审阅一下。
FreeRTOS的任务间通信机制比较少,如果有比较多的这方面应用,需要注意。

dr2001 发表于 2010-5-18 19:54:01

uCOS/II的基于分片的内存管理函数很多,直接拿来用就行。这个算法是没有碎片了,但是RAM空间浪费严重。伙伴算法的不知道RT-Thread或者别的OS有没有现成的,能借用,这个好点。

Malloc总会有碎片/容量浪费的问题的。。。

xiepengchenghn 发表于 2010-7-19 10:15:50

mark

lzgmcurd 发表于 2010-9-29 15:36:04

不知为什么在FreeRTOS中消耗的内存特别大,总共开两个任务每个任务分配4k RAM,每个任务实际需要的RAM约几百字节:

xTask=xTaskCreate( vCheckTask, ( signed portCHAR * ) "Check", configMINIMAL_STACK_SIZE+1024*4, NULL, tskIDLE_PRIORITY+3, NULL );
xTask=xTaskCreate( vLCDTask, ( signed portCHAR * ) "LCD", configMINIMAL_STACK_SIZE+1024*4, NULL, tskIDLE_PRIORITY+4, NULL );

分配给OS内核为32K RAM时任务运行就不正常:
#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 32 * 1024 ) )


分配给OS内核为50K RAM时任务运行正常:
#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 50 * 1024 ) )

感觉应该内核不需要分这么大的RAM,3种内存调度方式都试过,结果都差不多

lzgmcurd 发表于 2010-9-30 13:37:38

按正常的理解configTOTAL_HEAP_SIZE应该是所有任务分配的RAM总和加通讯变量空间加系统占用的几百字节就应该能正常运行才对

茶亦爽 发表于 2013-8-4 11:08:27

freertos做工程好不好?稳定吗?
页: [1]
查看完整版本: 使用FreeRTOS有没有特别注意的地方?