自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 示波器的使用以及基本原理

示波器是我们的眼睛 —电子工程师本文以泰克TDS2000系列示波器为例1 数字存储示波器(digital storage oscilloscope)名词解释数字是相对于模拟而言,将连续的模拟信号转换为离散的数字信号存储是表征AD采集后的数据可以进行存储(有存储深度一说)示波器的根本目的是展示(显示)波形2 基本原理波形首先要通过探头,经由前端的放大器进行放大,之后由模数转换单...

2019-11-17 10:47:24 4586

原创 深入理解任务堆栈以及堆栈溢出

前言:在多任务操作系统中创建任务时,都需要指定该任务的堆栈大小,那么这个堆栈的作用时什么呢?什么情况下需要用到堆栈,以及大小不够时会产生什么异常呢?1 任务状态简单分为运行态,就绪态,阻塞态。运行态:万事俱备,不欠东风(获得CPU控制权);就绪态:万事俱备,只欠东风(缺少CPU控制权);阻塞态:万事不俱备(等事件或信号),还欠东风(缺少CPU控制权);每个任务基本上都会游离于这三种状...

2019-05-26 23:56:18 5547 1

原创 深入理解函数调用过程以及函数栈的变化

前言:函数在编程中的重要性不言而喻。函数三要素,函数参数以及局部变量存在于栈上,局部变量定义需要初始化等,这些所谓的函数特征都熟背于心,时刻指导着我们设计函数。但这背后的原理是如何的呢?底层的技术细节又是怎么实现?接下来将解开函数调用的神秘面纱!1 栈帧(Stack Frame)从逻辑上讲,栈帧就是一个函数执行的环境:函数参数、函数的局部变量、函数返回地址。每个函数的每次调用,都有它自己独立...

2019-05-26 16:40:36 2292

原创 文件系统之inode索引

前言:文件系统作为硬件和用户的中间层,一方面管理存储器的硬件资源,另一方面提供用户使用的接口。它既要管理存放的文件所在的硬件位置(块/扇区),也要管理空闲区域。若没有文件系统,则应用程序的开发会难度加大,维护/管理困难。1 如何存储数据?数组/链表/索引表2 inode索引原理...

2019-05-13 22:35:22 443

原创 算法分析之时间复杂度

前言:算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间、空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂度与时间复杂度来衡量。时间复杂度时间复...

2019-05-13 22:24:06 766

原创 QT之qss

