- 博客(84)
- 资源 (4)
- 收藏
- 关注
原创 VS code在线调试Docker里的程序
最近在服务器上调试代码,黑黑的终端窗口,不方便代码的单步调试,就尝试使用VS code进行远程调试。
2024-04-14 20:22:20
173
2
原创 Rust之高级特性
可以在代码块前使用关键字unsafe来切换到不安全模式,并在被标记后的代码块中使用不安全代码。不安全Rust允许你执行4种在安全 Rust 中 不 被 允 许 的 操 作 , 而 它 们 也 就 是 所 谓 的 不 安 全 超 能 力(unsafe superpower)。因此,即便是身处于不安全的代码块中,你也仍然可以获得一定程度的安全性。在Rust中存在一种不会强制实施内存安全保障的语言:不安全Rust(unsafe Rust)。代码块,所以可以在一个不安全函数中执行其他不安全操作而无须添加额外的。
2024-04-14 20:19:08
420
原创 基本的数据类型在16位、32位和64位机上所占的字节大小
数据类型16位(byte)32位(byte)64位(byte)取值范围char111-128 ~ 1271110 ~ 2552222220 ~ 65535int244244448448888double8881.7E+10的负308次⽅~1.7E+10的正308次⽅float4443.4E+10的负38次⽅~3.4E+10的38次⽅10/1210/16有效位10字节。32位为了对齐实际分配12字节;
2024-04-14 17:06:21
474
原创 数据集转换(UAVDT2COCO)
里面的DET数据按照片名称进行分割,保证分割后的txt文件中包含该照片的全部目标信息。将全部的文件按照一定的比例进行切分,这儿设置的比例是2:8,可以直接修改参数。主要是将UAVDT数据集转换成COCO格式的目标检测数据集。最后将分割完成的标签文件由。
2024-03-15 20:46:35
827
9
原创 在Windows上使用VScode阅读kernel源码
有一说一,在Windows上使用Source Inside阅读kernel源码真的很舒服,但是有时候带着轻薄本出去,又不想往轻薄本上安装很多的软件,就使用VS code临时阅读kernel源码。如果不能进行跳转,阅读kernel源码就很难受,今天就记录一下,如何配置VS code,可以方便地阅读kernel源码。
2024-01-08 23:06:53
1200
原创 Linux内核之红黑树详解(1)
0// 红色节点1// 黑色节点// 红黑树的节点// 颜色(RED 或 BLACK)Type key;// 关键字(键值)// 左孩子// 右孩子// 父结点// 红黑树的根Node *node;}RBRoot;红黑树可以进行添加、删除和旋转。红黑树在进行添加和删除之后,就会进行旋转。因为在添加和删除红黑树中的结点之后,就会破坏红黑树的一些性质,使得红黑树转变成一颗普通的树,通过旋转就可以使得这棵树重新成为红黑树。旋转包括左旋和右旋两种。
2024-01-02 22:36:13
541
原创 Linux内核之常用数据结构分析
要深入学习Linux内核相关知识,还需要了解一些内核中常用的数据结构和算法。其中最常用的两个就是链表和红黑树。
2024-01-02 11:02:54
1198
转载 PMIC电源管理芯片
PMIC全称为power management IC,中文称电源管理集成电路。其主要特点是高度集成,将传统的多路电源输出封装在一颗芯片内,使得多电源应用场景效率更高,体积更小。PMIC集成了多种电源管理功能,包括电源供应、电池管理、充电管理、功耗管理等,为电子设备提供稳定的电源,并对电池进行管理和控制。
2024-01-01 22:08:46
1294
原创 硬件知识之ESD保护器件
ESD保护器件,全称是Electrostatic Discharge Protection Device,是一种专门用与防止电子设备遭受外部静电放电而损坏的元器件。静电放电会在接口或器件表面积累成千上万伏特的能量,这些能量可能会引起设备故障或者持久性损伤,甚至造成故障率上升、性能降低或直接烧毁组件。因此,ESD保护器件广泛应用于各种类型的电路、系统和设备,以提高设备的稳定性和可靠性。
2024-01-01 16:54:34
710
原创 在香橙派5 Plus上搭建Gitlab
作为一个码农,一定知道Github这个最大的成人交友网站。但是Github在国内不稳定,经常拉不下来代码,也就无法推送代码。为了更方便的使用,顺便更好地了解Git工具,决定在香橙派5 Plus上搭建一个属于自己的代码仓库。
2023-12-27 17:44:37
763
原创 设备树之OF操作函数
在Kernel的include/linux/of.h文件中,提供了一系列的函数来获取设备书中的节点或属性信息。这些函数都以of开头,所以也被称为OF函数。注:参考正点原子I.MX6U嵌入式Linux驱动开发指南V1.71。
2023-12-22 10:22:53
263
原创 设备树规范学习
1、设备树概述:DTSpec指定了一个称为设备树(device tree)的树状结构来描述系统的硬件信息。Bootloader将设备树文件加载到内存中,并将指向设备树文件地址的指针通过参数R2传递给kernel。设备树是一个树形的数据结构,它的节点描述了系统中对应的设备。每个结点用属性-值(key-value)来描述设备的特征,除了root根节点以外,每个结点都有唯一的父节点。以V3s为例:#include <dt-bindings/interrupt-controller/arm-gic.h
2023-12-18 17:46:28
355
原创 Source Insight使用
之前一直使用VS code阅读kernel源码,有时候函数跳转有些问题。最近换成了Source Insight软件,发现真不错。就是需要一些学习成本,简单记录一下如何使用吧。
2023-12-17 20:48:45
55
原创 Git常用指令
9月之前还可以方便的使用https进行push,但是过了9月就开始push不上去了,还是可以使用https进行拉取的,拉取之后的网址还是https的,需要改成SSH才能愉快地进行push。将复制的ssh-rsa添加到SSH key中。复制ssh-rsa。
2023-12-17 17:44:42
98
原创 全志V3s之Kernel移植
将编译生成的zImage和dtb文件放进boot分区即可启动。表示拉去的是最近一次更改的版本。下,生成zImage文件,在。下生成相应的设备树文件。
2023-12-15 15:52:48
313
原创 全志V3s之显示当前文件路径
这个是即时生效的,所以如果要重启或者重新打开窗口也生效的话就要把这个导出动作放到/etc/profile里。号,不方便查看,更改以下配置,使得可以显示全路径。新移植的kernel和根文件系统,其终端显示只有一个。或者直接修改系统初始设置PS1的地方。
2023-12-14 22:00:16
107
原创 全志V3s之NFS连接ubuntu22.04
出现以上问题,主要是NFS版本的问题。NFS是一种网络文件系统,它允许计算机通过网络共享文件和目录。在Linux内核中,NFS实现作为内核模块存在,可以在需要时加载。NFS在Linux内核的许多版本中都得到了支持,从2.0版本开始就有了NFSv2,2.2版本开始支持NFSv3,2.6版本开始支持NFSv4。此外,还有一些可选的NFS相关内核模块,例如nfsd(NFS服务器),nfs_acl(NFS访问控制列表)和lockd(NFS文件锁定)。
2023-12-14 21:42:53
267
1
原创 全志V3s之应用层点灯
全志V3s一共有5个端口可以作为输入输出,其数量如图所示:。其中,每个端口都有自己的偏移地址,其偏移计算公式如表所示:以PB端口为例,其偏移地址为0x24,默认值为0x77777777,共32位,分别对应8个管脚。PB的数据寄存器的偏移地址为0x34,默认数值为0x00000000。
2023-12-13 21:34:28
196
原创 STM32的启动流程
栈的作用是用于局部变量,函数调用,函数形参等的开销,栈的大小不能超过内部SRAM 的大小。当程序较大时,需要修改栈的大小,不然可能会出现的HardFault的错误。Stack_Size EQU 0x00000400 //表示开辟栈的大小为0X00000400(1KB),EQU是伪指令,相当于C中的#defineAREA STACK, NOINIT, READWRITE, ALIGN=3 //开辟一段可读可写数据空间,ARER 伪指令表示下面将开始定义一个代码段或者数据段。此处是定义数据段。
2023-11-18 16:44:14
964
1
原创 微型计算机组成原理
一个传统微型计算机硬件组成如下图CPU通过地址线、数据线和控制信号线组成的本地总线(内部总线)与系统其他部分进行数据通信。对于80386CPU来说,其内部地址线和数据线都是32根,即32位,因此地址空间范围为2^32字节,从0~4GB。现代PC机主板主要通过2个超大规模芯片构成的芯片组或芯片集组成:北桥(Northbridge)芯片和南桥(Southbridge)芯片。
2023-11-02 21:52:54
161
原创 【嵌入式】Linux C编程——C要注意的东西
编译器将程序分解成符号的方法是,从左到右一个字符一个字符地读入,如果该字符可能组成一个符号,那么再读入下一个字符,判断已经读入的两个字符组成的字符串是否可能是一个符号的组成部分;如果可能,继续读入下一个字符,重复判断,直到读入的字符组成的字符串已不再可能组成一个有意义的符号。b、用双引号引起的字符串,代表的是一个指向无名数组起始字符的指针,该数组被双引号之间的字符以及一个额外的二进制值为零的字符。a、用单引号引起的一个字符实际上代表一个整数,整数值对应于该字符在编译器采用的字符集中的序列值;
2023-10-31 14:55:01
62
原创 RT-Thread内核——内核基础(下)
自动初始化机制是指初始化函数不需要被显式调用,只需要在函数定义处通过宏定义的方式进行申明,就会在系统启动过程中被执行。代码最后的表示使用自动初始化功能,按照这种方式,函数就会被系统自动调用。初始化函数主动通过这些宏接口进行申明,如 INIT_BOARD_EXPORT(rt_hw_usart_init),链接器会自动收集所有被申明的初始化函数,放到 RTI 符号段中,该符号段位于内存分布的 RO 段中,该 RTI 符号段中的所有函数在系统初始化时会被自动调用。
2023-10-31 09:58:46
144
原创 RT-Thread内核——内核基础(上)
内核是操作系统的核心,是操作系统最基础也是最重要的部分,主要负责系统的线程、线程间通信、系统时钟、中断以及内存等。
2023-10-30 21:36:47
280
原创 RT-Thread入门
RT-Thread,全称是Real Time-Thread,即嵌入式实时多线程操作系统。其基本属性之一是支持多任务,但是允许多任务同时运行,但是并不是意味着处理器在同一时刻真的执行了多个任务。实际上,一个处理器核心在某一时刻只能运行一个任务,由于任务每次对一个任务的执行时间很短、任务与任务之间通过任务调度器进行非常快速地切换(调度器根据优先级决定此刻该执行的任务),所以给人造成多个任务在同一时刻同时运行的错觉。
2023-10-29 16:28:18
113
原创 Dockerfile文件自动化生成R4L镜像
在存放Dockerfile的文件中执行如下的命令。使用官方的脚本自动化安装Docker环境。等待一会,出现如下的情况代表镜像生成完毕。使用如下指令查看Docker镜像。使用如下指令删除Docker镜像。使用如下指令生成Docker容器。使用如下指令查看现有的容器。使用如下指令删除容器。
2023-10-26 22:52:14
809
原创 内存管理:TLSF算法原理分析
TLSF(全称Two-Level Segregated Fit),两级隔离Fit内存分配器,是一款通用的动态内存分配,专门用于实时要求。算法复杂度为O(1);每次分配的开销极低(4字节);低碎片化;主要采用两级位图(Two-Level Bitmap)与分级空闲块链表(Segregated Free List)的数据结构管理动态内存池(memory pool)以及其中的空闲块(free blocks),用Good-Fit的策略进行分配。
2023-08-25 13:57:25
500
原创 C语言学习之<stdarg.h>
用于声明一个变量,用来保存参数列表;:将变量初始化,使其指向函数的固定参数后的第一个参数;’ va_arg ':从 **’ va_list '**中获取下一个参数,需要指定参数的类型;’ va_end ':用于清理和终止。在函数定义中,你可以使用 stdarg.h 中的宏来处理可变参数。// 根据需要为其他格式说明符添加更多的情况default:} else {
2023-08-23 10:21:22
1415
原创 Fast DDS (2)
这不会影响您使用该库的方式,即Fast DDS API 是线程安全的,因此您可以无所畏惧地从不同线程调用同一 DomainParticipant 上的任何方法。Fast DDS的 DDS 层定义了通信的几个关键元素。Fast DDS遵循DDS规范,将这些涉及通信的元素定义为实体。发现协议定义了在给定主题下发布的 DataWriter 和订阅同一主题的 DataReader 进行匹配的机制,以便它们可以开始共享数据。如上所述,Fast DDS中的 RTPS 协议允许从传输层抽象 DDS 应用实体。
2023-08-21 17:01:25
494
原创 Fast DDS(1)
数据分发服务 (DDS) 是一种以数据为中心的通信协议,用于分布式软件应用程序通信。它描述了支持数据提供者和数据消费者之间通信的通信应用程序编程接口(API)和通信语义。由于它是一个以数据为中心的发布订阅(DCPS)模型,因此在其实现中定义了三个关键应用程序实体:发布实体,定义信息生成对象及其属性;订阅实体,定义信息消费对象及其属性;和配置实体,定义作为主题传输的信息类型,并使用其服务质量(QoS)属性创建发布者和订阅者,确保上述实体的正确性能。
2023-08-21 13:40:29
248
原创 中间件(下)
中间件与性能优化之间存在密切的关系,特别是在构建复杂的分布式系统、处理高并发、实现异步通信等情况下。中间件可以在性能优化方面发挥重要作用,但同时,不当的中间件选择和配置也可能导致性能问题。然而,不适当的中间件选择、配置错误或不合理的使用中间件可能导致性能问题。因此,在选择和使用中间件时,需要仔细考虑其性能特点、适用场景和最佳实践,以确保中间件对性能优化产生积极影响。
2023-08-18 14:46:57
1179
原创 中间件(上)
创建自定义中间件通常涉及编写一些代码,以便在应用程序处理请求和响应时执行特定的操作。中间件可以用于处理请求、响应、日志记录、身份验证、授权等各种功能。选择编程语言和框架:选择适合你应用程序的编程语言和框架。不同的框架可能有不同的中间件机制和API。创建中间件文件:在你的项目中创建一个新的中间件文件,通常以类或函数的形式存在。定义中间件逻辑:在中间件文件中编写中间件的逻辑。这可能包括处理请求、修改响应、执行特定任务等。你可以定义一个函数或类,具体取决于框架的要求。
2023-08-18 11:25:34
1865
原创 Linux编程库
编程库就是指始终可以被多个Linux软件项目重复使用的代码集。Linux下的库文件分为共享库和静态库两大类,它们两者的差别仅在程序执行时所需的代码是在运行时动态加载的,还是在编译时静态加载的。此外,通常共享库以.so(Shared Object)结尾,静态链接库通常以.a结尾(Archive)。在终端下查看库的内容,通常共享库为绿色,而静态库为黑色。Linux的库一般在/lib或/usr/lib目录下。它主要存放系统的链接库文件,没有该目录则系统无法正常运行。
2023-08-17 15:27:20
118
原创 ARM处理器
RISC (Reduced Instruction Set Computer) 微处理器是一种计算机微处理器架构,其设计原则是通过简化指令集来提高执行速度。
2023-08-15 18:08:58
191
原创 Rust之编写自动化测试
在最简单的情形下,Rust中的测试就是一个标注有test属性的函数。属性 (attribute)是一种用于修饰Rust代码的元数据。只需要将#[test]添加到关键字fn的上一行便可以将函数转变为测试函数。当测试编写完成后,我们可以使用cargo test命令来运行测试。这个命令会构建并执行一个用于测试的可执行文件,该文件在执行的过程中会逐一调用所有标注了test属性的函数,并生成统计测试运行成功或失败的相关报告。
2023-08-15 16:35:02
1672
一键生成Rust for Linux环境的Dockerfile文件
2023-10-26
mplayer最新的源码
2023-05-17
基于stm32h750的无人驾驶小车原理图,兼容OpenMV,可使用OpenMV的函数进行编程.SchDoc
2021-06-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人