Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
嵌入式技术综合讨论
rt-thread call stack错乱,求解
发布于 2016-03-02 12:59:08 浏览:2726
订阅该版
12年开发的一个项目一直在使用rt-thread,因为客户要求修改产品功能。只在应用程序中增加了一行代码。却导到芯片一直复位。J-LINK跟踪发现call stack非常零乱,未按正常的调用逻辑在显示。然后将原来的RT-THREAD版本 V1.0.1更新到V2.0.2版本。程序能正常运行。但因为版本间的差异,原来我添加的设备不能正常工作了,跟踪发现当前版本需要调用rt_device_open函数。在代码中添加了open函数后,问题复原了,call stack一直在乱飞。 ```c void rt_hw_chip_24c08_init(void) { rt_err_t err; chip_24c08.type = RT_Device_Class_MTD; /* register rtc device */ chip_24c08.init = RT_NULL; chip_24c08.open = rt_chip_24c08_open; chip_24c08.close = RT_NULL; chip_24c08.read = rt_chip_24c08_read; chip_24c08.write = rt_chip_24c08_write; chip_24c08.control = RT_NULL; /* no private */ //chip_24c08.private = RT_NULL; I2C_GPIO_Config(); //rt_device_init(&chip_24c08); err = rt_device_register(&chip_24c08, "EEPROM", RT_DEVICE_FLAG_RDWR); if(err != RT_EOK) { rt_kprintf("register eeprom failed! "); } else { chip_24c08.ref_count = 1; //rt_device_open(&chip_24c08, RT_DEVICE_FLAG_RDWR); } return; } ``` 将添加的代码删除也不能再正常恢复工作。。。 程序一直在重启。 call stack 截图: https://oss-club.rt-thread.org/uploads/20220805/da39a3ee5e6b4b0d3255bfef95601890afd80709.png 在退出当前函数,接近退出上级函数时,看call stack的变化 https://oss-club.rt-thread.org/uploads/20220805/da39a3ee5e6b4b0d3255bfef95601890afd80709.png 硬件平台为: ARM Cortex-M3 STM32F107VCT6 编译器: https://oss-club.rt-thread.org/uploads/20220805/da39a3ee5e6b4b0d3255bfef95601890afd80709.png 程序编译结果大小为: ``` Build target 'RT-Thread STM32' linking... Program Size: Code=124356 RO-data=65336 RW-data=1084 ZI-data=46180 FromELF: creating hex file... ".obj tthread-stm32.axf" - 0 Error(s), 0 Warning(s). ``` 出现问题后,将`.sp/stm32f107/Libraries/CMSIS/CM3/DeviceSupport/ST/STM32F10x/startup/arm/startup_stm32f10x_cl.s`文件内部定义的栈也进行了加大 ```asm Stack_Size EQU 0x00000600 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 0x00000400 AREA HEAP, NOINIT, READWRITE, ALIGN=3 __heap_base Heap_Mem SPACE Heap_Size __heap_limit ``` 对创建的任务栈也进行了加大 ```c int rt_application_init() { rt_thread_t netsw_main_thread; rt_thread_t init_thread; #if (RT_THREAD_PRIORITY_MAX==32) init_thread = rt_thread_create("ETHTASK", rt_init_thread_entry, RT_NULL, 2560, 8, 20 ); #else init_thread = rt_thread_create("ETHTASK", rt_init_thread_entry, RT_NULL, 2048, 80, 20 ); #endif if (init_thread != RT_NULL) { rt_thread_startup(init_thread); } //network main thread netsw_main_thread = rt_thread_create("SWTASK", ekongyun_NetSwitch_main, RT_NULL, 512, 20, 10 ); if (netsw_main_thread != RT_NULL) { rt_thread_startup(netsw_main_thread); } return 0; } ``` 这个处理后,故障依旧! 面对这种问题,还应该做什么? 如何让这个故障不再重演呢?
查看更多
2
个回答
默认排序
按发布时间排序
Junping1982
2016-03-02
这家伙很懒,什么也没写!
控制台一直在打印系统LOGO,因为程序弹栈运行到rt_thread_exit()函数后,程序自动复位了 ``` | / - RT - Thread Operating System / | 2.0.2 build Mar 2 2016 2006 - 2015 Copyright by rt-thread team rtc had synchro... TCP/IP initialized! finsh>> | / - RT - Thread Operating System / | 2.0.2 build Mar 2 2016 2006 - 2015 Copyright by rt-thread team rtc had synchro... TCP/IP initialized! finsh>> | / - RT - Thread Operating System / | 2.0.2 build Mar 2 2016 2006 - 2015 Copyright by rt-thread team rtc had synchro... TCP/IP initialized! finsh>> ```
撰写答案
登录
注册新账号
关注者
0
被浏览
2.7k
关于作者
Junping1982
这家伙很懒,什么也没写!
提问
5
回答
10
被采纳
0
关注TA
发私信
相关问题
1
开新板块了! 迅速占领第一帖!
2
有想玩点阵做电子钟的没?手上有屏
3
LED点阵屏硬件保护研究笔记
4
USB相关、Android、Arduino
5
Arduino即将发布ARM平台新产品
6
关于开关电源的同步整流技术
7
rt_thread_wizard使用教程
8
[转]开源如何盈利
9
FM3系列MCU的IO操作笔记。
10
转一个xoolhaha 的寻一起开发的帖子
推荐文章
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
【NXP-MCXA153】 定时器驱动移植
2
GD32F450 看门狗驱动适配
3
【NXP-MCXA153】看门狗驱动移植
4
RT-Thread Studio V2.2.9 Release Note
5
CherryUSB的bootuf2配置
热门标签
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
SFUD
rt_mq_消息队列_msg_queue
msh
keil_MDK
ulog
C++_cpp
MicroPython
本月问答贡献
踩姑娘的小蘑菇
7
个答案
2
次被采纳
a1012112796
15
个答案
1
次被采纳
Ryan_CW
5
个答案
1
次被采纳
红枫
4
个答案
1
次被采纳
张世争
4
个答案
1
次被采纳
本月文章贡献
YZRD
3
篇文章
6
次点赞
catcatbing
3
篇文章
6
次点赞
lizimu
2
篇文章
8
次点赞
qq1078249029
2
篇文章
2
次点赞
xnosky
2
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部