<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[moonlinux20704的博客]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/moonlinux20704</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; moonlinux20704]]></copyright><item><title><![CDATA[语音低功耗]]></title><link>https://blog.csdn.net/moonlinux20704/article/details/149249461</link><guid>https://blog.csdn.net/moonlinux20704/article/details/149249461</guid><author>moonlinux20704</author><pubDate>Thu, 10 Jul 2025 14:29:58 +0800</pubDate><description><![CDATA[✅ 有，关键是拆解语音识别功能功能是否有低功耗实现？典型功耗范围唤醒词检测（KWS）✅ 有< 0.5mA本地命令词识别✅ 有限命令支持1～5mA 执行时实时语音识别（长句）❌ 功耗高（建议云端）100mA+]]></description><category></category></item><item><title><![CDATA[LVGL常见面试题]]></title><link>https://blog.csdn.net/moonlinux20704/article/details/148009002</link><guid>https://blog.csdn.net/moonlinux20704/article/details/148009002</guid><author>moonlinux20704</author><pubDate>Fri, 16 May 2025 15:59:13 +0800</pubDate><description><![CDATA[包含颜色、边框、字体等属性可以被多个对象共享支持不同状态下的样式变化(如按下、禁用等)样式可以级联(类似CSS)]]></description><category></category></item><item><title><![CDATA[编译某基于openwrt的sdk]]></title><link>https://blog.csdn.net/moonlinux20704/article/details/120787990</link><guid>https://blog.csdn.net/moonlinux20704/article/details/120787990</guid><author>moonlinux20704</author><pubDate>Fri, 15 Oct 2021 17:47:54 +0800</pubDate><description><![CDATA[由于自己的linux系统比较新，导致编译个基于openwrt的sdk问题多多，在此记录解决过程

1.
问题：
freadahead.c: In function 'freadahead':
freadahead.c:91:3: error: #error "Please port gnulib freadahead.c to your platform! Look at the definition of fflush, fread, ungetc on your system, then report ]]></description><category></category></item><item><title><![CDATA[证书与签名是什么]]></title><link>https://blog.csdn.net/moonlinux20704/article/details/119460705</link><guid>https://blog.csdn.net/moonlinux20704/article/details/119460705</guid><author>moonlinux20704</author><pubDate>Fri, 06 Aug 2021 17:55:17 +0800</pubDate><description><![CDATA[1.
  

鲍勃有两把钥匙，一把是公钥，另一把是私钥。

 2.
  

鲍勃把公钥送给他的朋友们—-帕蒂、道格、苏珊—-每人一把。

3.

苏珊要给鲍勃写一封保密的信。她写完后用鲍勃的公钥加密，就可以达到保密的效果。

 4.
  

    鲍勃收信后，用私钥解密，就看到了信件内容。这里要强调的是，只要鲍勃的私钥不泄露，这封信就是安全的，即使落在别人手里，也无法解密。

5.
  

鲍勃给苏珊回信，决定采用”数字签名”。他写完后先用Hash函数，生成信件的摘要（digest）。

...]]></description><category></category></item><item><title><![CDATA[uC/OS-III&FreeRTOS区别]]></title><link>https://blog.csdn.net/moonlinux20704/article/details/117074296</link><guid>https://blog.csdn.net/moonlinux20704/article/details/117074296</guid><author>moonlinux20704</author><pubDate>Thu, 20 May 2021 14:04:55 +0800</pubDate><description><![CDATA[在阅读完uC/OS-III（V3.03.01）和FreeRTOS（V10.0.1）的源码后，我对RTOS有了较深的认识。现将它们之间的一些区别总结出来，有利于大家理解这两个RTOS。

1、uCOS-III中所有的内核对象（如任务控制块、消息队列、信号量等）都是静态创建的，需要用户提供。FreeRTOS中的内核对象支持动态和静态两种创建方法。

（PS： 其实系统提不提供动态创建功能并不那么重要，因为在静态创建的方法的基础上加入内存管理机制，就能自已封装实现动态创建函数）



2、uCOS-III中的任.]]></description><category></category></item><item><title><![CDATA[RSA ~ 非对称加密算法]]></title><link>https://blog.csdn.net/moonlinux20704/article/details/116134983</link><guid>https://blog.csdn.net/moonlinux20704/article/details/116134983</guid><author>moonlinux20704</author><pubDate>Sun, 25 Apr 2021 18:03:31 +0800</pubDate><description><![CDATA[RSA：

