自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

sz66cm 学习随笔

日常遇到的一些技术记录,以及遇到的问题待解决备忘录,证明自己曾经学习过.

  • 博客(601)
  • 资源 (1)
  • 收藏
  • 关注

原创 LeetCode刷题 -- 542. 01矩阵 基于 DFS 更新优化的多源最短路径实现

本文介绍了一种基于DFS优化的解法,用于解决LeetCode 542题"01矩阵"的多源最短路径问题。该算法通过自定义递归函数updateAll()传播距离信息,利用二维数组记录中间结果并进行剪枝控制。代码展示了从0点出发递归更新相邻1点距离的过程,同时处理边界条件和初始值设定。分析指出该解法时间复杂度略高于标准BFS,空间复杂度为O(m×n),具有结构清晰的优点,但也存在递归深度不受控的缺点。提出的改进建议包括改用队列优化或结合DP法。这种递归实现方式虽在效率上不及标准BFS,但为理解

2025-06-03 20:38:04 732

原创 Linux内核 -- Regulator 框架:设备树、内核代码与使用注意事项

本文介绍了Linux内核中的Regulator(电压调整器)框架及其使用方法。主要内容包括:1)Regulator的概念和作用,用于管理电源设备;2)设备树中定义和引用Regulator的方法;3)内核驱动中获取、设置和关闭Regulator的API调用;4)调试Regulator状态的系统工具;5)使用中的注意事项,如匹配规则、电压设置限制等;6)完整的设备树和驱动代码示例。文章强调了正确使用Regulator框架对嵌入式系统电源管理的重要性,并提供了实用建议,适合在Rockchip等平台上控制各种外设供

2025-05-29 22:30:00 670

原创 Linux内核 -- 电源域(Power Domain)解析与实践分享

本文深入解析了RK3588 SoC中的Power Domain(电源域)概念及实践配置方法。电源域是可独立控制供电的芯片功能模块区域,通过SoC内部控制器和外部PMIC协同工作。文章详细介绍了RK3588电源域的控制结构、DTS配置方式(包括控制器节点定义、电源域ID索引和模块绑定),并对比了电源域与原理图中电源树的区别。提供了regulator节点配置示例和CPU大核电源实战案例,最后分享了通过sysfs调试电源状态的方法。掌握电源域机制是进行系统级功耗优化的关键技术基础。

2025-05-29 00:20:28 283

原创 Linux基础 -- 设备树引脚复用之`/omit-if-no-ref/` 用法解析

本文解析了RK3588设备树中UART引脚复用配置的关键要点:1)详细说明了UART2多个复用模式(m0/m1/m2)的设备树定义方式;2)解释了/omit-if-no-ref/指令的作用是自动剔除未被引用的节点;3)给出选择UART2引脚的正确方法,通过pinctrl-0显式指定复用模式;4)列出常见问题排查表。文章强调正确的引脚复用选择是串口调试成功的关键,开发者需根据实际硬件连线选择对应定义。

2025-05-28 23:32:08 406

原创 Linux基础 -- Linux 启动调试之深入理解 `initcall_debug` 与 `ignore_loglevel`

摘要:本文介绍Linux内核调试中initcall_debug和ignore_loglevel两个关键参数的作用与配合使用。initcall_debug显示驱动初始化流程但默认被屏蔽,需要配合ignore_loglevel解除日志等级限制才能生效。推荐组合使用这两个参数,并搭配printk.time=1和init=/bin/sh进行启动调试,可有效定位驱动初始化卡死、根文件系统故障等问题。二者必须配合使用才能完整显示内核初始化过程,是嵌入式Linux系统调试的重要工具。

2025-05-28 22:00:00 565

原创 Docker基础 -- 构建 RK3588 Debian 根文件系统

