自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

BeginnerMind

Frey Blog

  • 博客(137)
  • 资源 (21)
  • 收藏
  • 关注

原创 C语言编程规范及命名规则

标识符的命名规则历来是一个敏感话题,典型的命名风格如unix风格、windows风格等,从来无法达成共识。实际上,各种风格都有其优势也有其劣势,而且往往和个人的审美观有关。我们对标识符定义主要是为了让团队的代码看起来尽可能统一,有利于代码的后续阅读和修改,产品可以根据自己的实际需要指定命名风格,规范中不再做统一的规定。标识符的命名要清晰、明了,有明确含义,同时使用完整的单词或大家基本可以理解的缩写,避免使人产生误解尽可能给出描述性名称,不要节约空间,让别人很快理解你的代码更重要。int n;

2024-10-11 22:27:12 1044

原创 串口通信问题排查总结

检查中间件串口通信必然存在发送端和接收端,且两者通过中间件(例如导线),遇到问题,首先应该保证导线连接正常。如果这一部分没有确定,直接排查其他方向,很可能在做无用功。排查硬件层通过逻辑分析仪、示波器等仪器来判断发送端、接收端在发送、接收、空闲时的引脚波形是否正常。串口空闲时为高电平,有数据时才会有电平变化。同时需要确定电压是否正常。波形测量的位置先从最终点开始测量,然后依次排查中间部分的探测点,来判断问题位置。如果发现波形变形、失真、电压不正常等情况,请让硬件工程师协助进行排查。

2024-05-29 22:16:28 1443

转载 Linux进程通信之管道解析

管道是 UNIX系统 IPC的最古老的形式,所有的UNIX系统都提供此种通信。所谓的管道,也就是内核里面的一串缓存,从管道的一段写入的数据,实际上是缓存在内核中的,令一端读取,也就是从内核中读取这段数据。对于管道传输的数据是无格式的流且大小受限。对于管道来说,也分为匿名管道和命名管道,其中命名管道也被叫做 FIFO,下面则分别阐述这两种管道。

2024-03-13 22:45:48 116

原创 操作系统常见问题

epoll使用事件驱动的机制,内核里维护了一个链表来记录就绪事件,当某个socket有事件发生时,通过回调函数内核会将其加入到这个就绪事件列表中,当用户调用epoll_wait()函数时,只会返回有事件发生的文件描述符的个数,只将有事件发生的 Socket 集合传递给应用程序,不需要像select/poll那样轮询扫描整个socket集合,大大提高了检测的效率。如果程序要访问虚拟地址的时候,由操作系统转换成不同的物理地址,这样不同的进程运行的时候,写入的是不同的物理地址,这样就不会冲突了。

2024-03-10 17:46:18 936

原创 网络协议常见问题

不是重传 SYN,重传的 SYN 的序列号是一样的)。为了防止历史连接中的数据,被后面相同四元组的连接错误的接收,因此 TCP 设计了 TIME_WAIT 状态,状态会持续 2MSL 时长,这个时间足以让两个方向上的数据包都被丢弃,使得原来连接的数据包在网络中都自然消失,再出现的数据包一定都是新建立连接所产生的。在网络出现拥堵时,如果继续发送大量数据包,可能会导致数据包时延、丢失等,这时 TCP 就会重传数据,但重传就会导致网络的负担更重,于是会导致更大的延迟以及更多的丢包,这个情况就会进入恶性循环。

2024-03-10 14:16:13 1501

原创 C++常见问题

防止内存泄露。

2024-02-24 21:33:29 972

原创 windows上配置vscode C/C++代码跳转

C/C++官方的 C/C++ 插件,必备的插件,是代码跳转、自动补全、代码大纲显示等功能的基础。GtagsGNU Global除了安装该插件之外,还需要在本地下载安装GNU Global工具。,使用方法都在里面。

2023-09-24 21:29:20 3735

转载 深度解析 slab 内存池回收内存以及销毁全流程

整个 slab cache 系列篇幅非常庞大,涉及到的细节非常丰富,为了方便大家回顾,笔者这里将 slab cache 系列涉及到的重点内容再次梳理总结一下。

2023-06-11 22:43:12 799

