Edit online

栈大小配置

8 Nov 2024
Read time: 1 minute(s)

中断栈

Luban-Lite 中断服务程序运行在独立的栈中,大小可以在 menuconfig 配置界面中修改:
Board options  --->
    Mem Options  --->
        (4096) Interrupt stack siz      // 大小为 4k

RT-Thread 线程栈

Kernel 为 RT-Thread 时,几个典型线程的栈空间大小的配置:

  • main 线程栈大小
    Rt-Thread options  --->
        RT-Thread Components  --->
            (2048) Set main thread stack size  // 大小为 2k
  • idle 线程栈大小

    Rt-Thread options  --->
        RT-Thread Kernel  --->
            (2048) The stack size of idle thread                // 大小为 2k
            (4) Alignment size for CPU architecture data access // CONFIG_RT_ALIGN_SIZE
    重要:

    在使用系统 printf 打印浮点时,要求线程堆栈为 8 字节对齐。这时 CONFIG_RT_ALIGN_SIZE 需要设置为 8,同时线程栈大小也是 8 的整数倍。

  • Shell 线程栈大小

    Rt-Thread options  --->
        RT-Thread Components  --->
            MSH: command shell  --->
                (4096) The stack size for thread  // 大小为 4k

Baremetal 用户栈

裸机环境时只有一个用户栈,栈大小如下配置:
Baremetal options  --->
    (8192) Main loop stack                    // AIC_NORMALSTACK_SIZE, 大小为 8k
重要:

在使用系统 printf 打印浮点时,要求线程堆栈为 8 字节对齐。这时 AIC_NORMALSTACK_SIZE 需要设置为 8 的整数倍。