本文记录了在Docker容器中构建RK3588 Debian根文件系统时遇到的qemu-aarch64-static失效问题及解决方案。关键步骤包括:主机安装QEMU模拟器并注册binfmt_misc、容器内挂载模拟器、验证工作状态后重新执行构建脚本。最终成功生成ARM64架构的Debian根文件系统。作者建议将此流程封装为Dockerfile,并搭配构建自动化工具提高效率。该方案解决了x86环境下构建ARM64系统时的架构兼容性问题。

2025-05-26 23:30:00 467

原创 Docker基础 -- Ubuntu 22.04 AArch64 交叉编译 Docker 镜像构建指南

本文档详细介绍了在企业内网环境下构建Ubuntu 22.04 AArch64交叉编译Docker镜像的全过程。主要内容包括:1)使用清华TUNA镜像源配置;2)分阶段构建Dockerfile的详细步骤(包含HTTPS/HTTP两种方案);3)镜像构建与使用方法;4)常见错误排查表;5)最佳实践建议(如使用BuildKit缓存、镜像瘦身等)。该方案解决了ARM64固件和内核构建的环境需求,特别适用于需要代理的企业开发场景。文档提供了完整的配置文件和命令示例,便于团队快速复现实践。

2025-05-26 22:00:00 505

原创 算法基础 -- 数学建模工具 Gurobi 简介

本文详细介绍了 Gurobi 优化器的使用,从安装配置到 Python 编程接口,再到典型数学建模案例和优化技巧。Gurobi 是一款强大的数学优化求解器,支持多种规划类型,适用于生产调度、物流优化、投资组合等领域。文章提供了 Gurobi 的安装步骤、环境变量配置方法,并通过示例代码展示了如何创建和优化模型。此外,还探讨了高级技巧、实际应用场景以及常见问题的解决方案。Gurobi 以其高性能和灵活性成为数学建模中的重要工具,推荐进一步学习官方文档和相关书籍以深入掌握其应用。

2025-05-19 14:54:05 647

原创 算法基础 -- 小根堆构建的两种方式:上浮法与下沉法

在构建小根堆时,常用的两种方法是上浮建堆和下沉建堆。上浮建堆通过逐个插入元素并进行上浮调整,时间复杂度为O(n log n),适用于动态增量插入的场景。下沉建堆则从最后一个非叶子节点开始,自底向上进行下沉调整,时间复杂度为O(n),适用于一次性构建堆的情况。下沉建堆由于避免了叶子节点的重复操作,效率更高。实际应用中,上浮建堆适合优先队列的逐个入队,而下沉建堆则常用于堆排序等一次性构建堆的场景。

2025-05-16 22:00:00 892

原创 Linux基础 -- 在内存中使用chroot修复eMMC

本教程介绍了如何在Linux系统中使用chroot命令在内存中构建临时系统,以修复eMMC磁盘(如/dev/mmcblk2)。通过创建临时根文件系统、复制必要的二进制文件和库、创建设备节点,并挂载/proc、/sys和/dev,用户可以安全地进入临时系统进行磁盘修复操作。该方法适用于嵌入式系统的离线维护和故障排查,确保在不干扰原有系统的情况下完成修复任务。最后,退出chroot并清理临时文件系统,确保系统恢复正常。

2025-05-15 22:00:00 236

原创 Linux基础 -- SSH 流式烧录与压缩传输笔记

在嵌入式开发和维护中,通过SSH流式传输大文件并直接烧录到设备磁盘是一种高效的方法,尤其适用于设备端存储空间有限的情况。本文介绍了流式传输的基本原理,包括压缩与解压、并行传输等技术,并提供了多种实现方法,如基本流式烧录、启用压缩传输(gzip)、多线程压缩传输(pigz)等。此外,还探讨了如何提高写入可靠性、故障排查以及优化建议,如启用多线程压缩、确保网络稳定等。这些方法能够显著提升传输效率和可靠性,适用于需要频繁传输大文件的场景。

2025-05-14 21:06:04 486

原创 Linux基础 -- 用户态Generic Netlink库高性能接收与回调框架

