工具/软件:TI-RTOS
您好!
- 在 cc2650内创建任务时、可以选择在"MAU"(存储器分配单元)中为其提供堆栈大小。 内存分配单元有多少字节? 我假设它是1个字节 、但我不确定。
- 在 cc2650内创建两个或多个同时运行的任务时、是否所有任务都共享在其本地范围内声明的变量?
- 由于每个任务都有分配的堆栈大小、我假设对整个堆栈有最大的分配。 最大堆栈大小是多少?
- 在 cc2650内使用 malloc()时,我将假定内存被分配给堆。 我如何知道我可以向堆分配多少数据?
谢谢你
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具/软件:TI-RTOS
您好!
谢谢你
您好、Anthony、
[引用 user="Anthony Andreoli]]在 cc2650内创建任务时、可以选择在"MAU"(内存分配单元)中为其提供堆栈大小。 内存分配单元有多少字节? 我假设它是1个字节 、但我不确定。
对于某些器件、MAU 不是8位。 例如、在 C2000上、"字节"是16位。 我们使用 MAU (Miniminal 可寻址单元)、而不是使字节的含义过载。
[引用 user="Anthony Andreoli"]在 cc2650内创建两个或多个同时运行的任务时,所有任务是否共享在其本地范围内声明的变量?
否 局部变量是该线程的局部变量。 让我们看一下以下示例
Int someGlobal;
genericTaskEntryFxn()//在您有一个工作任务时很有用。 您可以传入 arg0和 arg1以告知任务要执行的操作。
{
内部条;
static int index;//只需使其完成!
(笑声)
}
任务1 EntryFxn (0)
{
Int foo;
(笑声)
}
假设您使用以下输入函数创建三个任务
任务1:任务1 EntryFxn
任务2:genericTaskEntryFxn
任务3:genericTaskEntryFxn
所有任务都可以访问 myGlobal。
只有 Task1可以访问 foo。 (实际上、它实际上是 Task1的入口函数任务1 EntryFxn 可以访问 foo)。
任务2和任务3的堆栈上都有其本地的条形图副本。 因此、如果 task2更改了 bar、它不会影响 task3的 bar
索引会变得有点棘手、因为它是静态的。 这实际上是一个仅对 genericTaskEntryFxn 可用的全局变量。 但是、由于任务2和任务3具有相同的整个函数、因此它们共享本地静态索引变量。 换句话说、如果任务2更改索引、任务3会看到新值。 有关更多详细信息、请参阅任何 C 手册中函数中的静态用法。
[引用 user="Anthony Andreoli]]由于每个任务都有分配的堆栈大小、我假设整个堆栈的分配最大。 最大堆栈大小是多少?
不是真的。 您只受您拥有的内存量的限制。
[引用 user="Anthony Andreoli]]在 cc2650内使用 malloc()时,我将假定内存已分配给堆。 我如何知道可以分配给堆的数据量?[/quot]
堆的大小在.cfg 文件中设置。 它可能使用链接器文件中定义的变量、也可能只是硬编码值。 您可以在 CCS->Tools->RTOS Object View (ROV)->HeapMem 中查看堆中(初始和当前)的内存量。
Todd