- 博客(46)
- 收藏
- 关注
原创 删除有序链表中重复的元素
给出一个升序排序的链表,删除链表中的所有重复出现的元素,只保留原链表中只出现一次的元素。例如:给出的链表为1→2→3→3→4→4→5, 返回1→2→5.给出的链表为1→1→1→2→3, 返回2→3数据范围:链表长度 0≤n≤10000,链表中的值满足 ∣val∣≤1000要求:空间复杂度 O(n),时间复杂度 O(n)进阶:空间复杂度 O(1),时间复杂度 O(n)
2025-04-01 18:41:31
162
原创 U-Boot 链接脚本 u-boot.lds 详解
u-boot.ldsU-Boot 的链接脚本u-boot.lds是控制 U-Boot 镜像内存布局的关键文件。它定义了各个段(如.text.data.bss等)在内存中的位置,以及程序的入口点。通过分析u-boot.lds,我们可以了解 U-Boot 的启动流程以及内存布局。
2025-01-05 11:02:29
972
原创 Uboot顶层Makefile文件分析
当执行这个命令会调用,并传递和作为参数。make默认目标_allmake命令的默认目标是_all,它依赖于all。目标allall依赖于ALL-yALL-y包含了需要生成的所有文件,如u-boot.bin。生成u-boot.binu-boot.bin依赖于。依赖于u-boot。u-boot依赖于和u-boot.lds。链接过程:通过链接和中的目标文件,生成u-boot。最终文件:生成u-boot.bin和其他相关文件。
2025-01-04 18:10:51
773
原创 Uboot工程目录分析
以下是 U-Boot 源码解压后的主要目录和文件:未编译的 U-Boot 源码目录结构如下:编译后的 U-Boot 目录编译后的 U-Boot 目录会生成一些新的文件和文件夹,例如:路径:作用:U-Boot 的配置文件,由 生成。重点关注:包含所有配置选项,例如: 文件路径:作用:链接脚本,定义 U-Boot 的内存布局。重点关注:
2025-01-04 10:35:58
399
原创 链表中的倒数第K个节点
输入一个长度为 n 的链表,设链表中的元素的值为 ai ,返回该链表中倒数第k个节点。如果该链表长度小于k,请返回一个长度为 0 的链表。数据范围:0≤n≤1050≤na**ik≤109要求:空间复杂度 O(n)On),时间复杂度 O(n)On进阶:空间复杂度 O(1)O(1),时间复杂度 O(n)On。
2024-12-06 09:33:55
340
原创 查找链表中环的入口节点
给一个长度为n链表,若其中包含环,请找出该链表的环的入口结点,否则,返回null。≤10000,1<=结点值<=100001<=结点值<=10000。假设链表的非环部分长度为a,环的长度为b。我们可以使用快慢指针法检测链表是否有环。(1),时间复杂度 O(n)数据范围: n≤10000。要求:空间复杂度 O(1)
2024-12-05 10:50:31
971
原创 数列的极限
极限的定义设an{a_n}an是一个数列,如果存在一个数LLL,使得对于任意给定的正数ϵϵϵ,总存在一个正整数NNN,使得当nNn>NnN时,有∣an−L∣ϵ∣a_n−L∣<ϵ∣an−L∣<ϵ,则称数列an{a_n}an收敛于LLL,记作limn→∞anLlimn→∞anL。
2024-12-04 17:04:39
708
原创 映射与函数
映射文章目录映射基本概念映射的类型映射的表示单射、双射、满射单射(Injective)定义示例满射(Surjective)定义示例双射(Bijective)定义示例逆映射与复合映射逆映射(Inverse Mapping)定义示例复合映射(Composite Mapping)定义示例复合映射的性质示例函数函数的基本概念初等函数类型函数的性质函数的运算线性函数线性函数的基本概念线性函数的性质线性函数的公式斜率的计算公式截距的计算公式线性方程的解法指数函数指数函数的基本概念指数函数的性质指数函数的公式对数函数对
2024-12-04 15:18:35
2494
原创 判断链表中是否有环
它的基本思想是使用两个指针,一个慢指针和一个快指针,慢指针每次移动一步,快指针每次移动两步。第一部分{3,2,0,-4}代表一个链表,第二部分的1表示,-4到位置1(注:头结点为位置0),即-4->2存在一个链接,组成传入的head为一个带环的链表,返回true。第一部分{1}代表一个链表,-1代表无环,组成传入head为一个无环的单链表,返回false。初始时,慢指针(slow)指向节点1(数字3),快指针(fast)指向节点2(数字2)每次移动,快指针比慢指针多走一步,所以它们之间的距离会减少一步。
2024-12-04 09:41:02
847
原创 集合的相关性质与定义
两个集合的笛卡尔积设AAA和BBB是两个集合,集合AAA和集合BBB的笛卡尔积A×BA×BA×B是由所有有序对ab(a,b)ab组成的集合,其中a∈A且b∈Ba∈A 且 b∈Ba∈A且b∈B。记作A×Bab∣a∈A且b∈BA×B=\{(a,b)∣a∈A 且 b∈B\}A×B{(ab∣a∈A且b∈B。多个集合的笛卡尔积设A1A2AnA1A2An是nnn。
2024-12-03 22:58:57
982
原创 合并k个已排序的链表
采用分治法,分治法就是把一个大问题分成几个小问题来解决,然后把小问题的解合并成大问题的解。在这个题目里,大问题就是合并k个有序链表,小问题就是合并两个有序链表。合并 k 个升序的链表并将结果作为一个升序的链表返回其头节点。≤5000,每个节点的val满足 ∣val∣
2024-12-03 10:41:59
583
原创 FreeRtos中断管理
嵌入式实时系统需要对整个系统环境产生的事件作出反应。例如,以太网外围部件收到了一个数据包(事件),需要送到 TCP/IP 协议栈进行处理(反应)。更复杂的系统需要处理来自各种源头产生的事件,这些事件对处理时间和响应时间都有不同的要求。FreeRTOS 并没有为设计人员提供具体的事件处理策略,但是提供了一些特性使得设计人员采用的策略可以得到实现,而实现方式不仅简单,而且具有可维护性。必须说明的是,只有以”FromISR”或”FROM_ISR”结束的 API 函数或宏才可以在中断服务例程中使用。
2024-12-03 09:32:28
1128
原创 FreeRtos资源管理
临界区和挂起调度器是两种常用的同步机制,用于保护共享资源,确保数据的一致性和完整性。临界区通过关闭中断来保护代码段,适用于需要保护的代码段非常短的情况。挂起调度器通过停止任务调度来保护代码段,适用于需要保护的代码段较长的情况。通过合理选择和使用这些同步机制,可以有效避免多任务系统中的数据损坏和竞争条件。互斥量是一种特殊的二值信号量,用于控制在两个或多个任务间访问共享资源。通过使用互斥量,可以确保同一时间只有一个任务可以访问共享资源,从而避免数据损坏和竞争条件。
2024-12-03 09:28:21
618
原创 FreeRTOS队列
队列是FreeRTOS中用于任务间通信和同步的重要机制。通过合理使用队列,可以实现高效的数据传递和任务同步。在使用队列时,需要注意内存管理和线程安全,尤其是在处理大型数据单元时。首先,定义一个大型数据结构LargeData// 假设这是一个1KB的数据块通过使用指针传递大型数据单元,可以有效地减少内存开销,并提高任务间通信的效率。在使用队列时,需要注意内存管理和线程安全,尤其是在处理大型数据单元时。
2024-12-02 15:52:34
718
原创 FreeRTOS任务管理
多任务系统(Multitasking System)是一种操作系统(OS)的功能,允许计算机在同一时间段内执行多个任务或进程。这些任务可以是不同的应用程序、服务或其他计算操作。多任务系统的主要目标是提高计算机的利用率和响应能力,使用户或应用程序能够在同一时间内执行多个操作。// 任务名称// 任务编号FreeRTOS任务的创建是通过API函数实现的。任务函数是一个永不退出的C函数,通常是一个死循环。任务的创建和调度是多任务系统中最基本的组件。
2024-12-02 11:32:47
789
原创 链表内指定区间反转
将一个节点数为 size 链表 m 位置到 n 位置之间的区间反转,要求时间复杂度 O(n)给出的链表为 1→2→3→4→5→NULL1→2→3→4→5→。返回 1→4→3→2→5→NULL1→4→3→2→5→。数据范围: 链表长度 0<size≤10000<,链表中每个节点的值满足 ∣val∣≤1000∣。具体算法思路可以参考这位UP主的讲解。要求:时间复杂度 O(n)) ,空间复杂度 O(n)进阶:时间复杂度 O(n)),空间复杂度 O(1)),空间复杂度 O(1)
2024-12-01 09:46:20
800
原创 Cortex-A7中断
通过设置中断向量表偏移,可以将中断向量表放置在STM32微控制器的Flash存储器起始地址(0x08000000),从而解决中断向量表默认位置与实际存储位置不一致的问题。这种方法在Cortex-M架构中非常常见,确保了中断处理的正确性和可靠性。和STM32一样,Cortex-A7也有属于自己的中断向量表,放在代码的最前面,Cortex-A7 内核有 8 个异常中断。Cortex-A7虽然有八个中断,但实际上只有七个中断,相比于STM32看起来少了很多,难道一个能跑Linux的IC只有这么少的中断???
2024-11-30 15:46:40
910
原创 单链表的原地反转
给定一个单链表的头结点pHead(该头节点是有值的,比如在下图,它的val是1),长度为n,反转该链表后,返回新链表的表头。数据范围: 0≤n≤10000≤n≤1000要求:空间复杂度 O(1)O(1) ,时间复杂度 O(n)On如当输入链表{1,2,3}时,经反转后,原链表变为{3,2,1},所以对应的输出为{3,2,1}。以上转换过程如下图所示:算法思路:设立三个指针,prev,next,current,指针变化如下。IVT:通常占用1KByte(1024字节)。Boot Data:通常占用1KByte(1024字节)。DCD:通常占用1KByte(1024字节)。
2024-11-23 10:30:40
712
原创 汇编LED实验
led.bin: 生成最终的二进制文件led.bin,依赖于led.s文件。通过编译、链接和转换生成led.bin文件,并生成反汇编文件led.dis。clean: 清理所有生成的文件,包括目标文件、二进制文件、ELF 文件和反汇编文件。
2024-11-22 23:01:06
596
原创 Cortex-A 处理器运行模型
当它不支持子程序的返回时,它也可以用作通用寄存器。R15是程序计数器,保存当前程序地址(实际上,在ARM状态下,它总是指向当前指令之前八个字节,在Thumb状态下,它总是指向当前指令之前四个字节,这是原始ARM 1处理器的三级流水线的遗留问题)。低寄存器组(R0-R7)和R15共享相同的物理寄存器地址,只是一些高寄存器组在不同的模式下有自己独有的寄存器,如FIQ模式下(R8-R14),当程序运行在FIQ模式下,假设访问的是R12,实际访问的是R12_fiq,即对它们的访问将转移到不同的物理存储、
2024-11-22 13:26:50
1046
原创 数据结构-链表、栈、动态数组、队列
不透明指针是指指向一个数据结构的指针,但该数据结构的内部细节对外部代码是不可见的。外部代码只能通过提供的接口函数来操作该数据结构,而无法直接访问其内部成员。首先,定义一个不透明指针类型,通常使用typedef关键字。这里,MyData是一个不透明指针类型,的内部细节对外部代码是不可见的。
2024-11-21 22:37:27
1731
2
原创 GD32工程创建示例手册
1.本项目使用的是兆易创新 GD32F470IIH6 主控芯片,因此进入链接直接搜索到如下页面跳转到相应的页面搜索所使用的芯片型号且点击跳转到步骤2所示界面2.点击GigaDevice,3.点击CMSIS Packs,找到如下图所示的芯片型号,且点击75Device跳转到步骤4所示界面4.选择Version History,选择一个你想要的版本下载即可,本项目例程使用的是3.0版本的芯片包。
2023-08-11 13:06:18
1417
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人