<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[bai_lan_ya的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/bai_lan_ya</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; bai_lan_ya]]></copyright><item><title><![CDATA[理解四种嵌入式串行通信总线：UART、I2C、SPI、CAN 新手可视化指南]]></title><link>https://blog.youkuaiyun.com/bai_lan_ya/article/details/160966784</link><guid>https://blog.youkuaiyun.com/bai_lan_ya/article/details/160966784</guid><author>bai_lan_ya</author><pubDate>Mon, 11 May 2026 10:14:49 +0800</pubDate><description><![CDATA[UART、I2C、SPI、CAN 没有绝对好坏，只有适不适合。总线一句话理解UART两个设备简单聊天，不需要共享时钟I2C两根线挂多个低速设备，通过地址找人SPI主机指挥从机，高速全双工传数据CAN多个节点抢总线，优先级高的先发，适合复杂现场如果只是调试串口，UART 最方便；如果要少占 IO 挂多个传感器，I2C 很合适；如果要高速读写 Flash 或屏幕，SPI 更合适；如果系统运行在汽车、工业、机器人等强干扰环境中，CAN 通常更稳。]]></description><category></category></item><item><title><![CDATA[ FPGA 实时图像预处理调试：从 RGB565 到 3x3 行缓存、均值滤波与 Sobel]]></title><link>https://blog.youkuaiyun.com/bai_lan_ya/article/details/160798085</link><guid>https://blog.youkuaiyun.com/bai_lan_ya/article/details/160798085</guid><author>bai_lan_ya</author><pubDate>Tue, 05 May 2026 18:40:18 +0800</pubDate><description><![CDATA[像素流输入-> valid 对齐-> 行缓存保存历史行-> 水平移位寄存器保存历史列-> 形成 3x3 滑动窗口-> 组合运算-> 寄存输出-> VGA 显示灰度、二值化、通道分离、亮度调节属于逐像素处理；均值滤波和 Sobel 属于邻域窗口处理。两类功能看起来不同，但在工程里都遵守同一个原则：数据和 valid 同步推进，每个有效像素只走固定延迟，最终交给 VGA 的永远是一条节奏稳定的像素流。工程链接：FPGA_project: FPGA小项目，万年历，打地鼠，贪吃蛇等游戏。]]></description><category></category></item><item><title><![CDATA[从 OV7670 到 VGA：一条 FPGA 图像采集与稳定显示链路]]></title><link>https://blog.youkuaiyun.com/bai_lan_ya/article/details/160791947</link><guid>https://blog.youkuaiyun.com/bai_lan_ya/article/details/160791947</guid><author>bai_lan_ya</author><pubDate>Tue, 05 May 2026 13:30:13 +0800</pubDate><description><![CDATA[obsidian这份工程的目标很直接：把 OV7670 摄像头输出的 DVP 图像流稳定显示到 DE0-CV 的 VGA 接口上。看起来只是“采集再显示”，但真正让画面稳定下来的关键，不在某一个孤立模块，而在时钟、配置、像素拼接、跨时钟 FIFO、SDRAM 帧缓存和 VGA 扫描之间的配合。工程链接：FPGA_project: FPGA小项目，万年历，打地鼠，贪吃蛇等游戏。]]></description><category></category></item><item><title><![CDATA[Linux 输入系统应用编程完全指南]]></title><link>https://blog.youkuaiyun.com/bai_lan_ya/article/details/159547521</link><guid>https://blog.youkuaiyun.com/bai_lan_ya/article/details/159547521</guid><author>bai_lan_ya</author><pubDate>Fri, 27 Mar 2026 18:36:16 +0800</pubDate><description><![CDATA[fd + 1设备认知（01）：通过 IOCTL 获取设备信息，了解设备能力；基础读取（02）：理解阻塞 / 非阻塞差异，掌握事件读取基本方法；优雅等待（03）：poll 是嵌入式 Linux 输入处理的首选方案；经典方案（04）：select 适合跨平台场景，需注意nfds规则；异步通知（05）：最高效的事件处理方式，适合复杂业务场景。]]></description><category></category></item><item><title><![CDATA[嵌入式linux--文件IO中dup/dup2的使用]]></title><link>https://blog.youkuaiyun.com/bai_lan_ya/article/details/159396234</link><guid>https://blog.youkuaiyun.com/bai_lan_ya/article/details/159396234</guid><author>bai_lan_ya</author><pubDate>Mon, 23 Mar 2026 22:59:14 +0800</pubDate><description><![CDATA[要理解dupdup2dupdup2：复制的是，新、旧文件描述符会（包括文件偏移量、访问模式），这是后续代码解析的关键。]]></description><category></category></item><item><title><![CDATA[linux -- 文件IO]]></title><link>https://blog.youkuaiyun.com/bai_lan_ya/article/details/159249432</link><guid>https://blog.youkuaiyun.com/bai_lan_ya/article/details/159249432</guid><author>bai_lan_ya</author><pubDate>Thu, 19 Mar 2026 21:51:52 +0800</pubDate><description><![CDATA[umaskUserMASK（用户权限掩码）它是一个权限过滤器用来"屏蔽"掉某些权限创建新文件/目录时，它决定默认权限。]]></description><category></category></item><item><title><![CDATA[嵌入式linux学习--makefile的使用以及通用解析]]></title><link>https://blog.youkuaiyun.com/bai_lan_ya/article/details/158316944</link><guid>https://blog.youkuaiyun.com/bai_lan_ya/article/details/158316944</guid><author>bai_lan_ya</author><pubDate>Mon, 23 Feb 2026 21:09:24 +0800</pubDate><description><![CDATA[(foreach)：当你需要对一个列表中的每个元素执行相同的转换或添加操作时使用（如为目录加前缀）。$(filter)：当你需要从一个混合的文件列表或字符串中根据类型进行筛选或排除时使用（如分离源文件和目标文件）。：这是你自动发现项目源文件的主要工具，使得 Makefile 无需在每次增删文件时都手动更新文件列表，极大提高了可维护性。这三个函数组合使用，可以构建出非常灵活和强大的自动化构建规则，是编写专业级 Makefile 的基石。4、Makefile实例clean:a. 改进：支持头文件依赖。]]></description><category></category></item><item><title><![CDATA[makefile通用解析]]></title><link>https://blog.youkuaiyun.com/bai_lan_ya/article/details/158320895</link><guid>https://blog.youkuaiyun.com/bai_lan_ya/article/details/158320895</guid><author>bai_lan_ya</author><pubDate>Mon, 23 Feb 2026 21:08:46 +0800</pubDate><description><![CDATA[自动化依赖管理：通过-MD -MF自动生成头文件依赖，解决了手动维护依赖的痛点递归构建：支持多级目录，每个目录独立管理灵活配置：支持全局、目录级、文件级三级编译选项易于维护：新增文件只需在对应目录的Makefile中添加一行高效构建：只重新编译修改过的文件及其依赖对于嵌入式Linux开发，这套系统尤其重要，因为：嵌入式项目通常有多个模块和目录需要支持交叉编译编译参数复杂（优化级别、架构选项等）头文件依赖关系复杂。]]></description><category></category></item><item><title><![CDATA[嵌入式Linux学习-GCC编译器使用详解以及与makefile对比]]></title><link>https://blog.youkuaiyun.com/bai_lan_ya/article/details/158207798</link><guid>https://blog.youkuaiyun.com/bai_lan_ya/article/details/158207798</guid><author>bai_lan_ya</author><pubDate>Mon, 23 Feb 2026 14:23:25 +0800</pubDate><description><![CDATA[本文介绍了GCC编译器在嵌入式开发中的交叉编译应用。主要内容包括：1）区分本地编译与交叉编译，说明在x86开发环境下为ARM架构生成程序必须使用交叉编译器；2）详解GCC编译的四个阶段（预处理、编译、汇编、链接）及对应选项；3）重点讲解常用编译选项，如-Wall警告、-g调试、-O优化等级、-I头文件路径等；4）介绍相关工具链命令如objdump和objcopy的使用场景。文章为嵌入式开发者提供了完整的交叉编译指南，涵盖从开发调试到发布优化的全流程关键命令。]]></description><category></category></item><item><title><![CDATA[Exlink嵌入式多功能调试器复刻--功率板主控]]></title><link>https://blog.youkuaiyun.com/bai_lan_ya/article/details/157585221</link><guid>https://blog.youkuaiyun.com/bai_lan_ya/article/details/157585221</guid><author>bai_lan_ya</author><pubDate>Sat, 07 Feb 2026 15:57:15 +0800</pubDate><description><![CDATA[数据手册如下：CH334F一款一款。它在一个芯片内融合了两种核心功能，是设计的理想选择。简单来说，：它把来自电脑的一个USB连接，扩展成一个，并且其中。参考此电路图来设计电路图。]]></description><category></category></item><item><title><![CDATA[嵌入式多功能调试器复刻--功率控制板电源部分]]></title><link>https://blog.youkuaiyun.com/bai_lan_ya/article/details/157479972</link><guid>https://blog.youkuaiyun.com/bai_lan_ya/article/details/157479972</guid><author>bai_lan_ya</author><pubDate>Sat, 31 Jan 2026 17:02:41 +0800</pubDate><description><![CDATA[开关控制：单片机通过POWER_CTRL引脚控制MOS管开关，从而接通或断开负载电源。电流感知：负载电流流经采样电阻R28​ 产生微小压降 → 被差分放大器U87​ 精确放大 → 输出一个与电流成正比的、强度合适的电压信号，送至功率监测芯片的电流检测输入端。电压感知VOUT电压可能直接测量，VOUT_BUS电压经过高阻抗分压网络(R106-R110)​ 衰减和滤波(C21， C22)​ 后，送至功率监测芯片的电压检测输入端。计算与上报功率监测芯片(U8)]]></description><category></category></item><item><title><![CDATA[数据结构-排序-排序的七种算法（2）]]></title><link>https://blog.youkuaiyun.com/bai_lan_ya/article/details/148291852</link><guid>https://blog.youkuaiyun.com/bai_lan_ya/article/details/148291852</guid><author>bai_lan_ya</author><pubDate>Sun, 01 Jun 2025 14:55:49 +0800</pubDate><description><![CDATA[重复遍历列表，比较相邻元素，如果顺序错误就交换它们最好：O(n)（已有序时）平均：O(n²)最坏：O(n²)：O(1)：稳定实现简单对部分有序数据效率较高每轮将最大元素"冒泡"到末尾。]]></description><category></category></item><item><title><![CDATA[数据结构-排序(1)]]></title><link>https://blog.youkuaiyun.com/bai_lan_ya/article/details/148291571</link><guid>https://blog.youkuaiyun.com/bai_lan_ya/article/details/148291571</guid><author>bai_lan_ya</author><pubDate>Wed, 28 May 2025 21:10:51 +0800</pubDate><description><![CDATA[给定一个包含n个元素的序列和一个关键码Ki（通常是记录Ri的一个属性），排序的目标是找到一个排列，使得关键码序列满足一个特定的或关系。就是把一堆杂乱无章的数据，按照某种规则（比如数字大小、字母顺序、日期先后）排列整齐的过程。]]></description><category></category></item><item><title><![CDATA[数据结构-查找（1）]]></title><link>https://blog.youkuaiyun.com/bai_lan_ya/article/details/148210720</link><guid>https://blog.youkuaiyun.com/bai_lan_ya/article/details/148210720</guid><author>bai_lan_ya</author><pubDate>Mon, 26 May 2025 21:31:58 +0800</pubDate><description><![CDATA[适用于数据频繁变动的场景，通过动态平衡结构（如AVL树、B+树）维护操作效率。：平均 𝑂(log⁡log⁡𝑛)O(loglogn)，最坏 𝑂(𝑛)O(n)。：平均 𝑂(log⁡𝑛)O(logn)，最坏 𝑂(𝑛)O(n)（退化为链表）。：适用于数据固定的场景，以预处理（如排序）换取高效查询，典型方法为二分查找。：平均 𝑂(1)O(1)，最坏 𝑂(𝑛)O(n)（冲突严重时）。）采用哈希表，支持平均 𝑂(1)O(1) 的查找。：严格 𝑂(log⁡𝑛)O(logn)。：是否依赖数据结构的]]></description><category></category></item><item><title><![CDATA[数据结构-树（2）]]></title><link>https://blog.youkuaiyun.com/bai_lan_ya/article/details/147895026</link><guid>https://blog.youkuaiyun.com/bai_lan_ya/article/details/147895026</guid><author>bai_lan_ya</author><pubDate>Mon, 12 May 2025 15:29:02 +0800</pubDate><description><![CDATA[二叉树是n（n>=0）个结点的有限集合，该集合或者为空集（称为空二叉树），或者由一个根结点和两颗互不相交的，分别称为根结点的左子树和右子树的二叉树组合。  如图：                               特点：每个结点最多 2 子树，区分左右顺序如下思维导图：性质一：第 i 层最多 2^(i-1) 个结点（i≥1）性质二：深度为 k 的二叉树最多 2^k-1 个结点。性质三：终端结点数 n₀ = 度为 2 的结点数 n₂ + 1（n₀ = n₂ + 1）。终端结点数 n₀ = 度为 2 ]]></description><category></category></item><item><title><![CDATA[数据结构-树（1）]]></title><link>https://blog.youkuaiyun.com/bai_lan_ya/article/details/147888629</link><guid>https://blog.youkuaiyun.com/bai_lan_ya/article/details/147888629</guid><author>bai_lan_ya</author><pubDate>Mon, 12 May 2025 11:32:15 +0800</pubDate><description><![CDATA[其中 data 是数据域，frstchikd 为指针域，存储该结点的第一个孩子结点的存储地址，rightsib是指针域，存储该结点的右兄弟结点的存储地址。这种方法克服了浪费空间的缺点，对空间利用率是很高的，但是由于各个结点的链表是不相同的结构，加上要维护结点的度的 数值，在运算上就会带来时间上的损耗。任一棵树，它的结点的第一个孩子如果存在就是唯一的，它的右兄弟如果存在也是唯一的。这种方法对于树中的各个结点的度相差很大时，显然是很浪费空间的，因为有很多的结点，它的指针域是空的。每个结点有多个指针域，其中。]]></description><category></category></item><item><title><![CDATA[数据结构之串]]></title><link>https://blog.youkuaiyun.com/bai_lan_ya/article/details/147796803</link><guid>https://blog.youkuaiyun.com/bai_lan_ya/article/details/147796803</guid><author>bai_lan_ya</author><pubDate>Thu, 08 May 2025 17:16:30 +0800</pubDate><description><![CDATA[定义：串是由零个或多个字符组成的有限序列，记作 s="a1​a2​…an​"，例如 "data structure"、"123" 等。空串：无任何字符，长度为 0，用""表示，例如短信内容为空时即为空串。空格串：由一个或多个空格组成，有长度，例如 " "（3 个空格）。子串与主串：子串是主串中连续字符序列。生活实例：回文诗 “上海自来水来自海上” 是一个串，其正读和反读相同，体现了串的逆序特性；英文单词 “friend” 中，“end” 是子串，“friend” 是主串。]]></description><category></category></item><item><title><![CDATA[数据结构之栈与队列]]></title><link>https://blog.youkuaiyun.com/bai_lan_ya/article/details/147774209</link><guid>https://blog.youkuaiyun.com/bai_lan_ya/article/details/147774209</guid><author>bai_lan_ya</author><pubDate>Wed, 07 May 2025 21:39:50 +0800</pubDate><description><![CDATA[栈：队列：plaintext

	
	队列：
	plaintext

	


