掌握栈回溯意味着什么?

来源:公众号【鱼鹰谈单片机】

作者:鱼鹰Osprey

ID   :emOsprey

历时两个月(1/3),第一个完成电子表项目的学员出现了,并且顺利的掌握了栈回溯技巧,在工作中快速定位了一个任务异常挂起的bug,这种bug没有掌握方法的工程师可能需要调试好几天才可能解决,而且很多工程师对此没有头绪,只能靠笨办法一点点接近bug代码,而不是说通过栈信息直击 bug 代码现场。

4375be21e8d4fc24013885b2d7e4427e.png

实用功能与驱动

今年开课以来,鱼鹰也写了大量的驱动和实用功能:

7d24966f78310093c96847c9a450e74b.png

0d1e692be4b4bb91b1bd960a302df04e.png

几乎每个提交都是值得学习的知识点,并且每完成一个功能,都会对该功能的提交内容进行整理,防止引入无关内容,保证学员在查看提交信息时,是干净整洁的,非常方便学员的学习。

主要功能如下:

1、串口高效打印(fifo + DMA + print)打印一条语句是*微秒*级别的,
   因此也支持*中断*打印, 但不建议在中断中用浮点打印函数;并且最大化
   利用了缓存空间,另外在初始化串口前的打印信息,数据会缓存,不会丢失
2、任务栈和异常栈溢出同时检测,从此告别栈溢出风险
3、更新各种驱动,如 watchdog、adc、spi、i2c、oled、w25q32、eeprom、矩阵按键、独立按键、数码管 等
4、MDK 模拟环境,随时随地学 RTOS,同时对相关汇编代码进行了大量注释,并可随时查看任务切换过程
5、内部温度、电压采样,掌握芯片身体状况;
6、采用独创的 DTS 架构,轻松实现驱动底层硬件信息的修改,设备和驱动分离
7、IO 使用冲突检测机制
8、CmBacktrace异常调用栈信息打印
9、复位原因开机打印,告诉你因何复位,轻松掌握复位信息
10、轻松模拟 7 个 CDC 设备,并且因为移植了开源库TinyUSB,因此可以学习大量的应用,
    包括 lwip(c8t6 资源有限,无法测试)
11、该工程框架理论上可以方便的移植到各种单片机,具体细节后续整理
12、更多驱动将实现:NRF2401+、MCP2515(SPI转can)、sdio 等
    更多功能将实现 bootloader 升级 、cpu 使用率、fatfs 文件系统 等

8dfbdfdef5e23ba5bcd102ee4e864802.png

uCOSII 任务切换效果实时查看

以上所有功能都可以在 STM32F103C8T6 中实现,该开发板不到 10 RMB,加上调试器不到 20 RMB,低成本轻松学习各种技能。

硬件设备信息

驱动底层硬件信息,轻松实现多个相同设备的扩展,如下实现了 3 个串口设备:

4d113bbb4c6b15c298b03ab07faa15b9.png

模拟/硬件 spi 轻松切换,轻松更换 IO 信息:

22e151551c48de32d3f959b4db4b8e5d.png

工程打印信息

工程开机打印信息,包含编译时间、版本信息、ID 、RAM 、ROM 栈、bin 文件大小、可用 RAM、复位原因等各种信息,并通过进度条直观展现,非常大程度还原了当前环境的资源使用情况。

db14882fcfd6922f293a85f953e807b2.png

视频录制

在此期间,基本每周上午的时间都利用上了,也录制了大量的视频,上传到个人服务器(下载速度飞快):

509f9bad053309bcc740fe963a134a86.png

很多内容都在上一期给学员介绍过,如果没有介绍过,也会免费提供给一期的学员学习。

正因为感觉这种答疑重复又耗时,因此可能不再准备开展第 3 期,而是准备录制一些专题视频,如 RTOS、MDK 调试、USB 等系列,但是又怕无法控制盗版数量,所以一直在犹豫(如果真录制了,会无偿提供给学员学习)。

