Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

The following configuration constants relate to the μC/IPerf OS port. For many OSs, the μC/IPerf task priority and stack size will need to be explicitly configured for the particular OS (consult the specific OS’s documentation for more information).

The priority of μC/IPerf task is dependent on the requirements of the application. For most applications, the priority for μC/IPerf task is typically higher than the priority for otherapplication tasks. 

For μC/OS-II and μC/OS-III, the following macros must be configured within iperf_cfg.h or any configuration file as long as it is included by iperf_cfg.h:

Constant
Description
Possible Values
IPERF_OS_CFG_TASK_PRIO Allows code to be generated to check arguments for functions that can be called by the user and, for functions which are internal but receive arguments from an API that the user can call.DEF_ENABLED or DEF_DISABLED
IPERF_OS_CFG_TASK_STK_SIZE   

Task Priorities

We recommend you configure the Network Protocol Stack task priorities & Network application task priorities as follows:

  • Network TX De-allocation task (highest priority)
  • Network application tasks, such as IPerf instance.
  • Network timer task
  • Network RX task (lowest  priority)

See Network Tasks Configuration for further information.

Task Stack Size

In general, the size of µC/IPerf task stacks is dependent on the CPU architecture and compiler used.

The only guaranteed method of determining the required task stack sizes is to calculate the maximum stack usage for each task. Obviously, the maximum stack usage for a task is the total stack usage along the task’s most-stack-greedy function path plus the (maximum) stack usage for interrupts. Note that the most-stack-greedy function path is not necessarily the longest or deepest function path.

The easiest and best method for calculating the maximum stack usage for any task/function should be performed statically by the compiler or by a static analysis tool since these can calculate function/task maximum stack usage based on the compiler’s actual code generation and optimization settings. So for optimal task stack configuration, we recommend to invest in a task stack calculator tool compatible with your build toolchain.

On ARM processors, experience has shown that configuring the task stacks to 1024 OS_STK entries (4,096 bytes) is sufficient for most applications. Certainly, the stack sizes may be examined and reduced accordingly once the run-time behavior of the device has been analyzed and additional stack space deemed to be unnecessary.

  • No labels