Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
RT-Thread Nano
线程上下文调度切换_context
RTT-NANO 3.1.3 线程切换问题
发布于 2021-02-23 10:36:54 浏览:1393
订阅该版
rtt nano长时间运行,只有main线程运行,其它线程无法执行; 复现步骤: 长时间运行,7,8小时左右; 硬件配置:HC32L130 软件环境:KEIL,RT-THREAD NANO 3.1.3 尝试:1,增加Stack_Size,怀疑是栈不够,导致PendSV_Handler无法调度,结果是还是会出现; 1,各线程中有使用rt_thread_mdelay 2,访问共享资源用到 ``` level = rt_hw_interrupt_disable(); rt_hw_interrupt_enable(level); ``` ########################################################## 线程信息 ########################################################## ``` thread pri status sp stack size max used left tick error -------- --- ------- ---------- ---------- ------ ---------- --- mbss 2 ready 0x000000d8 0x00000200 57% 0x0000000a 000 mbsr 3 ready 0x00000098 0x00000300 60% 0x00000007 000 tidle 7 ready 0x00000058 0x00000100 34% 0x00000005 000 timer 4 suspend 0x00000054 0x00000080 65% 0x0000000a 000 main 2 ready 0x000000e8 0x00000300 57% 0x00000007 000 --- ------- ---------- ---------- ------ ---------- --- total memory: 3824 used memory : 2848 maximum allocated memory: 2940 --- ------- ---------- ---------- ------ ---------- --- ``` ########################################################## keil内存配置 ########################################################## ``` ; Stack Configuration ; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> Stack_Size EQU 0x00000400 AREA STACK, NOINIT, READWRITE, ALIGN=3 Stack_Mem SPACE Stack_Size __initial_sp ; Heap Configuration ; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> Heap_Size EQU 0x00000000 AREA HEAP, NOINIT, READWRITE, ALIGN=3 __heap_base Heap_Mem SPACE Heap_Size __heap_limit PRESERVE8 THUMB ``` ########################################################## ########################################################## 内核配置 ########################################################## ``` /* RT-Thread config file */ #ifndef __RTTHREAD_CFG_H__ #define __RTTHREAD_CFG_H__ #if defined(__CC_ARM) || defined(__CLANG_ARM) #include "RTE_Components.h" #if defined(RTE_USING_FINSH) #define RT_USING_FINSH #endif //RTE_USING_FINSH #endif //(__CC_ARM) || (__CLANG_ARM) // <<< Use Configuration Wizard in Context Menu >>> //
Basic Configuration //
Maximal level of thread priority <8-256> //
Default: 32 #define RT_THREAD_PRIORITY_MAX 8 //
OS tick per second //
Default: 1000 (1ms) #define RT_TICK_PER_SECOND 1000 //
Alignment size for CPU architecture data access //
Default: 4 #define RT_ALIGN_SIZE 4 //
the max length of object name<2-16> //
Default: 8 #define RT_NAME_MAX 8 //
Using RT-Thread components initialization //
Using RT-Thread components initialization #define RT_USING_COMPONENTS_INIT // #define RT_USING_USER_MAIN //
the stack size of main thread<1-4086> //
Default: 512 #define RT_MAIN_THREAD_STACK_SIZE 768 //
//
Debug Configuration //
enable kernel debug configuration //
Default: enable kernel debug configuration //#define RT_DEBUG // //
enable components initialization debug configuration<0-1> //
Default: 0 #define RT_DEBUG_INIT 0 //
thread stack over flow detect //
Diable Thread stack over flow detect //#define RT_USING_OVERFLOW_CHECK // //
//
Hook Configuration //
using hook //
using hook //#define RT_USING_HOOK // //
using idle hook //
using idle hook //#define RT_USING_IDLE_HOOK // //
//
Software timers Configuration //
Enables user timers #define RT_USING_TIMER_SOFT 1 #if RT_USING_TIMER_SOFT == 0 #undef RT_USING_TIMER_SOFT #endif //
The priority level of timer thread <0-31> //
Default: 4 #define RT_TIMER_THREAD_PRIO 4 //
The stack size of timer thread <0-8192> //
Default: 512 #define RT_TIMER_THREAD_STACK_SIZE 128 //
//
IPC(Inter-process communication) Configuration //
Using Semaphore //
Using Semaphore #define RT_USING_SEMAPHORE // //
Using Mutex //
Using Mutex #define RT_USING_MUTEX // //
Using Event //
Using Event #define RT_USING_EVENT // //
Using MailBox //
Using MailBox #define RT_USING_MAILBOX // //
Using Message Queue //
Using Message Queue #define RT_USING_MESSAGEQUEUE // //
//
Memory Management Configuration //
Dynamic Heap Management //
Dynamic Heap Management #define RT_USING_HEAP // //
using small memory //
using small memory #define RT_USING_SMALL_MEM // //
using tiny size of memory //
using tiny size of memory #define RT_USING_TINY_SIZE // //
//
Console Configuration //
Using console //
Using console #define RT_USING_CONSOLE // //
the buffer size of console <1-1024> //
the buffer size of console //
Default: 128 (128Byte) #define RT_CONSOLEBUF_SIZE 128 //
//
RT Finsh Configuration //
Enables Finsh //#define RT_USING_FINSH #if defined(RT_USING_FINSH) #define FINSH_USING_MSH #define FINSH_USING_MSH_ONLY //
Finsh Configuration //
the priority of finsh thread <1-7> //
the priority of finsh thread //
Default: 6 #define __FINSH_THREAD_PRIORITY 0 #define FINSH_THREAD_PRIORITY (RT_THREAD_PRIORITY_MAX / 8 * __FINSH_THREAD_PRIORITY + 1) //
the stack of finsh thread <1-4096> //
the stack of finsh thread //
Default: 4096 (4096Byte) #define FINSH_THREAD_STACK_SIZE 800 //
the history lines of finsh thread <1-32> //
the history lines of finsh thread //
Default: 5 #define FINSH_HISTORY_LINES 1 #define FINSH_USING_SYMTAB //
#endif // <<< end of configuration section >>> #endif ```
查看更多
1
个回答
默认排序
按发布时间排序
我夏了夏天
认证专家
2021-02-25
Life isn't about finding yourself, life is about creating yourself.
看起来 main 线程的优先级是最高的,在确定系统没有跑死的情况下,应当检查 main 线程是否能合理的符合预期地让出 CPU 运行权。
撰写答案
登录
注册新账号
关注者
0
被浏览
1.4k
关于作者
lufeicjw
这家伙很懒,什么也没写!
提问
1
回答
0
被采纳
0
关注TA
发私信
相关问题
1
求高手指点,RTThread下nanosleep()函数功能如何实现?在线等啊
2
RTT1.2.2在新塘Nano130KE3BN的移植中始终出现栈溢出的问题
3
官方能否出一个nano在mdk下移植finsh到stm32的教程
4
从裸机开始,创建一个RT-Thread Nano系统工程
5
Nano版如何启用shell
6
项目从RTT 2.x NANO移植到 RTT 3.x ENV 环境
7
nano 版本有没有集成到 IAR 中啊?
8
关于MDK5的RT-THREAD NANO中添加MSH组件的例程
9
rtt_nano版本,源代码在哪里下载啊?
10
RTT Nano 在keil 使用C++11 的问题
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
在用clangd开发RTT吗,快来试试如何简单获得清晰干净的工作区
2
GD32F450 片内 flash驱动适配
3
STM32H7R7运行CherryUSB
4
RT-Smart首次线下培训,锁定2024 RT-Thread开发者大会!
5
使用RC522软件包驱动FM1722
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
UART
WIZnet_W5500
ota在线升级
freemodbus
PWM
flash
cubemx
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
flashDB
GD32
socket
中断
编译报错
Debug
SFUD
rt_mq_消息队列_msg_queue
msh
keil_MDK
ulog
C++_cpp
MicroPython
本月问答贡献
a1012112796
10
个答案
1
次被采纳
踩姑娘的小蘑菇
4
个答案
1
次被采纳
红枫
4
个答案
1
次被采纳
张世争
4
个答案
1
次被采纳
Ryan_CW
4
个答案
1
次被采纳
本月文章贡献
catcatbing
3
篇文章
6
次点赞
YZRD
2
篇文章
5
次点赞
qq1078249029
2
篇文章
2
次点赞
xnosky
2
篇文章
1
次点赞
Woshizhapuren
1
篇文章
5
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部