FreeRTOS+cJSON记录自己一个愚蠢的问题
FreeRTOS+cJSON记录自己一个愚蠢的问题
这二天在整cJSON,用的是STM32L151C8的片子,首先上了FreeRTOS,妥妥的跑起来了,然后上了cJSON,去的官网下载的库
这个真心有点大。
然后就出现了问题,一直卡在线程中切换不了了。if( listCURRENT_LIST_LENGTH( &( pxReadyTasksLists[ tskIDLE_PRIORITY ] ) ) > ( UBaseType_t ) 1 ) { taskYIELD(); } else { mtCOVERAGE_TEST_MARKER(); }
就是卡死在这里了,也不知道原因。最开始以为是官方库有问题呢。
后来问人要了一份库,小了挺多的,还是卡死了(不应该啊,人家用的好好的。)仔细看了下代码,原来这个库把malloc的函数替换了。有思路了,应该是内存开辟不够的原因。
这个库的思想是替换cJSON中的内存申请函数,用mymalloc去管理,这样这部分的内存就单独管理了不用算在任务堆中了。
我这也没有cJSON具体的内存需要的计算方式。可以给大家一个大概的。
这个用库组合小于2k
这个2k不够,我开了4k大小
我觉得以后小型号的片子上这些大量内存的库还是要小心,最好不要用。(而且不要一位的上最新的,MD真心大的要命)