4、典型应用场景


	
		
			场景
			栈的应用
			队列的应用
		
	
	
		
			函数调用
			存储函数调用的参数、返回地址（系统栈自动管理）。
			无直接应用，函数调用本质是栈结构。
		
		
			表达式处理
			后缀表达式求值、中缀转后缀（处理运算符优先级）。
			无相关应用。
		
		
			括号匹配
			检测括号是否正确嵌套（如）。
			无相关应用。
		
		
			任务调度
		]]></description><category></category></item><item><title><![CDATA[数据结构的基本概念以及算法的基本内容]]></title><link>https://blog.youkuaiyun.com/bai_lan_ya/article/details/147685615</link><guid>https://blog.youkuaiyun.com/bai_lan_ya/article/details/147685615</guid><author>bai_lan_ya</author><pubDate>Sat, 03 May 2025 17:59:57 +0800</pubDate><description><![CDATA[数学模型及其操作的集合，与具体实现无关。]]></description><category></category></item><item><title><![CDATA[总结C++中的STL]]></title><link>https://blog.youkuaiyun.com/bai_lan_ya/article/details/147655431</link><guid>https://blog.youkuaiyun.com/bai_lan_ya/article/details/147655431</guid><author>bai_lan_ya</author><pubDate>Thu, 01 May 2025 21:55:55 +0800</pubDate><description><![CDATA[STL 即标准模板库，是 C++ 标准程序库的重要组成部分，包含常用数据结构和算法，体现了泛型化程序设计思想，基于模板实现，提高了代码的可复用性


	2. deque

	
		特性：双端队列，由多个固定大小的数组块组成，支持在两端快速插入和删除元素，同时也支持随机访问。
		优缺点：优点是在两端插入和删除元素的时间复杂度为常数，适合需要频繁在两端操作的场景。缺点是随机访问的效率略低于 。
		常用操作：
	
	
	
	

	


        3. list


	特性：双向链表，每个节点包含数据和指]]></description><category></category></item></channel></rss>