- 博客(16)
- 资源 (1)
- 收藏
- 关注

原创 基于rosjava的Android ROS环境搭建心路历程
Android ROS基于rosjava的Android ROS环境搭建心路历程ROS环境非ROS包ROS包导入并编译ROS Android程序基于rosjava的Android ROS环境搭建心路历程因为比赛需要,不得不耗了半年时间在这上面,最后弄得也不是很通透,踩完各种坑,绝望中徘徊千百遍,只能说能用了。将遇到过的各种坑以及现在所理解的东西总结如下。官网教程:http://wiki.ro...
2019-08-22 21:16:20
2612
1
原创 beacon报文内容解析--TIM
beacon帧一般采用最低速率的发送,因为它是广播帧,没有ACK反馈,无法设置重传机制,采用较低的速率以保证信号较差的节点也可以接收该信息。
2025-01-08 17:20:02
858
原创 ipv6相关知识
IPv6中的NS(Neighbor Solicitation)和RS(Router Solicitation)报文都属于邻居发现协议(NDP)类似于IPv4的ARP请求,IPv6中,NS(Neighbor Solicitation,邻居请求)报文是邻居发现协议(NDP)的一部分。在IPv6中,RS(Router Solicitation,路由器请求)报文是邻居发现协议(NDP)的一部分。
2024-10-09 10:05:31
292
原创 wifi协议
作用:断开已建立的客户端和接入点(AP)之间的连接。由于 deauthentication 报文通常不需要加密或认证(在使用标准 WiFi 协议时),也容易成为攻击者的工具。链路保持:QoS Null报文可以充当“心跳”信号,设备定期发送QoS Null报文,以维持链路处于活动状态,防止AP认为设备已断开连接。此报文是单播的,目标MAC地址是发出Probe Request报文的客户端设备的MAC地址。由无线客户端设备发出的,可以是广播的(如果不指定具体的SSID),也可以是单播的(如果指定具体的SSID)
2024-09-06 16:56:58
317
原创 C语言复制相关函数memcpy、memmove
memmove 内部通常会根据源和目标的相对位置选择合适的复制方向,与 memcpy 相比,它更安全。:memcpy 不保证处理重叠区域的情况。如果源和目标区域重叠,使用 memmove。与 memcpy 不同的是,memmove 可以正确处理源和目标区域重叠的情况。输出不是World!是因为字符串是以空字符 (‘\0’) 结束。返回:指向目标内存区域 dest 的指针。从源地址复制指定数量的字节到目标地址。dest: 指向目标内存区域的指针。src: 指向源内存区域的指针。n: 要复制的字节数。
2024-08-21 16:17:21
168
原创 信道好坏相关
无线通信系统: 对于移动通信系统(如LTE、5G)来说,底噪通常在 -100 dBm 到 -120 dBm 之间。有线通信系统: 对于有线系统(如光纤或同轴电缆)来说,底噪可以更低,通常在 -110 dBm 到 -130 dBm。
2024-08-16 15:56:41
355
原创 踩内存问题
解决方法:确保在所有退出路径上释放内存。解决方法:在释放后将指针设为NULL。解决方法:确保索引值在数组范围内。2.使用释放后的指针。
2024-08-15 20:46:23
144
原创 WIFI报文头
WiFi 7(802.11be):EHT (Extremely High Throughput) HeaderWiFi 6(802.11ax): HE (High-Efficiency) HeaderWiFi 5(802.11ac): VHT (Very High Throughput) HeaderWiFi 4(802.11n): HT (High Throughput) Header
2024-08-09 15:13:36
903
原创 wifi中mcs值
典型的码率有 1/2、2/3、3/4、5/6 等。码率越高,错误检测和纠错能力越强,但实际的数据传输速率会降低。MCS(Modulation and Coding Scheme,调制和编码方案)值:表示数据传输速率的组合参数。它决定了数据的调制方式和编码效率,从而影响无线链路的传输速度。:通常使用如== BPSK、QPSK、16-QAM、64-QAM== 等不同类型的调制方式。调制方式越复杂,单位时间内的数据传输速率越高,但对信号质量的要求也越高。
2024-08-07 16:58:12
1962
原创 内核态和用户态编程区别
编译器会把这个函数放在一个特殊的内存区域,当初始化完成后,内核可以释放这个区域,从而节省内存。: 函数标记为 __init 后,应该确保它仅在初始化时被调用一次,任何后续尝试在初始化之后再调用这个函数的行为将导致系统错误,因为该函数的代码可能已经被释放了。printk 是操作系统内核的一部分,它直接与内核的日志系统交互。在用户态中,进程没有权限直接访问内核数据结构和函数。内核态到用户态: 当操作系统完成系统调用时,会从内核态切换回用户态。内核态: 运行在操作系统核心的环境中,没有用户空间的隔离。
2024-07-30 10:33:04
353
原创 硬件缩写DMA
在没有DMA的系统中,每次数据传输都需要CPU的直接参与。这样一来,CPU需要执行大量的读写操作,效率较低。而有了DMA,对应的工作可以由DMA控制器来完成,CPU只需发起和结束DMA操作。是一种专用的硬件设备,用于在计算机系统中进行内存与外部设备之间或内存与内存之间的高速数据传输,而不需要CPU的干预。在此期间,CPU可以执行其他指令,不受数据传输影响。当传输完成后,DMA控制器向CPU发出中断信号,告知CPU传输已经完成。CPU配置DMA控制器,设定源地址、目的地址、数据传输大小和传输模式等参数。
2024-07-27 17:21:25
404
原创 A-MSDU和A-MPDU
可以认为是以太网帧,由IP层下发到MAC层。:将多个MSDU聚合成A-MSDU,A-MSDU+MacHeader = MPDU发送到phy层。将多个以太网帧集合在一起使用一个802.11帧头封装成一个MPDU。通常,AP从协议栈收到报文(MSDU)时,会打上Ethernet报文头,在通过射频口发送出去前,需要逐一将其转换成802.11报文格式。A-MSDU将若干个MSDU聚合到一起,封装为一个802.11报文发送,从而减少开销。
2024-07-26 16:12:28
310
原创 C语言的Linux内核函数virt_to_phys() nbuff_pull()
其中,phys_addr_t 通常在内核头文件中定义(例如 #include )。在大多数情况下,phys_addr_t 被定义为一个无符号整型,用于表示物理内存地址。它不能在用户空间中使用,因为用户空间程序无法直接访问物理内存。:操作系统将内存划分为内核空间和用户空间。用户态进程只能访问用户空间的地址,而内核态进程(或操作系统内核)可以访问整个地址空间。在某些32位系统上,它可能是一个32位的无符号整数,而在某些64位系统上,它可能是一个64位的无符号整数。
2024-07-23 17:05:28
585
原创 总结:
final: 修饰的变量、方法、类,不能被修改、重写、继承。static: 一个类可以调用另一个类里的变量、方法,而不用创建对象。abstact: 只有方法的声明,没有方法的实现,但子类必须重写抽象方法。不能用new实例化。继承:extends(单继承),子类可得到父类全部属性、方法。封装:private<default<protected<public.类的属性一般用...
2019-02-19 13:48:24
179
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人