<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[流风回雪的博客]]></title><description><![CDATA[温故而知新]]></description><link>https://blog.youkuaiyun.com/zwl1584671413</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; zwl1584671413]]></copyright><item><title><![CDATA[secureCRT中使用python脚本自动化测试vela设备]]></title><link>https://blog.youkuaiyun.com/zwl1584671413/article/details/139963617</link><guid>https://blog.youkuaiyun.com/zwl1584671413/article/details/139963617</guid><author>zwl1584671413</author><pubDate>Tue, 25 Jun 2024 16:57:39 +0800</pubDate><description><![CDATA[利用vela设备自带的wapi命令行，重复执行联网断网的命令，测试系统稳定性。]]></description><category></category></item><item><title><![CDATA[使用python快速将主机字节序转为网络字节序]]></title><link>https://blog.youkuaiyun.com/zwl1584671413/article/details/126907863</link><guid>https://blog.youkuaiyun.com/zwl1584671413/article/details/126907863</guid><author>zwl1584671413</author><pubDate>Sat, 17 Sep 2022 17:08:37 +0800</pubDate><description><![CDATA[主机字节序转网络字节序]]></description><category></category></item><item><title><![CDATA[Linux使用wpa_supplicant手动配置连接WiFi]]></title><link>https://blog.youkuaiyun.com/zwl1584671413/article/details/126761834</link><guid>https://blog.youkuaiyun.com/zwl1584671413/article/details/126761834</guid><author>zwl1584671413</author><pubDate>Thu, 08 Sep 2022 12:07:34 +0800</pubDate><description><![CDATA[Linux使用wpa_supplicant手动配置连接WiFi]]></description><category></category></item><item><title><![CDATA[TCP/IP协议栈之LwIP-pbuf]]></title><link>https://blog.youkuaiyun.com/zwl1584671413/article/details/125491205</link><guid>https://blog.youkuaiyun.com/zwl1584671413/article/details/125491205</guid><author>zwl1584671413</author><pubDate>Mon, 27 Jun 2022 20:29:23 +0800</pubDate><description><![CDATA[pbuf结构体就是一个描述协议栈中数据包的数据结构：



next是一个pbuf类型的指针，指向下一个pbuf，因为网络中的数据包可能很大，而pbuf能管理的数据包大小有限，就会采用链表的形式将所有的pbuf包连接起来，这样子才能完整描述一个数据包，这些连接起来的pbuf包会组成一个链表，称之为pbuf链表。
payload是一个指向数据区域的指针，指向该pbuf管理的数据区域起始地址，这里的数据区域可以是紧跟在pbuf结构体地址后面的RAM空间，也可以是ROM中的某个地址上，取决于pbuf的类型。
to]]></description><category></category></item><item><title><![CDATA[C语言实现TCP/IP的checksum校验和]]></title><link>https://blog.youkuaiyun.com/zwl1584671413/article/details/124711714</link><guid>https://blog.youkuaiyun.com/zwl1584671413/article/details/124711714</guid><author>zwl1584671413</author><pubDate>Wed, 11 May 2022 15:42:29 +0800</pubDate><description><![CDATA[Linux C语言实现TCP/IP的checksum校验和计算

一、sendip的TCP/IP的checksum计算
	二、checksum的计算测试


  在使用原始套接字发送/接收报文时，需要计算IP/TCP的checksum来验证报文的准确性，网上看了很多开源软件的实现（如SendIP、libdnet、Suricata），感觉SendIP的代码最简单，所以整理如下方便后面使用。

一、sendip的TCP/IP的checksum计算

1、sendip:GitHub - rickettm/Sen.]]></description><category></category></item><item><title><![CDATA[内存碎片产生原因及解决办法]]></title><link>https://blog.youkuaiyun.com/zwl1584671413/article/details/123552593</link><guid>https://blog.youkuaiyun.com/zwl1584671413/article/details/123552593</guid><author>zwl1584671413</author><pubDate>Thu, 17 Mar 2022 15:55:02 +0800</pubDate><description><![CDATA[来源：知乎

链接：https://www.zhihu.com/question/51836333/answer/145693402


