工具/软件:TI-RTOS
您好!
我已阅读内核用户指南- HeapBuff 部分。 它的读数为"在指定这些运行时参数时要小心。 blocksize 需要是最坏情况结构对齐大小的倍数。 bufSize 应该等于 blocksize * numBlocks。 最坏情况下的结构对齐取决于目标。 在具有32位架构的器件上、使用8字节对齐。 缓冲区的基地址 也应该与这个相同的大小对齐。"
我在 CC2650上运行、并假设它也使用"8字节对齐"[请对此进行评论]。 据我所知、MCU 将使用一个字符数组作为堆、在本例中、它将为1280字节宽(请参阅下面的代码)。 我不明白为什么必须选择块大小、 但我认为这意味着这个特定的代码是由一个用户编写的、该用户希望写入10个大小为128字节的对象-我假设这是因为我们谈到 HeapBuf、我们必须已经知道我们将要写入的数据的大小 (哪个应该对应于块大小?)。 如果我的假设不正确、请向我解释、因为我不理解为什么 必须分配块的数量才能开始。
最后、为了考虑"最坏情况下的结构对齐"、我们是否应该为 CC2650系统创建8的倍数的块大小? 感谢你的帮助!
HeapBuf_Params PRM;
static char buf[1280];
HeapBuf_handle 堆;
Error_Block EB;
Error_init (&EB);
HeapBuf_Params_init (&PRMS);
PRM.blocksize = 128;
PRM.numBlocks = 10;
PRM.buf =(ptr) buf;
PRM.bufSize = 1280;
Heap = HeapBuf_create (&PRMS、&EB);
if (heap = NULL){
System_abort ("HeapBuf create failed");
}