1897_野火FreeRTOS教程阅读笔记_链表

news2024/9/23 17:21:41

1897_野火FreeRTOS教程阅读笔记_链表

全部学习汇总: g_FreeRTOS: FreeRTOS学习笔记 (gitee.com)

之前我自己通过直接啃代码的方式对FreeRTOS也算是有了一点理解了,这次趁着些许闲暇翻看一下野火的FreeRTOS教程。一者算是一种复习;二者可能对自己理解上的偏差进行纠正;三者应该可以学到一些自己没有解读出来的内容。

我个人曾经喜欢用TAB,至少喜欢TAB操作。但是,最近几年把这个习惯彻底改掉了,主要以4个空格为主。梳理的这个观点也是我自己决心改成如此的一个很重要的原因。

书中有一段关于裸机以及带有多任务操作系统的一段描述,我是直接跳过了。关于这部分,很多教程中都会讲一下,但是所涉及到的内容应该是大同小异。虽然,不同的人介绍的时候可能选择不同的类比模型,但是无非还是前后台以及OS在原理概念上的差异。直接面对设计,弄懂根本原因更好。

链表是学习FreeRTOS的基础,其实这也是很多软件设计的基础。单向链表可以理解为只能够判断自己的后继,无法直接判断自己的前驱的链表设计。而双向链表则可以直接判断自己的前驱以及后继。从实用性角度来说,显然双向链表的设计要好很多。我印象中看过一篇文章中提过,双向链表是高德纳老爷子发明的,不知道是否真是如此。

这个是FreeRTOS的链表节点的数据结构定义,主要包含如下几个要素:

  • xItemValue,这个如果只是了解链表概念的话可以先不去了解,并不是一个链表必然要有一个数据信息。
  • 前驱
  • 后继
  • 节点内核对象,我觉得书中这个描述非常好,更加明确了一下这个主要是针对内核本身设计的。节点本身只是一组管理信息,包含了一系列的映射关系。真正需要处理的对象是需要这种映射关系去寻找的。
  • 从属于哪一个链表。

这是岔出去的一个话题点。关于tick的数据宽度,FreeRTOS支持16bit和32bit。不过,对于常用的32bit MCU来说的话,似乎没有什么理由得“让步”使用16bit。

对于链表节点的初始化,只是让这个节点与系统中的链表回到一种正交的关系。因此,只需要标记该节点暂时不属于任何链表即可。在插入一个链表的时候,明确这部分从属信息,进而明确前驱以及后继的关系。当然,对于FreeRTOS来说,还有一个更重要的信息需要在节点插入链表的时候明确,那就是所映射的内核管理对象。。

根节点没有采用通用的节点数据结构,算是有自己的独到思考吧。在根节点上,记录了链表的节点数目、遍历所用的指针以及链表的结束节点。

关于根节点的初始化,我觉得示意图可能还不如文字描述来的简洁。这个初始化,把指针指向了最后一个节点,然后把节点数目设置为一个无效值。对于结束的节点来说,前驱和后继全都设置为本身。节点的数目,由于没有有效的数据存在设置为0。

这样的模型其实是很好理解的,但是从表达内容上来说,我觉得似乎不够精简。在理解这一套设计的作为目的的时候,可以现以理解为主。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【数据结构】二叉树的顺序结构及链式结构

目录 1.树的概念及结构 1.1树的概念 1.2树的相关概念 ​编辑 1.3树的表示 1.4树在实际中的运用(表示文件系统的目录树结构) 2.二叉树概念及结构 2.1二叉树的概念 2.2现实中的二叉树 ​编辑 2.3特殊的二叉树 2.4二叉树的性质 2.5二叉树的存储结…

手把手教你设计接口自动化测试用例:提取接口信息并分析

随着市场需求的变化,大部分企业在招聘测试人员时,都会提出接口自动化测试的相关要求,为什么会这样呢? 目前,软件构架基本上都是前后端分离的,软件的主要功能由服务端提供。从整个软件测试市场来看&#xf…

政安晨:快速学会~机器学习的Pandas数据技能(三)(重命名与合并)

使用机器学习处理数据的第一步就得先理解它,咱们现在就帮助它们一起理解起来。 (本篇文章这次换一套数据集,数据文件可以在文章头部下载,并保存至您的虚拟环境的目录中) 不知道如何搭建环境的小伙伴请看我机器学习笔…

超九成飘红,银行成开年唯一逆势上涨板块

2024年开年以来,A股银行板块表现令人瞩目。 Choice数据显示,按照申万(2021,仅A股)分类,2024年开年以来,银行板块是唯一一个逆势上涨板块,平均涨幅为6.53%。 年内银行股近乎全线上涨…

【C语言期末】商品管理系统

本文资源:https://download.csdn.net/download/weixin_47040861/88820155 1.题目要求 商品管理系统 商品信息包括:包括编号、类别、名称、价格、折扣比例、生产时间 、存货数量等要求:1、信息首先保存在文件中,然后打开文件进行…

GPT4技术报告介绍

GPT4_Technical_Report_zh 我们创建了 GPT-4,这是 OpenAI 努力扩展深度学习的最新里程碑。GPT-4 是一个大型多模态模型(接受图像和文本输入,发出文本输出),虽然在许多现实世界场景中的能力不如人类,但在各…

Netty的序列化之MessagePack