转载 深入理解 slab cache 内存分配全链路实现

本文我们基于 slab cache 的完整的架构,近一步深入到内核源码中详细介绍了 slab cache 关于内存分配的完整流程:我们可以看到 slab cache 内存分配的整个流程分为 fastpath 快速路径和 slowpath 慢速路径。其中在 fastpath 路径下,内核会直接从 slab cache 的本地 cpu 缓存中获取内存块,这是最快的一种方式。从本地 cpu 缓存 partial 列表中分配从 NUMA 节点缓存中分配,其中涉及到了对本地 cpu 缓存的填充。

2023-06-11 22:35:23 740

转载 从内核源码看 slab 内存池的创建初始化流程

本文笔者基于内核 5.4 版本,从源码角度详细讨论了 slab cache 的创建初始化过程,创建流程如下图所示:经过该流程的创建之后,我们得到了如下图所示的 slab cache 架构:在这个过程中,笔者又近一步从源码角度介绍了内核具体是如何对 slab 对象进行内存布局的。在这个内存布局的基础上,笔者又近一步展开了内核如何计算一个 slab 到底需要多少个物理内存页,以及一个 slab 到底能够容纳多少内存块的相关逻辑。

2023-06-11 22:29:38 665

转载 一步一步推演 slab 内存池的设计与实现

本文在伙伴系统的基础上又为大家详细介绍了一款内核专门应对小内存块管理的 slab 内存池,并列举了 slab 内存池在内核中的几种应用场景。

2023-06-11 21:17:23 752

转载 深度剖析 Linux 伙伴系统的设计与实现

我们前面一直在谈伙伴系统,那么伙伴这个概念到底在内核中是什么意思呢?其实下面这张伙伴系统的结构图已经把伙伴的概念很清晰的表达出来了。伙伴在我们日常生活中含义就是形影不离的好朋友,在内核中也是如此,内核中的伙伴指的是大小相同并且在物理内存上是连续的两个或者多个 page。比如在上图中,free_area[1] 中组织的是分配阶 order = 1 的内存块,内存块中包含了两个连续的空闲 page。这两个空闲 page 就是伙伴。

2023-06-11 19:07:37 602

转载 深入理解 Linux 物理内存分配全链路实现

本文首先从 Linux 内核中常见的几个物理内存分配接口开始,介绍了这些内存分配接口的各自的使用场景,以及接口函数中参数的含义。并以此为起点,结合 Linux 内核 5.19 版本源码详细讨论了物理内存分配在内核中的整个链路实现。快速路径 fast path:该路径的下,内存分配的逻辑比较简单,主要是在 WMARK_LOW 水位线之上快速的扫描一下各个内存区域中是否有足够的空闲内存能够满足本次内存分配,如果有则立马从伙伴系统中申请,如果没有立即返回。

2023-06-11 17:51:30 611

转载 一步一图带你深入理解 Linux 物理内存管理

在我们理解了物理内存的 NUMA 架构,以及在 NUMA 架构下的内存分配策略之后,本小节笔者来为大家介绍下如何正确的利用 NUMA 提升我们应用程序的性能。前边我们介绍了这么多的理论知识,但是理论的东西总是很虚,正所谓眼见为实,大家一定想亲眼看一下 NUMA 架构在计算机中的具体表现形式,比如:在支持 NUMA 架构的机器上到底有多少个 NUMA 节点?每个 NUMA 节点包含哪些 CPU 核,具体是怎样的一个分布情况?前面也提到 CPU 在访问本地 NUMA 节点中的内存时,速度是最快的。

2023-06-11 15:40:30 875

转载 一步一图带你深入理解 Linux 虚拟内存管理

当程序运行起来之后就变成了进程,而这些业务数据结构的引用在进程的视角里全都都是虚拟内存地址,因为进程无论是在用户态还是在内核态能够看到的都是虚拟内存空间,物理内存空间被操作系统所屏蔽进程是看不到的。进程通过虚拟内存地址访问这些数据结构的时候,虚拟内存地址会在内存管理子系统中被转换成物理内存地址,通过物理内存地址就可以访问到真正存储这些数据结构的物理内存了。随后就可以对这块物理内存进行各种业务操作,从而完成业务逻辑。

