Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
RT-Thread一般讨论
请教 线程栈 的相关问题
发布于 2012-12-23 18:32:49 浏览:3698
订阅该版
刚学习RT—Thread,第一感觉很好很强大!这个上手相对还是挺容易的,源码附带的BSP除应用程序稍作修改, 其余直接就用,不需要移植,但还是有不不少小问题: (1)、网站首页1.0.3版本在rtdef.h中的版本号并没有改过来,还是说本身那就是1.0.2的版本? (2)、各个线程的堆栈可以重叠吗?例如,在“哲学家就餐”例程中创建了5个相同的线程,外加额外的4个线程, 用list_thread()查看如下:(这9个线程有6个是自己手工创建的,其中led是静态线程和5个phd是动态创建的) 各线程堆栈位置都差不多,再看stack_size可发现全部都有重叠的部分。而且所指向的地址也不是实际的内存 地址,因为M3内核的ram区肯定不是0x0000xxxx这样的地址。 ```thread pri status sp stack size max used left tick error -------- ---- ------- ---------- ---------- ---------- ---------- --- tidle 0x1f ready 0x00000058 0x00000100 0x00000060 0x00000007 000 timer 0x04 suspend 0x00000078 0x00000200 0x00000078 0x00000009 000 tshell 0x14 ready 0x00000088 0x00000800 0x000001b0 0x00000002 000 phd 0x0a suspend 0x00000078 0x00000400 0x000000a4 0x00000258 000 phd 0x0a suspend 0x00000078 0x00000400 0x000000a4 0x00000258 000 phd 0x0a suspend 0x00000078 0x00000400 0x000000a4 0x00000256 000 phd 0x0a suspend 0x00000080 0x00000400 0x000000a4 0x00000258 000 phd 0x0a suspend 0x00000078 0x00000400 0x000000a4 0x00000258 000 led 0x14 suspend 0x00000078 0x00000200 0x00000078 0x00000005 000``` (3)、论坛里面哪里有各API的使用例子以及注意事项?只查看 [http://www.rt-thread.org/rt-thread/rttd ... index.html](http://www.rt-thread.org/rt-thread/rttdoc_1_0_0/index.html) 里面的内容,使用起来总感觉没底。熟悉了可能觉得没必要,但对于新手还是 很重要的。 谢谢各位了!
查看更多
6
个回答
默认排序
按发布时间排序
aozima
2012-12-23
调网络不抓包,调I2C等时序不上逻辑分析仪,就像电工不用万用表!多用整理的好的文字,比截图更省流量,还能在整理过程中思考。
1. svn trunk已修正 2. 请查看编译器链接后生成的map文件 3. 《RT-Thread编程指南》
celticzy
2012-12-23
这家伙很懒,什么也没写!
>1. svn trunk已修正 >2. 请查看编译器链接后生成的map文件 >3. 《RT-Thread编程指南》 --- 动态线程的堆栈不知道怎么看,但是静态线程的堆栈明显不对呀。 led_stack 0x200001d8 Data 512 application.o(.bss) led_thread 0x200003d8 Data 128 application.o(.bss)
prife
2012-12-23
这家伙很懒,什么也没写!
list_thread里打印的sp值是逻辑值,即相对于当前线程栈栈顶的偏移值。 实际打印sp语句 thread->stack_size + ((rt_uint32_t)thread->stack_addr - (rt_uint32_t)thread->sp 附上list_thread源码。 finsh/cmd.c中 ``` static long _list_thread(struct rt_list_node *list) { struct rt_thread *thread; struct rt_list_node *node; rt_uint8_t *ptr; rt_kprintf(" thread pri status sp stack size max used left tick error "); rt_kprintf("-------- ---- ------- ---------- ---------- ---------- ---------- --- "); for (node = list->next; node != list; node = node->next) { thread = rt_list_entry(node, struct rt_thread, list); rt_kprintf("%-8.*s 0x%02x", RT_NAME_MAX, thread->name, thread->current_priority); if (thread->stat == RT_THREAD_READY) rt_kprintf(" ready "); else if (thread->stat == RT_THREAD_SUSPEND) rt_kprintf(" suspend"); else if (thread->stat == RT_THREAD_INIT) rt_kprintf(" init "); else if (thread->stat == RT_THREAD_CLOSE) rt_kprintf(" close "); ptr = (rt_uint8_t*)thread->stack_addr; while (*ptr == '#')ptr ++; rt_kprintf(" 0x%08x 0x%08x 0x%08x 0x%08x %03d ", thread->stack_size + ((rt_uint32_t)thread->stack_addr - (rt_uint32_t)thread->sp), thread->stack_size, thread->stack_size - ((rt_uint32_t) ptr - (rt_uint32_t)thread->stack_addr), thread->remaining_tick, thread->error); } return 0; } ```
celticzy
2012-12-23
这家伙很懒,什么也没写!
>list_thread里打印的sp值是逻辑值,即相对于当前线程栈栈顶的偏移值。 --- 明白了,3x!
celticzy
2012-12-23
这家伙很懒,什么也没写!
>1. svn trunk已修正 >2. 请查看编译器链接后生成的map文件 >3. 《RT-Thread编程指南》 --- 下载了,《RT-Thread变成指南》,真是不错,赞!!
撰写答案
登录
注册新账号
关注者
0
被浏览
3.7k
关于作者
celticzy
这家伙很懒,什么也没写!
提问
14
回答
54
被采纳
0
关注TA
发私信
相关问题
1
有关动态模块加载的一篇论文
2
最近的调程序总结
3
晕掉了,这么久都不见layer2的踪影啊
4
继续K9ii的历程
5
[GUI相关] FreeType 2
6
[GUI相关]嵌入式系统中文输入法的设计
7
20081101 RT-Thread开发者聚会总结
8
嵌入式系统基础
9
linux2.4.19在at91rm9200 上的寄存器设置
10
[转]基于嵌入式Linux的通用触摸屏校准程序
推荐文章
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
rt-thread 小内存算法源码分析
2
env中添加lvgl软件包后,keil编译包--c99错误
3
【NXP-MCXA153】 定时器驱动移植
4
GD32F450 看门狗驱动适配
5
【NXP-MCXA153】看门狗驱动移植
热门标签
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在线升级
PWM
freemodbus
flash
cubemx
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
编译报错
Debug
rt_mq_消息队列_msg_queue
SFUD
keil_MDK
msh
ulog
C++_cpp
MicroPython
本月问答贡献
踩姑娘的小蘑菇
7
个答案
2
次被采纳
a1012112796
18
个答案
1
次被采纳
红枫
5
个答案
1
次被采纳
Ryan_CW
5
个答案
1
次被采纳
张世争
4
个答案
1
次被采纳
本月文章贡献
YZRD
3
篇文章
6
次点赞
catcatbing
3
篇文章
6
次点赞
lizimu
2
篇文章
11
次点赞
qq1078249029
2
篇文章
2
次点赞
xnosky
2
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部