本来开班后不准备继续招学员的,但鉴于上述考虑,而有些道友可能有错过了之前的开课信息,因此如果对上述学习内容感兴趣的话,可以加鱼鹰私聊 EmbeddedOsprey,价格上会有一定的优惠(不再提供硬件,但会给参考购买链接,如果不买 STM32F4开发板,相关硬件大概在 50 RMB 左右)。

 f04513575b5e54e34b0d98837b42b207.jpeg

EmbeddedOsprey

该工程暂不开源,对此感兴趣的话,可自行尝试实现以上功能,看是否触及到你的知识盲区了9a6dd72b18ba78fcc0df1d7398ce5d31.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/648429.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【STM32】 独立看门狗配置方法

什么是看门狗 看门狗(watchdog)指的是一种监控系统或程序,用于定期检测和监控其他系统或程序的运行状态,并在出现问题或故障时采取相应的措施。它可以是硬件设备,也可以是软件程序。 在计算机领域中,看门狗…

全国青少年信息素养大赛历届复赛、国赛真题

由于2024年信息素养大赛初赛比较简单,特别是Scrath图形化编程和Python编程,八九分钟及半个小时内交卷的也多,100分及80分以上的比较多,(各赛区复赛晋级根据两个指标进行排名,初赛成绩和答题用时。首先根据分…

AC/DC电源模块:提供高质量的电力转换解决方案

BOSHIDA AC/DC电源模块:提供高质量的电力转换解决方案 AC/DC电源模块是一种电力转换器件,可以将交流电转换为直流电。它通常用于各种电子设备和系统中,提供高质量的电力转换解决方案。 AC/DC电源模块具有许多优点。首先,它能够提…

玩机进阶教程------固件中的分区表 gpt_backup0.bin gpt_both0.bin gpt_main0.bin有什么区别 怎么修改分区表【一】

不管是emmc还是ufs在官方的线刷包中都有分区表存在。分区表包含有各个分区的地址段落。如果你在fast模式刷入官方固件还解决不了系统问题。那有几率是分区表损坏。这种情况无论你怎么刷写分区是解决不了问题的。 此类话题在百度很难搜索到,大多都是讲分区表的类型 结构 等等,…

23种设计模式全面总结 | 快速复习(附PDF+MD版本)

本篇文章是对于23种设计模式的一个全面的总结,受限于文章篇幅无法对每个设计模式做到全面的解析,但几乎每个设计模式都提供了案例和类图结构,非常适合快速复习和在学习设计模式之前的全预习把握。 💡文章的 pdf markdown 版本可通…

驱动开发执行应用层时报ELF: not found,syntax error: unexpected “(“错误

问题: 原因:在跨平台的时候注意我们使用的编译器,我是因为没有没有交叉编译导致的。 出问题之前使用的是gcc test_01_normal.c -o test_01_normal生成的文件,导致,执行时报ELF这种问题。 解决办法:arm-li…

将本地项目上传到 gitee 仓库

1、创建 gitee 仓库 到 gitee 官网,新建仓库 配置新建仓库 完成仓库的创建 项目上传到仓库 上传项目需要安装git git官方下载地址:git下载地址 安装完成,前往本地项目所在文件夹,右击选择 Git Bash Here 刚下载完成需要配置G…

粤嵌—2024/5/13—删除排序链表中的重复元素(✔)

代码实现: /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/ struct ListNode* deleteDuplicates(struct ListNode *head) {if (head NULL || head->next NULL) {return head;}struct ListNode *…

【计算机毕业设计】基于SSM+Vue的新能源汽车在线租赁管理系统【源码+lw+部署文档】

摘 要 随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,新能源汽车在线租赁当然也不能排除在外。新能源汽车在线租赁是以实际运用为开发背景,运用软件工程开发方法&…

【Linux部署】【pig前端部署】Linux安装- docker/docker-compose/nginx (使用docker优雅部署nginx)

🌸🌸 Linux安装- docker/docker-compose/nginx 优雅部署 🌸🌸 一、一键安装jdk yum install -y java-1.8.0-openjdk.x86_64验证 二、安装docker yum list docker-ce --showduplicates | sort -rsudo yum install -y yum-utils …

Visual Studio和Visual Studio Code分清了? 都是IDE,可不是框架。

Visual Studio和VSCode两者都是 Microsoft 制造的IDE(集成开发环境)。尽管它们的名字相似,但它们的功能却大不相同。 一、什么是Visual Studio(VS) Visual Studio(简称VS)是由微软公司开发的一…

用go语言实现一个有界协程池

写在文章开头 本篇文章算是对go语言系列的一个收尾,通过go语言实现一个实现一个简单的有界协程池。 Hi,我是 sharkChili ,是个不断在硬核技术上作死的 java coder ,是 CSDN的博客专家 ,也是开源项目 Java Guide 的维护…

AIGC时代算法工程师的面试秘籍(2024.4.29-5.12第十三式) |【三年面试五年模拟】

写在前面 【三年面试五年模拟】旨在整理&挖掘AI算法工程师在实习/校招/社招时所需的干货知识点与面试方法,力求让读者在获得心仪offer的同时,增强技术基本面。也欢迎大家提出宝贵的优化建议,一起交流学习💪 欢迎大家关注Rocky…

引入安全生产培训云平台,实现“人人讲安全、个个会应急”

引入安全生产培训云平台,旨在全面提升企业及员工的安全意识与应急处理能力,通过数字化手段实现“人人讲安全、个个会应急”的目标。这一平台的构建和应用,不仅促进了安全知识的普及,还极大提高了培训的效率与效果。以下是该平台几…

Backend - postgresSQL DB 存储过程(数据库存储过程)

目录 一、存储过程的特性 (一)作用 (二)特点 (三)编码结构的区别 二、定时执行存储过程 三、2种编码结构 (一)函数结构 1. SQL代码 2. 举例 (1)例1-循…

邦之信短信分析:验证码短信、营销短信与通知短信的差异化解析

在数字通讯时代,短信已成为我们日常生活中不可或缺的一部分。其中,验证码短信、营销短信和通知短信各自扮演着不同的角色。今天,飞鸽将带您深入了解这三种短信类型之间的核心差异。 1. 验证码短信 验证码短信广泛应用于各类电商网站和…

【UE5.1 角色练习】07-AOE技能

目录 效果 步骤 一、准备技能动画 二、准备粒子特效 三、技能蓝图 四、相机震动 前言 在上一篇(【UE5.1 角色练习】06-角色发射火球-part2)基础上继续实现角色释放AOE技能的功能。 效果 步骤 一、准备技能动画 1. 在项目设置中添加一个操作映…

如何恢复已删除/丢失的照片/视频?

“嗨,我把我所有的世界杯照片和视频都存储在我的数码相机存储卡上。但是,当我将存储卡与计算机连接时,它会要求我格式化存储卡。我格式化了存储卡,但我所有的世界杯照片和视频都不见了。这对我来说是一场大灾难。是否有可能恢复丢…

[图解]产品经理创新模式01物流变成信息流

1 00:00:01,570 --> 00:00:04,120 有了现状的业务序列图 2 00:00:04,960 --> 00:00:08,490 我们就来改进我们的业务序列图了 3 00:00:08,580 --> 00:00:11,010 把我们要做的系统放进去,改进它 4 00:00:13,470 --> 00:00:15,260 怎么改进?…

【MATLAB】信号的熵

近似熵、样本熵、模糊熵、排列熵|、功率谱熵、奇异谱熵、能量熵、包络熵 代码内容: 获取代码请关注MATLAB科研小白的个人公众号(即文章下方二维码),并回复信号的熵本公众号致力于解决找代码难,写代码怵。各位有什么急需…