2023-06-11 15:38:30 1137

转载 嵌入式C常用的几个宏定义

链表宏在linux内核、鸿蒙内核、rtos和一些开源代码中用的非常多。链表宏是双向链表的经典实现方式,总代码不超过50行,相当精炼。宏的定义如下,其作用是将所传入指针N的两个指针域和都指向N。目的是完成单个节点的初始化工作,如下图示意了该过程。宏的定义如下,直接将宏展开,其意图很明显是定义一个新链表(H表示为传入宏的参数名),并且将H的两个指针域,都初始化为H地址本身,如下图示意了该过程。宏的定义如下,其依赖于宏。宏功能描述为:为了更好的理解宏,下面按照宏的定义来进行拆解说明。由于该结构体

2023-03-14 22:14:00 1341 1

原创 进程与线程

进程是计算机系统资源分配的最小单元,进程为线程提供资源。一个进程中可以有多个线程,同一个进程中的线程可以共享进程中的资源。线程是计算机可以被CPU调度的最小单元。

2023-03-05 21:26:27 1040

原创 协程Protothread

Protothread在contiki os 的 process中有广泛的应用!contiki 的作者Adam Dunkels,同时也是uip,lwip的作者。

2023-03-05 21:23:27 1086

原创 WSL2的安装、应用、内核模块编译安装

win10系统上开启WSL2的安装、升级,及WSL2的常见应用!

2022-12-24 11:52:08 3780 1

原创 Linux常用命令

Linux常用的命令,未完待续!

2022-12-23 11:17:45 1968

原创 利用WSL2搭建Qemu仿真Vexpress-a9开发环境

利用WSL2搭建Qemu仿真Vexpress-a9开发环境,实现了制作根文件系统,u-boot引导linux运行。

2022-12-05 23:25:10 3737 1

原创 u-boot常用命令

uboot 的全称是 Universal Boot Loader, uboot可看作是一个逻辑软件,用来引导内核启动。板子相关信息环境变量操作环境变量的操作涉及到两个命令: setenv 和 saveenv,命令 setenv 用于设置或者修改环境变量的值。命令 saveenv 用于保存修改后的环境变量,一般环境变量是存放在外部 flash 中的,uboot 启动的时候会将环境变量从 flash 读取到 DRAM 中。所以使用命令 setenv 修改的是 DRAM中的环境变量值

2022-12-04 02:30:24 2503

原创 永磁同步电机(PMSM)

PMSM,英文全称为Permanent-magnet Synchronous Motor,直译为永磁同步电机。永磁同步电机的工作原理简单来说就是定子通交流电产生旋转磁场,转子为永磁体,定子产生的磁场带动永磁体旋转,转速为同步转速。同步电机的特点是无论是否带载,都以同步转速运行,只要在同步电机的带载范围以内,电机都将以同步转速旋转。而永磁同步电机的特点就是将转子的励磁绕组换成了永磁体。

2022-10-03 23:36:40 37412 3

转载 深入浅出讲解FOC控制与SVPWM技术

FOC(Field-Oriented Control),直译是磁场定向控制,也被称作矢量控制(VC,Vector Control),是目前**无刷直流电机(BLDC)和永磁同步电机(PMSM)**高效控制的最优方法之一。FOC旨在通过精确地控制磁场大小与方向,使得电机的运动转矩平稳、噪声小、效率高,并且具有高速的动态响应。

2022-10-03 18:27:35 18439 7

原创 开关磁阻电机

开关磁阻电机(switched Reluctance Motor)是80年代发展起来的一种新型电机驱动系统,结构简单、启动及低速时转矩大、电流小,高速时恒功率区范围宽,在宽广转速和功率范围内都具有高输出和高效率,而且有很好的容错能力,应用潜力巨大。电动车对电机驱动系统有如下要求:在整个运行区域高效率,高功率密度和转矩密度,工作转速范围宽,系统具有防水、抗震和耐冲击能力。目前,电动车主流电机驱动系统有感应电动机、无刷直流电动机和开关磁阻电动机。

2022-10-03 00:54:31 8808

转载 三相异步电机