非对称加密，加密与解密使用的密钥不是同一密钥，对中一个对外公开，称为公钥，另一个只有所有者知道，称为私钥。

用公钥加密的信息只有私钥才能解开，反之，用私钥加密的信息只有公钥才能解开（签名验签）。

代表：RSA算法。速度慢，适合少量数据加密。对称加密算法不能实现签名，因此签名只能非对称算法。

RSA算法非常简单，概述如下：

找两素数p和q

取n=p*q

取t=(p-1)*(q-1)

取任何一个数e,要求满足e&lt;t并且e与t互素（就是最大公因数为1）...]]></description><category></category></item><item><title><![CDATA[C++利用mongoose搭建web服务器]]></title><link>https://blog.csdn.net/moonlinux20704/article/details/116133262</link><guid>https://blog.csdn.net/moonlinux20704/article/details/116133262</guid><author>moonlinux20704</author><pubDate>Sun, 25 Apr 2021 16:59:40 +0800</pubDate><description><![CDATA[0、前言
Mongoose是c语言写成的网络库。它为TCP、UDP、HTTP、WebSocket、CoAP、MQTT实现了事件驱动型的非阻塞api。其具有以下特性：

跨平台：可在linux/unix macos QNX eCos Windows Android Iphone FreeRtos上运行；

原生支持PicoTCP的嵌入式tcp/ip协议栈，支持LWIP嵌入式tcp/ip协议栈；

单线程，异步，非阻塞核心与简单的基于事件的API。

...]]></description><category></category></item><item><title><![CDATA[__attribute__((section(x))) 使用详解]]></title><link>https://blog.csdn.net/moonlinux20704/article/details/111300677</link><guid>https://blog.csdn.net/moonlinux20704/article/details/111300677</guid><author>moonlinux20704</author><pubDate>Wed, 16 Dec 2020 19:13:38 +0800</pubDate><description><![CDATA[无论是GNU还是ARM的编译器，都支持__attribute__所指定的编译属性，这里着重讲解一下在KEIL环境下__attribute__中的section的使用方法。



section关键字可以将变量定义到指定的输入段中，下面以具体的例子来讲解section的使用方法.






	#define SECTION(level) __attribute__((used,__section__(".fn_cmd."level)))
	
	
	#define CMD_START_EXPORT(...]]></description><category></category></item><item><title><![CDATA[WAV文件格式详解]]></title><link>https://blog.csdn.net/moonlinux20704/article/details/110739835</link><guid>https://blog.csdn.net/moonlinux20704/article/details/110739835</guid><author>moonlinux20704</author><pubDate>Sun, 06 Dec 2020 16:11:50 +0800</pubDate><description><![CDATA[.概述



Waveform Audio File Format（WAVE，又或者是因为WAV后缀而被大众所知的），它采用RIFF（Resource Interchange File Format）文件格式结构。通常用来保存PCM格式的原始音频数据，所以通常被称为无损音频。但是严格意义上来讲，WAV也可以存储其它压缩格式的音频数据。





常见的声音文件主要有两种，分别对应于单声道（11.025KHz 采样率、8Bit 的采样值）和双声道（44.1KHz 采样率、16Bit 的采样值）。采样率是...]]></description><category></category></item><item><title><![CDATA[wps原理及实现]]></title><link>https://blog.csdn.net/moonlinux20704/article/details/109102318</link><guid>https://blog.csdn.net/moonlinux20704/article/details/109102318</guid><author>moonlinux20704</author><pubDate>Thu, 15 Oct 2020 17:59:51 +0800</pubDate><description><![CDATA[这篇文章基于《Wi-Fi Simple Configuration Technical Specification Version 2.0.5》文档， 更详细的内容请直接参考文档，这里只将自己的想法做一些简单的记录。

