自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 国产操作系统RT-Thread 高性能 WiFi/bt 解决方案介绍

新联鑫威低功耗高性价比sdio wifi/蓝牙combo的模块单频2.4g的CYWL6208,双频2.4g/5g CYWL6312可以应用到一些低延时 高性能 低功耗 联网需求的交流直流充电桩,扭力扳手,agv机器人,目前支持主流的stm32F4/GD32F4 瑞萨 psoc的主控,目前有多家公司已经用到了他们的产品,通过fcc ce等认证,驱动有英飞凌的开源的WHD的驱动可供移植到各种mcu平台,链接地址:CYWL6208 模块参数介绍:CYWL6312 模块参数介绍:

2024-01-30 19:25:01 385

原创 sta模式切换

nmcli device set wlan1 managed no

2023-09-06 12:07:29 87

原创 mqtt 接入阿里云

发布消息},订阅消息。

2023-05-29 20:01:05 169

原创 Ubuntu清理磁盘通过Stacer工具

Ubuntu

2022-06-04 00:42:15 665

原创 Linux系统蓝牙WiFi抓包命令

蓝牙抓包hcidump -XVt > sdcard/hcidumplog.txtwifi抓包tcpdump -w -i 接口 xxx.pcap

2022-03-25 12:36:21 654

原创 Linux core 文件分析 如何定位错误

1、vim core_dump_test.c#include <stdio.h>void main(){int stack_of[100000000];int b=1;int* a;*a=b;}2、gcc -g core_dump_test.c -o core_dump_test3、./core_dump_testSegmentation fault (core dumped)4、生成core文件分析4.1、ulimit -c unlimited...

2022-02-24 11:05:03 2781

原创 ftrace使用