本文介绍了在 Linux 系统中使用 libnl 和 libnl-genl 库实现高效 Netlink 消息接收与处理的框架。Netlink 是用户态与内核态通信的重要机制,而 libnl 及其扩展库 libnl-genl 提供了简化 Netlink 编程的高级接口。文章详细探讨了两种回调设置方法:nl_socket_modify_cb 和 nl_cb_set,分别适用于特定套接字和全局回调场景。通过结合 epoll 和非阻塞模式,框架能够高效地批量接收和处理 Netlink 消息。文章还提供了完整的代码示

2025-05-13 22:00:00 490

原创 Linux基础 -- Generic Netlink 框架详解与开发实践

在 Linux 内核开发中,内核模块往往需要提供接口供用户空间配置或查询内部状态。ioctl:接口扩展性差、维护成本高;procfssysfs:适合只读状态/参数设置,但不适合复杂命令;Netlink:适合复杂的、结构化的内核通信,但原始 Netlink 使用繁琐,需要自定义协议号与消息调度。u8 cmd;// 命令编号u8 flags;// 权限控制,如 GENL_ADMIN_PERM// 参数校验策略// 处理函数// 列表输出函数doit():处理用户空间发送的一次性命令;

2025-04-30 21:00:00 943

原创 数学基础 -- 欧拉恒等式的魅力:让复数旋转起来!

eiπ−1被誉为eiπ10欧拉恒等式这不仅是巧合,而是复数与三角函数、指数函数之间。现在我们就从出发,来详细推导并解释这个结论。

2025-04-25 23:00:00 802

原创 数学基础 -- 欧拉公式的推导过程学习

eiacosaisina它是复数指数函数与三角函数之间的桥梁,是傅里叶分析和信号处理的基础之一。我们现在来它,并讲解每一步的数学意义。

2025-04-24 20:00:00 823

原创 LeetCode刷题 -- 48. 旋转图像

给定一个 n × n 的二维矩阵,请将矩阵顺时针旋转 90 度。

2025-04-03 23:00:00 300

原创 RTOS基础 -- 基于 DWT CYCCNT 的 M4 内核代码耗时统计与 CPU 频率获取方法

DWT(Data Watchpoint and Trace)模块是 ARM Cortex-M3/M4/M7 内核的调试组件,内部包含一个CYCCNT 计数器,可以记录 CPU 自上电以来经历的时钟周期数。精度:1 个时钟周期(周期数 = 时钟频率 × 时间)常用于:代码耗时统计、性能分析、任务调度评估DWT CYCCNT 是 Cortex-M4 提供的高精度耗时计数器获取当前 M4 CPU 主频是准确计算时间的前提是周期数到微秒的标准换算公式在 NXP 平台,推荐使用获取主频。

2025-04-03 22:00:00 345

原创 RTOS基础 -- NXP M4小核的RPMsg-lite与端点机制回顾