内存碎片通常分为内部碎片和外部碎片：
 1. 内部碎片是由于采用固定大小的内存分区，当一个进程不能完全使用分给它的固定内存区域时就产生了内部碎片，通常内部碎片难以完全避免；
 2. 外部碎片是由于某些未分配的连续内存区域太小，以至于不能满足任意进程的内存分配请求，从而不能被进程利用的内存区域。

 现在普遍采用的段页式内存分配方式就是将进程的内存区域分为不同的段，...]]></description><category></category></item><item><title><![CDATA[SDIO协议概述]]></title><link>https://blog.youkuaiyun.com/zwl1584671413/article/details/123531955</link><guid>https://blog.youkuaiyun.com/zwl1584671413/article/details/123531955</guid><author>zwl1584671413</author><pubDate>Wed, 16 Mar 2022 17:41:23 +0800</pubDate><description><![CDATA[SDIO总线

SDIO总线和USB总线类似，SDIO总线也有两端，其中一端是主机（HOST）端，另一端是设备端（DEVICE），采用HOST- DEVICE这样的设计是为了简化DEVICE的设计，所有的通信都是由HOST端发出命令开始的。在DEVICE端只要能解溪HOST的命令，就可以同HOST进行通信了。

这个是同SD的总线一样的,其中有如下的几种信号

1.CLK信号:HOST给DEVICE的时...]]></description><category></category></item><item><title><![CDATA[XIP是什么？]]></title><link>https://blog.youkuaiyun.com/zwl1584671413/article/details/123252456</link><guid>https://blog.youkuaiyun.com/zwl1584671413/article/details/123252456</guid><author>zwl1584671413</author><pubDate>Thu, 03 Mar 2022 14:01:55 +0800</pubDate><description><![CDATA[1、XIP是什么？

XIP（executed in place）本地执行。操作系统采用这种系统，可以不用将内核或执行代码拷贝到内存，而直接在代码的存储空间直接运行。

XIP是一种能够直接在闪速存储器中执行代码而无须装载到RAM中执行的机制。

2、XIP机制实现的原理

XIP的原理很简单，即指操作系统或应用程序直接从非易失性存储器中执行。

3、XIP机制作用

减少了内核从闪速存储器拷贝到RAM的时间，并采用非压缩映像减少了内核自解压的时间。由于闪速存储器访问速度低于RAM，采用XIP技术的同时，根]]></description><category></category></item><item><title><![CDATA[结构体后面定义一个空数组的含义]]></title><link>https://blog.youkuaiyun.com/zwl1584671413/article/details/122459038</link><guid>https://blog.youkuaiyun.com/zwl1584671413/article/details/122459038</guid><author>zwl1584671413</author><pubDate>Wed, 12 Jan 2022 17:52:43 +0800</pubDate><description><![CDATA[最近在写C代码，经常看到Linux 的头文件中有的结构体后面会定义一个空数组，不知道其为何作用？经过高人指点终于明白其要点！



struct inotify_event {
 __s32 wd;
 __u32 mask;
 __u32 cookie;
 __u32 len;
 char name[0];
};
如上，结构体最后一个元素name为空数组。



这是个广泛使用的常见技巧，常用来构成缓冲区。如果你是做嵌入式开发，这种技巧应该用得漫天飞了。 比起指针用空数组有这样的优势：
...]]></description><category></category></item><item><title><![CDATA[E: Unable to locate package repo]]></title><link>https://blog.youkuaiyun.com/zwl1584671413/article/details/122068296</link><guid>https://blog.youkuaiyun.com/zwl1584671413/article/details/122068296</guid><author>zwl1584671413</author><pubDate>Tue, 21 Dec 2021 16:53:50 +0800</pubDate><description><![CDATA[This error comes after

[sudo apt install repo]

means that you tell your system to see if there is a package called repo and install it if it can find it.Since there is no package repo the notice you get is:

[E: Unable to locate package repo]

