自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 问答 (2)
  • 收藏
  • 关注

原创 提取深度学习模型的计算图

然而,由于PyTorch的动态特性,计算过程中各种可能都会出现,包括但不限于:使用了条件判断、计算与变量的形状有关、调用了其它包(比如numpy、scipy)、调用了其它语言的扩展(比如Rust、C++)等等。fx_model.forward就是新的函数,fx_model.code是fx_model.forward对应的代码(的字符串表示),fx_model.graph就是捕获得到的计算图。f_traced.graph存储了计算图,f_traced.code存储了计算图转化而来的代码。

2024-04-11 15:04:52 731

原创 IOT项目之固件升级

固件升级是指在设备已经投入使用后,通过修改设备上的固件程序,来对设备的功能、性能、安全等方面进行改进。设备的固件通常存储在非易失性存储器中,如Flash芯片。固件升级可以通过多种方式实现,如串口、USB、网络等。

2024-02-06 15:24:32 976

原创 GDB调试 core dump及debug介绍

当我们在Windows上进行开发,使用Visual Studio进行调试很简单,各种断点等用鼠标点点点就能设置。但是工作的时候,更多的是在linux服务器上跑程序,这个时候调试debug都是基于GDB的。本文主要介绍Linux下GDB调试相关,对于Windows开发人员来说,GDB鼠标点点点很简单就不过多赘述。需要用到GDB的时候主要是两种情况:需要debug跟踪程序的单步运行结果和出现cored dump时,用GDB查看程序在哪崩溃。本文也主要从着两个方面来介绍。

2024-01-31 16:45:03 854

原创 vscode SSH连接不上linux服务器 出现重复输入密码

2、将本地用户下./ssh路径下的known_hosts中对应远程服务器的那一行全部删除。终端报错log为remote.SSH.useFlock相关信息等。VSCODE 一直要求重新输入密码,即重复出现步骤2、3.1、将用户目录下的.vscode-server删掉。3、vscode重新连接即可。

2023-09-20 13:36:18 1424

原创 git commit 冲突或本地已修改但又不想保留的代码 解决办法

reset –soft:保留工作区,并把重置 HEAD 所带来的新的差异放进暂存区(此时代码的变更状态相当于执行完 git add命令)reset –mixed:reset的默认参数,保留工作目录,并重置暂存区(此时代码的变更状态相当于执行 git add命令之前)git reset 指令把HEAD指向master最新版本。git fetch 指令是下载远程仓库最新内容,不做合并。reset –hard:重置后不保留暂存区和工作区。本地已修改但又不想保留的代码(比如你代码改崩了)

2023-08-08 14:00:25 121

原创 IOT项目之网卡驱动

本文主要介绍了网卡底层驱动和TCP/IP协议的理论和应用。互联网协议族(Internet Protocol Suite)是一个网络通信模型,以及一整个网络传输协议家族,为互联网的基础通信架构。它常被通称为TCP/IP协议族(TCP/IP Protocol Suite,或TCP/IP Protocols),简称TCP/IP。TCP/IP提供点对点的连接机制,将数据应该如何封装、定址、传输、路由以及在目的地如何接收,都加以标准化。

2023-03-07 14:58:12 502

原创 随机振动信号的特征——PSD(功率谱密度)

对于一个随机信号而言,时域信息是杂乱无章的,唯一的确定性信息但是在统计意义下得到的,即幅值呈正态分布,均方值也就是平均功率是固定的。但是因为时域的信号是随机的,无法用数学表达式描述,随机信号的不满足傅里叶变换绝对值可积的条件,严格意义傅里叶变换不存在,也就无法通过傅里叶变换将时域转成频域。总结:随机信号的幅值是满足正态分布的,用它的自相关函数求均方值即得到功率谱密度(PSD),一个随机的信号(随机振动)用PSD来描述其特征。

2023-02-23 10:43:08 9037

原创 ARM keil自带的RTOS-RTX5