目录 引入MessagePack依赖 实体类 服务端代码 客户端代码 执行结果 引入MessagePack依赖 <dependency><groupId>org.msgpack</groupId><artifactId>msgpack</artifactId><version>0.6.12</version></dependency> 实体类…

Stable Diffusion 模型下载:GhostMix(幽灵混合)

文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八案例九案例十 下载地址 模型介绍 GhostMix 是绝对让你惊艳的模型&#xff0c;也是自己认为现在最强的2.5D模型。我认为模型的更新应该是基于现有的画面整体不大变的前提下&#xff0c;提高模型的成…

springboot167基于springboot的医院后台管理系统的设计与实现

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的 适用于计算机类毕业设计&#xff0c;课程设计参考与学习用途。仅供学习参考&#xff0c; 不得用于商业或者非法用途&#xff0c;否则&#xff0c;一切后果请用户自负。 看运行截图看 第五章 第四章 获取资料方式 **项…

大数据术语系列(1)——COW和MOR,我如何使用chatgpt通俗易懂地理解了hudi这两种表类型

从传统数据库到大数据的转变&#xff0c;首当其冲的是各种术语的理解。 所以我与chatgpt发生了一系列对话&#xff0c;以便于我能快速理解这些术语。 我先把汇总的结果放在前边&#xff0c;后边会一步步地来说明我是如何获取这些信息的。前边我也发过一些关于chatgpt提示词相…

图像处理入门:OpenCV的基础用法解析

图像处理入门&#xff1a;OpenCV的基础用法解析 引言OpenCV的初步了解深入理解OpenCV&#xff1a;计算机视觉的开源解决方案什么是OpenCV&#xff1f;OpenCV的主要功能1. 图像处理2. 图像分析3. 结构分析和形状描述4. 动态分析5. 三维重建6. 机器学习7. 目标检测 OpenCV的应用场…

Go 语言中如何大小端字节序?int 转 byte 是如何进行的?

嗨&#xff0c;大家好&#xff01;我是波罗学。 本文是系列文章 Go 技巧第十五篇&#xff0c;系列文章查看&#xff1a;Go 语言技巧。 我们先看这样一个问题&#xff1a;“Go 语言中&#xff0c;将 byte 转换为 int 时是否涉及字节序&#xff08;endianness&#xff09;&#x…

Verilog刷题笔记26

题目&#xff1a; Build a combinational circuit with 100 inputs, in[99:0]. There are 3 outputs: out_and: output of a 100-input AND gate. out_or: output of a 100-input OR gate. out_xor: output of a 100-input XOR gate. 解题&#xff1a; module top_module( …

springboot157基于springboot的线上辅导班系统的开发与设计

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的 适用于计算机类毕业设计&#xff0c;课程设计参考与学习用途。仅供学习参考&#xff0c; 不得用于商业或者非法用途&#xff0c;否则&#xff0c;一切后果请用户自负。 看运行截图看 第五章 第四章 获取资料方式 **项…

数字图像处理实验记录八(图像压缩实验)

前言&#xff1a;做这个实验的时候很忙&#xff0c;就都是你抄我我抄你了 一、基础知识 1&#xff0e;为什么要进行图像压缩&#xff1a; 图像的数据量巨大&#xff0c;对计算机的处理速度、存储容量要求高。传输信道带宽、通信链路容量一定&#xff0c;需要减少传输数据量&a…

字节跳动公益平台“公益聚力计划”上线

为更好地联合社会多方力量参与社会公益&#xff0c;字节跳动公益平台于近日正式推出“公益聚力计划”&#xff08;以下简称“计划”&#xff09;。“计划”支持公益项目的策划与筛选、公益机构撮合&#xff0c;以及多种定制化的产品功能&#xff0c;如定制版公益证书、爱心回礼…

深入探索:缓冲区溢出漏洞及其防范策略

在网络安全的广阔领域中&#xff0c;缓冲区溢出漏洞一直是一个重要的议题。这种漏洞&#xff0c;如果被恶意利用&#xff0c;可能会导致严重的安全问题&#xff0c;包括数据泄露、系统崩溃&#xff0c;甚至可能被攻击者利用来执行恶意代码。在本文中&#xff0c;我们将深入探讨…

2月3日作业

1.编程实现单向循环链表的头插&#xff0c;头删、尾插、尾删 尾插/头插&#xff0c;头删&#xff0c;尾删&#xff1a; 头文件&#xff1a; #ifndef __HEAD_H_ #define __HEAD_H_#include<stdio.h> #include<string.h> #include<stdlib.h>enum {FALSE-1,SU…

18:蜂鸣器

蜂鸣器 1、蜂鸣器的介绍2、编程让蜂鸣器响起来3、通过定时控制蜂鸣器4、蜂鸣器发出滴滴声&#xff08;间歇性鸣叫&#xff09; 1、蜂鸣器的介绍 蜂鸣器内部其实是2个金属片&#xff0c;当一个金属片接正电&#xff0c;一个金属片接负电时&#xff0c;2个金属片将合拢&#xff…

二叉搜索树题目:验证二叉搜索树

文章目录 题目标题和出处难度题目描述要求示例数据范围 解法一思路和算法代码复杂度分析 解法二思路和算法代码复杂度分析 解法三思路和算法代码复杂度分析 题目 标题和出处 标题&#xff1a;验证二叉搜索树 出处&#xff1a;98. 验证二叉搜索树 难度 3 级 题目描述 要求…