自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 IEEE754 -浮点数的表示

以 3.143.143.14 举例:双精度浮点数使用64位表示,格式如下:

2025-03-27 23:54:33 558

原创 扩展卡尔曼滤波

xk=f(xk−1,uk−1,wk−1)//状态方程−−−−zk=h(xk,vk)//观测方程x_k=f(x_{k-1},u_{k-1}, w_{k-1}) // 状态方程\\----\\z_k=h(x_k, v_k) //观测方程xk​=f(xk−1​,uk−1​,wk−1​)//状态方程−−−−zk​=h(xk​,vk​)//观测方程

2025-03-21 23:40:13 1497

原创 泰勒多项式

随着阶数的增加,在距离较远的点上也能很好的逼近,而阶数较小时只有附近的点是可用的。如下图所示,红色部分为一个正弦函数,蓝色部分为在零点处展开的。

2025-03-19 22:35:48 955

原创 标准卡尔曼滤波

xk​Axk−1​Buk​wk​xk​xk−1​ABuk​wk​Qzk​Hxk​vk​zk​Hxk​xk​xk​vk​Qxk​kxk​如果误差都是已知的,那就直接修正了,那就等于没有误差,也不需要滤波,一个公式,直接就得到真结果了,那显然是不可能的。

2025-03-18 22:42:19 986

原创 方差,协方差及协方差矩阵的计算

σ2N1​i1∑N​xi​−μ2σ2Nxi​μμN1​∑i1N​xi​8574639599, 计算平均值为μ58574639599​83.2σ成绩​2585−83.5274−83.5263−83.5295−83.5299−83.52​177.05。

2025-03-14 01:15:40 511

原创 从毕达哥拉斯定理到向量距离和夹角的计算

对于大家应该都比较熟悉,在一个中,两条等于a2b2c2。

2025-03-07 23:32:31 1094

原创 在ubuntu22.04中使用bear命令追踪内核编译报错的原因分析和解决方案

失败,打印出的路径是对的但仍然找不到。

2025-01-04 01:48:28 556

原创 香橙派5plus单独编译并安装linux内核无法启动的原因分析与解决记录

将两个配置文件(.config)进行对比,如下图所示,区别还是很大的,所以解决思路是使用 linux-rockchip-rk3588-current.config 对内核进行配置,而不使用文档中给出的配置文件。可以看到使用SDK编译内核前使用 linux-rockchip-rk3588-current.config 对内核进行了配置,而之前在单独编译内核前并没有使用这个配置文件。

2025-01-03 00:51:30 1426

原创 WSL2桥接模式配置(可与外部设备互ping)

1.说明我在WSL2中安装了一个ubuntu22.04,实际的开发过程中就出现了 WSL2 可以ping通开发板,而开发板则不能 ping 通 WSL2的情况(开发板和windows在同一网段)。2. 原因我们在打开WSL2创建的虚拟机时,默认使用NAT(网络地址转换)模式,windows会创建一个虚拟交换机,且这个交换机是一个内部交换机 (Internal Switch),内部交换机允许虚拟机之间以及虚拟机与 Hyper-V 主机之间的通信,但不允许直接与外部网络通信。虚拟机默认是连接到这个

2024-12-29 01:48:04 1474

原创 常见红外协议整理

引导码(Leader Code):引导码用来告诉接收器一个新数据帧的开始。9ms的脉冲burst + 4.5ms的空闲。用户代码(Custom Code):用户代码用于标识设备,可以用来区分不同品牌。16位(两个字节),高8字节有效,低8字节是高八字节的反码,用于错误检测数据码(Data Code):数据码包含具体的按键值,16位(两个字节),高8字节有效,低8字节是高八字节的反码,用于错误检测。停止位(Stop Bit):一个562.5微秒(约21个周期)的低电平脉冲,表示数据帧的结束。

2024-08-01 16:59:37 3433

原创 usb2.0的同步和自动重传机制

usb通过向广播时间,用以时间同步。

2024-07-18 00:26:19 1617

原创 usb2.0中的标准设备请求 (Standard Device Requests)

usb2.0规定USB设备必须通过默认控制管道(Default Control Pipe)响应主机的请求。请求是使用控制传输(Control Transfers)进行的。注:所有的usb设备都必须支持控制传输请求的内容设置包(Setup Packet)中发送到设备。每个(Setup Packet)有八个字节:偏移量 (Offset)字段 (Field)大小 (Size)值 (Value)描述 (Description)01Bitmap请求的特征:D7: 数据传输方向。

2024-07-11 22:15:17 1345 1

原创 stm32 USB CDC类虚拟串口初体验

本文介绍CubeMX生成 USB CDC类虚拟串口工程的操作步骤。

