自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 BLE蓝牙协议详解

ATT是 BLE 中的底层协议,负责基本的数据传输操作。GATT是构建在 ATT 之上的高级协议,定义了如何组织和访问数据。ATT提供了基础的读写和通知功能,而GATT提供了一个结构化的框架,以便于发现和使用这些数据。通过理解 ATT 和 GATT 的关系和区别,可以更好地设计和实现 BLE 应用程序。

2024-08-27 16:55:34 1885

原创 shared_ptr使用基础

shared_ptr当它离开作用域时。当显式调用reset()时。当它被赋值为其他对象时。当所有共享同一个对象的shared_ptr都被销毁或重置时。一旦shared_ptr的引用计数变为 0,所管理的对象会自动被释放。

2024-08-15 18:09:06 848

原创 合并多个静态库为一个静态库或动态库

最近打包SDK,需要把多个*.so文件合并。通过google发现,*.so文件不能直接合并,因为其中已经没有重定向信息。但多个静态库文件是可以合并成一个库文件的。.a 文件的结构和.tar文件就没有什么区别。x 命令解出来, a 命令添加, t命令列表。上面已经把静态库的对象文件提取出来了,就用这些对象文件使用对应的编译工具继续生成动态库。假设A.a, B.a C.a 在/usr/local/lib目录下。

2024-07-02 19:40:37 888

原创 低功耗蓝牙ble开发(四)——bluez5接口及glib相关函数开发说明

在 D-Bus 编程中,代理对象(proxy object)是一个方便的抽象,用于简化与远程 D-Bus 服务的交互。代理对象代表远程 D-Bus 服务的某个对象,使得你可以像调用本地对象的方法一样调用远程对象的方法、获取属性以及监听信号。虽然使用代理对象并不是必须的,但它极大地简化了 D-Bus 编程,特别是对于复杂的 D-Bus 接口。GetSet。

2024-06-17 18:24:17 1436

原创 低功耗蓝牙ble开发(三)——基于bluez5接口的ble应用示例

【代码】低功耗蓝牙ble开发(三)——基于bluez5接口的ble应用示例。

2024-06-17 17:48:16 455

原创 低功耗蓝牙ble开发(二)——bluez5源码分析

Bluetoothctl工具的入口程序client/main.c中的main函数,现在跳到main函数开始分析。(9)bluez5.50/gdbus/client.c/ g_dbus_client_new_full函数分析。

2024-06-14 17:48:40 773

原创 低功耗蓝牙ble开发(一)——bluez介绍及源码分析

bluez-5.56源码。

2024-06-14 17:02:15 2699

原创 Netlink与RTNetlink的简单使用

它是 Linux 系统中管理网络路由的标准接口,通过 RTNetlink,用户空间程序可以实现动态地添加、删除、修改路由表中的路由条目,以及监听路由表的变化。4)nlmsg_seq:消息序列号,用以将消息排队,有些类似TCP协议中的序号(不完全一样),但是netlink的这个字段是可选的,不强制使用;这些消息含有一个ifaddrmsg类型的结构,紧跟在后面的是一系列的rtattr结构。,表示的是路由项是如何产生的,可取的值如下,其中常见的是RTPROT_KERNEL和RTPROT_STAIC。

2024-03-27 18:09:47 1445

原创 VPP学习之配置VXLAN隧道

VXLAN完美地弥补了VLAN的上述不足,一方面通过VXLAN中的24比特VNI字段,提供多达16M租户的标识能力,远大于VLAN的4000;VPP中的VTEP(VXLAN Tunnel End Points,VXLAN隧道端点)设备就是VPP,VTEP是在创建VXLAN隧道时指定的,每个VXLAN隧道的源IP地址和目标IP地址就是本地服务器VTEP地址和目标服务器VTEP地址。的工作模型,它创建在原来的 IP 网络(L3层)上,只要是三层可达(能够通过 IP 相互通信)的网络就能部署。

2024-02-29 17:37:43 1536

原创 网络扫盲(二)