线程A在CPU上电时就被创建,创建之后一直以5ms的周期运行,永不停止。线程被推迟的时间肯定会波动的,比如某一次延时时间达到时,系统上并没有优先级更高的线程正处于就绪态,或者也没有ISR中断回调需要执行,这个理想的条件下,线程不会被推迟执行。调用osDelayUntil()使线程进入阻塞态(BLOCKED)并立刻进行上下文切换,当计时时间达到时,线程从阻塞态(BLOCKED)切换到准备态(READY),如果当前没有更高优先级的其他线程的话,那么线程直接进入运行态(RUNNING)。

2023-02-15 15:53:57 2180

原创 IOT的项目实践之浅谈声音采样

日常生活中的声音是一种在时间上连续的波,它本质上是空气压力差引起的空气振动,这种振动会产生声波,声波在介质中传播,当声波传播到接收端(如人耳),引起相应的振动,最后被识别为声音。

2023-02-13 10:46:45 396 2

原创 IOT的项目实践【序言】

因为项目需求的更新,最近一直在做将裸机项目移植成RTOS,准备记录这个过程,慢慢尝试,慢慢总结。

2023-01-03 11:07:09 108

原创 关于单片机固件升级的理论基础

关于单片机固件升级的理论基础

2022-11-04 16:35:52 1285

原创 uip+freemodbus网络通信

嵌入式网络通信

2022-07-05 17:49:40 703

原创 ARM汇编指令

常用的汇编指令常用的一些汇编指令,如存储器访问指令、数据传送指令、算术逻辑运算指令、跳转指令等。一个完整的ARM指令通常由操作码+操作数组成,指令的编码格式如下。<opcode> {<cond> {s} <Rd>,<Rn> {,<operand2>}}这是一个完整的ARM指令需要遵循的格式规则,指令格式的具体说明如下。● 使用<>标起来的是必选项,使用{}标起来的是可选项。● 是二进制机器指令的操作码助记符,如MOV、ADD

2021-12-15 09:31:11 327

原创 多核CPU

ps:本文较长,全文两千五百字左右!前言半导体工艺和架构是提升CPU性能的双驾马车。CPU的发展史,其实就是处理器架构和半导体工艺交互升级、协同演进的发展史。半导体工艺采用更先进的制程,晶体管尺寸变小了,芯片面积降低了,CPU的主频就可以做得更高;在相同的工艺制程下,通过不断优化CPU架构,从Cache、流水线、乱序执行、SIMD、多发射、指令预测等方面不断更新迭代,就可以设计出比别家公司性能更高、功耗更低的处理器。单核处理器的瓶颈在相同的半导体工艺制程下,芯片的面积越大,芯片的良品率就越低,芯片的

2021-12-06 14:36:57 1056

原创 CPU性能提升:Cache机制

随着半导体工艺和芯片设计技术的发展,CPU的工作频率也越来越高,和CPU进行频繁数据交换的内存的运行速度却没有相应提升,于是两者之间就产生了带宽问题,进而影响计算机系统的整体性能。CPU执行一条指令需要零点几纳秒,而RAM则需要30纳秒左右,读写一次RAM的时间,CPU都可以执行几百条指令了。

2021-12-03 15:48:26 2407

原创 CPU内部结构及工作原理

ALU在运算过程中,当运算结果为0、为负、数据溢出时,也会有一些Flags标志位输出,这些标志位对控制单元特别有用,如一些条件跳转指令,其实就是根据运算结果的这些标志位进行跳转的。跳转指令的实现,改变了程序按顺序逐步执行的线性结构,可以让程序执行更加灵活,可以实现更加复杂的程序逻辑,如程序的分支结构、循环结构等。我们也可以基于这些基本指令实现新的指令,以除法运算为例,如果CPU在硬件电路上不支持除法指令,我们就可以基于CPU指令集中的原生加、减、移位等指令来模拟除法的实现,生成新的除法指令。

