<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[lanzh_syf的博客]]></title><description><![CDATA[探索是一个人的天性！]]></description><link>https://blog.youkuaiyun.com/lanzh_syf</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; lanzh_syf]]></copyright><item><title><![CDATA[用 Rust 开发 STM32H743：从零搭建一个能烧录、能看日志的项目]]></title><link>https://blog.youkuaiyun.com/lanzh_syf/article/details/167891596</link><guid>https://blog.youkuaiyun.com/lanzh_syf/article/details/167891596</guid><author>lanzh_syf</author><pubDate>Wed, 14 Oct 2026 10:02:21 +0800</pubDate><description><![CDATA[目标：在 Windows 上，用 Rust 从零搭出一个 STM32H743 工程——外置 25MHz 晶振，SYSCLK 跑到 480MHz，通过 RTT 输出日志，并用 PG2~PG6 跑流水灯。全程使用cargo构建 +probe-rs烧录，不碰 Keil / CubeIDE。]]></description><category></category></item><item><title><![CDATA[ARM架构运行模式学习笔记]]></title><link>https://blog.youkuaiyun.com/lanzh_syf/article/details/159349532</link><guid>https://blog.youkuaiyun.com/lanzh_syf/article/details/159349532</guid><author>lanzh_syf</author><pubDate>Sun, 22 Mar 2026 12:33:43 +0800</pubDate><description><![CDATA[ARM处理器支持多种运行模式，包括用户模式（普通应用）、特权模式（如FIQ/IRQ中断处理、系统管理等）以及安全扩展模式（TrustZone）。不同模式具有各自的寄存器组和访问权限，适用于从嵌入式系统到移动设备等多样化场景。ARMv8架构引入异常级别（EL0-EL3）替代传统模式，支持64位操作和安全监控。Cortex-M系列则简化为线程模式和处理模式，优化实时性能。开发时需注意合理分配任务、优化中断处理并遵循安全原则，以充分发挥各模式特性。]]></description><category></category></item><item><title><![CDATA[i.MX6ULL NAND Flash 烧录脚本说明]]></title><link>https://blog.youkuaiyun.com/lanzh_syf/article/details/159286789</link><guid>https://blog.youkuaiyun.com/lanzh_syf/article/details/159286789</guid><author>lanzh_syf</author><pubDate>Fri, 20 Mar 2026 17:13:58 +0800</pubDate><description><![CDATA[本脚本用于通过UUU（Universal Update Utility）工具将完整的Linux系统烧录到MYS-6ULL-Y2开发板的NAND Flash中。]]></description><category></category></item><item><title><![CDATA[U-Boot学习笔记（NXP IMX6ULL）]]></title><link>https://blog.youkuaiyun.com/lanzh_syf/article/details/159281992</link><guid>https://blog.youkuaiyun.com/lanzh_syf/article/details/159281992</guid><author>lanzh_syf</author><pubDate>Fri, 20 Mar 2026 13:23:11 +0800</pubDate><description><![CDATA[本文档全面介绍U-Boot引导加载程序，包括其功能特点、目录结构、启动流程和开发方法。U-Boot支持多种处理器架构，提供硬件初始化、命令行交互和内核加载等功能。文档详细解析了U-Boot的模块化目录结构，区分了U-Boot提供和厂商定制的内容，并阐述了启动流程的关键阶段。此外，还提供了硬件初始化方法、常用GPIO操作函数，以及编译所需的工具链和具体编译步骤，为嵌入式开发者快速上手U-Boot开发提供了实用指导。]]></description><category></category></item><item><title><![CDATA[ONNX 与 RKNN 模型处理详细对比笔记]]></title><link>https://blog.youkuaiyun.com/lanzh_syf/article/details/157804765</link><guid>https://blog.youkuaiyun.com/lanzh_syf/article/details/157804765</guid><author>lanzh_syf</author><pubDate>Fri, 06 Feb 2026 13:57:18 +0800</pubDate><description><![CDATA[本文对比了ONNX和RKNN模型在目标检测任务中的差异。ONNX作为通用格式适用于多种硬件平台，采用NCHW输入格式；而RKNN专为Rockchip芯片优化，使用NHWC输入格式并利用NPU加速。两种模型的输出均为6维向量，但坐标表示方式不同：ONNX输出绝对坐标，RKNN输出归一化坐标。预处理步骤都包含图像缩放、BGR转RGB和归一化处理，但数据布局转换方式有所区别。这些差异直接影响模型在不同硬件平台上的部署方式和性能表现。]]></description><category></category></item><item><title><![CDATA[由Yolov8n 的PT模型转换而来的ONNX模型推理C++接口类]]></title><link>https://blog.youkuaiyun.com/lanzh_syf/article/details/157686360</link><guid>https://blog.youkuaiyun.com/lanzh_syf/article/details/157686360</guid><author>lanzh_syf</author><pubDate>Tue, 03 Feb 2026 10:29:46 +0800</pubDate><description><![CDATA[本文介绍了基于YOLOv8模型的ONNX检测器实现，对比了Python（Ultralytics库）和C++（ONNX Runtime）两种实现方式的关键差异。Python版本提供结构化结果输出（自动NMS处理），而C++版本需要手动解析原始张量并实现NMS算法。重点展示了C++实现中的ONNXDetector类设计，包含模型加载、预处理、推理和后处理完整流程。该类封装了图像缩放、格式转换、IoU计算和NMS等核心功能，支持自定义置信度阈值，并提供检测结果可视化方法。代码结构清晰，通过头文件和源文件分离实现模]]></description><category></category></item><item><title><![CDATA[C++ ONNX Runtime 与 Python Ultralytics 库实现 YOLOv8 模型检测的区别]]></title><link>https://blog.youkuaiyun.com/lanzh_syf/article/details/157654128</link><guid>https://blog.youkuaiyun.com/lanzh_syf/article/details/157654128</guid><author>lanzh_syf</author><pubDate>Mon, 02 Feb 2026 17:14:15 +0800</pubDate><description><![CDATA[本文对比了Python Ultralytics库与C++ ONNX Runtime实现YOLOv8目标检测的差异。Python方案通过ultralytics库一键安装，仅需1-2行代码即可完成完整推理流程，自动处理预处理、推理和后处理。而C++方案需手动安装依赖库，编写预处理（图像缩放、格式转换）、推理（ONNX Runtime API调用）和后处理（NMS算法实现）代码，输出需手动解析原始张量数据。Python适合快速开发，C++更适合性能优化场景，两者在环境配置、代码复杂度和开发效率上存在显著差异。]]></description><category></category></item><item><title><![CDATA[Rust多线程编程学习笔记]]></title><link>https://blog.youkuaiyun.com/lanzh_syf/article/details/157545503</link><guid>https://blog.youkuaiyun.com/lanzh_syf/article/details/157545503</guid><author>lanzh_syf</author><pubDate>Fri, 30 Jan 2026 11:53:50 +0800</pubDate><description><![CDATA[本文介绍了Rust语言中的多线程编程基础和实践方法。主要内容包括：同步线程编程（线程创建、通信、共享状态、返回值和线程池）、异步线程编程（Tokio运行时、异步任务和通道）、线程安全机制（所有权、同步原语、Send/Sync trait）以及性能优化技巧。Rust通过独特的所有权系统和类型系统保障线程安全，避免数据竞争问题。文章提供了详细的代码示例，展示如何实现线程间通信、状态共享和任务处理，并比较了同步与异步编程的特点和适用场景，为开发者提供了Rust多线程编程的全面指导。]]></description><category></category></item><item><title><![CDATA[YOLOv8n 输入输出格式笔记]]></title><link>https://blog.youkuaiyun.com/lanzh_syf/article/details/157545030</link><guid>https://blog.youkuaiyun.com/lanzh_syf/article/details/157545030</guid><author>lanzh_syf</author><pubDate>Fri, 30 Jan 2026 11:35:18 +0800</pubDate><description><![CDATA[本文详细介绍了YOLO模型的输入输出格式，包括PyTorch和ONNX两种版本。PyTorch模型输入为torch.Tensor，形状为(batch_size, 3, height, width)，输出包含原始检测结果和后处理结果；ONNX模型输入为numpy.ndarray，输出为List[ndarray]。两种模型都支持自动预处理，输出格式在多类别和单类别模型中有所不同，主要区别在于第4、5索引的含义。Ultralytics库可统一处理两种模型的输入输出，简化使用流程。]]></description><category></category></item><item><title><![CDATA[C++ 多线程【笔记】]]></title><link>https://blog.youkuaiyun.com/lanzh_syf/article/details/156540177</link><guid>https://blog.youkuaiyun.com/lanzh_syf/article/details/156540177</guid><author>lanzh_syf</author><pubDate>Sat, 03 Jan 2026 16:00:02 +0800</pubDate><description><![CDATA[本文深入解析C++多线程编程技术，涵盖同步和异步两种编程范式。在同步编程方面，详细介绍了互斥锁(Mutex)、条件变量(Condition Variable)等基础同步原语的使用方法，以及读写锁(Read-Write Lock)和屏障(Barrier)等高级同步模式的实现。异步编程部分重点讲解了Future/Promise模式，展示了如何通过std::async创建异步任务，以及使用std::promise主动设置异步操作结果。代码示例涵盖了线程安全计数器、有界缓冲区、线程安全哈希表等典型应用场景，并介绍了]]></description><category></category></item><item><title><![CDATA[C++ 引用【笔记】]]></title><link>https://blog.youkuaiyun.com/lanzh_syf/article/details/156539982</link><guid>https://blog.youkuaiyun.com/lanzh_syf/article/details/156539982</guid><author>lanzh_syf</author><pubDate>Sat, 03 Jan 2026 15:49:44 +0800</pubDate><description><![CDATA[本文深入探讨了C++引用的核心概念与应用。首先分析了引用的本质与内存布局，对比了引用与指针的关键区别。然后详细介绍了左值引用与右值引用，包括移动语义的实现原理。接着讲解了模板中的万能引用和完美转发技术，以及引用限定成员函数的用法。文章还涵盖了引用生命周期延长规则和临时对象处理的注意事项，最后展示了引用在函数式编程中的典型应用场景。这些内容系统性地覆盖了C++引用机制的核心知识点，为深入理解现代C++编程提供了重要参考。]]></description><category></category></item><item><title><![CDATA[C++ 模板【笔记】]]></title><link>https://blog.youkuaiyun.com/lanzh_syf/article/details/156539913</link><guid>https://blog.youkuaiyun.com/lanzh_syf/article/details/156539913</guid><author>lanzh_syf</author><pubDate>Sat, 03 Jan 2026 15:46:50 +0800</pubDate><description><![CDATA[本文系统介绍了C++模板编程的核心概念与高级技巧。首先阐述了模板编译的两阶段机制，包括实例化过程和语法检查阶段。随后深入解析了函数模板的推导机制、完美转发、SFINAE等特性。在类模板部分，重点讲解了特化、可变参数和模板元编程技术。最后介绍了模板设计模式，包括CRTP和策略模式等实用技巧。全文通过丰富的代码示例，展示了模板编程的强大功能与灵活性，为开发高效、类型安全的C++程序提供了有力工具。]]></description><category></category></item><item><title><![CDATA[C++智能指针【笔记】]]></title><link>https://blog.youkuaiyun.com/lanzh_syf/article/details/156539769</link><guid>https://blog.youkuaiyun.com/lanzh_syf/article/details/156539769</guid><author>lanzh_syf</author><pubDate>Sat, 03 Jan 2026 15:43:32 +0800</pubDate><description><![CDATA[智能指针是现代C++中管理资源的核心工具，遵循RAII原则实现自动资源管理。unique_ptr提供独占所有权，通过删除拷贝构造函数确保资源唯一性，支持移动语义和自定义删除器。shared_ptr采用引用计数机制实现共享所有权，但需注意循环引用问题，可通过weak_ptr解决。weak_ptr作为弱引用不增加计数，需通过lock()检查对象有效性后使用。这些智能指针共同构成了C++安全高效的内存管理方案，有效防止资源泄漏。]]></description><category></category></item><item><title><![CDATA[STM32 F4移植LVGL 9.4.0版本教程（Keil工程,裸机）]]></title><link>https://blog.youkuaiyun.com/lanzh_syf/article/details/155066898</link><guid>https://blog.youkuaiyun.com/lanzh_syf/article/details/155066898</guid><author>lanzh_syf</author><pubDate>Thu, 20 Nov 2025 15:52:25 +0800</pubDate><description><![CDATA[本文介绍了在STM32F4项目中移植LVGL 9.4.0的详细步骤。主要内容包括：1)下载并精简LVGL源码，保留核心文件和目录；2)将LVGL添加到Keil工程，配置头文件路径和源文件；3)修改配置文件(lv_conf.h)和显示接口(lv_port_disp.c)；4)实现屏幕驱动，包括初始化、刷新缓冲区和画点API；5)为LVGL提供tick计数和任务处理。文章特别强调了文件结构完整性、关键配置项的修改以及显示驱动的实现方法，为在STM32平台使用LVGUI提供了实用指南。]]></description><category></category></item><item><title><![CDATA[STM32H7+FreeRTOS+LwIP移植EtherCAT开源主站SOEM]]></title><link>https://blog.youkuaiyun.com/lanzh_syf/article/details/149937111</link><guid>https://blog.youkuaiyun.com/lanzh_syf/article/details/149937111</guid><author>lanzh_syf</author><pubDate>Tue, 05 Aug 2025 14:46:40 +0800</pubDate><description><![CDATA[摘要：本文介绍了在FreeRTOS系统下移植EtherCAT主站协议栈的关键代码修改，主要包括：1) 在osal.c中实现高精度定时和延时功能，使用TIM17硬件定时器提供微秒级精度；2) 在oshw.c中添加大小端转换宏定义；3) 在nicdrv.h中定义FreeRTOS互斥量操作接口，替换原系统调用。这些修改使协议栈能在FreeRTOS实时操作系统中稳定运行，满足EtherCAT通信的实时性要求。]]></description><category></category></item><item><title><![CDATA[STM32CubeIDE最新汉化教程]]></title><link>https://blog.youkuaiyun.com/lanzh_syf/article/details/149566783</link><guid>https://blog.youkuaiyun.com/lanzh_syf/article/details/149566783</guid><author>lanzh_syf</author><pubDate>Wed, 23 Jul 2025 13:31:57 +0800</pubDate><description><![CDATA[本文介绍了为Eclipse IDE安装中文语言包的详细步骤：1)提供官方中文包软件源地址；2)通过&quot;Help &gt; Install New Software&quot;添加软件源；3)选择简体中文语言包进行安装；4)信任软件源证书；5)完成安装后重启Eclipse；6)最终实现界面中文化。整个过程包含6个关键步骤，并配有操作截图说明，帮助用户快速完成Eclipse的本地化设置。]]></description><category></category></item><item><title><![CDATA[FDCAN 经典模式配置]]></title><link>https://blog.youkuaiyun.com/lanzh_syf/article/details/145479672</link><guid>https://blog.youkuaiyun.com/lanzh_syf/article/details/145479672</guid><author>lanzh_syf</author><pubDate>Thu, 06 Feb 2025 18:10:28 +0800</pubDate><description><![CDATA[FDCAN配置]]></description><category></category></item><item><title><![CDATA[CANopen 学习笔记（3）]]></title><link>https://blog.youkuaiyun.com/lanzh_syf/article/details/145281541</link><guid>https://blog.youkuaiyun.com/lanzh_syf/article/details/145281541</guid><author>lanzh_syf</author><pubDate>Tue, 21 Jan 2025 13:13:13 +0800</pubDate><description><![CDATA[canopen cia 402 pdo map]]></description><category></category></item><item><title><![CDATA[CANopen 学习笔记（2）]]></title><link>https://blog.youkuaiyun.com/lanzh_syf/article/details/145134845</link><guid>https://blog.youkuaiyun.com/lanzh_syf/article/details/145134845</guid><author>lanzh_syf</author><pubDate>Tue, 14 Jan 2025 11:28:45 +0800</pubDate><description><![CDATA[修改映射参数后执行sendPDOevent(&CanFestival_Master_Data);/* 发送PDO事件 */则会触发PDO传输。还有一直就是定时器异步发送，配置发送类型为0xFE，定时器发送时间为0x64,则会以100ms的周期发送PDO。发送类型设置为0xFE或0xFF。]]></description><category></category></item><item><title><![CDATA[CANopen 学习笔记（1）]]></title><link>https://blog.youkuaiyun.com/lanzh_syf/article/details/145026470</link><guid>https://blog.youkuaiyun.com/lanzh_syf/article/details/145026470</guid><author>lanzh_syf</author><pubDate>Thu, 09 Jan 2025 11:00:44 +0800</pubDate><description><![CDATA[为复位节点通讯（让节点的 CAN 和 CANopen 通讯重新初始化，一般用于总线收到干扰，导致节点总线错误被动，或者总线关闭时）。PDO 通信参数，定义了该设备所使用的 COB-ID、传输类型、定时周期等。为复位节点应用层（让节点的应用恢复初始状态，比如列车门都恢复打开状态）；为进入预操作状态（让节点进入预操作状态）；为启动命令（让节点进入操作状态）；为停止命令（让节点进入停止状态）；]]></description><category></category></item></channel></rss>