<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/narwal</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; narwal]]></copyright><item><title><![CDATA[android系统 usb2.0 双屏异显 多屏异显]]></title><link>https://blog.youkuaiyun.com/narwal/article/details/161852540</link><guid>https://blog.youkuaiyun.com/narwal/article/details/161852540</guid><author>narwal</author><pubDate>Wed, 10 Jun 2026 10:21:35 +0800</pubDate><description><![CDATA[Android双屏异显实现方案 本文详细分析了基于Android 13 POS设备通过USB 2.0扩展双屏异显的技术方案。系统采用AM8268N USB转HDMI芯片和MiraPlug软件组件实现，关键点包括： 架构上通过VirtualDisplay创建独立显示通道，配合Presentation API实现双屏异显 AM8268N芯片采用JPEG压缩传输方案，通过USB 2.0实现1080P@60Hz输出 MiraPlug组件负责管理MediaProjection权限和VirtualDisplay创建 实]]></description><category></category></item><item><title><![CDATA[使用 HPatchLite 实现 MCU 固件差分升级]]></title><link>https://blog.youkuaiyun.com/narwal/article/details/158889417</link><guid>https://blog.youkuaiyun.com/narwal/article/details/158889417</guid><author>narwal</author><pubDate>Tue, 10 Mar 2026 17:58:09 +0800</pubDate><description><![CDATA[/ 补丁文件头部结构（40 字节）// 魔术字 "ODIF"// 头部版本// 标志位（压缩类型等）// 保留// 旧固件版本号// 新固件版本号// 旧固件大小// 新固件大小// 补丁数据大小// 旧固件 CRC32// 新固件 CRC32// 补丁数据 CRC32设计要点Magic 字段：快速识别文件类型，防止误操作版本号：使用uint32_t0xMMmmPPBB双重 CRC 校验：旧固件 CRC 确保基准正确，新固件 CRC 验证还原结果指标全量升级。]]></description><category></category></item><item><title><![CDATA[tinycrypt库 VLA 动态数组 引发的C库初始化阶段问题（BEAB BKPT 0xAB）]]></title><link>https://blog.youkuaiyun.com/narwal/article/details/152806923</link><guid>https://blog.youkuaiyun.com/narwal/article/details/152806923</guid><author>narwal</author><pubDate>Thu, 09 Oct 2025 17:16:57 +0800</pubDate><description><![CDATA[摘要： 在Cortex-M0 MCU开发中遇到启动卡死问题，经调试发现是c库初始化阶段调用了malloc接口。排查发现tinycrypt库的tc_hmac_set_key函数使用了VLA（可变长度数组），而armcc编译器会通过malloc实现VLA。通过AI工具快速定位问题后，给出两种解决方案：1)添加--no_vla编译选项禁用VLA；2)修改tc_hmac_set_key改用动态内存分配。对比发现不同AI工具在问题诊断效率上存在显著差异，精准的上下文输入对快速定位问题至关重要。]]></description><category></category></item><item><title><![CDATA[串口接收数据问题处理分享]]></title><link>https://blog.youkuaiyun.com/narwal/article/details/151609235</link><guid>https://blog.youkuaiyun.com/narwal/article/details/151609235</guid><author>narwal</author><pubDate>Fri, 12 Sep 2025 10:25:50 +0800</pubDate><description><![CDATA[摘要：在RT-Thread 5.1.0系统中，使用UART V2框架在Cortex-M0 72MHz MCU上实现115200波特率串口通信时，出现数据丢失问题。分析发现：（1）大段数据丢失是由于低优先级数据处理线程处理不及时导致环形缓冲区溢出，解决方法为增大缓冲区；（2）串口溢出标志问题可能与系统负载高、线程切换频繁有关，开启UART FIFO功能后解决。建议对于更高波特率通信（460800/921600）采用DMA方式，但需注意不定长数据的特殊处理要求。]]></description><category></category></item><item><title><![CDATA[littleFS 多线程操作出现 Corrupted dir pair]]></title><link>https://blog.youkuaiyun.com/narwal/article/details/151584560</link><guid>https://blog.youkuaiyun.com/narwal/article/details/151584560</guid><author>narwal</author><pubDate>Thu, 11 Sep 2025 17:50:23 +0800</pubDate><description><![CDATA[摘要：在RT-Thread 5.1.0标准版中使用LittleFS 2.11.0文件系统时，开启LFS_THREADSAFE后仍出现多线程操作问题。测试发现，当线程A（定时读取文件）和线程B（计算CRC32）同时操作不同文件时，频繁出现&quot;Corrupted dir pair&quot;错误及CRC32计算错误。单线程操作时问题消失，表明LittleFS的多线程支持存在缺陷。建议避免多线程直接操作LittleFS，或通过RT-Thread的DFS组件实现更高级别的文件系统管理。]]></description><category></category></item><item><title><![CDATA[RTThread线程退出与资源回收]]></title><link>https://blog.youkuaiyun.com/narwal/article/details/149241876</link><guid>https://blog.youkuaiyun.com/narwal/article/details/149241876</guid><author>narwal</author><pubDate>Thu, 10 Jul 2025 09:13:40 +0800</pubDate><description><![CDATA[RT-Thread 5.1.0线程终止建议两种方式：1.线程任务完成后直接返回，系统自动回收资源；2.其他线程通过设置终止变量让目标线程自行退出。不推荐直接使用rt_thread_exit()或rt_thread_delete()，以避免资源泄漏和竞态条件。推荐采用安全的自检退出方式，由线程检测终止条件后自行清理资源退出。]]></description><category></category></item><item><title><![CDATA[lfs移植以及问题排查记录]]></title><link>https://blog.youkuaiyun.com/narwal/article/details/149132275</link><guid>https://blog.youkuaiyun.com/narwal/article/details/149132275</guid><author>narwal</author><pubDate>Sat, 05 Jul 2025 10:11:01 +0800</pubDate><description><![CDATA[摘要：本文介绍了在Cortex-M0 MCU上移植LittleFS文件系统的过程，使用RT-Thread 5.1.0操作系统和W25Q32 SPI Flash存储。重点说明了移植步骤：准备SPI Flash驱动、实现LFS接口函数、优化内存管理（使用RT-Thread函数替代标准C库）以及配置LFS参数。针对测试中发现的写入错误问题，通过分析发现是SPI时序问题导致数据错位，通过在片选信号操作中添加NOP延时解决了该问题。最终系统经过2600次测试实现100%成功率。]]></description><category></category></item><item><title><![CDATA[keil sscanf 工作不正常问题]]></title><link>https://blog.youkuaiyun.com/narwal/article/details/146987954</link><guid>https://blog.youkuaiyun.com/narwal/article/details/146987954</guid><author>narwal</author><pubDate>Thu, 03 Apr 2025 20:00:55 +0800</pubDate><description><![CDATA[补充说明，变量的初始化工作是自己写代码实现的，所以即使采用LDR     R0, =main，变量初始化也是没有问题的。原因：没有调用编译器C库初始化。现象：sscanf工作不正常，无法取得预期结果。可能在c库中有些必要的初始化工作。背景：keil5，arm M4 mcu。]]></description><category></category></item><item><title><![CDATA[C当中引用汇编变量（符号）需要注意对齐问题]]></title><link>https://blog.youkuaiyun.com/narwal/article/details/146212514</link><guid>https://blog.youkuaiyun.com/narwal/article/details/146212514</guid><author>narwal</author><pubDate>Wed, 12 Mar 2025 19:14:58 +0800</pubDate><description><![CDATA[C文件当中引用汇编当中定义的符号，需要注意对齐问题，因为arm 访问地址一般要求4字节对齐。背景：arm cortex M mcu，keil 5。]]></description><category></category></item><item><title><![CDATA[rtthread 一张图了解 littleFS DFS FAL MTD Device关系]]></title><link>https://blog.youkuaiyun.com/narwal/article/details/144916247</link><guid>https://blog.youkuaiyun.com/narwal/article/details/144916247</guid><author>narwal</author><pubDate>Fri, 03 Jan 2025 19:03:08 +0800</pubDate><description><![CDATA[littleFS for  rtthread中已经实现好了dfs lfs功能。因此只要FAL的文件系统分区操作正常，就较简单的导入lfs了。]]></description><category></category></item><item><title><![CDATA[一张图看清rtthread 的设备类关系]]></title><link>https://blog.youkuaiyun.com/narwal/article/details/144900120</link><guid>https://blog.youkuaiyun.com/narwal/article/details/144900120</guid><author>narwal</author><pubDate>Fri, 03 Jan 2025 09:11:18 +0800</pubDate><description><![CDATA[个人感觉目前的rtthread标准版的设备框架设计是好的，但是有些被滥用。这里以 spi 设备为例，其他设备类似。]]></description><category></category></item><item><title><![CDATA[rtthread 移植记录（简约版）]]></title><link>https://blog.youkuaiyun.com/narwal/article/details/144869485</link><guid>https://blog.youkuaiyun.com/narwal/article/details/144869485</guid><author>narwal</author><pubDate>Wed, 01 Jan 2025 18:46:28 +0800</pubDate><description><![CDATA[rtthread版本：5.1.0， 目标：cortex M0 mcu，flash  256KB，ram  32KB，采用keil （V5.34）不使用设备框架，按需添加finsh，ringbuffer，fal，flashDB等组件，此方案，适合一些小型项目，mcu的存储资源还算够用的情况。对于微型项目，建议采用rtthread nano对于大型项目，可以采用设备框架，以及其他组件。]]></description><category></category></item><item><title><![CDATA[rtthread nano 莫名 hard fault 问题]]></title><link>https://blog.youkuaiyun.com/narwal/article/details/144775018</link><guid>https://blog.youkuaiyun.com/narwal/article/details/144775018</guid><author>narwal</author><pubDate>Fri, 27 Dec 2024 18:10:04 +0800</pubDate><description><![CDATA[在移植完fal和falsh db之后，main函数之中进行fal, flashdb初始化，和一些参数的读写。总是出现hard fault。一开始以为是接口使用问题，反复核对，接口使用没有问题。这个时候，意识到可能是内存的问题。尝试加大main thread的栈到1024，运行正常。原来的大小是512。]]></description><category></category></item><item><title><![CDATA[rthread nano 初始化问题记录]]></title><link>https://blog.youkuaiyun.com/narwal/article/details/144760290</link><guid>https://blog.youkuaiyun.com/narwal/article/details/144760290</guid><author>narwal</author><pubDate>Fri, 27 Dec 2024 10:12:09 +0800</pubDate><description><![CDATA[在rt_hw_board_init 中初始化中，堆栈初始化  rt_system_heap_init 建议放在  rt_components_board_init之前，因为 rt_components_board_init 是调用 INIT_BOARD_EXPORT 包装的函数，这里面可能会用到动态内存。不然会出现堆栈还没有初始化，但是却被调用的情况。要打开RT_DEBUG宏才能会出现 assert信息，否则难以发现，出现一些运行异常情况。]]></description><category></category></item><item><title><![CDATA[点阵字库编辑器]]></title><link>https://blog.youkuaiyun.com/narwal/article/details/144661357</link><guid>https://blog.youkuaiyun.com/narwal/article/details/144661357</guid><author>narwal</author><pubDate>Mon, 23 Dec 2024 11:30:02 +0800</pubDate><description><![CDATA[用工具自动生成点阵字库后，有时某些字不太好看，需要人工调整下，这里分享一个python的点阵字体编辑器。(0,0)----------------------------------------->  x轴。字库支持16x16和16x8，一个字节表示8个点，低位表示低坐标，字节横向排列。其他分辨率，可以修改代码支持。字库文件：参见文章绑定的资源。|   0字节，1字节。]]></description><category></category></item><item><title><![CDATA[keil 提示 找不到文件（.s文件）No such file or directory]]></title><link>https://blog.youkuaiyun.com/narwal/article/details/144337202</link><guid>https://blog.youkuaiyun.com/narwal/article/details/144337202</guid><author>narwal</author><pubDate>Mon, 09 Dec 2024 08:37:40 +0800</pubDate><description><![CDATA[在keil中添加了一个汇编文件（.s文件）提示 No such file or directory。可以确定文件是存在的。经过实验发现是目录过深导致。我的解决方案是把.s文件放在更高层目录。也许最新版本keil解决了这个问题。记录一个keil的小问题。keil版本V5.34。]]></description><category></category></item><item><title><![CDATA[rt thread 移植 堆栈 设置]]></title><link>https://blog.youkuaiyun.com/narwal/article/details/144316734</link><guid>https://blog.youkuaiyun.com/narwal/article/details/144316734</guid><author>narwal</author><pubDate>Sat, 07 Dec 2024 21:35:46 +0800</pubDate><description><![CDATA[在上电还未运行第一条代码前，mcu的sp寄存器加载的是__initial_sp这个地址，即静态内存Stack_Mem的结束地址。我们可以把mcu启动的栈地址设置为内存最高地址，把Stack_Size设置为0，以最大化利用内存。也可以删除这段代码。这里的__heap_base，__heap_limit等是给armcc自带的C库中的内存管理使用的，但是既然我们移植rt thread，那自然使用rthread的内存管理模块。一般在system_xxxx.s文件中，有如下的代码，一个是栈空间，一个堆空间。]]></description><category></category></item><item><title><![CDATA[通过GPT-4 关于凯西 亚特兰蒂斯的信息]]></title><link>https://blog.youkuaiyun.com/narwal/article/details/130476374</link><guid>https://blog.youkuaiyun.com/narwal/article/details/130476374</guid><author>narwal</author><pubDate>Wed, 03 May 2023 20:00:36 +0800</pubDate><description><![CDATA[已收到消息. 根据我在之前提供的英文网站上的搜索结果，爱德加·凯西（Edgar Cayce）在他的催眠状态下，曾经数百次提及亚特兰蒂斯这个地方，以下是他描述的亚特兰蒂斯的建筑、宗教、政治和社会制度等方面的细节： - 建筑：亚特兰蒂斯的建筑非常壮观，包括高大的金字塔、巨大的神庙、宫殿和公共建筑等。已收到消息. 根据我在之前提供的英文网站上的搜索结果，爱德加·凯西（Edgar Cayce）在他的催眠状态下，曾经数百次提及亚特兰蒂斯这个地方，不仅详述其细节特征，还预言亚特兰蒂斯将在1968年被世人重新发现。]]></description><category></category></item><item><title><![CDATA[一种非常类似股票走势的模拟方法]]></title><link>https://blog.youkuaiyun.com/narwal/article/details/130439226</link><guid>https://blog.youkuaiyun.com/narwal/article/details/130439226</guid><author>narwal</author><pubDate>Sat, 29 Apr 2023 11:34:42 +0800</pubDate><description><![CDATA[一种有趣的模拟算法]]></description><category></category></item><item><title><![CDATA[linux sys目录查找并添加节点]]></title><link>https://blog.youkuaiyun.com/narwal/article/details/127893388</link><guid>https://blog.youkuaiyun.com/narwal/article/details/127893388</guid><author>narwal</author><pubDate>Wed, 16 Nov 2022 21:20:49 +0800</pubDate><description><![CDATA[查找接口可使用设备树of相关接口（要按照设备树里的名称来查找），使用kset查找接口也行]]></description><category></category></item></channel></rss>