三相异步电机

2022-10-02 14:33:00 910

原创 步进电机结构及原理

步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。通过控制施加在电机线圈上的电脉冲顺序、 频率和数量, 可以实现对步进电机的转向、 速度和旋转角度的控制。在不借助带位置感应的闭环反馈控制系统的情况下、 使用步进电机与其配套的驱动器共同组成的控制简便、 低成本的开环控制系统, 就可以实现精确的位置和速度控制。如,配合以直线运动执行机构或齿轮箱装置,更可以实现更加复杂、精密的线性运动控制要求。步进电机一般由前后端盖、轴承、中心轴、转子铁芯、定子铁芯、定子组件、波纹垫圈、螺钉等部分构成,步进电机也叫步进

2022-10-02 13:54:11 22134

原创 电机分类与永磁电机

永磁电机采用永磁体生成电机的磁场,无需励磁线圈也无需励磁电流,效率高结构简单,是很好的节能电机。异步电机,转子转速与磁场转速不相等,同步电机是转子转速与磁场转速相等。直流电机是磁场不动,导体在磁场中运动;交流电机是磁场旋转运动,而导体不动。交流电机不需要换向器和电刷转换电流方向,与直流电机相比它的结构更简单,功率更大,在工业领域被广泛应用。一般直流电机比交流电机功率要小,特别是无刷电机,克服有刷电机的很多缺点,但是自身也有缺点,比如共振等问题。

2022-10-02 01:19:54 4802

原创 有刷电机及无刷直流电机(BLDC)

无刷直流电机(BLDC)是永磁式同步电机的一种,而并不是真正的直流电机,英文简称BLDC。区别于有刷直流电机,无刷直流电机不使用机械的电刷装置,采用方波控制的永磁同步电机,以霍尔传感器取代碳刷换向器,以钕铁硼作为转子的永磁材料,性能上相较一般的传统直流电机有很大优势。

2022-10-01 22:44:23 9973

原创 PFC(Power Factor Correction)功率因数校正电路

用电容器并连在感性负载,利用其电容上电流超前电压的特性用以补偿电感上电流滞后电压的特性来使总的特性接近于阻性,从而改善效率低下的方法叫功率因数补偿,功率因数较差的设备效率也低下,而且会为电网带来不必要的压力,并可能给其他连网设备带来问题。

2022-09-11 23:34:42 21686 9

转载 解决问题的方法

职场中不外乎分析问题、汇报解决问题的方案措施、按方案措施去解决问题,前面分享了沟通汇报中的逻辑和解决问题中的逻辑,掌握好这些方法并在日常工作中多加训练,你就会慢慢的成为逻辑清晰、有理有据的人,这里简单总结一下前面提到的3个思考方法。解决问题的第一步是明确问题,看似废话,很多人之所以被批“缺乏逻辑”就是没有抓住真正的问题,有时候一件事存有多个方面的问题,如果不能找出真正的、重要的问题,却花大力气解决那些鸡毛蒜皮的问题,结果可想而知。在麦肯锡所有的方法论中,明确问题都被作为最重要的一个环节。

2022-09-11 12:14:53 873

原创 职场常用问题分析与管理方法

职场常用问题分析与管理方法!

2022-09-04 22:26:07 747

原创 结构化思维学习

结构化思维可以使思考问题有逻辑,解决问题更有效率,与人沟通表达更清晰。

2022-06-04 15:36:20 793

转载 Apache 架构师总结的 30 条架构原则

本文作者叫 Srinath,是一位科学家,软件架构师,也是一名在分布式系统上工作的程序员。他是 Apache Axis2 项目的联合创始人,也是 Apache Software 基金会的成员。他是 WSO2 流处理器(wso2.com/analytics)的联席架构师。Srinath 撰写了两本关于 MapReduce 和许多技术文章的书。他获得了博士学位。来自美国印第安纳大学。Srinath 通过不懈的努力最终总结出了 30 条架构原则,他主张架构师的角色应该由开发团队本身去扮演,而不是专门有个架构师团

2022-04-26 18:08:52 336

转载 基于RTOS的软件开发理论

