共1条
1/1 1 跳转至页
memPartFree and taskSuspend
Anyone know why memPartFree would ever call taskSuspend?
I am using standard malloc and free pairs, but occasionally I get a suspended task. When I use "tt" to get a trace, it shows free calling memPartFree and then memPartFree calling taskSuspend. If I knew what conditions caused memPartFree to call suspend I might be able to figure out whats happening.
Thanks,
bryan
Hello,
memPartFree and memPartAlloc can both suspend the calling task in cases where there is an allocation error (as long as the task is breakable - see taskLib for information on breakable and non-breakable tasks).
For the case where memPartFree does this, it is usually the result of corruption on your heap. There is a small header just in front of every allocated block that tells the partition library how big the block is, and also contains some pointer information needed to manage the partition. Corrupting one of these headers can cause memPartFree to suspend the task. Also, trying to free memory that was not allocated using memPartAlloc will do this.
If you don't like this behaviour, then you can change the options for the partition (see memPartLib's reference manual for information). Before doing that though, you need to work out what in your code is corrupting the heap! That can be a daunting task, especially since it is likely that the cause of the problem is the code using the block allocated just in front of the one you are trying to free, and the not the code that is being suspended.
You might want to look into some tools that could help you here if you don't find the problem quickly. RTI have a tool that does this (MemScope), and there are other companies out there with these tools too (check on comp.os.vxworks for other suggestions - this comes up on there every now and again).
HTH,
John...
关键词: memPartFree taskSuspend
共1条
1/1 1 跳转至页
回复
我要赚赏金打赏帖 |
|
|---|---|
| 基于ArduinoUNO开发板的AT24C02读写测试被打赏¥16元 | |
| TCS3472S传感器及其色彩检测被打赏¥19元 | |
| 【S32DS】S32K3 RTD7.0.1 HSE 组件配置报错问题解决被打赏¥27元 | |
| 【S32K3XX】MCME 启动 CORE1被打赏¥23元 | |
| AG32VH407下温度大气压传感器及其检测被打赏¥20元 | |
| AG32VH407下光照强度传感器BH1750及其检测被打赏¥22元 | |
| AT32VH407下使用温湿度传感器DHT22进行检测被打赏¥20元 | |
| DIY一个婴儿澡盆温度计被打赏¥34元 | |
| 【FreeRtos】FreeRtos+MPU region 配置规则被打赏¥23元 | |
| 【分享开发笔记,赚取电动螺丝刀】三分钟快速上手驱动墨水屏(ArduinoIDE)被打赏¥28元 | |
我要赚赏金
