<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[IssacMi的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/IssacMi</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; IssacMi]]></copyright><item><title><![CDATA[Open vSwitch源码解析之(二) 源码安装OVS]]></title><link>https://blog.youkuaiyun.com/IssacMi/article/details/124894496</link><guid>https://blog.youkuaiyun.com/IssacMi/article/details/124894496</guid><author>IssacMi</author><pubDate>Sat, 21 May 2022 10:03:32 +0800</pubDate><description><![CDATA[文章目录一 前言二 确认版本兼容性三 工具准备四 下载OVS源码五 编译步骤六 配置环境变量七 参考链接
一 前言
本文档介绍如何使用源码安装的形式，在Centos发行版中安装2.17.1版本的OVS。
二 确认版本兼容性
不同Linux版本所支持的OVS版本是不同的，按照官方的说明，Linux内核版本与OVS版本之间的适配关系如下表所示：




OVS版本
Linux内核版本




1.4.x
2.6.18~3.2


1.5.x
2.6.18~3.2


1.6.x
2.6.18~3.2


1.7]]></description><category></category></item><item><title><![CDATA[Open vSwitch源码分析之 (一)源码文件布局介绍]]></title><link>https://blog.youkuaiyun.com/IssacMi/article/details/124893674</link><guid>https://blog.youkuaiyun.com/IssacMi/article/details/124893674</guid><author>IssacMi</author><pubDate>Sat, 21 May 2022 07:34:51 +0800</pubDate><description><![CDATA[文章目录一 前言二 Open vSwitch简介2.1 简介2.2 重要组件三 帮助文档分类3.1 通用帮助文档3.1.1 OVS简要介绍3.1.2 OVS安装指导3.1.3 常见问题3.1.4 版本升级说明3.1.5 OVS中使用IPSec3.1.6 OVS实现QOS3.1.7 SELinux和OVS3.1.8 OVS实现隧道功能3.1.9 使用ssl连接OpenFlow控制器3.1.10 sflow监控流量3.1.11 代码风格要求3.1.12 常用命令介绍3.1.13 AF_XDP和OVS3.2 虚拟]]></description><category></category></item><item><title><![CDATA[Go语言基础篇 (二)安装VSCode开发环境]]></title><link>https://blog.youkuaiyun.com/IssacMi/article/details/124763594</link><guid>https://blog.youkuaiyun.com/IssacMi/article/details/124763594</guid><author>IssacMi</author><pubDate>Sat, 14 May 2022 12:24:35 +0800</pubDate><description><![CDATA[文章目录前言安装VSCode安装Remote-SSH插件配置SSH秘钥测试下期预告参考连接
前言
无论什么编程语言，一个得心应手的开发环境，不仅可以提高我们的开发效率，还可以使我们的心情愉悦，感受到世界的美好。
下面我就对我平常使用最多的VSCode软件的一些基本配置进行说明。
安装VSCode
不同平台，VSCode的安装方法会有些许不同。并且，对于不同的平台，官方都给出了详细的安装步骤。由于安装步骤都很简单，所以劳请给位大大自行"食用"，见VSCode安装方法。
（有问题可以私信或者评论留言）
安装Re]]></description><category></category></item><item><title><![CDATA[Go语言基础篇 (一)初识Golang]]></title><link>https://blog.youkuaiyun.com/IssacMi/article/details/124763385</link><guid>https://blog.youkuaiyun.com/IssacMi/article/details/124763385</guid><author>IssacMi</author><pubDate>Sat, 14 May 2022 08:30:37 +0800</pubDate><description><![CDATA[文章目录发展历程语言特点适用人群我为什么学习Golang注意事项系列文章分类参考链接
发展历程
Go语言是在2007年由Robert Griesemer、Ken Thompson、Rob Pike三位大牛在Google合作开发的一门编程语言。
作为惯例，先来看看这三位大牛的发量如何[doge]。

其实，仔细一看还是挺多的…
言归正传，到2009年的时候，Go语言的第一个正式版本以开源的形式发布。直到现在，经过10多年的发展，Go的最新版本1.18.2已经发布。并且，生态也越来越成熟，使用Go语言进行业务开]]></description><category></category></item><item><title><![CDATA[Linux系统中的文件概念]]></title><link>https://blog.youkuaiyun.com/IssacMi/article/details/103548138</link><guid>https://blog.youkuaiyun.com/IssacMi/article/details/103548138</guid><author>IssacMi</author><pubDate>Sun, 15 Dec 2019 14:11:15 +0800</pubDate><description><![CDATA[前言
在Linux系统中，一切皆文件。那么，Linux系统中的文件包括哪些呢？
文件分类
在Linux系统中，可以将文件按照下述类型进行划分：




