- 博客(51)
- 收藏
- 关注
原创 linux可加载内核模块机制(LKM)
我们在编写一个内核模块,如编写一个驱动程序时,通常需要向模块中传递一些参数,比如uart驱动的波特率等,又或者模块在调试阶段,可以通过参数对模块进行调试。在编写一个内核模块时,通常会在内核外独立编译加载运行,当功能稳定后一般会考虑将其固话到内核,本节介绍将模块编译进内核的流程。linux内核提供了如下向模块传递参数的宏。修改Kconfig增加一个配置项。被Makefile使用。修改Makefile。
2025-07-29 00:55:50
1098
原创 认识linux进程内存布局以及与命令行参数和环境变量的关系
如下是的原型,思考一个问题,我们通过命令行传递的参数,是如何获得的?环境变量又是如何获取的。上述问题在理解了linux进程创建的基本流程,以及linux进程的内存布局,相信就能做到心中有数。
2025-07-23 22:18:00
336
原创 使用keil编译工具分析函数调用关系和栈使用情况的一种简单方法
利用上述信息足够分析出栈的最大使用情况,也可以利用这些信息分析程序结构。选中如下选项,编译工具链会自动分析函数的调用关系,并生成对应文档。生成的文档和可执行文件在同一目录下。
2025-06-27 00:17:02
744
原创 《雷神之锤 III 竞技场》快速求平方根倒数的计算探究
经过上面推导,已经求出来一个值了,这个值存在一定的误差,如果接受不了这个误差,就可以使用牛顿求根法进行一次或多次逼近以提高精度,如果能够接受这种误差便可以结束了。
2025-04-03 00:05:09
1111
原创 扩展卡尔曼滤波
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
1964
原创 泰勒多项式
随着阶数的增加,在距离较远的点上也能很好的逼近,而阶数较小时只有附近的点是可用的。如下图所示,红色部分为一个正弦函数,蓝色部分为在零点处展开的。
2025-03-19 22:35:48
1445
原创 标准卡尔曼滤波
xkAxk−1Bukwkxkxk−1ABukwkQzkHxkvkzkHxkxkxkvkQxkkxk如果误差都是已知的,那就直接修正了,那就等于没有误差,也不需要滤波,一个公式,直接就得到真结果了,那显然是不可能的。
2025-03-18 22:42:19
1255
原创 方差,协方差及协方差矩阵的计算
σ2N1i1∑Nxi−μ2σ2NxiμμN1∑i1Nxi8574639599, 计算平均值为μ5857463959983.2σ成绩2585−83.5274−83.5263−83.5295−83.5299−83.52177.05。
2025-03-14 01:15:40
1667
原创 香橙派5plus单独编译并安装linux内核无法启动的原因分析与解决记录
将两个配置文件(.config)进行对比,如下图所示,区别还是很大的,所以解决思路是使用 linux-rockchip-rk3588-current.config 对内核进行配置,而不使用文档中给出的配置文件。可以看到使用SDK编译内核前使用 linux-rockchip-rk3588-current.config 对内核进行了配置,而之前在单独编译内核前并没有使用这个配置文件。
2025-01-03 00:51:30
2005
原创 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
3887
原创 常见红外协议整理
引导码(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
5553
1
原创 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
1680
1
原创 python中的类和对象的基本概念记录
python中所有的类都继承 object 类class Person(object): # 显示的说明这个类继承object类class Person: # 没有指定父类,即使没有写,这个类也默认继承 object 类公有/私有 类 属性/方法公有/私有 对象 属性/方法公有/私有的静态方法对象的构造方法 _init在 例化对象时自动调用, 用于绑定或初始化对象属性。init_ 是一种特殊的写法,叫这个名字的就是构造方法。
2024-06-14 23:58:56
1020
原创 python的深拷贝(deep copy)和浅拷贝(shallow copy)
浅拷贝:仅拷贝目标对象,对于目标对象所包含的子对象仅进行引用仅拷贝可变对象,因为不可变对象是不会改变的,所以对其进行拷贝是没有意义的,所以,对于不可变对象仅仅进行引用。浅拷贝仅拷贝目标对象,所以只有目标对象是可变对象和目标对象是不可变对象两种情况。深拷贝: 递归拷贝目标对象及子对象仅拷贝可变对象,因为不可变对象是不会改变的,所以对其进行拷贝是没有意义的,所以,对于不可变对象仅仅进行引用。注:如果不可变对象中包含可变对象,则也要对这个父不可变对象进行拷贝。在递归拷贝过程中,只要下级对象中出现可变对象。
2024-06-11 23:49:49
878
原创 python中字典和集合数据存储的异同分析
集合和字典的共性主要在其均采用哈希表进行数据存储,区别是字典使用键计算哈希值, 而集合直接使用元素本身计算哈希值。
2024-06-09 00:53:04
1101
原创 freertos中的链表1 - 链表的数据结构
在初始化链表时,xListEnd(类型为 MiniListItem_t)的 xItemValue 被设置为 portMAX_DELAY,并且 pxNext 和 pxPrevious 都指向自身,形成一个环形链表。
2024-06-07 00:51:05
885
原创 arm cortex-m架构 SVC指令详解以及SVC异常在freertos的应用
中只实现了一个系统调用,且只使用一次,就是在完成任务创建后发起的第一次任务调度时使用。freertos只使用了一次。
2024-06-02 01:48:48
5331
2
原创 freertos初体验 - 在stm32上移植
具体有哪些项本文先不深究,大家可以使用我下面提供的配置文件,这个文件是。浏览一下目录结构,需要加入到工程中的文件都在第三张图和第四张图。freertos代码并不多,内核一共就这么多代码。由上图可以看见,我们还需要提供一个。准备一个目标芯片的工程。
2024-05-29 23:55:27
2041
原创 axi lite slave操作寄存器的接口转换代码分享(verilog实现)
【代码】axi lite slave操作寄存器的接口转换代码分享(verilog实现)
2024-05-27 23:44:14
724
原创 初识运放 - 运放的基本工作原理介绍
运放的应用主要是利用其在线性区,即负反馈网络的特性,本文仅仅介绍运放的基本原理,关于运放的更多应用会在后续的文章中介绍。
2024-05-23 00:07:00
8582
原创 linux进程的创建 - 初识fork, execvp
fork()是一个系统调用,所以当程序执行fork()时,程序会由用户态进入内核态。fork()会创建一个子进程,子进程是父进程的拷贝:子进程进程控制块(task_struct)会完全复制自父进程,所以子进程中程序运行的上下文和父进程是完全一致的。例如PC(程序计数指针/程序运行的位置)和SP(栈指针)。父进程的整个代码段和数据段都会被复制,子进程和父进程的虚拟内存是完全一致的。从物理内存的角度来说,父进程和子进程的 物理内存是完全一样且单独存储的,子进程的物理内存是父进程的复制,父子进程的。
2024-05-07 00:17:03
956
原创 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
1870
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
1615
2
原创 vitis2023.1使用自定义IP时工程报错的解决办法
这个问题并不是一个bug,而是官方希望使用者自行为自定义IP编写驱动和Makefile。灵活性增加了,但同时也对使用者提出了更高的要求。
2024-01-19 00:15:51
2791
原创 arm异常处理分析
cortex-m在异常处理中将不符和AAPCS规定的部分都是用硬件实现,这使得编程变得非常方便,使得在整个程序中无需使用一条汇编便可进行编程。cortex-a和cortex-r并不是这样,cortex-a和cortex-r在异常处理时硬件参与的很少,上下文的保存和恢复都由软件完成,所以编程中也不可避免的需要使用汇编。
2024-01-03 00:39:33
1786
3
原创 vitis2023.1创建zynq7000 ps工程问题记录
关键点在于解决掉block design 设计中的platform setup中的设计中的报错,主要报错是说需要一个默认的平台时钟和AXI的主接口。没有引出 axi的主接口便解决了所有报错, 最终结果如下。在实际的解决中,引出时钟和复位,使用。的作用是为系统生成不同的复位信号。
2023-12-21 22:59:02
953
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