全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > 嵌入式技术 >

线程栈分配惹的祸?系统异常这样解决!

时间:2024-10-31 08:08

人气:

作者:admin

标签: 嵌入式  线程  RT-Thread 

导读:嵌入式操作系统通常被认为有一定的学习门槛,为帮助嵌入式工程师降低RTOS的使用难度,RT-Thread提供了文档教学中心、视频中心、论坛交流等多种支持。然而在实际项目中,开发者们仍...

嵌入式操作系统通常被认为有一定的学习门槛,为帮助嵌入式工程师降低RTOS的使用难度,RT-Thread提供了文档教学中心视频中心、论坛交流等多种支持。然而在实际项目中,开发者们仍可能会遇到各种挑战,尤其当项目规模扩大、代码复杂度增加时,各种“难以捉摸”的bug便会频繁出现,令工程师们一头雾水,不知从何入手。这些问题可能涉及内存管理、任务调度、栈溢出等复杂内容。

这些问题是否也在你的项目中时常困扰着你?

51ac409a-971c-11ef-8084-92fbcf53809c.png

系统莫名其妙进入Hardfault

系统运行过程线程异常挂起

不正确使用内核API导致系统异常

系统运行过程发生断言

不清楚某些系统组件或软件包的使用方法

线程栈分配不合理导致系统异常

应用代码不规范导致系统异常

如何修改Scons脚本,Kconfig...

...

作为初学者非常容易遇到的一个问题是:线程栈分配不合理导致系统异常

1

提出问题

刚开始接触RT-Thread的小伙伴在创建线程时,常常会遇到下述问题:

51d1a9ac-971c-11ef-8084-92fbcf53809c.png

2

分析问题

从终端输出的信息我们可以获取到的关键信息有

1) 在发生异常的线程为entry

51dd8970-971c-11ef-8084-92fbcf53809c.png

2) 该线程的栈空间为0x100

51eac478-971c-11ef-8084-92fbcf53809c.png

3) SCB_CFSR_UFSR:0x01 UNDEFINSTR

UNDEFINSTR通常是PC指针指向非法地址执行指令导致,通过1)点可以定位到问题发生在entry线程,第2)点可以看出entry线程的栈空间有点小,因此初步定位线程栈溢出。

3

解决问题

最终找到问题线程栈太小导致线程栈溢出,同时回到线程入口函数可以发现在线程中定义了一个很大的数组导致了线程栈的溢出,进一步证明了上述的问题。

解决问题就是依据经验和工具进行分析尝试的一个过程。

1)将线程栈改大一些,entry线程正常运行。

2)使能内核的堆栈溢出检查,运行输出msh >thread:entry stack overflow

最终找到问题线程栈太小导致线程栈溢出,同时回到线程入口函数可以发现在线程中定义了一个很大的数组导致了线程栈的溢出,进一步证明了上述的问题。

RT-Thread开班啦,技术专家团队手把手带您上手RT-Thread嵌入式操作系统,我们开放了为期三天的嵌入式操作系统专业培训班!本次培训将会深入讲解RT-Thread嵌入式实时操作系统的核心概念、实战技巧、应用场景、嵌入式开发疑难杂症分析与答疑!

培训时间

2024/11/9-2024/11/11(3天时间)

本次培训是付费培训,培训费用:2918元 - 含税 (3日),提供培训手册+硬件平台。培训费用同时也包含午餐。

培训内容

时间

培训内容

2024/11/9

RTOS内核

1. 内核原理

1.1 RT-Thread系统启动流程

1.2 RT-Thread线程与线程切换学习

1.3 RT-Thread线程与中断切换学习

2. 应用编程

2.1 RT-Thread多线程编程

(1)RT-Thread多线程抢占学习

(2)RT-Thread多线程轮询学习

(3)RT-Thread多线程调试实践

2.2 RT-Thread线程同步

(1)RT-Thread信号量原理,调试与应用实践

(2)RT-Thread互斥量原理,调试与应用实践

(3)RT-Thread事件集原理,调试与应用实践

2.3 RT-Thread线程通信

(1)RT-Thread消息邮箱原理,调试与应用实践

(2)RT-Thread消息队列原理,调试与应用实践

3. RT-Thread动态内存管理

3.1 RT-Thread动态内存管理原理介绍

3.2 RT-Thread动态内存应用实践

2024/11/10

RT-Thread I/O设备驱动

1. RT-Thread构建与配置系统

1.1 Kconfig配置系统

(1) Kconfig工作机制

(2) Kconfig语法介绍

1.2 Scons构建系统

(1) Scons语法介绍

(2) Scons使用示例

1.3 Env工具

(1) Env常用命令使用示例

2. RT-Thread I/O设备框架

2.1 I/O设备框架原理

(1) 原厂驱动库、RTT HAL库驱动、RTT驱动框架关系介绍

2.2 I/O设备框架应用实践

(1) 虚拟驱动移植实战

3. RT-Thread 设备驱动框架

3.1 PIN设备

(1) PIN设备驱动框架原理

(2) PIN设备驱动应用实践

3.2 UART设备

(1) UART设备驱动框架原理

(2) UART设备驱动应用实践

3.3 I2C设备

(1) I2C设备驱动框架原理

(2) I2C设备驱动应用实践

4. RT-Thread设备驱动实战

4.1 串口设备组件

(1) 串口类设备组件介绍

(2) 串口设备驱动应用实践

4.2 I2C设备驱动

(1) I2C Tools软件包介绍

(2) I2C设备驱动应用实践

2024/11/11

RT-Thread组件与系统问题排查实践

1. 系统常见问题排查

(1)基础问题排查方法与实践示例

(2)内存泄漏问题排查方法与实践示例

(3)栈溢出问题排查方法与实践示例

(4)线程死锁问题排查方法与实践示例

(5)HardFault问题排查方法与实践示例

2. 组件分析与实践

(1)MQTT软件包原理与应用实践

(2)SAL抽象层原理与应用实践

(3)传感器软件包应用实践

(4)其他相关软件包应用实践

3. 综合实践

综合所学内容,手把手从零实现一个IoT设备。

培训地点

深圳福田区天安数码城天吉大厦AB座7楼7B2知了会议中心M6会议室

地铁:1、7、9、11号线到达车公庙地铁站,可从G口出,右转步行100米左右到达知了会议中心。

培训证书

培训结束后通过考核的将可以获得RT-Thread出具的结业证书和中国电子学会出具的职业技能证书-RT-Thread操作系统应用开发

5254a974-971c-11ef-8084-92fbcf53809c.png

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信