resource_table中的VDEV资源定义了vring共享内存和VirtIO队列配置,必须与RPMsg-lite实例初始化参数保持一致。名字服务公告消息本质是一种特殊的RPMsg消息,因此远端核必须启动RPMsg Core服务才能接收公告消息,实现自动绑定。使用RPMsg-lite时可创建多个端点,每个端点可以独立注册名字服务,Linux端会对应创建多个。RPMsg名字服务用于远端核自动发现端点并建立端到端通信通道。)发送一个特殊消息,这个消息称为。本质是向一个特殊端点(地址为。

2025-04-03 22:00:00 611

原创 数学基础 -- 傅里叶变换的数学性质深度分析

傅里叶变换是一种将信号从时域转换到频域的基本工具,它揭示了信号在不同频率分量上的分布。傅里叶变换具有多种重要的数学性质,包括等。这些性质不仅在一维信号处理中成立,在二维图像处理中也有直接的扩展和应用。下面将对这些性质进行结构化的分析,并辅以清晰的数学表达式和图像处理中的示例说明。

2025-03-27 12:34:04 764

原创 AI工具基础 -- Ollama 安装、部署与使用指南

Ollama 是一个用于在本地快速启动并运行大型语言模型的工具。本指南将涵盖 Ollama 的安装、部署、主机信息配置、模型下载以及测试等方面的内容。

2025-03-26 16:43:07 966

原创 Linux基础 -- SoC从uboot到linux kernel的全过程

ARMv7:mov r0, #0或 dtbmov pc, r0;跳转到内核入口# ARMv8:br x1;x1 指向 kernel __start阶段关键任务SPL初始化 RAM,加载 U-BootU-Boot初始化设备、加载 kernel/dtb/initrd设置参数设定 bootargs,填充 FDT跳转设置寄存器、进入内核入口内核启动进入 start_kernel(),开始内核世界。

2025-03-24 22:00:00 772

原创 算法基础 -- ARM 体系架构设计专家的算法提升目标

相关 ARM 知识点:SIMD、NEON、SVE、低功耗优化、加密计算、数据压缩推荐题目:ARM 体系应用:相关 ARM 知识点:SVE/SVE2、矩阵乘法优化(GEMM)、FFT/卷积计算、Cache 友好访问模式推荐题目:ARM 体系应用:相关 ARM 知识点:LIFO/FIFO 结构、Cache 友好性、TLB 访问优化、硬件调度推荐题目:ARM 体系应用:相关 ARM 知识点:Cache 友好性、Bloom Filter、哈希表优化(CRC32/SHA 加速)、预取机制推荐题目:ARM 体系应用:相

2025-03-17 22:00:00 1734

原创 算法基础 -- Brian Kernighan 算法初识

【代码】算法基础 -- Brian Kernighan 算法初识。

2025-03-14 22:00:00 1601

原创 ARM基础 -- APB总线与Verilog代码实现

APB(Advanced Peripheral Bus)是ARM AMBA(Advanced Microcontroller Bus Architecture)协议的一部分,通常用于低功耗、低速外设的连接。APB相较于AXI、AHB更为简单,适用于配置寄存器等外围设备的访问。,主设备能向从设备写入数据,从设备响应并提供数据读取能力。通过 Testbench 进行功能验证,能成功仿真 APB 事务。的 Verilog 实现。

2025-03-06 22:00:00 334

原创 FPGA基础 -- 仿真初识

在FPGA 开发中,仿真(Simulation)是指在硬件电路真正部署到 FPGA 之前,通过计算机软件来模拟 FPGA 设计的功能和时序,以验证设计的正确性。仿真主要用于调试 RTL 代码(Verilog/VHDL/SystemVerilog)和验证逻辑功能,避免在实际硬件上调试时可能遇到的高昂成本和复杂问题。仿真通常分为功能仿真(Functional Simulation)和时序仿真(Timing Simulation)两大类。

2025-03-06 22:00:00 1390

原创 Linux基础 -- `dlsym` 函数的作用

dlsymdlsym是一个用于解析符号(函数或变量地址)的函数,属于,由libdl.so库提供。主要用于。

2025-03-05 22:00:00 1893

原创 FPGA基础 -- Verilog常用关键字

Verilog 是一种硬件描述语言(HDL),用于描述和设计数字电路。组成,每个模块表示一个硬件单元,具有输入和输出端口。组合逻辑直接由输入信号决定输出信号,不依赖时钟。用于验证 Verilog 设计的正确性。语句在仿真时执行一次,常用于仿真测试。时序逻辑依赖时钟信号,通常使用。Verilog 代码通常由。

2025-03-05 20:44:37 649

原创 算法基础 -- 字符串哈希的原理与数值选定的剖析

的时间复杂度是 ( O(nm) )(其中 ( n ) 是文本长度,( m ) 是模式串长度),而。转换为一个固定长度的整数(通常是一个较大的数模一个素数),然后用于字符串比较、搜索等场景。(如 Rabin-Karp 算法)中,常常需要快速计算子串的哈希值。字符串哈希(String Hashing)是一种用于。,不同的字符串可能映射到同一个哈希值,称为。如果有进一步的问题,欢迎继续讨论!哈希算法的核心是选择合适的。希望这篇讲解能让你彻底理解。最常用的字符串哈希方法是。

2025-03-04 22:00:00 1043

原创 算法基础 -- 字符串哈希的基本概念和数学原理分析

的函数。对于字符串而言,就是通过某种算法把一个字符串转换成一个整数,这个整数称为该字符串的。

2025-03-03 21:00:23 879

原创 LeetCode刷题 -- 29. 两数相除

【代码】LeetCode刷题 -- 29. 两数相除。

2025-02-28 22:30:00 258

原创 Linux基础 -- ARM 32位常用机器码(指令)整理

ARM 32 位指令集中,最常用的指令包括:

2025-02-28 22:30:00 472

原创 Linux基础 -- ARM 32 位架构动态注入代码技术文档

在某些情况下,我们需要在运行时动态地生成并执行代码,例如 JIT(Just-In-Time Compilation)技术、运行时补丁或二进制重写。本文介绍了一种在 ARM 32 位架构下,通过mmap分配可执行内存,注入汇编指令,并刷新指令缓存以确保代码正确执行的方法。

2025-02-27 23:00:00 463

原创 正则表达式 -- 初识类型与优略势

{}?\{\}\+grepsedawk匹配"abc"。✅ 兼容性好,适用于 Unix 系统。✅ 适合简单文本匹配。❌ 语法较老旧,功能有限。

2025-02-27 22:00:00 983

原创 ARM32汇编 -- align 指令说明及示例

是 ARM 汇编中的伪指令,用于将接下来的代码或数据对齐到特定的地址边界。对齐操作可以提高程序的执行效率,确保指令或数据存储在符合处理器要求的地址上。 是一个整数,表示对齐方式。在不同平台上, 的含义可能不同:在某些平台上, 直接表示对齐的字节数,例如 表示按 4 字节对齐。在 ARM 平台上, 通常表示对齐的位数,即 2 的 次方字节对齐。例如, 表示按 2^5 = 32 字节对齐。 指令的示例解析跳转指令: 是一个跳转指令,占用 4 个字节。数据字节: 和 各占用 1

2025-02-26 22:00:00 400

原创 Linux 驱动模块稳定性检测框架 - 概要设计

实现高效的驱动监控,后续可以细化具体的实现方式和代码示例。

2025-02-25 22:00:00 367

原创 LeetCode刷题 -- 23. 合并 K 个升序链表

个链表的最小值,每次取出最小值并合并,使得整体时间复杂度达到。,远优于直接合并(O(nk))。本技术文档详细介绍了如何使用。相关应用场景中有重要应用。是所有链表节点总数,

2025-02-24 23:00:00 350

原创 算法基础 -- 堆排序之C语言实现

【代码】算法基础 -- 堆排序之C语言实现。

2025-02-21 22:00:00 339

原创 Linux基础 -- 中断子系统之级联中断

【代码】Linux基础 -- 中断子系统之级联中断。

2025-02-21 22:00:00 470

原创 算法基础 -- Fenwick树的实现原理

Fenwick树(树状数组)是一种高效处理前缀和及单点更新的数据结构。其核心操作是通过lowbit函数获取当前索引的最低位1所代表的值。

2025-02-17 22:00:00 399 1

原创 AI基础 -- AI学习路径图

超大规模模型的演化方向(多任务统一模型、通用人工智能雏形)新型计算架构(类脑计算、光子计算、量子计算)对 AI 的影响法规与社会影响(隐私、版权、伦理审查)

2025-02-11 23:00:00 727

Docker容器读书分享

Docker容器读书分享

2022-03-26

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除