So this is]]></description><category></category></item><item><title><![CDATA[permissions 0755 are too open]]></title><link>https://blog.youkuaiyun.com/zwl1584671413/article/details/121856545</link><guid>https://blog.youkuaiyun.com/zwl1584671413/article/details/121856545</guid><author>zwl1584671413</author><pubDate>Fri, 10 Dec 2021 14:58:09 +0800</pubDate><description><![CDATA[1

						2

						3

						4

						5

						6

						7

						8

						9

						10

						11
						
						
						@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

						@ WARNING: UNPROTECTED PRIVATE KEY FILE! @

	...]]></description><category></category></item><item><title><![CDATA[gcc 优化选项 -O1 -O2 -O3 -Os 优先级]]></title><link>https://blog.youkuaiyun.com/zwl1584671413/article/details/121351847</link><guid>https://blog.youkuaiyun.com/zwl1584671413/article/details/121351847</guid><author>zwl1584671413</author><pubDate>Tue, 16 Nov 2021 11:16:23 +0800</pubDate><description><![CDATA[Gcc编译优化简介

   gcc提供了为了满足用户不同程度的的优化需要，提供了近百种优化选项，用来对{编译时间，目标文件长度，执行效率}这个三维模型进行不同的取舍和平衡。优化的方法不一而足，总体上将有以下几类：

1）精简操作指令；
	2）尽量满足cpu的流水操作；
	3）通过对程序行为地猜测，重新调整代码的执行顺序；
	4）充分使用寄存器；
	5）对简单的调用进行展开等等。 
   想全部了解这些编译选项，并在其中挑选适合的选项进行优化，无疑像个噩梦般的过程。单从gnu的官方网...]]></description><category></category></item><item><title><![CDATA[Assert “tcp_receive: ooseq tcplen ＞ rcv_wnd“]]></title><link>https://blog.youkuaiyun.com/zwl1584671413/article/details/121343259</link><guid>https://blog.youkuaiyun.com/zwl1584671413/article/details/121343259</guid><author>zwl1584671413</author><pubDate>Mon, 15 Nov 2021 20:56:22 +0800</pubDate><description><![CDATA[tcp: tighten up checks for received SYN


Any malicous segment could contain a SYN up to now (no check).
A SYN in the wrong segment could break OOSEQ queueing.
Fix this by allowing SYN only in states where it is required.

See bug #56397: Assert "tcp_recei]]></description><category></category></item><item><title><![CDATA[[lwip-users] memp_malloc: out of memory in pool TCP_PCB]]></title><link>https://blog.youkuaiyun.com/zwl1584671413/article/details/121251141</link><guid>https://blog.youkuaiyun.com/zwl1584671413/article/details/121251141</guid><author>zwl1584671413</author><pubDate>Wed, 10 Nov 2021 16:27:53 +0800</pubDate><description><![CDATA[[lwip-users] memp_malloc: out of memory in pool TCP_PCB





Anirudha Sarangi

未读，2011年11月4日 下午4:32:00



收件人Mailing list for lwIP users

Hi,

Recently after fixing my previous issue (I had an issue in sys_arch.c), I came across one interesting issue for .]]></description><category></category></item><item><title><![CDATA[Objectives of TWT]]></title><link>https://blog.youkuaiyun.com/zwl1584671413/article/details/120639180</link><guid>https://blog.youkuaiyun.com/zwl1584671413/article/details/120639180</guid><author>zwl1584671413</author><pubDate>Thu, 07 Oct 2021 18:03:02 +0800</pubDate><description><![CDATA[Objectifs of 802.11ax

Increase the performance of the Wi-Fi network by a factor of 4 while improving or not impacting power requirements
	Provide power saving mechanisms for new emerging IoT devices
All the current power saving mechanisms defined today re]]></description><category></category></item><item><title><![CDATA[BLE Mesh(2)—— 基本术语及含义]]></title><link>https://blog.youkuaiyun.com/zwl1584671413/article/details/120455424</link><guid>https://blog.youkuaiyun.com/zwl1584671413/article/details/120455424</guid><author>zwl1584671413</author><pubDate>Fri, 24 Sep 2021 15:06:34 +0800</pubDate><description><![CDATA[目录

1、节点（node）