文件类型
文件类型标识




普通文件
-


目录文件
d


块设备文件
b


字符设备文件
c


管道文件(有名管道)
p


套接字文件
s


符号链接文件
l


查看文件类型的命令
可以在交互式shell的环境中输入：
ls -...]]></description><category></category></item><item><title><![CDATA[IO操作之标准IO]]></title><link>https://blog.youkuaiyun.com/IssacMi/article/details/103537592</link><guid>https://blog.youkuaiyun.com/IssacMi/article/details/103537592</guid><author>IssacMi</author><pubDate>Sat, 14 Dec 2019 15:24:01 +0800</pubDate><description><![CDATA[前言
在前面的文章中，我们已经对文件IO进行了简单的介绍。今天，我们便对另外一种IO操作相关的函数—标准IO进行初步的学习。
fopen函数
作用
与文件IO中的open函数的作用一致，fopen函数的作用也是打开一个文件。只是在形式上有所不同。
函数形式




函数原型
FILE *fopen(const char *path, const char *mode)




头文件
#inclu...]]></description><category></category></item><item><title><![CDATA[IO操作之文件IO]]></title><link>https://blog.youkuaiyun.com/IssacMi/article/details/103410984</link><guid>https://blog.youkuaiyun.com/IssacMi/article/details/103410984</guid><author>IssacMi</author><pubDate>Sat, 14 Dec 2019 11:25:28 +0800</pubDate><description><![CDATA[前言
在Linux系统中，一切皆文件。所以，我们不得不学习与文件相关的操作，即文件IO函数，我们在实际应用中，使用最多的文件IO函数是：open函数、write函数、read函数、lseek函数和close函数。下面，我们对上面的函数进行详细的介绍。
open函数
概述
open函数的作用是打开一个文件，该函数的形式如下：
int open(const char *pathname, int fl...]]></description><category></category></item><item><title><![CDATA[C++入坑系列(九)之构造函数与析构函数]]></title><link>https://blog.youkuaiyun.com/IssacMi/article/details/103432009</link><guid>https://blog.youkuaiyun.com/IssacMi/article/details/103432009</guid><author>IssacMi</author><pubDate>Sat, 07 Dec 2019 11:47:00 +0800</pubDate><description><![CDATA[前言
众所周知，C++是一种面向对象的编程语言，但面向对象编程并不是一种具体的编程语言，而是一种编程思想。既然C++是在C语言的基础上进行扩展的，并且C语言是一种基于面向过程编程的编程语言，那么C++是如何转变为面向对象编程的机制的呢？其实，最重要的便是C++增加了以下的一些特性：
抽象、封装、数据隐藏、多态、继承、代码的可重用性等，我们也会在后续的文章中进行更深入的学习。
本文，主要是对抽象、封...]]></description><category></category></item><item><title><![CDATA[字符空间和非字符空间]]></title><link>https://blog.youkuaiyun.com/IssacMi/article/details/103332473</link><guid>https://blog.youkuaiyun.com/IssacMi/article/details/103332473</guid><author>IssacMi</author><pubDate>Sun, 01 Dec 2019 10:33:09 +0800</pubDate><description><![CDATA[前言
对于嵌入式驱动开发人员而言，由于更多的时候都是在与底层打交道，所以需要掌握更多与内存操作相关的知识。本文，我们通过(void*)的形参方式，对C语言中的字符空间和非字符空间的参数传递进行学习。
在本文中，无论是字符空间还是非字符空间，指的都是内存中连续空间的概念，比如：数组、结构体，而不是针对单个参数传递的情况。
而对于连续空间而言，在使用函数进行处理时，往往使用地址传递的方式进行处理，不仅...]]></description><category></category></item><item><title><![CDATA[C++入坑系列(八)之定位new运算符]]></title><link>https://blog.youkuaiyun.com/IssacMi/article/details/103227911</link><guid>https://blog.youkuaiyun.com/IssacMi/article/details/103227911</guid><author>IssacMi</author><pubDate>Sun, 24 Nov 2019 20:20:18 +0800</pubDate><description><![CDATA[前言
众所周知，在C语言中，利用malloc函数和free函数在堆空间中进行动态内存的分配和释放。而在C++中，提倡使用new运算符和delete运算符同样在堆空间中完成动态内存的释放和分配。那么，我们能不能利用new运算符，在指定的位置开辟动态的内存空间呢？答案是肯定的，本文便对这一特性进行简单的介绍，如有不足和疏漏之处，还望各位读者不吝指正，谢谢！
定位new运算符的作用
为了便于区分，本文将...]]></description><category></category></item><item><title><![CDATA[位运算的使用及注意事项]]></title><link>https://blog.youkuaiyun.com/IssacMi/article/details/103227146</link><guid>https://blog.youkuaiyun.com/IssacMi/article/details/103227146</guid><author>IssacMi</author><pubDate>Sun, 24 Nov 2019 18:56:50 +0800</pubDate><description><![CDATA[前言
对于嵌入式开发尤其是底层驱动的程序员而言，位运算应该是使用频率非常高的一种运算方式了。因为硬件通常都需要按位进行运算，但是计算机软件的工作最小单位是字节。所以，正确使用位运算，是一个嵌入式开发人员的基本要求。
register关键字
作用
在嵌入式开发中，为了提高对经常使用的变量或者对效率有严格要求的变量的执行效率，编译器提供了register关键字，顾名思义，便是希望将变量存储在寄存器中，...]]></description><category></category></item><item><title><![CDATA[C++入坑系列(七)之初探函数---内联函数、默认参数]]></title><link>https://blog.youkuaiyun.com/IssacMi/article/details/103021506</link><guid>https://blog.youkuaiyun.com/IssacMi/article/details/103021506</guid><author>IssacMi</author><pubDate>Sun, 24 Nov 2019 09:11:09 +0800</pubDate><description><![CDATA[前言
无论在C语言或者C++语言中，函数都是一个非常重要的部分，可以说是一个最基本的模块。而C++相对于C语言的不同之处便在于新增了许多函数方面的特性，比如：函数重载、内联函数、默认参数等。本文首先对其中的部分特性进行总结，由于本人能力有限，如有不足之处，还望各位读者可以及时指正，谢谢大家！
内联函数
内联函数的定义
内联函数是C++新增的一个特性，其最大的目的便是提高程序运行的效率。在普通的函数...]]></description><category></category></item><item><title><![CDATA[C++入坑系列(五)之函数指针]]></title><link>https://blog.youkuaiyun.com/IssacMi/article/details/103062864</link><guid>https://blog.youkuaiyun.com/IssacMi/article/details/103062864</guid><author>IssacMi</author><pubDate>Sun, 24 Nov 2019 08:30:23 +0800</pubDate><description><![CDATA[前言
简而言之，函数指针就是函数的地址。我们可以与数组进行类比，数组的数组名就是数组的首地址，而函数的地址就是函数名。
获取函数的地址
在实际使用中，我们可以直接通过访问函数名的方式便可以获得函数的地址，如下：
void test(void);
int main()
{
	cout &lt;&lt; "test函数的地址为" &lt;&lt; test &lt;&lt; endl;
	return...]]></description><category></category></item><item><title><![CDATA[从源码到可执行文件]]></title><link>https://blog.youkuaiyun.com/IssacMi/article/details/103214665</link><guid>https://blog.youkuaiyun.com/IssacMi/article/details/103214665</guid><author>IssacMi</author><pubDate>Sat, 23 Nov 2019 17:34:35 +0800</pubDate><description><![CDATA[前言