基于RTOS的软件开发理论RTOS的特点任务设计任务的特性任务划分的方法设备依赖性任务关键任务紧迫任务数据处理任务触发条件相同的任务运行周期相同的任务顺序操作任务任务的可调度性分析任务类型单次执行的任务周期性执行的任务事件触发执行的任务任务优先级公共函数的设计互斥调用可重入设计运行效率中断服务程序的设计中断优先级中断优先级原则中断与关联任务的通信行为同步行为同步的通信方式二值信号置计数信号量事件标志组消息邮箱消息队列通信方式的选择行为同步ISR 与任务之间的同步两个任务之间的单向同步两个任务之间的双向同步多

2022-04-21 10:01:01 874

转载 C 语言高效编程与代码优化

C 语言高效编程与代码优化)整形数除法和取余数合并除法和取余数通过2的幂次进行除法和取余数取模的一种替代方法使用数组下标全局变量使用别名变量的生命周期分割变量类型局部变量指针指针链条件执行布尔表达式和范围检查布尔表达式和零值比较懒检测开发用switch()函数替代if…else…二分中断switch语句vs查找表循环函数设计使用查找表浮点运算其他技巧参考:程序优化最重要的就是找出待优化的地方,也就是找出程序的哪些部分或者哪些模块运行缓慢亦或消耗大量的内存。只有程序的各部分经过了优化,程序才能执行的更快。程

2022-04-19 21:25:38 1075

原创 TCP与UDP

TCP与UDP协议TCP协议TCP原理确认应答机制超时重传机制连接管理机制滑动窗口流量控制拥塞控制延迟应答捎带应答粘包问题UDP协议参考协议协议(protocol)是不同的硬件、操作系统之间的通信,所需的一种规则。这种规则就是计算机与网络设备要相互通信,双方所使用的相同方法。比如:如何探测到通信目标、由哪一边先发起通信、使用哪种语言进行通信、怎样结束通信等规则都需要事先确定。TCP/IP 是互联网相关的各类协议族的总称,比如:TCP,UDP,IP,FTP,HTTP,ICMP,SMTP 等都属于 TCP

2022-04-18 22:44:07 1531

转载 让程序员变厉害的7个底层思维

让程序员变厉害的7个底层思维刻意练习刻意练习是成为高手的捷径和方法,不断的加强练习,可以使其自我通化。刻意练习的要诀是:定义明确的具体目标,并进行步骤拆解,以此来引导练习。保持专注:完全把注意力集中在任务上。有效反馈:找到不足的地方,并进行思考(方法是自我总结、找高手指导、读书学习等等)。走出舒适区:始终在学习区不断挑战更高的难度。倒逼输出是一种强制吸收通化的一种方式,表达才可以更系统化的认知(费曼学习法)。扼住命运的咽喉,先从掌握刻意练习开始。聚焦思维不甘于平凡的人一般有这么个情

2022-03-19 14:35:30 717

转载 解析软件系统稳定性的三大秘密

解析软件系统稳定性的三大秘密何谓系统稳定性?如何保障稳定性?制度纪律思想之道实践之术小结何谓系统稳定性?控制系统理论认为:系统受到某种干扰而偏离正常状态,当干扰消除,如果系统的扰动能逐渐收敛并最终恢复正常状态,则系统是稳定的;反之,系统偏离越来越大,则是不稳定的,所以,稳定性是系统抗干扰和返回平衡状态的能力。对于经典的传递函数的软件系统,一般我们讲的稳定指的是BIBO稳定,即有界输入有界输出稳定。一个系统如果对任意有界输入得到有界输出,它就是BIBO稳定的。一句话,稳定的系统对于各种输入需要有符合预期

2022-03-05 11:33:39 1202

原创 source insight4配置

配置下载网上大神的配置(source insight 仿 Sublime text 主题)https://github.com/LeonSUST/SourceInsightTheme个人设置的暗色背景配置:配置导入方法Source Insight -> Option -> Load Configuration默认配置函数名会加大的情况,可以使用快捷键 “Alt + F12”进行关闭,也可以再次“Alt + F12”打开“ 函数名显示的字体比其他字体要大显示效果”。

2022-02-21 09:24:07 1482 2

SourceInsight4配色xml文件-深色