2、开通配置（provisioning）

3、元素（element）

4、消息（message）

5、地址（Address）

6、消息的发布/订阅（Publish / Subscribe）

7、状态与属性（State / Property）

7.1、状态

7.1.1 状态的绑定

7.2、属性

8、特性

8.1、中继（Relay）

8.2、低功耗 &amp; 友节点（Low Power &amp; Friend）

8.3、代理节点（Proxy）

9、安]]></description><category></category></item><item><title><![CDATA[BLE Mesh(1)—— 简述]]></title><link>https://blog.youkuaiyun.com/zwl1584671413/article/details/120455381</link><guid>https://blog.youkuaiyun.com/zwl1584671413/article/details/120455381</guid><author>zwl1584671413</author><pubDate>Fri, 24 Sep 2021 15:05:34 +0800</pubDate><description><![CDATA[要说清楚 BLE Mesh 首先需要回答几个问题：

1、mesh 是什么？

2、mesh 用来干嘛？

3、mesh 在 BLE 中的位置？

BLE 作为蓝牙发展中的后续产物，现目前支持的应用场景非常有限，在 Connection 状态下的数据传输，也是点对点的数据传输，虽然现在 BLE 能够支持 Multi-Connection，但是其最大连接数和直接的硬件资源强相关，所以无法支持无限个连接，即便是能够支持很多连接，在 BLE5.x时代，引入的多 PHY 规格中，Coded PHY 125kbps ]]></description><category></category></item><item><title><![CDATA[嵌入式中主动触发hardfault]]></title><link>https://blog.youkuaiyun.com/zwl1584671413/article/details/120334107</link><guid>https://blog.youkuaiyun.com/zwl1584671413/article/details/120334107</guid><author>zwl1584671413</author><pubDate>Thu, 16 Sep 2021 17:51:31 +0800</pubDate><description><![CDATA[通常在嵌入式产品的开发过程中,我们需要和各种死机的现场打交道,分析pc指针,backtrace等;但是有的时候呢,我们也需要在程序中在适当的时机来主动发生crash,比如主动触发hardfault,以此来验证某些功能是否完善.诸如,看门狗是否好用? hardfault后设备能否成功复位?或者hardfault后dump出来的信息是否足够丰富等等.

如下是一个通过向空指针来写数据来主动产生hardfault的示例:

+    if (msg-&gt;id == 0x2002) {
...]]></description><category></category></item><item><title><![CDATA[定位ARM Hard Fault 的方法]]></title><link>https://blog.youkuaiyun.com/zwl1584671413/article/details/120309950</link><guid>https://blog.youkuaiyun.com/zwl1584671413/article/details/120309950</guid><author>zwl1584671413</author><pubDate>Wed, 15 Sep 2021 15:40:00 +0800</pubDate><description><![CDATA[1，用Keil的话，可以做如下操作：

先将fault中断函数的内容改为:



HardFault_Handler\

PROC

;EXPORTHardFault_Handler[WEAK]

;B.

IMPORT hard_fault_handler_c 

...]]></description><category></category></item><item><title><![CDATA[Cortex-M3基本知识点（手册）]]></title><link>https://blog.youkuaiyun.com/zwl1584671413/article/details/120305614</link><guid>https://blog.youkuaiyun.com/zwl1584671413/article/details/120305614</guid><author>zwl1584671413</author><pubDate>Wed, 15 Sep 2021 11:54:36 +0800</pubDate><description><![CDATA[cortex-M3内核简单分析


1、cortex - M3内核：只是arm公司提供的一个内核
基于cortex - M3的MCU：包括内核+内存+外设等一些其他的器件。

2、cortex -M3架构的特点：
（1）处理器内核，数据路径，寄存器，存储器接口都是32位的。
（2）采用哈佛结构，数据总线和指令总线是独立的，取指令和读数据可以同时进行。
（3）支持大段模式和小端模式

3、寄存器R0-R12 通用寄存器 一般16位的thumb指令能访问R0-R7 ;

4、异常的概念：
凡是打断程序执行顺的事]]></description><category></category></item></channel></rss>