前言:若需要更改上位机界面的背景颜色、字体大小、字体颜色、边框、像素等属性时,可采用qss文件来进行配置。1 资源文件Resurces可先添加Resource文件夹,再添加xxx.qss文件。2 编写qssqss以一类独立的控件为操作对象,进行属性的设置。按照给定的语法格式进行编写。QLabel{ border: 0px solid black; /* 边框0个像素,实...

2019-05-12 11:41:13 466

原创 QT之UI布局

前言:上位机的界面是跟用户直接接触的,界面应具有易操作性、简洁美观等优点。1布局的思路一个界面上有若干控件,首先按照功能分成不同的小模块,单独的模块布局完成;再将各个模块进行组合布局,完成整体布局。2 布局方式布局可采用Layouts控件来实现左右、上下、网格对齐。当界面的控件较少时,可以采用Spacers来占位置,并可以设置它为固定大小或变化大小。3 界面可自由缩放若要实现界面自...

2019-05-12 11:03:49 1412

原创 局域网中ping包异常的分析和解决方案

前言:在有4主机的局域网内,A ping B ,C ping D ,现象表现为A/B和C/D同时刻只有一路通。1 明确问题问题:该现状和期望状态不一致,期望值为A/B和C/D之间应互相不影响。2 分析问题整个ping包过程,参与链路的有:TCP/IP协议栈,网卡芯片,交换机芯片,网线。在排除问题之前,首先得知道以上4个的原理和作用:1 网线:物理层器件,用于传输差分电信号,最大距离...

2019-05-11 13:13:36 1968

原创 模糊PID控制

前言:传统PID的参数在控制过程中不变,能解决部分问题,但是在非线性系统中,一套固定的控制参数的效果不佳,性能无法满足需求。所以需要一种参数自适应的控制算法,而模糊控制则是其中之一。1 阶跃响应黑色为期望值,红色为实际值:先考虑纯Kp控制:这样的阶跃响应,若是传统PID,由于有超调,则会减小Kp。那这是最好的方式吗?能够达到快、稳、准的要求吗?显然不会,采用定值的Kp往往不能最优化。...

2019-05-11 12:23:45 12341 1

原创 问题的现象与本质

前言:解决问题的能力是非常重要的能力之一,那什么是问题?如何分析问题?如何找到问题的本质?1 什么是问题?当一件事物的现状与期望值不一样时,就产生了问题。比如,网络通信的期望值是可靠、稳定、网速100Mbps,但是现状是不稳定、且网速只有1Mbps,这之间的差距就是问题,准确的说是问题的现象,是对问题的感性认识。2 如何描述一个问题?1) 明确期望值2) 准确描述现状3) 用期望值...

2019-05-10 23:18:54 3147

原创 PID控制的现象与本质

前言:一谈到自动控制,立刻想到的是PID,足以说明PID在自动控制中的普适性和重要性。那到底什么是自动控制?什么是PID呢?1 系统我们在讨论自动控制时,首先都要基于某个系统,比如温度控制/水位控制/无人机系统等等,而系统之间是有区别的,大概可以从以下三个角度看系统:一阶或者高阶时变或者时不变线性或者非线性...

2019-05-10 22:05:11 3134

转载 IT人的学习方法论(全)

1 学习的方向07年的时候曾经讲过一节Webcast,名叫《使您成为Windows专家的一些学习习惯》。直到最近,还经常收到听众关于这一节课反馈和心得的电子邮件,可见学习方法论是大家非常关心的问题。因此,我的Blog就从讨论学习开始吧。IT是一个需要活到老,学到老的行当。在摩尔定律的推动下,技术领域的革新和提高每天都在发生,这使得IT领域的工作者必须不断的学习,才能紧跟技术的脚步。与此同时,...

2019-05-02 16:05:06 1327

原创 最近思考的关键词总结

前言:未经过审视的人生是不值得过的。—苏格拉底人生需要不断地思考、需要不断地反思,包括但不限于:亲情、爱情、友情、学习、工作、事业。1 框架金字塔状,分层、分类、分模块。2 知行合一理论和实际联系,理论指导实践,实践反过来检验理论,如此反复。3 辩证性思维万物有好有坏,辩证的看问题,以客观、全面的视角。在处理问题时,要具体问题具体分析。4 独立的批判性思维博学之,审问之,慎思之...

2019-05-02 14:36:29 468

原创 关于输入-输出模型的思考

前言:“输入-输出”模型 在软件开发中是非常见,小到函数设计,大到计算机系统(I/O),都包含了这个模型。其实,生活中,我们在处理信息的时候,也是这个框架。1 生活中我们是如何处理信息的?现在大家接触的信息量非常大,对于海量的信息,我们应该首先对进入大脑的信息进行质疑,也就是判断其真伪、是否符合预期要求,若为假,直接就抛弃掉,以免浪费时间和精力。接着,按照一定的方式对信息进行消化和处理,其中...

2019-05-02 12:27:34 2338

原创 使用C#对数据库Access的增、删、改、查

前言:程序的运行过程,本质上是对数据流的处理,包含数据的存储和读取,其中存储和读取是基于数据结构,而怎么存储、怎么读取则基于算法,也就是所谓的“程序 = 数据结构 + 算法”。不论是web开发,还是桌面应用开发,都会涉及到数据的处理和数据的存储问题。对于数据的存储和管理,数据库是不二之选。1 数据库数据库,简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、...

2019-04-26 00:12:04 1303

原创 Access:所有记录中均未找到搜索关键字

在excel导入access的最后一步,出现以下错误:所有记录中均未找到搜索关键字解决方法:检查excel的第一行(access的字段),其中开头是否包含空格,若有,将空格删除;因为access的字段的命名规则之一是 不能以空格开头!...

2019-04-23 22:01:56 1425

原创 大小端以及网络序的区别

前言:在处理网络通信数据时,除了按照协议的数据解析和打包,还会涉及到非单字节数据(16位或者32位)在内存中的存储方式,也就是所谓的大小端问题。1 什么是大/小端?参考百度百科解析:大端模式,是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放;这和我们的阅读习惯一致。小端模式...

2019-04-23 21:40:35 354

原创 RS-485、以太网和CAN三种组网方式的比较

前言:由于系统的数据流向不仅仅局限于板级内,除了板级内的芯片间通信(spi、iic等),一般情况下均会涉及到系统级的通信(分布式系统),常见的通信拓扑有一对一、一对多、多对多结构。而组网则是针对于一对多、多对多这样的拓扑,组网所使用的协议栈也就是该拓扑的软件实现,实现各个系统间的通信。1. 常见的组网通信方式在通信模型中,最基本的物理层和数据链路层是各个通信方式的共同之处,区别在于物理层的模...

2019-04-20 15:52:55 19535

原创 存储器与文件系统

前言:在嵌入式系统应用开发中,会涉及到数据的保存、读取等功能。当数据存放在不同的存储器上时,有与之相对应的读取方式。在LINUX系统中有一个重要的概念:一切都是文件。在UNIX系统中,把一切资源都看作是文件,包括硬件设备,通常称为设备文件,这样用户就可以用读写文件的方式实现对硬件的访问。针对于文件的管理而开发的软件系统称为文件管理系统,简称文件系统。1.存储器的分类以上的存储器,可从易失...

2019-04-19 23:15:01 1042

原创 C++ 重载、覆盖、虚函数与多态的联系

前言:面向对象的三大特性有继承、封装、多态,其中的继承和封装比较容易理解,那什么是多态呢?跟虚函数(virtual)又有什么联系?为了写出通用的代码,做出通用的编程,以适应需求的不断变化。需要编写多种表现形态的程序,在面向对象语言中,接口的多种不同的实现方式即为多态。那如何实现接口的不同呢?1.重载 overload一般是在一个类中实现若干重载的方法,这些方法的名称相同而参数形式不同。...

2019-04-02 22:42:45 482

原创 C++ 常量指针、指针常量、引用的区别

前言:在C语言中,"&“表示取地址。在C++中,”&"不仅表示取地址,还可以表示引用,但是与指针有所差异。要理解它们的差别,需要先掌握指针、常量指针、指针常量的概念。1.指针指针的本质也就是变量:它不仅有自己的地址,也有它所存放的值,只不过这个值是地址而已。 int a = 10; int *p = &a; //指针变量p:也即是变量p中存放的是变量a的地址(指...

2019-04-02 22:05:59 1187

原创 关于打包C#程序的x86、x64以及framwork配置相关问题分析

前言:在进行完c#的winform程序开发后,需要编译成release版的可执行文件发布给客户,而在打包的过程中,会涉及目标平台的选择、以及.net framwork的选择。若选择不当,则会导致在客户电脑上无法运行的情况。所以出现无法运行的情况,原因有二:一是目标平台没选对,二是.net framwork没匹配。什么是目标平台呢?1、目标平台目标平台指的是PC的CPU,这里又特指CPU的...

2019-03-31 13:29:59 2782

原创 编译型、解释型、脚本型编程语言的区别

前言:在系统的软件开发中,不仅仅是只使用一种语言,也会涉及到不同的语言,各个语言之间有共性、也有个性。正是这些不同的个性、注定它们会用在不同的场合来解决不同类型的问题。在了解各种语言的区别之前,先来了解下各个语言用在什么场合和阶段。1.软件开发有五个大的阶段1.1 需求分析确定需求,将问题进行拆分,模块化;同时设计合适的软件框架将各个模块联系起来,实现可移植、可配置、易扩展、易维护的软件...

2019-03-31 10:59:20 2524

原创 git提交代码

前言:在多人协作写代码时,版本的管理、以及功能的合并十分重要,常用的版本管理软件有SVN和git,结合目前使用的git,记录下提交代码的步骤。本地提交代码步骤:1.保存配置文件(保证配置文件为最新,否则容易出现未预期的配置导致bug)将.config中的所有内容拷贝至configs/stm32f****/defconfig,进行配置文件备份。2.清除编译的过程数据、配置信息cd nut...

2019-03-27 23:47:18 165

原创 .config和makefile以及Kconfig的联系

前言:在基于nuttx或者linux进行软件开发的过程中,经常接触到.config、makefile、Kconfig、menuconfig这四个config文件。非常有必要理清楚他们之间的关系。1.makefile指定那些文件编译、那些文件不编译,以及编译的依赖文件和生成的目标文件。作用的对象是源文件。2.Kconfig用于构建menuconfig,menuconfig的显示选项均来自...

2019-03-27 23:30:00 474

原创 基于QT的上位机多线程设计模型

前言:对于一般的上位机开发,无论是使用QT还是C#,主要功能包含:1.接收并解析下位机上传的数据、2.打包并发送数据到下位机、3.业务逻辑,对数据实时显示到界面或者存储到数据库。从软件分层的角度来看,底层是数据层、中间是业务逻辑处理、上层是UI。为了不让界面假死或者卡顿,需要采用多线程的方式来实现。1.抽象实现,建立模型无论是QT/C#上位机,还是基于linux/nuttx…的APP,只要...

2019-03-27 22:57:39 2717 1

原创 对软件开发中的"抽象"的理解

前言:在软件开发过程中,经常会提到"抽象"这一概念,无论是应用层、操作系统层,还是驱动层,都会涉及到抽象编程,那到底什么是抽象呢?1 何为抽象?1.1从哲学的角度看:抽象是从众多的事物中抽取出共同的、本质性的特征,而舍弃其非本质的特征。例如苹果、香蕉、生梨、葡萄、桃子等,它们共同的特性就是水果。得出水果概念的过程,就是一个抽象的过程。要抽象,就必须进行比较,没有比较就无法找到在本质上共同...

2019-03-09 23:15:54 6727

原创 深入理解四元数

本文主要翻译了https://www.3dgep.com/understanding-quaternions/#Rotations的内容,并结合自己在学习过程中的理解。0 前言在无人机、计算机图形学领域都会涉及到物体在坐标系中的运动,在三维空间中,任何一个运动都可以用平移和旋转的组合来实现,但这里的运动可以用相对运动、绝对运动来表示,进而需要指定具体在那个坐标系下。在无人机系统中,坐标系大概...

2019-02-27 22:45:43 13854 12

原创 CANopen学习笔记(一)----CANFestival对象字典环境搭建并新建CANopen节点

前言:主要介绍了CANopen的整体框架,开源协议栈CANFestival的对象字典和节点的一种建立方式。1 CANopen协议是什么?CANopen是一种架构在控制局域网路(Controller Area Network,CAN)上的高层通信协议,包括通信子协议及设备子协议。其中的通信子协议为DS-301,设备子协议有DS-401/402等。在网络的七层协议中,CAN收发器位于物理层,实...

2019-02-23 23:31:37 7139 3

原创 从电平角度理解数字电路

前言:数字电路的高低电平由0和1表示,而在实际的电路系统中,不同的模块有着不一样的电气标准。在这些标准中的高低电平也有不一样的电压范围,当不同的电气标准之间需要连接时,就有了所谓的电平转换。在数字电路中,逻辑门电路(BJT或MOSFET)处于开关状态,在若干逻辑门电路以及集成芯片组成的电路系统中,电气标准的组合和转换构成了部分的数字电路。1 电平标准的分类现在常用的电平标准有TTL、CMOS...

2019-02-14 11:18:51 1127

原创 由内存分区引发对堆栈的思考

前言:在C语言编程中,程序中的不同代码和数据在编译或者运行时处于RAM的不同位置,是大家熟悉的内存分区的概念。1.STM32F769芯片内的SRAM整体分区情况代码区和常量区是只读,在运行过程中是不能进行写操作的,可以将其放在nor flash中,而栈区、堆区、全局区中的数据是可读可写,而且在运行过程中需要进行读写操作的,所以一般放在sram中运行。2. 栈区、堆区的区别2.1 分配方...

2019-02-01 17:26:57 474

原创 由flash引发对ARM架构的思考

前言:在上一篇博客(https://blog.csdn.net/Boooooots/article/details/86635228)的附录中提到了代码是下载到flash中的,且代码段是放在flash中的,那么为什么可以在flash中运行代码呢?能运行代码的必要条件是什么?CPU是如何处理这些二进制代码的?cpu是处理数据和指令,那么谁来管理和组织储存设备和外设呢?cpu与外部是通过什么来进行交...

2019-01-31 17:45:09 1000

原创 nuttx应用笔记1---启动过程分析

前言:前段时间有过linux的初级学习经历,了解到它的启动过程,大概分为初始化、运行init进程、挂载根文件系统、脚本解析、创建任务等。Nuttx也大同小异,现梳理一下其启动流程,有助于对整个系统的掌握。看源码之前的思考:由于nuttx由driver、net、fs、schedule、mm和一些app构成,并在系统启动之后可以进行命令交互,那么在启动过程中就需要先去初始化显示终端console...

2019-01-25 00:20:48 2366

空空如也

空空如也

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

TA关注的人

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