一、WSC的三种实现

 WSC（wifi simple configuration），一看这名字就知道这个协议是用来偷懒用的，所以我将它翻译为“快速接入无线网”协议，这个协议主要包括三种快速连接方式：

 1. WPS: 看这篇文章的人，应该会知道wps是干嘛用的，但是相信也...]]></description><category></category></item><item><title><![CDATA[智能家居Zigbee和蓝牙哪个发展潜力更大？]]></title><link>https://blog.csdn.net/moonlinux20704/article/details/107720290</link><guid>https://blog.csdn.net/moonlinux20704/article/details/107720290</guid><author>moonlinux20704</author><pubDate>Fri, 31 Jul 2020 19:46:32 +0800</pubDate><description><![CDATA[今年的CES Asia 2019展几乎就是智能家居、智慧城市、智能生活的天下，只不过不同智能家居设备制造商的产品标准、生态不同。小米、华为、苹果、亚马逊这样的平台本来就在构建自己的智能家居生态，Signify、小燕科技这些智能家居制造商也在组建各自的生态。

更重要的是，无论是平台还是制造商，所用的无线通讯标准还各不一样：比如小燕科技以Zigbee为主，而BroadLink则强调Wi-Fi，米家有越来越多BLE Mesh设备。这些看来碎片化的状况，可能会让普通人不知从哪里入手；或者这种碎片化是否对行业本身的]]></description><category></category></item><item><title><![CDATA[Diffie-Hellman密钥交换]]></title><link>https://blog.csdn.net/moonlinux20704/article/details/107342888</link><guid>https://blog.csdn.net/moonlinux20704/article/details/107342888</guid><author>moonlinux20704</author><pubDate>Tue, 14 Jul 2020 17:27:18 +0800</pubDate><description><![CDATA[DH密钥交换是一种安全协议，它可以让双方在不安全的信道上创建一个密钥。双方互相发送的数据就算被第三方知晓，也无法知道加密信息的密钥。

其解决问题的主要思想可以用下图来解释：


Alice和Bob想要协商出一个只有它们两人知道的颜色，不能让第三方知道，怎么办呢？解决办法如下：

先从它们共同拥有的颜色（图中为黄色）开始，这个黄色是大家都知道的，第三方知道也没有关系。
Alice选了一个只有自己知道的颜色（图中为红色），并将之混入大家知道的黄色中，形成新的颜色（图中为棕色）。
Bob也选了一个只有自己知道的]]></description><category></category></item><item><title><![CDATA[OPENWRT启动流程分析]]></title><link>https://blog.csdn.net/moonlinux20704/article/details/106577108</link><guid>https://blog.csdn.net/moonlinux20704/article/details/106577108</guid><author>moonlinux20704</author><pubDate>Fri, 05 Jun 2020 19:48:07 +0800</pubDate><description><![CDATA[先来看框图 OPENWRT 系统启动流程框图:



既 Linux 内核从 flash 中读取，再看 MT7628AN 的 Flash 分区布局：






























]]></description><category></category></item><item><title><![CDATA[人声分离攻破“鸡尾酒会”效应，将为语音识别带来哪些新可能?]]></title><link>https://blog.csdn.net/moonlinux20704/article/details/105979871</link><guid>https://blog.csdn.net/moonlinux20704/article/details/105979871</guid><author>moonlinux20704</author><pubDate>Thu, 07 May 2020 19:30:58 +0800</pubDate><description><![CDATA[“时隔65年，在近日Google Research软件工程师Inbar Mosseri和Oran Lang发表的论文《Looking to Listen at the Cocktail Party》中，采用了一个全新的视听模型为“鸡尾酒会”问题提供了一个合适的解决之道，这一突破为语音识别不仅带来了更多新可能，同时也成为该领域一个划时代的分水岭。”



