自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 收藏
  • 关注

原创 Open vSwitch源码解析之(二) 源码安装OVS

文章目录一 前言二 确认版本兼容性三 工具准备四 下载OVS源码五 编译步骤六 配置环境变量七 参考链接一 前言本文档介绍如何使用源码安装的形式,在Centos发行版中安装2.17.1版本的OVS。二 确认版本兼容性不同Linux版本所支持的OVS版本是不同的,按照官方的说明,Linux内核版本与OVS版本之间的适配关系如下表所示:OVS版本Linux内核版本1.4.x2.6.18~3.21.5.x2.6.18~3.21.6.x2.6.18~3.21.7

2022-05-21 10:03:32 644

原创 Open vSwitch源码分析之 (一)源码文件布局介绍

文章目录一 前言二 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 虚拟

2022-05-21 07:34:51 718

原创 Go语言基础篇 (二)安装VSCode开发环境

文章目录前言安装VSCode安装Remote-SSH插件配置SSH秘钥测试下期预告参考连接前言无论什么编程语言,一个得心应手的开发环境,不仅可以提高我们的开发效率,还可以使我们的心情愉悦,感受到世界的美好。下面我就对我平常使用最多的VSCode软件的一些基本配置进行说明。安装VSCode不同平台,VSCode的安装方法会有些许不同。并且,对于不同的平台,官方都给出了详细的安装步骤。由于安装步骤都很简单,所以劳请给位大大自行"食用",见VSCode安装方法。(有问题可以私信或者评论留言)安装Re

2022-05-14 12:24:35 317

原创 Go语言基础篇 (一)初识Golang

文章目录发展历程语言特点适用人群我为什么学习Golang注意事项系列文章分类参考链接发展历程Go语言是在2007年由Robert Griesemer、Ken Thompson、Rob Pike三位大牛在Google合作开发的一门编程语言。作为惯例,先来看看这三位大牛的发量如何[doge]。其实,仔细一看还是挺多的…言归正传,到2009年的时候,Go语言的第一个正式版本以开源的形式发布。直到现在,经过10多年的发展,Go的最新版本1.18.2已经发布。并且,生态也越来越成熟,使用Go语言进行业务开

2022-05-14 08:30:37 244

原创 Linux系统中的文件概念

前言在Linux系统中,一切皆文件。那么,Linux系统中的文件包括哪些呢?文件分类在Linux系统中,可以将文件按照下述类型进行划分:文件类型文件类型标识普通文件-目录文件d块设备文件b字符设备文件c管道文件(有名管道)p套接字文件s符号链接文件l查看文件类型的命令可以在交互式shell的环境中输入:ls -...

2019-12-15 14:11:15 685

原创 IO操作之标准IO

前言在前面的文章中,我们已经对文件IO进行了简单的介绍。今天,我们便对另外一种IO操作相关的函数—标准IO进行初步的学习。fopen函数作用与文件IO中的open函数的作用一致,fopen函数的作用也是打开一个文件。只是在形式上有所不同。函数形式函数原型FILE *fopen(const char *path, const char *mode)头文件#inclu...

2019-12-14 15:24:01 367

原创 IO操作之文件IO