2021-12-03 15:02:07 1695

原创 一颗芯片如何诞生的

芯片芯片属于半导体。半导体是介于导体和绝缘体之间的一类物质,元素周期表中硅、锗、硒、硼的单质都属于半导体。这些单质通过掺杂其他元素生成的一些化合物,也属于半导体的范畴。这些化合物在常温下可激发载流子的能力大增,导电能力大大增强,弥补了单质的一些缺点,因此在半导体行业中广泛应用,如氮化硅、砷化镓、磷化铟、氮化镓等。在这些半导体材料中,目前只有硅在集成电路中大规模应用,充当着集成电路的原材料。在自然界中,硅是含量第二丰富的元素,如沙子,就含有大量的二氧化硅。可以说制造芯片的原材料是极其丰富、取之不尽的。一堆

2021-12-03 09:36:20 211

原创 ARM体系结构

计算机的指令集一般分为4种:浮渣指令集(CISC)、精简指令集(RISC)、显式并行指令集(EPIC)和超长指令集(VLIW)。在嵌入式中经常打交道的事RISC指令集。ARM处理器有多种工作模式。应用程序正常运行时,ARM处理器工作在用户模式(User mode),当程序运行出错或有中断发生时,ARM处理器就会切换到对应的特权工作模式。

2021-11-22 17:07:56 191

原创 计算机内存单位详解

位(bit)位是最小的存储单位,简写为b,每一个位存储一个1位的二进制码。例如:1000 0001这串二进制的字码是由8个位组成,其中每个逻辑0或1便是1个位。字节(byte)字节是常见的存储单位,简写为B,一个字节相当于八个位。例如:在ASCII码中,一个字母(不分大小写)占1个字节的空间,不同的编码存在差异。 1 KB = 1024 B(字节) 1 MB = 1024 KB; (2^10 B) 1 GB = 1024 MB; (2^20 B) 1 TB = 1024 GB;

2021-11-22 16:45:48 3434 2

原创 python列表和numpy数组中使用加号的区别

列表和数组 + 的不同作用列表:将两个或多个数组合并为一个列表数组:两个相同尺寸的矩阵加法>>> a=[[1,2,3],[4,5,6]]>>> b=[[1,1,1],[2,2,2]]>>> c=a+b>>> print(c)[[1, 2, 3], [4, 5, 6], [1, 1, 1], [2, 2, 2]]>>> import numpy as np>>> arr1 = np.a

2021-05-14 14:49:56 367

原创 glob和os.listdir都是获得指定路径下的所有文件,为什么glob.glob更方便

python的查找路径下的文件

2021-03-23 15:15:28 665

原创 Linux 常用一些指令

Linux 常用一些指令提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录Linux 常用一些指令前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导

2021-03-05 14:46:03 57

原创 关于python的函数参数问题(*和**的作用)

位置参数前面:一个星号(*)英文名为:arbitrary Positional Arguments表示这个位置可以接受一系列值,可以用for…in…循环来逐一处理这些值def say_hello(*names): for name in names: print('Hello,{}!'.format(name))names = ('A','B','C')say_hello(*na...

2020-04-16 11:36:46 190

原创 python3安装库的四种方法

例如:安装numpy(1)pip intsall numpy(2)easy_install numpy(3)下载tar.gz包,cd到下载的文件夹下面 然后用cmd直接pip setup.py install(4)拷贝别人的numpy文件夹,直接复制到site-packages/文件夹下...

2020-03-21 09:59:40 631

C++模板实现简单的数据结构

主要实现线性结构的数据结构 线性表 栈 队列,属性为插入、删除、修改、查找、排序; 非线性结构的二叉树

2024-04-11

C++的模板实现简单的数据结构

主要实现线性结构的数据结构 线性表 栈 队列,属性为插入、删除、修改、查找、排序; 非线性结构的二叉树

2024-04-11

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

TA关注的人

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