栈(stack) 原理说明: 学习数据结构的目的是为了更好的处理和存储数据,对于顺序表而言改查比较容易,增删比较麻烦,对于链式表而言,增删比较简单,改查比较麻烦,所以每种数据结构都有不同的特点,用户需要选择合适的数据结构。 栈内存自顶向下进行递增,其实栈和顺序表以及链式表都一样,都属于线性结 ...
双向循环链表 原理与应用 双向循环链表与双向链表的区别:指的是双向循环链表的首结点中的prev指针成员指向链表的尾结点,并且双向循环链表的尾结点里的next指针成员指向链表的首结点,所以双向循环链表也属于环形结构。 双向循环链表各功能实现 (1)为了管理双向循环链表,需要构造头结点的数据类型以及构造 ...
双向链表 双向链表的原理与应用 如果想要提高单向链表或者单向循环链表的访问速度,则可以在链表中的结点中再添加一个指针域,让新添加的指针域指向当前结点的直接前驱的地址,也就意味着一个结点中有两个指针域(prev + next),也被称为双向链表(Double Linked List)。 单向循环链表实 ...
单向循环链表(其一) 单向循环链表的原理与应用: 单向循环的链表的使用规则和普通的单向链表没有较大的区别,需要注意:*单向循环链表的尾结点的指针域中必须指向链表的首结点的地址*,由于带头结点的单向循环链表更加容易进行管理,如下图所示: 上图所示的就是一个典型的单向循环链表的结构,可以发现单向循环链表 ...
Lab2: system calls 预备知识 执行一次系统调用的流程: USER MODE step1:系统调用声明 user/user.h:系统调用函数(如 int fork(void)) step2:ecall 进入内核态 user/usys.S(该文件由 user/usys.pl 生成,后续 ...
顺序表 题目一: 题目分析: 该题目需要先对顺序表进行遍历至元素x正确插入位置,再对顺序表完成插入操作。因此涉及到for循环与if语句的使用 代码实现 /******************************************************************** * * ...
数据结构 链表 笔试题:设计一个算法删除单链表L(有头节点)中的一个最小值结点。 /***************************************************************** * * file name : linkedlist.c * author : cn ...
大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家分享的是在i.MXRT1xxx系列上用NAND型启动设备时可用两级设计缩短启动时间。 去年痞子衡写过一篇骚操作文章 《借助i.MXRT10xx系列INIT_VTOR功能可以缩短程序热重启时间》,这对于 NAND 型启动设备上程序热重启时间的缩短 ...
在上一篇中,老周用 .NET Nano Framework 给大伙伴们演示了 WS2812 灯带的控制,包括用 SPI 和 红外RMT 的方式。利用 RMT 是一个很机灵的方案,不过,可能很多大伙伴对 ESP32 的 RMT 不是很熟悉。除了乐鑫自己的文档,没几个人写过相关的水文,可见这里头空白的水 ...
/******************************************************************************************************** * * 提高可移植性 Copyright (c) 2023-2024 cececlmx@ ...
为什么要使用操作系统 使用操作系统的主要原因是为了实现 CPU 多进程分时复用以及内存隔离 如果没有操作系统,应用程序会直接与硬件进行交互,这时应用程序会直接使用 CPU,比如假设只有一个 CPU 核,一个应用程序在这个 CPU 核上运行,但是同时其他程序也需要运行,因为没有操作系统来帮助切换,就需 ...
Part1:sleep 实验要求与提示 可以参考 user/echo.c, user/grep.c 和 user/rm.c 文件 如果用户忘记传递参数,sleep 应该打印一条错误消息 命令行参数传递时为字符串,可以使用 atoi 函数将字符串转为数字 使用系统调用 sleep,有关实现 sleep ...
一、工程简介 MultiButton 是一个小巧简单易用的事件驱动型按键驱动模块。 Github地址:https://github.com/0x1abin/MultiButton 这个项目非常精简,只有两个文件: (1)可无限扩展按键; (2)按键事件的回调异步处理方式可以简化程序结构,去除冗余的按 ...
课程简介 课程目标 理解操作系统的设计和实现 通过 XV6 操作系统动手实验,可以扩展或改进操作系统 操作系统的目标 Abstraction:对硬件进行抽象 Multiplex:在多个应用程序之间共用硬件资源 Isolation:隔离性,程序出现故障时,不同程序之间不能相互干扰 Sharing:实现 ...
ESP32 Arduino开发 MQTT 目录ESP32 Arduino开发 MQTT1. 安装程序库2. 编写相关程序2.1. 引入头文件2.2. 定义MQTT相关参数2.3. 创建对象2.4. 连接网络2.5. 连接MQTT服务器2.6. MQTT回调函数3. 完整的代码例程4. MQTT连接测 ...
大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是使能i.MXRT1050, 1060 Hab签名或加密启动时App链接在片内SRAM的限制。 最近有客户反馈,在 RT1060 上测试 Non-XIP 程序启动,如果程序体部分链接进 0x20280000 地址之后的片内 OCRAM 区 ...
在我写虚拟内存时遇到一些问题,jalr t0就是可以的,而call main则没办法成功 而且这里默认main是偏移前的地址,怪哉!!! 让我们看看jalr 和call(伪指令!!!) 然后在链接后看看main的地址,主要看程序中main是不是偏移 悬着的心也死了!!! 查看一下ucore也有类似的 ...
痞子衡嵌入式半月刊: 第 97 期 这里分享嵌入式领域有用有趣的项目/工具以及一些热点新闻,农历年分二十四节气,希望在每个交节之日准时发布一期。 本期刊是开源项目(GitHub: JayHeng/pzh-mcu-bi-weekly),欢迎提交 issue,投稿或推荐你知道的嵌入式那些事儿。 上期回顾 ...
因为当前项目单片机容量不够使用,打算开启编译器优化,结果在使用KEIL编译器优化后,程序在发送Modbus数据时,程序直接跑飞了 先说结论: 最后发现是局部变量指针作为了DMA的内存地址参数,导致当DMA连续搬运数据时,实际那个局部变量已经被释放,导致DMA搬运数据的过程中出现错误,但是为什么没优化 ...
ESP-IDF NVS 目录ESP-IDF NVS1. 什么是NVS?2. NVS中的概念2.1. partition 分区2.2. namespace 命名空间2.3. key-value 键值对3. ESP-IDF中NVS的代码实现 1. 什么是NVS? 非易失性存储 (NVS) 库主要用于在 ...