2024-07-09 00:07:43 1421

原创 python中的类和对象的基本概念记录

python中所有的类都继承 object 类class Person(object): # 显示的说明这个类继承object类class Person: # 没有指定父类,即使没有写,这个类也默认继承 object 类公有/私有 类 属性/方法公有/私有 对象 属性/方法公有/私有的静态方法对象的构造方法 _init在 例化对象时自动调用, 用于绑定或初始化对象属性。init_ 是一种特殊的写法,叫这个名字的就是构造方法。

2024-06-14 23:58:56 933

原创 python的深拷贝(deep copy)和浅拷贝(shallow copy)

浅拷贝:仅拷贝目标对象,对于目标对象所包含的子对象仅进行引用仅拷贝可变对象,因为不可变对象是不会改变的,所以对其进行拷贝是没有意义的,所以,对于不可变对象仅仅进行引用。浅拷贝仅拷贝目标对象,所以只有目标对象是可变对象和目标对象是不可变对象两种情况。深拷贝: 递归拷贝目标对象及子对象仅拷贝可变对象,因为不可变对象是不会改变的,所以对其进行拷贝是没有意义的,所以,对于不可变对象仅仅进行引用。注:如果不可变对象中包含可变对象,则也要对这个父不可变对象进行拷贝。在递归拷贝过程中,只要下级对象中出现可变对象。

2024-06-11 23:49:49 757

原创 python中字典和集合数据存储的异同分析

集合和字典的共性主要在其均采用哈希表进行数据存储,区别是字典使用键计算哈希值, 而集合直接使用元素本身计算哈希值。

2024-06-09 00:53:04 1036

原创 freertos中的链表1 - 链表的数据结构

在初始化链表时,xListEnd(类型为 MiniListItem_t)的 xItemValue 被设置为 portMAX_DELAY,并且 pxNext 和 pxPrevious 都指向自身,形成一个环形链表。

2024-06-07 00:51:05 705

原创 运放应用2 - 同相放大电路

注:运放的特性是一直存在的,特性则需要运放工作在。

2024-06-05 23:19:27 1895

原创 运放应用1 - 反相放大电路

注:运放的特性是一直存在的,虚短特性则需要运放工作在。

2024-06-05 22:24:53 5239

原创 arm cortex-m架构 SVC指令详解以及SVC异常在freertos的应用

中只实现了一个系统调用,且只使用一次,就是在完成任务创建后发起的第一次任务调度时使用。freertos只使用了一次。

2024-06-02 01:48:48 3904 2

原创 freertos初体验 - 在stm32上移植

具体有哪些项本文先不深究,大家可以使用我下面提供的配置文件,这个文件是。浏览一下目录结构,需要加入到工程中的文件都在第三张图和第四张图。freertos代码并不多,内核一共就这么多代码。由上图可以看见,我们还需要提供一个。准备一个目标芯片的工程。

2024-05-29 23:55:27 1807

原创 axi lite slave操作寄存器的接口转换代码分享(verilog实现)

【代码】axi lite slave操作寄存器的接口转换代码分享(verilog实现)

2024-05-27 23:44:14 445

原创 初识运放 - 运放的基本工作原理介绍

运放的应用主要是利用其在线性区,即负反馈网络的特性,本文仅仅介绍运放的基本原理,关于运放的更多应用会在后续的文章中介绍。

2024-05-23 00:07:00 5637

原创 linux进程的创建 - 初识fork, execvp

fork()是一个系统调用,所以当程序执行fork()时,程序会由用户态进入内核态。fork()会创建一个子进程,子进程是父进程的拷贝:子进程进程控制块(task_struct)会完全复制自父进程,所以子进程中程序运行的上下文和父进程是完全一致的。例如PC(程序计数指针/程序运行的位置)和SP(栈指针)。父进程的整个代码段和数据段都会被复制,子进程和父进程的虚拟内存是完全一致的。从物理内存的角度来说,父进程和子进程的 物理内存是完全一样且单独存储的,子进程的物理内存是父进程的复制,父子进程的。

2024-05-07 00:17:03 816

原创 usb2.0中的事务(Transactions)和传输(Transfers)

usb2.0中有4种端点类型(由的字段决定),分别是,usb的通信可以抽象为与 不同端点间的数据交换,usb2.0上层便是使用这4种传输类型进行传输数据。《Universal Serial Bus Specification Revision 2.0》的5.5,5.6,5.7,5.8 章节对上述4中传输类型的特点和限制进行了详细说明,有兴趣可以参阅一下.

2024-04-25 23:03:34 1262 1

原创 usb2.0中的包(packet)