IPv6-ICMPv6协议 - 知乎 (zhihu.com)](https://zhuanlan.zhihu.com/p/542738900#:~:text=1 首先 Source 用 1500 字节作为 MTU 向目标节点发送一个,发送 IPv6 数据包,该数据包顺利到达了目的地。ICMP 报文是封装在 IP 包里面,它工作在网络层,是 IP 协议的助手。ICMP类型主要可以分为两个大类:查询报文类型、差错报文类型。ping命令就是当ICMP类型为回送请求8实现的。协议工作的,先来熟悉。

2024-02-29 14:49:20 1039

原创 三种IPv6动态地址分配方法

DHCPv6 PD(Prefix Delegation)是一种 DHCPv6 的扩展,它通常与 SLAAC(Stateless Address Autoconfiguration)和无状态 DHCPv6 结合使用,以提供更全面的 IPv6 地址配置和前缀分配。ipv6状态下ISP建立DHCPv6-pd服务器,用户路由器为DHCPv6-pd客户端,客户端拿到前缀后再发路由通告RA给内网的终端设备,给每个设备按这个前缀设置一个公网的ipv6地址。的情况下获取 IPv6 地址的方法。SLAAC 的核心是。

2024-01-31 18:04:57 9707

原创 git合并提交与git rebase使用

521a3f81e6d92360da00b8ea1e8914ca60adeaa5为刚刚复制的commit id,输入命令后进入vim修改pick为f,只保留第一个pick。第一个为合并修改中日期最前的。查看提交日志历史,合并多条提交到一个提交,在log中把想合并的commit的前一个 id复制,就是commit后面的字符串。输入命令后进去vim界面,在顶部添加commit内容,即几次修改的描述。作为编辑器,Ubuntu可以如式来使用VIM。

2024-01-25 17:30:40 429

原创 vpp插件DHCP client源码分析

通常用于特定的数据包处理流程中,用于识别DHCP客户端的数据包。一旦识别出DHCP客户端的数据包,通常会触发特定的处理流程,可能涉及为客户端分配IP地址或处理网络配置等。添加client需要先在DHCP client pool索引if,查找是否存在相同的,不存在的话,再从DHCP client pool中分配一个client并添加设备信息。在这个函数中,将会解析接收到的配置信息,并将其应用到DHCP客户端。可能作为 VPP 中的数据包处理函数的一部分,用于筛选和处理适用于本地接口的 DHCP 数据包。

2024-01-09 18:27:03 1112

原创 搭建dhcp server,ip netns模拟dhcp client验证dhcp获取ip

lan1也可以与dpdk绑定的物理端口通过vpp配置联通,因为dhcp是基于内核的接口协议,vpp不支持,所以需要在vpp创建tap-inject接口lan1(此处lan1可以理解为内核与vpp的通道),才能使dpdk绑定的物理接口的报文通过tap-inject的lan1接口到内核,而后dhcp server与lan1的子接口lan1.100100绑定,当然lan1.100100也需要与vpp内的接口绑定才能互通数据。,所有本地可以使用的命令都可以在虚拟网络中使用。

2024-01-05 11:29:16 1201

原创 搭建pppoe server,使用vlan网卡监听

L:指定PPPoe Server使用的IP地址,此IP地址不是网卡的IP地址,而是PPPOE服务器的虚拟IP,和实际网卡ens5f3.100100的地址无关,实际网卡没有IP也可以。client表示用户名为pppoe,server服务器名为任意,secret密码为12345678,IP addresses为任意的IP。可以使用iptables-save和iptables-restore实现iptables规则的持久化。取消注释+chap,注释-chap(PAP 和 CHAP 为两种不同的认证协议)。

2024-01-04 11:46:22 566

原创 VPP Huge-Pages--大页设置

注意:如果VPP在虚拟机(VM)中运行,则该VM必须具有大页支持。安装VPP后,它将尝试覆盖现有的大页设置。如果VM没有大页支持,则安装将失败,但是该失败可能不会引起注意。重启VM后,在系统启动时,将重新应用“vm.nr_hugepages”,并且将失败,并且VM将中止内核引导,从而锁定VM。在VPP安装过程中,VPP将覆盖现有的大页面设置。默认情况下,VPP将系统上的大页面数设置为1024个2M大页。这个大页数是系统上的,不只由VPP使用。根据系统的使用方式,可以更新此配置文件以调整系统上保留的大页数。

2023-12-22 11:21:21 298

原创 VPP配置-CLI和startup.conf

在VPP 18.04中,默认日志文件位置已从“/tmp/vpp.log”移至“/var/log/vpp/vpp.log”。默认目录是基于启动VPP的用户ID,通常“root”用户,其默认为“/run/vpp/”,其他用户默认为“/run/user//vpp/”。通过命令行将该文件的路径提供给VPP应用程序,通常配置文件位于/etc/vpp/startup.conf中,如果VPP作为软件包安装,则默认的startup.conf文件也位于此。默认情况下,在默认的“startup.conf”文件中进行设置。

2023-12-21 10:36:32 953

原创 远程重装联想服务器系统Ubuntu 22.04

若使用Java客户端,将下载一个jnlp文件,在启动JNLP文件之前,本地必须安装有JAVA运行环境JRE 6.0以上。在Java Control Panel中添加可信任站点–“例外站点”,手动在java控制面板中添加例外站点,再运行JNLP文件,不然JNLP会被安全阻止。2、启动远程控制台时,将打开一个新窗口,其中显示了主机系统的屏幕内容。6、安装完成后,需要配置服务器引导选项,改为UEFI引导,并选择右边方框中新装的系统,把它的顺序拉到最前。5、挂载完成后,选择重启需要引导的虚拟介质。

2023-12-11 11:34:45 1348

原创 网络扫盲(一)

*LAN(即局域网)**是最常见且应用最为广泛的一种网络,它是指在1~5公里范围内两台以上的计算机设备(如服务器、工作站)通过线缆(如同轴线缆、双绞线、光缆等)连接起来实现的资源共享的计算机网络。**MAN(即城域网)**是指在同一城市范围内所建立的计算机网络,其范围可覆盖到六十公里。**WAN(即广域网)**是指连接不同地区局域网或城域网的计算机网络,其覆盖范围广,可覆盖几千公里,能连接多个地区、城市和国家,甚至横跨几个洲实现远距离通信。无线局域网。

2023-12-07 14:37:59 570

原创 流媒体服务

视频编码标准有两大系统: MPEG 和ITU-T,国际上制定视频编解码技术的组织有两个,一个是“国际电联(ITU-T)”,它制定的标准有H.261、H.263、H.263+、H.264等,另一个是“国际标准化组织(ISO)”它制定的标准有MPEG-1、MPEG-2、MPEG-4等。一个完整的视频文件,包括音频、视频和基础元信息,我们常见的视频文件如mp4、mov、flv、avi、rmvb等视频文件,就是一个容器的封装,里面包含了音频和视频两部分,并且都是通过一些特定的编码算法,进行编码压缩过后的。

2023-11-03 11:12:50 103

原创 (一)CUDA开始

可以形象的理解为90%的。

2023-10-25 16:56:18 65

原创 python调用C++方法

如果想在已有 C++ 动态库上扩展 pybind11 绑定,那么 target_link_libraries 链接该动态库就可以了。pybind11的模块实例对象提供了 def()函数,用来封装普通的函数,具体的用法为。现有个项目需要封装给python用户使用,讨论过后决定使用pybind11进行封装。在实际项目中关联的c++文件会很多,建议使用cmake进行编译,最终生成相应模块。一般使用pybind11多一些,因为更为轻量化,能够轻易地加入c++特性。在使用pybind11过程中涉及3个地方用。

2023-10-25 14:39:14 115

原创 Linux内核(一)–基础概念及学习路线

Linux内核分为CPU调度、内存管理、网络和存储四大子系统,针对硬件的驱动成百上千。代码的数量更是大的惊人。从最基本的字符设备学起,学习如何编写一个简单的模块,学习如何为一些简单的设备如LED、ADC等编写驱动。何编写一个简单的模块,学习如何为一些简单的设备如LED、ADC等编写驱动。,用户空间和内核空间的区分主要是为了系统的安全防护。linux内核代码涉及知识点包括。Linux虚拟机制(KVM)Linux虚拟机制(KVM)Linux内核实时化技术。Linux内存管理机制。Linux内存管理机制。

2023-10-12 17:12:04 399

原创 symbol lookup error问题解决

程序运行时出现以上报错,说明是动态库存放的位置喝Makefile编译时的动态库位置不同。

2023-09-19 10:41:22 5214

原创 车辆全程跟踪系统--Multi-Camera Vehicle Tracking System for AI City Challenge 2022

多目标多摄像头跟踪是智能交通系统的基本任务。AI City Challenge 2022针对的是城市规模的多摄像头车辆跟踪任务。用于车辆检测和特征提取的最先进的检测和重新识别模型;单相机跟踪,在逐个跟踪范式的基础上引入增强跟踪预测和多级关联方法;基于区域的单摄像机轨道合并策略;多相机时空匹配和聚类策略。

2023-09-11 15:00:04 652 2

原创 跨摄像头车辆跟踪方案--City-scale multi-camera vehicle tracking guided by crossroad zones

相比于K临近算法,多了个相互的要求。

2023-09-07 17:55:38 1164 3

原创 python--装饰器

比如:当404时则会执行下面的视图函数。

2023-09-05 11:08:19 98 1

原创 Python--Flask环境搭建

安装工具包的时候可能需要安装一些其他的工具,如果系统提示 proceed ([y]/n)?下载完成后,可进入开始菜单栏中点击Anaconda Promot,通过conda命令进行Miniconda的安装和配置环境变量。安装虚拟环境(by conda),-name名字为flaskvir,python为所需要的版本。版本:python=3.11(3.11代表我创建的环境为3.11版本,此版本号可以自行设定)虚拟环境名称:python_3.6(该名称可根据自己喜好设定,建议设置容易记住的名称)

2023-08-31 10:35:09 664

原创 Python--Web应用程序框架(Flask)--基本概念

让我们可以使用Python语言快速实现一个网站或Web服务,在介绍Flask之前首先来聊下它和Django的联系以及区别,django是个大而全的web框架,它内置许多模块,flask是一个小而精的轻量级框架,Django功能大而全,Flask只包含基本的配置, Django的一站式解决的思路,能让开发者不用在开发之前就在选择应用的基础设施上花费大量时间。它旨在保持应用程序的核心简单且可扩展。就是用来匹配url的,在我们的flask里面是以装饰器来实现的,装饰器引用的也是我们上面实例化核心类出来的对象。

2023-08-07 17:57:38 479 1

原创 深入浅析:Makefile

makefile文件规则

2023-07-11 10:20:45 182

原创 C和CPP混合编译遇到的问题

c、cpp混合编译

2023-06-15 14:25:33 182411 2

原创 设备驱动简介

内核简介

2023-05-05 11:03:22 87

原创 国标二阶段VIR消息集调试总结

车联网二阶段标准填充

2023-04-19 10:20:34 392

原创 asn1c中ASN_SEQUENCE_ADD的使用方法

这个结构体对象可以保存任意数量的MyStruct_t类型的结构体。

2023-04-07 15:28:14 524

原创 C语言--操作内存的工具

C语言编码

2023-01-16 17:20:05 280

原创 V2X二阶段国标编解码----ASN.1编解码的基本使用

二阶段国标编解码部分字段填充方式

2023-01-12 16:47:00 1414 7

原创 Linux驱动找工作总结

Linux驱动一、驱动1、字符设备驱动程序1)实现入口函数 xxx_init()和卸载函数 xxx_exit()2)申请设备号 register_chrdev (与内核相关)3)利用udev/mdev机制创建设备文件(节点) class_create, device_create (与内核相关)4)硬件部分初始化   io资源映射 ioremap,内核提供gpio库函数 (与硬件相关)   注册中断(与硬件相关)5)构建 file_operation结构 (与内核相关)6)实现操作硬件方