在开发程序的过程中，我们最关注的的可能就是源代码和生成的二进制可执行文件了。其中，源代码便是由程序员编写的，可以使用C语言、C++、Java、OC等。而二进制可执行文件便是可以在相应的系统上运行的程序，比如：Windows中的**.exe可执行程序**，DSP芯片中的**.out文件**等。
对于接触计算机不久的小伙伴来说，可能会认为可执行二进制文件是直接由源代码生成的，但事实上并非如此，本...]]></description><category></category></item><item><title><![CDATA[C++入坑系列(六)之const和指针]]></title><link>https://blog.youkuaiyun.com/IssacMi/article/details/103210660</link><guid>https://blog.youkuaiyun.com/IssacMi/article/details/103210660</guid><author>IssacMi</author><pubDate>Sat, 23 Nov 2019 09:53:27 +0800</pubDate><description><![CDATA[前言
在实际的开发过程中，您是否听过指针常量和常量指针？又是否知道它们之间的区别呢？虽然两者的名称是非常相似的，但是两者的工作原理却有着很大的区别。
本文目的便是希望能够让大家理解起来更加容易，如有不足和疏漏之处，还望各位读者不吝指正，谢谢！
指针常量
概念
指针本身是一个常量，即指针的指向是不能更改的，但是可以通过指针修改指向的变量的值。
程序说明
int testNum1 = 60,testN...]]></description><category></category></item><item><title><![CDATA[C++入坑系列(四)复合类型之结构体、共用体和枚举类型]]></title><link>https://blog.youkuaiyun.com/IssacMi/article/details/103106561</link><guid>https://blog.youkuaiyun.com/IssacMi/article/details/103106561</guid><author>IssacMi</author><pubDate>Sat, 23 Nov 2019 08:30:43 +0800</pubDate><description><![CDATA[前言
无论在C语言还是C++中，均包含结构体、共用体和枚举类型。据我了解的而言，在实际应用中，可能结构体使用的几率更大一点，而共用体则更多是在嵌入式驱动等底层应用中使用的较多，枚举类型的使用频率便不是很高了。由于这三种复合数据类型的概念和使用方法比较简单，所以本文仅对其一些需要注意的内容进行总结。如有疏漏或不足之处，还望各位读者能够不吝指正。
结构体
简介
前面我们学习过的数组，其作用是保存多个相...]]></description><category></category></item><item><title><![CDATA[C++入坑系列(五)函数与数组]]></title><link>https://blog.youkuaiyun.com/IssacMi/article/details/103037467</link><guid>https://blog.youkuaiyun.com/IssacMi/article/details/103037467</guid><author>IssacMi</author><pubDate>Thu, 14 Nov 2019 08:56:44 +0800</pubDate><description><![CDATA[前言
无论是在C语言还是C++中，函数都是十分重要的内容。可谓是整个程序的基础，一个优秀的工程程序，必定是由许多功能各异的函数组成。今天，我们就来聊一聊函数，聊一聊函数与数组之间的关系。
函数的三要素
函数的组成
函数由三部分组成，分别是：返回值、函数名、参数列表，具体形式如下：
返回值 函数名(参数列表)