前言在Linux系统中,一切皆文件。所以,我们不得不学习与文件相关的操作,即文件IO函数,我们在实际应用中,使用最多的文件IO函数是:open函数、write函数、read函数、lseek函数和close函数。下面,我们对上面的函数进行详细的介绍。open函数概述open函数的作用是打开一个文件,该函数的形式如下:int open(const char *pathname, int fl...

2019-12-14 11:25:28 333

原创 C++入坑系列(九)之构造函数与析构函数

前言众所周知,C++是一种面向对象的编程语言,但面向对象编程并不是一种具体的编程语言,而是一种编程思想。既然C++是在C语言的基础上进行扩展的,并且C语言是一种基于面向过程编程的编程语言,那么C++是如何转变为面向对象编程的机制的呢?其实,最重要的便是C++增加了以下的一些特性:抽象、封装、数据隐藏、多态、继承、代码的可重用性等,我们也会在后续的文章中进行更深入的学习。本文,主要是对抽象、封...

2019-12-07 11:47:00 322

原创 字符空间和非字符空间

前言对于嵌入式驱动开发人员而言,由于更多的时候都是在与底层打交道,所以需要掌握更多与内存操作相关的知识。本文,我们通过(void*)的形参方式,对C语言中的字符空间和非字符空间的参数传递进行学习。在本文中,无论是字符空间还是非字符空间,指的都是内存中连续空间的概念,比如:数组、结构体,而不是针对单个参数传递的情况。而对于连续空间而言,在使用函数进行处理时,往往使用地址传递的方式进行处理,不仅...

2019-12-01 10:33:09 712 2

原创 C++入坑系列(八)之定位new运算符

前言众所周知,在C语言中,利用malloc函数和free函数在堆空间中进行动态内存的分配和释放。而在C++中,提倡使用new运算符和delete运算符同样在堆空间中完成动态内存的释放和分配。那么,我们能不能利用new运算符,在指定的位置开辟动态的内存空间呢?答案是肯定的,本文便对这一特性进行简单的介绍,如有不足和疏漏之处,还望各位读者不吝指正,谢谢!定位new运算符的作用为了便于区分,本文将...

2019-11-24 20:20:18 638

原创 位运算的使用及注意事项

前言对于嵌入式开发尤其是底层驱动的程序员而言,位运算应该是使用频率非常高的一种运算方式了。因为硬件通常都需要按位进行运算,但是计算机软件的工作最小单位是字节。所以,正确使用位运算,是一个嵌入式开发人员的基本要求。register关键字作用在嵌入式开发中,为了提高对经常使用的变量或者对效率有严格要求的变量的执行效率,编译器提供了register关键字,顾名思义,便是希望将变量存储在寄存器中,...

2019-11-24 18:56:50 478

原创 C++入坑系列(七)之初探函数---内联函数、默认参数

前言无论在C语言或者C++语言中,函数都是一个非常重要的部分,可以说是一个最基本的模块。而C++相对于C语言的不同之处便在于新增了许多函数方面的特性,比如:函数重载、内联函数、默认参数等。本文首先对其中的部分特性进行总结,由于本人能力有限,如有不足之处,还望各位读者可以及时指正,谢谢大家!内联函数内联函数的定义内联函数是C++新增的一个特性,其最大的目的便是提高程序运行的效率。在普通的函数...

2019-11-24 09:11:09 187

原创 C++入坑系列(五)之函数指针

前言简而言之,函数指针就是函数的地址。我们可以与数组进行类比,数组的数组名就是数组的首地址,而函数的地址就是函数名。获取函数的地址在实际使用中,我们可以直接通过访问函数名的方式便可以获得函数的地址,如下:void test(void);int main(){ cout << "test函数的地址为" << test << endl; return...

2019-11-24 08:30:23 188

原创 从源码到可执行文件

前言在开发程序的过程中,我们最关注的的可能就是源代码和生成的二进制可执行文件了。其中,源代码便是由程序员编写的,可以使用C语言、C++、Java、OC等。而二进制可执行文件便是可以在相应的系统上运行的程序,比如:Windows中的**.exe可执行程序**,DSP芯片中的**.out文件**等。对于接触计算机不久的小伙伴来说,可能会认为可执行二进制文件是直接由源代码生成的,但事实上并非如此,本...

2019-11-23 17:34:35 753

原创 C++入坑系列(六)之const和指针

前言在实际的开发过程中,您是否听过指针常量和常量指针?又是否知道它们之间的区别呢?虽然两者的名称是非常相似的,但是两者的工作原理却有着很大的区别。本文目的便是希望能够让大家理解起来更加容易,如有不足和疏漏之处,还望各位读者不吝指正,谢谢!指针常量概念指针本身是一个常量,即指针的指向是不能更改的,但是可以通过指针修改指向的变量的值。程序说明int testNum1 = 60,testN...

2019-11-23 09:53:27 131

原创 C++入坑系列(四)复合类型之结构体、共用体和枚举类型

前言无论在C语言还是C++中,均包含结构体、共用体和枚举类型。据我了解的而言,在实际应用中,可能结构体使用的几率更大一点,而共用体则更多是在嵌入式驱动等底层应用中使用的较多,枚举类型的使用频率便不是很高了。由于这三种复合数据类型的概念和使用方法比较简单,所以本文仅对其一些需要注意的内容进行总结。如有疏漏或不足之处,还望各位读者能够不吝指正。结构体简介前面我们学习过的数组,其作用是保存多个相...

2019-11-23 08:30:43 619

原创 C++入坑系列(五)函数与数组

前言无论是在C语言还是C++中,函数都是十分重要的内容。可谓是整个程序的基础,一个优秀的工程程序,必定是由许多功能各异的函数组成。今天,我们就来聊一聊函数,聊一聊函数与数组之间的关系。函数的三要素函数的组成函数由三部分组成,分别是:返回值、函数名、参数列表,具体形式如下:返回值 函数名(参数列表)其中,返回值可以是除数组之外的任意数据类型,比如:整型、浮点型、结构体、类…而函数名实...

2019-11-14 08:56:44 399

原创 SD卡补充 从V1.0协议说起

前言在前面的文章中,介绍了基于SD卡的一些基本但是却比较重要的信息。后来在实践过程中,发现还遗忘了一个重要的知识点,那便是协议兼容问题。比如,UHS-II类型的设备是在V4.0.1协议才新支持的功能,如果我们使用按照V3.0.1协议开发的驱动去操作UHS-II设备,那么就可能产生不可预知的错误。所以,本人对V1.0.1协议作了一个简单的学习,从头了解整个SD卡的发展历程。本文也算是对基础知识的一...

2019-11-06 18:42:08 930

原创 通讯简介

前言在进行嵌入式开发中,通讯是非常重要的,其是整个系统的神经网络,而算法便是整个系统的大脑。只有利用各种适用的通讯协议,我们才能实现系统之间以及系统与外部环境之间的数据传输、信息交换等功能,大脑才能获得各种其需要的信息。所以,本文对通讯进行简单的介绍,由于本人并非科班出生,所以难免有理解错误的地方,还望各位读者可以不吝指正,谢谢!并行通讯与串行通讯基本特点顾名思义,并行通讯方式则每次可以传...

2019-10-29 20:47:29 356

原创 SPI协议读写SD卡介绍

前言在前面的文章中,我们主要介绍了如何利用SDIO协议对SD卡进行读写操作的流程及注意事项。虽然SDIO协议读写SD卡的效率很高,但是,操作却比较麻烦,另外,还需要使用的芯片具有SDIO外设。这对于不具备SDIO外设的芯片而言,绝对是一个灾难。但值得庆幸的是,SD卡还支持利用SPI协议实现对SD卡的操作。比如,目前流行的DSP28335芯片便不具备SDIO外设。所以,如果想利用该DSP芯片扩展S...

2019-10-28 18:41:16 4946

原创 C++入坑系列(四)复合类型之字符串

前言字符串是存储在内存中的连续字节中以 \0 作为结尾的的一系列字符。在C语言中,我们将其称之为C风格字符串,而在C++中,我们使用string类库的方式去处理字符串。本文,我们将着重介绍C++里面的string类的知识。虽然处理方法不同,但是C++仍然可以使用C语言中的处理方法。C语言中的字符串由于在C语言中不支持字符串数据类型,所以需要使用其他的方法实现字符串的相关操作。主要有两种方法:...

2019-10-27 19:35:54 283

原创 C++入坑系列之字符的处理

前言字符型数据char是程序语言中的一种非常常见的数据类型。在学提时代,当我们需要判断键盘输入的数据是否是字符或者判断字母的大小写时,常常是通过对ASCII进行比较完成的。但其实,标准为我们提供了一个专门用于处理上述需求的函数库C语言中的ctype或者C++中的cctype,我们只需要包含了相应的头文件,便可以轻松使用它们了。本文便是对上述的字符处理函数进行了简要的总结。如有疏漏之处,还望各位读...

2019-10-27 14:38:05 301

原创 C++入坑系列(四)复合数据类型之数组

前言数组是一种数据结构,能够存储多个相同数据类型的数据。比如:存储全班同学的年龄,存储全班同学的身高等。虽然数组看起来很简单,但在实际应用中,还是有很多需要注意的地方。在本文中,列出了我所目前遇到的难点和重点,希望可以和大家分享分享。如有疏漏之处,还望各位读者可以进行补充。静态数组动态数组...

2019-10-26 14:03:53 1343

原创 入“坑”C++系列之(三) C++的基本数据类型

前言在C++和C语言中,数据的数据类型可以分为基本数据类型和复合数据类型两种,而复合数据类型都是由基础数据类型构成的。本文,先对C++中的基本数据类型进行介绍,在下一篇文章中,在对复合数据类型进行更加深入的学习。C++支持的基本数据类型对于C++而言,基本的数据类型主要分为整型和浮点型。其中,整型包括:char、unsigned char、signed char、short、unsign...

2019-10-26 12:41:49 617

原创 Volatile关键字在嵌入式开发中的应用

前言在进行嵌入式开发中,我们往往会看到一个名为volatile或者__IO的关键字,那么,它们对于嵌入式开发有什么作用呢?浅析volatile数据类型实际上,__IO和volatile是相同的关键字,而__IO只是volatile的一个别名,在程序中往往利用下面的方法实现:typedef __IO volatile;既然如此,那么volatile到底是什么作用呢?其实,在C语言,编译器...

2019-10-21 20:27:27 924

原创 SDIO协议读写SD卡之数据传输模式介绍

前言在上一篇文章中,我们介绍了SD卡两种工作模式之一的卡识别模式。今天,我们来介绍一下数据传输模式的一些特点以及两种模式是如何实现转换的。由于本人能力有限,所以文章中难免会有错误和不足之处,还望各位读者可以及时提出来,谢谢!数据传输模式下的状态机流程图数据传输模式的状态机如下图所示(来源于SD协议官方文档):如何实现两种模式的切换在上一篇文章中,我们说过SD卡在什么情况下会进入卡识别模...

2019-10-21 19:02:56 5321

原创 入“坑”C++系列之(二)从Hello World开始说起

前言本文通过一个“简单”且经典的例程,对C++的一些基本语法进行简单的介绍,希望能够让大家对C++有一个初步的认识。当然,由于C++和C语言之间的特殊关系,本文也会涉及到一些C语言的知识,不过还是希望大家能够从C++的角度进行理解,毕竟我们正在入坑C++嘛。由于本人能力有限,本文难免有疏漏或错误之处,仍然希望读者不吝指正,谢谢!程序源码本文使用的程序源码如下:程序1:#include &...

2019-10-20 10:47:57 172

原创 入“坑”C++系列之(一) C++的前世今生

前言本文通过C语言与C++之间的一些对比,从而引出C++的一些基本思想。由于本人也是才入坑C++,所以对C++的特性目前不能解释得十分清楚,也难免有不足和错误之处,还望大神们多多指教,希望可以和对C++感兴趣的童鞋们共同进步。C语言简介C语言出生于20世纪70年代早期的贝尔实验室,当时的Dennis Ritchie为了开发UNIX操作系统,便开发出了经久不衰的C语言,曾经一度傲视群雄。它是...

2019-10-19 17:23:05 262

原创 对寄存器的理解

前言在进行嵌入式开发过程中,寄存器可以说是与嵌入式工程师打交道最多的东西,因为偏向底层的驱动开发,几乎都是利用寄存器完成的。那么,寄存器到底是什么呢?下面为自己的一些理解,如有错误之处,还望海涵与纠正,谢谢!内存映射在正式进入寄存器的知识之前,首先对内存映射进行简单的介绍。此处以TI公司的DSP28335芯片为例。通过查询该芯片的官方数据手册,可获知该芯片的内存分配图。由于该图比较大,即使贴...

2019-10-19 11:46:21 4585

原创 SDIO协议读写SD卡之卡识别模式介绍

前言SD卡的工作模式分为两类,分别为卡识别模式和数据传输模式,在SD卡上电或者主机发出复位命令之后的默认工作模式为卡识别模式。本文主要对卡识别模式进行介绍。命令简介在利用SDIO协议进行SD卡驱动开发中,与SPI协议驱动串行Flash类似,也是利用各种不同的命令实现对SD卡的控制。此处进行一个大致的阐述。命令数量在SDIO协议中,一共有64个命令,且每个命令的长度均为48-Bits。另外...

2019-10-18 19:02:38 3397

原创 对ISP的理解

往事回顾大学期间,最开始玩的就是89C51芯片,这也应该是很多嵌入式玩家的入门玩具吧。当时的我,甚至还不知道仿真器是个什么玩意,在加上教程中也一直使用的串口调试助手进行代码的烧写,所以也觉得这个东东没什么不好的,就是烧写程序太麻烦,还要整一个专用的软件,配置波特率,设置校验等等。直到后来,开始接触到仿真器的使用,才发现原来烧写代码可以这样简单,简直比以前太高效了,从此便不再想看见串口调试助手。...

2019-10-17 20:41:40 448

原创 SDIO协议读写SD卡之SD卡简介

SD卡的用途SD卡是一种主要以Nand Flash作为存储介质,具有体积小、数据传输速度快以及支持热插拔的优点。如今,已被广泛应用于数码相机、便携式移动设备以及手机等多种设备中。SD卡分类(一)按照大小进行分类1、Micro SD卡(本文称为SD卡)如下图所示:2、SD卡如下图所示:3、对比Micro SD卡和SD卡最主要的不同便是SD卡的尺寸更大,且侧面(红色标记)具有一个...

2019-10-17 19:06:21 2973 2

原创 STM32芯片--FSMC外设扩展外部SRAM

这里写自定义目录标题为什么要扩展外部SRAM(一)什么是SRAM简介存储器型号容量引脚配置通讯方式读写特性读取数据时序图读取数据的时序要求写入数据时序图写入数据的时序要求(二)什么是FSMC外设简介功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建...

2019-10-14 18:07:07 7422

原创 DSP28377D开发笔记(一) 初步认识DSP28377D芯片

前言由于DSP28377D芯片包含众多的外设,且开发DSP所涉及的知识面比较广。所以本文只是简要的对该芯片的一些重要特性进行介绍,以及对如何学习DSP的开发提出一些本人的想法。在后续的文章中,将会对其进行更加细致和系统的说明。如有疏漏或者错误之处,还望读者不吝指正。谢谢!芯片介绍DSP28377D是TI公司推出的一款较新的芯片,与目前市场上大量使用的2808、28335等芯片(其实是因为我目...

2019-10-11 18:33:38 13393 1

原创 C语言如何利用数组存储“变量”

C语言如何利用数组存储“变量”数组简介数字常量字符常量字符串常量背景解决方法说明数组简介众所周知,数组仅能存储常量数据,包括数字常量、字符常量、字符串常量。但在实际应用中,可能会遇到需要按需修改数组中数据值的需求,此时又应该如何解决呢?通过一段时间的测试验证,解决了项目中的该需求,于是便产生了本篇文章,也是本人的第一篇技术博客。如果有不足或错误之处,还望读者可以不吝赐教,在下不甚感激!数字常...

2019-10-10 19:01:17 14953

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除