2021-09-08 16:05:14 220

原创 Linux系统找工作总结

Linux系统编程一、sleep,wait,delay的区别1、Linux系统中sleep就是放弃当前cpu时间片,并阻塞指定时间;(与其他系统不同)​ sleep() 则不会占住cpu资源,其他模块此时也可以使用cpu资源。所以,如果sleep(10),实际上延迟时间是要多于10s的,是一个不定的时间值,主要看cpu的运行情况;2、Linux系统的wait()不是延时函数;​ 其功能是:父进程一旦调用了wait就立即阻塞自己,由wait自动分析是否当前进程的某个子进程已经退出,如果让它找到了

2021-09-07 19:28:03 273

原创 C语言找工作总结

C语言一、.h头文件的作用​ .h中一般放的是同名.c文件中定义的变量、数组、函数的声明,需要让.c外部使用的声明。​ 1)h文件作用:​ 1.方便开发:包含一些文件需要的共同的常量,结构,类型定义,函数,变量的声明;​ 2.使函数的作用域从函数声明的位置开始,而不是函数定义的位置(实践总结);3 .提供接口:对一个软件包来说可以提供一个给外界的接口(例如: stdio.h)。​ 2)h文件里应该有什么:常量,结构,类型定义,函数,变量申明。​ 3)h文件不应该有什么:变量定

2021-09-06 20:28:00 323

空空如也

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

TA关注的人

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