多个包(packet)构成一个事务(Transaction), 多个事务(Transaction)构成一个传输(Transfers)本文引入了包(packet)的概念,但在usb2.0中包(packet)并不能作为一个孤立的概念来理解usb, 仅本文而言,知识是不成体系的,后面会有文章继续介绍其他概念。有关包(packet)的详细信息可参阅《Universal Serial Bus Specification Revision 2.0》的8.4章Packet Formats。

2024-04-16 23:48:46 1248 2

原创 vivado联合modesim仿真

使modesim可以支持xilinx ip的仿真。

2024-01-25 23:07:13 343

原创 vitis2023.1使用自定义IP时工程报错的解决办法

这个问题并不是一个bug,而是官方希望使用者自行为自定义IP编写驱动和Makefile。灵活性增加了,但同时也对使用者提出了更高的要求。

2024-01-19 00:15:51 2142

原创 arm异常处理分析

cortex-m在异常处理中将不符和AAPCS规定的部分都是用硬件实现,这使得编程变得非常方便,使得在整个程序中无需使用一条汇编便可进行编程。cortex-a和cortex-r并不是这样,cortex-a和cortex-r在异常处理时硬件参与的很少,上下文的保存和恢复都由软件完成,所以编程中也不可避免的需要使用汇编。

2024-01-03 00:39:33 1419 3

原创 arm cortex-m 架构简述

结合通过上述描述,我画了一张图描述状态和特权级的切换,比较好理解,便不过多赘述。

2023-12-31 23:08:50 2266

原创 vitis2023.1创建zynq7000 ps工程问题记录

关键点在于解决掉block design 设计中的platform setup中的设计中的报错,主要报错是说需要一个默认的平台时钟和AXI的主接口。没有引出 axi的主接口便解决了所有报错, 最终结果如下。在实际的解决中,引出时钟和复位,使用。的作用是为系统生成不同的复位信号。

2023-12-21 22:59:02 792

原创 8051编译器生成不可重入函数的原因简析与使用的注意事项

注:编译器也仅仅是在编译期将可能的风险作为警告提示用户,而且可能存在有些风险发现不了的情况,这也对编程人员提出了更高的要求,但8051程序体量往往比较小,也是比较容易把控的,程序员在进行8051编程时尽量不要写有重入风险的程序。理由是,局部变量一般会保存到栈中或者寄存器中,每个函数都有自己的栈帧,寄存器中的局部变量,编译器也会保证在不同函数中是独立的。所以即使函数重入了,他们所访问的同一局部变量也是存储在不同的存储空间中。

2023-12-18 23:09:28 458 1

原创 c++中函数重载的引入及引申出的一些问题分析

在C语言中不允许存在两个同名函数,C语言是不支持函数重载的。c++针对c语言进行了扩充,c++是允许在程序中存在同名函数的,c++是支持函数重载的。c++中重载函数的形参必须是不同的,要么类型不同,要么个数不同。

2023-12-12 22:35:11 1061

原创 c语言 # 操作符的三种用法

通过如下示例,一看即可明白。

2023-12-11 22:42:48 1168 1

原创 gcc内嵌汇编语法分析

简单来讲是gcc优化的需要,gcc只要保证一个符号在他使用前将其准备好就可以了,如果使用**“=”**修饰一个符号则是告诉编译器,内嵌汇编中不会用到这个值,所以gcc也不用在这段内嵌汇编前把这个值准备好,又因为gcc在编译阶段并不会分析内嵌汇编程序,所以即使在内嵌汇编中使用了这个值,编译器也不会报错,但这个值可能不是预期的。编译阶段仅仅会解析“输出部”,“输入部”,“破坏部”, “GotoLabels”,程序员也是同步这四个部分告诉编译器执行这段内嵌汇编可能发生的情况,如可能破坏寄存器,或者修改内存。

2023-12-07 00:59:33 1599 1

原创 libusb不同环境下的安装和使用

libusb使用c实现, 具有的跨平台的特性,目前支持的操作系统有:Linux、macOS、Windows、OpenBSD/NetBSD、Haiku、Solaris。

2023-08-24 23:14:52 7747 3

原创 三. Makefile中.PONHY 的理解和使用

Makefile中.PONHY 的理解和使用

2023-07-04 22:53:26 236 1

原创 二. Makefile规则的一些等效写法

Makefile规则的一些等效写法

2023-07-04 22:09:11 138 1

原创 一. make和Makefile的使用和基本原理

make和Makefile的使用和基本原理

2023-06-29 21:41:34 1032 1

原创 基于vscode+qemu的risc-v学习环境搭建

基于 vscode+qemu 的risc-v学习环境的搭建

2023-06-01 22:42:33 4049 1

空空如也

空空如也

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

TA关注的人

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