其中，返回值可以是除数组之外的任意数据类型，比如：整型、浮点型、结构体、类…
而函数名实...]]></description><category></category></item><item><title><![CDATA[SD卡补充 从V1.0协议说起]]></title><link>https://blog.youkuaiyun.com/IssacMi/article/details/102940498</link><guid>https://blog.youkuaiyun.com/IssacMi/article/details/102940498</guid><author>IssacMi</author><pubDate>Wed, 06 Nov 2019 18:42:08 +0800</pubDate><description><![CDATA[前言
在前面的文章中，介绍了基于SD卡的一些基本但是却比较重要的信息。后来在实践过程中，发现还遗忘了一个重要的知识点，那便是协议兼容问题。比如，UHS-II类型的设备是在V4.0.1协议才新支持的功能，如果我们使用按照V3.0.1协议开发的驱动去操作UHS-II设备，那么就可能产生不可预知的错误。所以，本人对V1.0.1协议作了一个简单的学习，从头了解整个SD卡的发展历程。本文也算是对基础知识的一...]]></description><category></category></item><item><title><![CDATA[通讯简介]]></title><link>https://blog.youkuaiyun.com/IssacMi/article/details/102807535</link><guid>https://blog.youkuaiyun.com/IssacMi/article/details/102807535</guid><author>IssacMi</author><pubDate>Tue, 29 Oct 2019 20:47:29 +0800</pubDate><description><![CDATA[前言
在进行嵌入式开发中，通讯是非常重要的，其是整个系统的神经网络，而算法便是整个系统的大脑。只有利用各种适用的通讯协议，我们才能实现系统之间以及系统与外部环境之间的数据传输、信息交换等功能，大脑才能获得各种其需要的信息。所以，本文对通讯进行简单的介绍，由于本人并非科班出生，所以难免有理解错误的地方，还望各位读者可以不吝指正，谢谢！
并行通讯与串行通讯
基本特点
顾名思义，并行通讯方式则每次可以传...]]></description><category></category></item><item><title><![CDATA[SPI协议读写SD卡介绍]]></title><link>https://blog.youkuaiyun.com/IssacMi/article/details/102785961</link><guid>https://blog.youkuaiyun.com/IssacMi/article/details/102785961</guid><author>IssacMi</author><pubDate>Mon, 28 Oct 2019 18:41:16 +0800</pubDate><description><![CDATA[前言
在前面的文章中，我们主要介绍了如何利用SDIO协议对SD卡进行读写操作的流程及注意事项。虽然SDIO协议读写SD卡的效率很高，但是，操作却比较麻烦，另外，还需要使用的芯片具有SDIO外设。这对于不具备SDIO外设的芯片而言，绝对是一个灾难。但值得庆幸的是，SD卡还支持利用SPI协议实现对SD卡的操作。比如，目前流行的DSP28335芯片便不具备SDIO外设。所以，如果想利用该DSP芯片扩展S...]]></description><category></category></item></channel></rss>