static VOS_STATUS find_ie_data_after_fils_session_ie(tpAniSirGlobal mac_ctx, uint8_t *buf, uint32_t buf_len, uint8_t **ie, uint32_t *ie_len){ uint32_t left = buf_l...

2021-12-05 14:08:51 128

原创 Linux 打 patch 和生成 patch

patch打patch: patch -p0 < test.patch -p0 选项要从当前目录查找目的文件 patch -p1 < test.patch -p1 选项要从当前目录查找目的文件,不包含patch中的最上级目录 例如两个版本以a,b开头,而a,b并不是真正有效地代码路径,则这时候需要使用"-p1"参数。 a/src/... b/src/......

2021-12-05 14:06:37 271

原创 usb驱动程序实现

1、代码如下/* * drivers\hid\usbhid\usbmouse.c */#include <linux/kernel.h>#include <linux/slab.h>#include <linux/module.h>#include <linux/init.h>#include <linux/usb/input.h>#include <linux/hid.h>/*

2021-08-15 17:54:46 732

原创 内存泄漏检测工具valgrind神器

1概述1.1 介绍Valgrind是一套Linux下,开放源代码(GPL V2)的仿真调试工具的集合。Valgrind由内核(core)以及基于内核的其他调试工具组成。内核类似于一个框架(framework),它模拟了一个CPU环境,并提供服务给其他工具;而其他工具则类似于插件 (plug-in),利用内核提供的服务完成各种特定的内存调试任务。Valgrind的体系结构如下图所示:图11.2 工具Valgrind的最新版是3.11.0,它一般包含下列工具:1.Memcheck最常用.

2021-05-07 10:14:51 465

转载 阻抗匹配及Smith圆图简介笔记

在了解阻抗匹配及Smith圆图时,先来了解几个相关参数。  1、反射系数  信号沿传输线向前传播时,每时每刻都会感受到一个瞬态阻抗,这个阻抗可能是传输线本身的,也可能是中途或末端其他元件的。对于信号来说,它不会区分到底是什么,信号所感受到的只有阻抗。如果信号感受到的阻抗是恒定的,那么他就会正常向前传播,只要感受到的阻抗发生变化,不论是什么引起的(可能是中途遇到的电阻,电容,电感,过孔,PCB转角,接插件),信号都会发生反射。  归一化负载阻抗:  所以:  当中的Γ代表其线路

2021-05-07 10:12:56 5955

原创 SDIO电路设计注意事项

SDIO电路设计注意事项SDIO走线速率较高,尽量控制寄生电容CMD、D0~D3走线长度以CLK走线长度为基准±3mil,需要时绕蛇形线CLK走线尽量单独包地,从芯片管脚到SD接口的总长度越短越好,控制在2500mil以内,最好在2000mil以内SDIO走线要保证不跨平面射频走线最为理想的是微带线50Ohm管控,而不是共面波导50Ohm管控;同时射频走线上方能不铺绿油就不要铺绿油电源走线能粗就粗一点,没坏处模组PCB表面工艺一定要沉金1oz,有钱可以尝试2oz,但一定不能喷锡和裸铜板材要

2020-12-06 21:52:12 9066

原创 Ubuntu如何修改网卡的名字 wlan0 eth0

1、ip link set 现在的名字 name 要改成的名字

2020-10-28 21:34:41 554

原创 Linux下如何限制网速

sudo tc qdisc add dev wlx009569eadcc8 root handle 1: htbsudo tc class add dev wlx009569eadcc8 parent 1: classid 1:10 htb rate 10mbitsudo tc filter add dev wlx009569eadcc8 protocol ip parent 1:0 prio 10 u32 match ip dport 5201 0xfff flowid 1:10perf3 -c 1

2020-08-01 20:17:35 772

转载 wifi-sdio接口学习

转发https://www.cnblogs.com/oracleloyal/p/5624339.html

2020-03-22 19:05:11 834

原创 openssl-1.1.1交叉编译

1、下载地址https://www.openssl.org/source/2、解压openssl-1.1.1d.tar.gz3、修改Makefile 注释掉以下#CNF_CFLAGS=-pthread -m64#CNF_CXXFLAGS=-std=c++11 -pthread -m64#CC=$(CROSS_COMPILE)gcc #注释掉#CXX=$(CRO...

2020-03-01 19:23:54 5938

原创 多线程的两种调试方法 Helgrind 与ThreadSanitizer

Helgrind可以检测下面三类错误: 1.POSIX pthreads API的错误使用 2.由加锁和解锁顺序引起的潜在的死锁 3.数据竞态--在没有锁或者同步机制下访问内存调试命令valgrind --tool=helgrind ./a.outThreadSanitizer用来检测竞争状态命令gcc a.c -fsanitize=thread -g -pthr...

2020-02-03 21:29:00 686

原创 多线程死锁例程的代码调试 如何避免进入死锁

一、调试代码如下 来源 阅码场https://www.yomocode.com/void *child1(void *arg){ while(1){ pthread_mutex_lock(&mutex_1); sleep(3); pthread_mutex_lock(&...

2020-02-03 21:16:32 829

原创 Linux信号量

对posix 信号量的操作函数Posix有名信号量:使用Posix IPC名字标识,可用于线程或进程间同步Posix基于内存的信号量:存放在共享内存区中,可用于进程或线程间的同步sem_init()、sem_destroy函数:#include <semaphore.h>// 初始化一个基于内存的信号量(sem指向的)int sem_init(sem_t *sem...

2020-02-03 12:53:47 298

原创 互斥锁和自旋锁

(1) Mutex(互斥量):pthread_mutex_***(2) Spin lock(自旋锁):pthread_spin_***两种锁的加锁原理互斥锁:线程会从sleep(加锁)——>running(解锁),过程中有上下文的切换,cpu的抢占,信号的发送等开销。自旋锁:线程一直是running(加锁——>解锁),死循环检测锁的标志位,机制不复杂。两种锁的区别...

2020-02-03 12:26:10 404

原创 linux下的Netfilter&iptables:注册连接跟踪函数流程分析1

初始化函数如下/* Connection tracking may drop packets, but never alters them, so make it the first hook. */static struct nf_hook_ops ipv4_conntrack_ops[] __read_mostly = { { .hook = ...

2020-01-30 20:10:00 246

原创 linux下的Netfilter&iptables:filtile表中如何向链中挂载处理函数

挂载钩子处理函数都是在初始化中做的 filtile表则是在iptable_filter_init函数中将iptable_filter_hook函数注册到NF_BR_LOCAL_IN NF_BR_FORWARD NF_BR_LOCAL_OUT 链上。函数调用关系如下 内核Linux 4.14版本static int __init iptable_filter_init(void)...

2020-01-29 20:20:53 338

原创 Segmentation fault (core dumped)

结构体未初始化出现段错误Segmentation fault (core dumped)uart_buf = (uartBuf_typeDef *)malloc(sizeof(uartBuf_typeDef));//memset(uart_buf, 0, sizeof(uartBuf_typeDef));init_queue(&uart_buf->queue);...

2019-12-10 10:14:57 261

原创 Linux内核中断入门---一个简单中断的分析

本文通过一个简单的中断程序来描述一般中断程序的基本框架。中断程序一般会包含在某个设备的驱动程序中,因此,接下来的程序本质上还是一个内核模块。说到内核模块,你应该知道首先去看什么了吧,就是内核模块加载函数。01 static int __init myirq_init()02 {03 printk("Module is working..\n");04 if(request_irq(ir...

2019-06-11 10:02:47 510

原创 Ctags详细用法

下载地址  http://ctags.sourceforge.net/tarzxvf ctags-5.8.tar.gzcdctags-5.8./configureMakeMake install //需要root权限用户目录下vim  ~/.vimrc输入set tags=tags;set autochdir使用方法  进入源码目录,若源码目录是多层

2017-11-18 18:06:38 264

原创 taglist用法

解压:得到doc和plugin两个文件夹Vim版本是7.3sudo cp doc/taglist.txt /usr/share/vim/vim73/doc/sudo cp plugin/taglist.vim /usr/share/vim/vim73/plugin/·  配置vimrc(可选):  ·     vim ~/.vimrc  ·         let Tlis

2017-11-18 18:05:10 621

原创 关于swp文件

关于swp文件:使用vi,经常可以看到swp这个文件,那这个文件是怎么产生的呢,当你打开一个文件,vi就会生成这么一个.(filename)swp文件以备不测,如果你正常退出,那么这个.(filename)swp文件将会自动删除。因此.(filename)swp文件就是你没有正常退出vi或者vim编辑器时留下来的!比如:强行关闭vi或vim时,电源突然断掉,或者你使用了Ctrl-zz。出现

2017-11-18 18:02:26 1312

原创 智能小车stm32(寻迹测速)

1,小车寻迹原理:循迹模块我用的是红外传感器。黑线的检测原理是红外发射管发射光线到路面,红外光遇到白底则被反射,接收管接收到反射光,经施密特触发器整形后输出低电平;当红外光遇到黑线时则被吸收,接收管没有接收到反射光,经施密特触发器整形后输出高电平。程序void SearchRun(void){    //Èý·¶¼¼ì²âµ½    if(SEAR

2017-11-18 17:56:15 14954 24

原创 NFS 文件共享

一、NFS 简介(1) NFS 网络文件系统,主要功能是通过网络让不同的主机系统之间可以共享文件或目录,类似于 Windows 中的网络驱动器映射(2) NFS 客户端可以通过挂载的方式将 NFS 服务器端共享的数据目录挂载到 NFS 客户端本地系统中(3) NFS 网络文件系统一般被用来存储共享视频、图片、附件等静态资源文件,NFS 架构图(4) NFS 客户端是如何知道 NFS

2017-11-17 14:44:26 891

转载 四轴pid详解

转载自----http://blog.csdn.net/nemol1990/article/details/45131603正文开始:这篇文章分为三个部分:PID原理普及常用四轴的两种PID算法讲解(单环PID、串级PID)如何做到垂直起飞、四轴飞行时为何会飘、如何做到脱控?PID原理普及1、  对自动控制系统的基本要求:        稳、准、快:        稳定性(P和I降低系统稳定性,D...

2017-11-15 15:57:52 7248

原创 中断的详细学习

中断简介中断是微控制器的一个常见特性,中断由硬件产生,当中断产生以后CPU就会中断当前的流程去处理中断程序,Cotex-M内核的MCU提供了一个中断管理的嵌套向量中断控制器。  Cotex-M的NVIC最多可以支持240个IRQ(中断请求),1个不可屏蔽中断(NMI),1个Systick(滴答定时器)定时器中断和多个系统异常。中断优先级分组  当多个中断来临的时候处理器应该相应哪一

2017-10-06 08:51:17 900

原创 unsigned short A = 10; printf("~A = %u\n", ~A);

unsigned short A = 10;printf("~A = %u\n", ~A); char c=128; printf("c=%d\n",c);  第一题,~A=0xfffffff5,int值 为-11,但输出的是uint。所以输出4294967285第二题,c=0x10,输出的是int,最高位为1,是负数,所以它的值就是0x00的补码就是128,所以输出-12

2017-10-06 00:48:12 2415 1

原创 volatile的详细用法

volatile 易变、易失的一个定义为volatile的变量是说这变量可能会被意想不到地改变。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。嵌入式编程中经常用到 volatile这个关键字,在网上查了下他的用法可以归结为以下两点: 一:告诉compiler不能做任何优化    比如要往某一地址送两指令:    i

2017-10-05 20:20:18 293

原创 系统32位指针变量为4字节系统16位指针变量2个字节

定义 int **a[3][4], 则变量占有的内存空间为:16位系统24.32位系统中是48.PS:公式:3*4*sizeof(int **)

2017-10-05 18:48:58 1610

原创 linux上Git同步到GitHub网站的详细用法

第一步: 安装Git,使用命令 “sudo apt-get install git”第二步: 创建GitHub帐号第三步: 生成ssh key,使用命令 “ssh-keygen -t rsa -C "[email protected]"”,your_email是你的email第四步: 回到github,进入Account Settings,左边选择SSH Keys,Add

2017-10-04 16:41:22 533

原创 GIT使用错误总结

自从上次学了git之后,很少用。今天在使用 本地仓库使用如下命令初始化:$ git init之后使用如下命令添加远程库:$ git remote add origin [email protected]:hahah/ftpmanage.git然后使用$ git push -u origin master出现如下错误:error: src r

2017-10-04 15:50:04 2096

转载 堆和栈的深入详细理解

一、预备知识—程序的内存分配    一个由C/C++编译的程序占用的内存分为以下几个部分    1、栈区(stack)—   由编译器自动分配释放   ,存放函数的参数值,局部变量的值等。其    操作方式类似于数据结构中的栈。    2、堆区(heap)   —   一般由程序员分配释放,   若程序员不释放,程序结束时可能由OS回    收   。注意它与数据结构中的堆是两

2017-10-04 13:59:37 2872

原创 gdb的基础详细用法

GDB常用命令运行run(简写r): 运行程序,当遇到断点后,程序会在断点处停止运行,等待用户输入下一步的命令。 continue(简写c):继续执行,到下一个断点处(或运行结束) next(简写n): 单步跟踪程序,当遇到函数调用时,直接调用,不进入此函数体; step(简写s):单步调试如果有函数调用,则进入函数;与命令n不同,n是不进入调用的函数的 until:运行程

2017-10-04 11:52:43 389

原创 gcc的详细用法

GCC 的意思也只是 GNU C Compiler 而已。经过了这么多年的发展,GCC 已经不仅仅能支持 C 语言;它现在还支持 Ada 语言、C++ 语言、Java 语言、Objective C 语言、Pascal 语言、COBOL语言,以及支持函数式编程和逻辑编程的 Mercury 语言,等等。而 GCC 也不再单只是 GNU C 语言编译器的意思了,而是变成了 GNU Compiler Co

2017-10-03 20:38:16 307

原创 超声波测距仪

基本原理•超声波是利用反射的原理测量距离的,被测距离一端为超声波传感器,另一端必须有能反射超声波的物体。测量距离时,将超声波传感器对准反射物发射超声波,并开始计时,超声波在空气中传播到达障碍物后被反射回来,传感器接收到反射脉冲后立即停止计时,然后根据超声波的传播速度和计时时间就能计算出两端的距离。测量距离D为                                式中 

2017-10-03 13:04:44 5154

空空如也

空空如也

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

TA关注的人

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