SourceInsight4配色xml文件-深色,内含自己常用的深色配置xml文件,及网上大神的仿 Sublime text 主题配色方案。

2022-02-19

A7121-codeForDirectMode(3Mbps).zip

A7121射频芯片手册和芯片控制的一些代码,直接模式收发数据代码,可供参考,C代码,适合于初学者学习RF控制!

2019-07-28

图像描述算法演进和最新的神经网络识别.pdf

图像描述算法 是一次分享会上一位大牛分享的ppt,介绍了图像描述算法的演进和最新的神经网络识别介绍。

2019-07-28

腾讯云城市计算助力行业数字化升级.pdf

腾讯云城市计算助力行业数字化升级是一次分享会上一位大牛分享的ppt,介绍了腾讯云有多智能,一次参加会议时 的PPT,算是行业介绍!

2019-07-28

文本智能的演进.pdf

文本智能的演进是一次分享会上一位大牛分享的ppt,介简单介绍了文本识别的AI方法,,介简单介绍了文本识别的AI方法!

2019-07-28

脱敏版安防视频行为分析技术演进

脱敏版安防视频行为分析技术演进 是一次分享会上一位大牛分享的ppt。 文档是一次交流会时专家演讲的PPT,AI方面应用的演讲!

2019-07-28

云端终端双场景的AI加速研究.pdf

云端终端双场景的AI加速研究 是一次分享会上一位大牛分享的ppt,介绍了AI的历史及深度学习的一些知识! 文档是一次交流会时专家演讲的PPT,AI方面应用的演讲!

2019-07-28

从零建立大数据&智能化体系.pdf

从零建立大数据&智能化体系 是一次ppt分享会上的资料,讲述了大数据在企业平台的应用案例! 文档是一次交流会时专家演讲的PPT,AI方面应用的演讲!

2019-07-28

BLE4.0低功耗蓝牙协议总结.pdf

BLE4.0低功耗蓝牙协议总结,是蓝牙4.0的总结性文档,内容涵盖蓝牙开发的方方面面! 文档是一次交流会时专家演讲的PPT,AI方面应用的演讲!

2019-07-28

Art-Net概述.pdf

Art-Net是一种基于TCP/IP协议栈的以太网协议。目的在于使用标准的网络技术允许在广域内传递大量DMX512数据。

2019-07-28

linux系统管理技术手册

英文版的,linux系统管理技术手册,795页。

2013-05-26

STM8s CPU编程手册

英文版的,PM0044,很遗憾没有找到中文版的,若有,可以大家分享,在这里先谢谢了啊。

2013-04-24

对快速熟悉智能电表市场有帮助的一篇文章

对快速熟悉智能电表市场有帮助的一篇文章,对智能电网行行业里的一些基础的了解。。

2013-04-13

2011-2015年中国智能电表市场供需预测与投资前景评估报告.pdf

2011-2015年中国智能电表市场供需预测与投资前景评估报告,简单明了了啊 。 2011-2015年中国智能电表市场供需预测与投资前景评估报告,简单明了了啊 。

2013-04-13

程序员实用算法].Andrew.Binstock.等着.扫描版.pdf

程序员实用算法].Andrew.Binstock.等着.扫描版.pdf 包含了各种实用的算法。很值得看啊。

2011-10-20

vc++数字图像处理算法及实现

vc++数字图像处理算法及实现,很不错啊!

2011-10-20

高频电子技术+三管发射机

高频电子技术+三管发射机+个人制作产品及样图

2010-01-06

方波频率测试计设计方案

频率计设计方案+个人观点+初次 方波频率测试计设计方案

2010-01-06

数值计算问题的MATLAB函数命令的使用方法.

数值计算问题的MATLAB函数命令的使用方法.

2009-12-05

MATLAB数值方法命令

MATLAB数值方法的基础部分:常见数值计算问题的MATLAB函数命令的使用方法.

2009-12-05

电子信息工程专业前景及方向

电子信息工程专业前景及方向,鼓腹含哺vdibb阿布回家看到 南京城vbjkui 比较好几百那你开发方法 说的vbvjjv

2009-10-31

空空如也

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

TA关注的人

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