在嘈杂的室内环境中，比如在鸡尾酒会中，同时存...]]></description><category></category></item><item><title><![CDATA[MCU小型调度OS之四：调度OS与RTOS的本质区别]]></title><link>https://blog.csdn.net/moonlinux20704/article/details/103989606</link><guid>https://blog.csdn.net/moonlinux20704/article/details/103989606</guid><author>moonlinux20704</author><pubDate>Thu, 16 Jan 2020 16:33:36 +0800</pubDate><description><![CDATA[一、RTOS原理与机制：

   图1

   如上图1，这个是UCOSII，大同小异，RTOS一般都是很多任务并行运行，如何切换任务呢，一般是在一个信号量pending或者OSTimeDly的时候切换，不然一个任务一直抢占着资源，优先级低的任务永远不能执行。如果OSTimeDly之后，切换到其他任务工作，待会儿该任务就绪，又重新把当前任务的临时变量、PC指针等环境资源重新恢复到当...]]></description><category></category></item><item><title><![CDATA[MCU小型调度OS之三：任务调度机制]]></title><link>https://blog.csdn.net/moonlinux20704/article/details/103959982</link><guid>https://blog.csdn.net/moonlinux20704/article/details/103959982</guid><author>moonlinux20704</author><pubDate>Tue, 14 Jan 2020 15:21:54 +0800</pubDate><description><![CDATA[一、结构体类型：

   图1

    图2

    如上图1，task_list是任务节点的结构体，具体参数如下：

    1、task_id是任务ID，一般对某个任务操作时用来区分具体哪个任务；

    2、stat是任务的当前状态，状态类型如图2，三种状态依次为挂起休眠，就绪运行，超时；

    3、pointer是当前运行指针...]]></description><category></category></item><item><title><![CDATA[MCU小型调度OS之二：定时器]]></title><link>https://blog.csdn.net/moonlinux20704/article/details/103927505</link><guid>https://blog.csdn.net/moonlinux20704/article/details/103927505</guid><author>moonlinux20704</author><pubDate>Mon, 13 Jan 2020 15:07:57 +0800</pubDate><description><![CDATA[一、结构体类型：

   

   如上图所示，timer_list就是定时器的结构体，其中timer_id是定时器ID；enable是该定时器是否启动；expires是定时时间长度，function是定时器超时函数，p_arg是定时器传参数；next是下一个定时器节点。

二、硬定时器：

   定时器分为硬定时器和软定时器，区别为：

   1、硬定时器超时直接...]]></description><category></category></item><item><title><![CDATA[MCU小型调度OS之一：由ODM项目引起跨平台、跨系统的兼容、可移植]]></title><link>https://blog.csdn.net/moonlinux20704/article/details/103805174</link><guid>https://blog.csdn.net/moonlinux20704/article/details/103805174</guid><author>moonlinux20704</author><pubDate>Fri, 03 Jan 2020 10:43:06 +0800</pubDate><description><![CDATA[项目背景：   

   最近公司在做一个ODM项目，需要把公司内部的协议栈交互与加密方式封装成一个SDK，提供给ODM厂家调用，达到其他公司只做适配BSP，而核心业务由我们自己掌控，达到ODM厂家更换任意平台芯片，任意RTOS或者逻辑，我们都能适配，因为公司协议栈内部有交互(设备与APP之间有命令交互和阻塞等待超时等场景)，因此需要制作一个跨平台的调度机制，又能保证性能和兼容性...]]></description><category></category></item><item><title><![CDATA[Zigbee疑难问题定位以及思路方法分享 (四)]]></title><link>https://blog.csdn.net/moonlinux20704/article/details/95647480</link><guid>https://blog.csdn.net/moonlinux20704/article/details/95647480</guid><author>moonlinux20704</author><pubDate>Fri, 12 Jul 2019 19:16:34 +0800</pubDate><description><![CDATA[接着上回继续分析公司遗留的问题四，问题四的需求就是，假如其中一个网关坏了，拿了一个新的网关，能够替换接管旧网关下面的所有设备，由于搞ZigBee也有两个月了，802.15协议以及ZigBee协议也蛮熟悉了，抓包也抓过了，对ZigBee通讯多少有些了解。

    实现该问题思路有几点：1、理论上，入网成功后，设备通讯都是短地址，网关时0x0000，数据包里面有panID,推...]]></description><category></category></item><item><title><![CDATA[Zigbee疑难问题定位以及思路方法分享 (三)]]></title><link>https://blog.csdn.net/moonlinux20704/article/details/95624716</link><guid>https://blog.csdn.net/moonlinux20704/article/details/95624716</guid><author>moonlinux20704</author><pubDate>Fri, 12 Jul 2019 18:22:54 +0800</pubDate><description><![CDATA[接着上回继续分析公司遗留的问题三分析，问题三就蛮棘手的，因为是隐性问题，不容易复现，有时候，一个月才复现一次，出现这样的问题给定位带来了很大的困难，首先说一下我们产品的掉线、重连机制。

    产品掉线重连机制：设备正常通信的时候倒还好，如果出NWK_ERROR_ASSOC_CNF_DENIED情况，也就是失网的情况下，停止设备上报数据，初始化网络，进入NLME_Orph...]]></description><category></category></item></channel></rss>