Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
RT-Thread一般讨论
rt_thread_priority_table的位置问题
发布于 2017-07-25 10:03:21 浏览:3288
订阅该版
[attach]0[/attach] 如图,rt_thread_priority_table表的位置被分配到0x20004538,而且stack的起始地址被分配到0x20004480,大小2048,导致程序在执行如图104行的时候,整个rt_thread_priority_table表被踩到,程序挂死。请问为什么rt_thread_priority_table表分配的位置不正常?还是stack设置的不正常? ![捕获.JPG](https://oss-club.rt-thread.org/uploads/9476_fc2964393202aaae2fb6c2b4ba9b79c2.jpg) ![捕获2.JPG](https://oss-club.rt-thread.org/uploads/9476_c99416866100f4422cd4391d3b230c56.jpg) ![捕获3.JPG](https://oss-club.rt-thread.org/uploads/9476_d3caf836e87da0915d2ec468828c5251.jpg) ![捕获4.JPG](https://oss-club.rt-thread.org/uploads/9476_a693b52afe9651ab630eeac65e8045b0.jpg)
查看更多
9
个回答
默认排序
按发布时间排序
bernard
2017-07-25
这家伙很懒,什么也没写!
这个估计得问编译器、链接器吧
aozima
2017-07-25
调网络不抓包,调I2C等时序不上逻辑分析仪,就像电工不用万用表!多用整理的好的文字,比截图更省流量,还能在整理过程中思考。
rt_thread_priority_table 是由编译器在链接时分配的 你这 _rt_thread_init 的栈,是由 rt_thread_init 而来? 还是 rt_thread_create? 如果是 rt_thread_create,那么检查你的heap init时的起止地址,可能分配不当,造成重叠了。 建议打印heap的地址,并对照map文件检查。
liuxueuestc
2017-07-25
这家伙很懒,什么也没写!
>rt_thread_priority_table 是由编译器在链接时分配的 > >你这 _rt_thread_init 的栈,是由 rt_thread_init 而来? 还是 rt_thread_create? >如果是 rt_thread_create,那么检查你的heap init时的起止地址,可能分配不当,造成重叠了。 >建议打印heap的地址,并对照map文件检查。 --- 这个栈是rt_thread_create来的,rt_kernal_malloc分配stack后,就直接是那个地址了,好像heap不影响的。
grissiom
2017-07-25
这家伙很懒,什么也没写!
HEAP 的范围配置的不对?
liuxueuestc
2017-07-26
这家伙很懒,什么也没写!
>HEAP 的范围配置的不对? --- 上面一楼里有个图有heap的位置,0x200012b8到0x200022b8,好像还没有到rt_thread_priority_table的位置。 另外请问一下各位大神,map文件里CStack的大小与rt_thread_create函数里设置stack大小有什么关系么?是不是所有thread的stack加起来要小于CStack?
aozima
2017-07-26
调网络不抓包,调I2C等时序不上逻辑分析仪,就像电工不用万用表!多用整理的好的文字,比截图更省流量,还能在整理过程中思考。
>map文件里CStack的大小 --- 是系统启动前,以及系统启动后中断ISR使用的。 一般设置512-1K map中的HEAP无用,系统中应该使用rt_malloc,编译器带的malloc也应该批向rt_malloc heap_init时有start和end,请检查这两个值是否正确。 start自动取链接后的最末,自动浮动(请检查确认是否有问题) end取SRAM的末尾,需要手动设置。
liuxueuestc
2017-07-26
这家伙很懒,什么也没写!
>>map文件里CStack的大小 > >--- > > >是系统启动前,以及系统启动后中断ISR使用的。 >一般设置512-1K > > >map中的HEAP无用,系统中应该使用rt_malloc,编译器带的malloc也应该批向rt_malloc >heap_init时有start和end,请检查这两个值是否正确。 > >start自动取链接后的最末,自动浮动(请检查确认是否有问题) >end取SRAM的末尾,需要手动设置。 --- 非常感谢你的悉心指导 这块好像确实有点问题,如图,heap的起始地址是0x200012b8,大小是0x1ED30,好像确实太大了。不过我使用的是iar,这个是rt_system_heap_init(__segment_end("HEAP"), (void*)STM32_SRAM_END);函数分配的啊,难道这个系统函数有问题么? [attach]2804[/attach]
aozima
2017-07-27
调网络不抓包,调I2C等时序不上逻辑分析仪,就像电工不用万用表!多用整理的好的文字,比截图更省流量,还能在整理过程中思考。
楼主的 rt_thread_priority_table 在0x20003538 而 map文件中,HEAP末尾地址在 0x200022b8 malloc出来的地址heap_ptr还是从 0x20012b8 这必然是重叠的 很明显楼主没有使用RT-Thread的提供的链接脚本把HEAP放在最后。 请参考 /bsp/stm32f10x/stm32f10x_flash.icf 最后一行的 last block HEAP 何不跟进去看下 rt_system_heap_init 传进去的 start和end是否重叠了? 参考链接:
topic1933.html
liuxueuestc
2017-07-27
这家伙很懒,什么也没写!
>楼主的 rt_thread_priority_table 在0x20003538 >而 map文件中,HEAP末尾地址在 0x200022b8 >malloc出来的地址heap_ptr还是从 0x20012b8 >这必然是重叠的 > >很明显楼主没有使用RT-Thread的提供的链接脚本把HEAP放在最后。 >请参考 /bsp/stm32f10x/stm32f10x_flash.icf 最后一行的 >last block HEAP > >何不跟进去看下 rt_system_heap_init 传进去的 start和end是否重叠了? > >参考链接: >
topic1933.html
--- 多谢大神救命,果然就是这个问题,看来原来跑对了都是侥幸。 不过还有一个问题,就是我使用的是F207芯片,我刚下了一个干净的源文件包,在F20x的bsp里面的icf是stm32_rom.icf,这个文件里面最后一行是place in RAM_region { readwrite, block CSTACK, block HEAP };确实没有last,不知道这个是个问题么?
撰写答案
登录
注册新账号
关注者
0
被浏览
3.3k
关于作者
liuxueuestc
这家伙很懒,什么也没写!
提问
4
回答
10
被采纳
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使用cherryusb实现虚拟串口
2
《C++20 图形界面程序:速度与渲染效率的双重优化秘籍》
3
《原子操作:程序世界里的“最小魔法单位”解析》
4
《C++设计模式:重塑游戏角色系统类结构的秘籍》
5
rt-thread官方usb驱动之虚拟串口
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
ART-Pi
FinSH
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
WIZnet_W5500
ota在线升级
UART
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
msh
SFUD
rt_mq_消息队列_msg_queue
keil_MDK
at_device
ulog
C++_cpp
本月问答贡献
踩姑娘的小蘑菇
6
个答案
3
次被采纳
张世争
8
个答案
2
次被采纳
rv666
5
个答案
2
次被采纳
用户名由3_15位
11
个答案
1
次被采纳
KunYi
6
个答案
1
次被采纳
本月文章贡献
出出啊
1
篇文章
3
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
1
次点赞
crystal266
2
篇文章
2
次点赞
whj467467222
2
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部