- 博客(47)
- 资源 (12)
- 收藏
- 关注
原创 iptables 指令
[0]. 查看filter表指定链上的过滤规则, NULL为空会打印显示三条链上的过滤规则;iptables -t filter -L [INPUT/OUTPUT/FORWARD/NULL] [1]. 在filter表指定链上添加过滤规则;iptables -t filter -A [INPUT/OUTPUT/FORWARD] -p tcp -j ACCEPT[2]. 清空filter表指定链上的过滤规则, NULL为空则会清空该表上所有链上的过滤规则;iptables -t filter -
2021-05-02 17:05:14
254
原创 iperf3使用说明
iperf3使用服务端命令行-s 表示服务器-p 定义端口号 默认是5201-i 设置每次报告之间的时间间隔 单位是秒 默认是1秒-F 指定文件作为数据流进行带宽测试客户端命令行-c 表示服务器的IP地址-p 表示服务器的端口号-t 表示传输测试的持续时间 默认是10秒-i 设置每次报告之间的时间间隔 单位是秒 默认是1秒-w 设置套接字缓冲区为指定大小, TCP->设置为TCP窗口大小, UDP->此设置为UDP数据包的缓冲区大小, 限制可以接收数据包的最大值--lo
2021-04-28 16:49:38
1949
原创 Linux input固定设备/dev/input/eventX设备号
问题: 在嵌入式ARM Linux开发板调试触控的时候, 会经常碰见不同接口类型的触控板,有I2C的,USB等, 不同厂家不同型号的触控驱动在内核启动时加载顺序不同,也就导致了在/dev/input目录下生成的eventX的序号就不同, 而应用层一般会固件打开某个event设备节点,更换触控面板,可能会导致应用程序打开错误的event设备节点,因此想在内核里面做一下适配,是某些固定的触控设备最终在文件系统中生成固定的设备号文件节点。解决: 1. 查看系统总线上所有的input设备 # cat /pr
2021-04-26 14:52:43
5175
1
原创 AVL树C语言实现
参考: https://www.cnblogs.com/skywang12345/p/3576969.htmlAVLTree.h#ifndef _AVL_TREE_H_#define _AVL_TREE_H_typedef int Type;struct AVLTreeNode { Type key; int height; struct AVLTreeNode *left; struct AVLTreeNode *right;};// 获取AVL树的高度
2021-03-17 19:42:29
651
原创 C++ condition_variable 使用例程
#include <iostream>#include <thread>#include <mutex>#include <condition_variable>#include <chrono>std::mutex mtx;std::condition_variable cv;bool ready = false;bool use_cv = false;void do_print_id(int id){ bool.
2021-01-22 14:31:45
256
原创 二叉树的构建(C语言实现)
二叉树的构建前序序列+中序序列struct BTNode* CreateBT(int* pre, int* in, int n) { struct BTNode* s = NULL; int k = 0, *p = NULL; if (n<=0) { return NULL; } s = (struct BTNode *)malloc(sizeof(struct BTNode)); s->data = *pre; for
2020-11-25 14:48:41
407
原创 二叉树的遍历(C语言实现)
二叉树的遍历(C语言实现)二叉树的结构体定义typedef struct _BTNode { int val; struct _BTNode *lchild; struct _BTNode *rchild;}BTNode;前序遍历[0] 递归实现void PreOrder(BTNode *root) { if (!root) { return; } printf("%d ", root->val); PreOrder
2020-11-21 16:21:54
366
原创 Linux内核自旋锁(spinlock)使用与源码分析
一. spinlock_t结构体定义typedef struct spinlock { union { struct raw_spinlock rlock;#ifdef CONFIG_DEBUG_LOCK_ALLOC# define LOCK_PADSIZE (offsetof(struct raw_spinlock, dep_map)) struct { u8 __padding[LOCK_PADSIZE]; struct lockdep_map dep_map; }
2020-07-17 18:52:13
2131
原创 Linux内核信号量(semaphore)使用与源码分析
一. 在Linux内核驱动中使用信号量(semaphore)常规操作步骤:[0]. 定义信号量结构体变量;struct semaphore sem;[1]. 初始化信号量变量void sema_init(struct semaphore *sem, int n);eg. sema_init(&sem, 1);[2]. 获取信号量:void down(struct semaphore *sem); // 获取信号量, 资源不足则睡眠等待...
2020-07-17 11:48:46
1612
原创 Linux内核原子(atomic)操作源码分析(基于ARM)
原子数据类型:typedef struct { int counter;}atomic_t;基本的原子操作函数接口:接口函数 描述 static inline void atomic_add(int i, atomic_t *v) 给一个原子变量v增加i static inline int atomic_add_return(int i, atomic_t *v) 同上,只不过将变量v的最新值返回 static inline void atomic_su..
2020-07-14 22:21:59
1053
原创 Linux内核等待队列(wait_queue)使用与源码分析
在Linux内核驱动中使用等待队列(wait_queue)常规操作步骤:[0]. 定义wait_queue_head_t等待队列头变量;wait_queue_heat_t simple_queue;[1]. 使用init_waitqueue_head(&simple_queue)初始化等待队列头;init_waitqueue_head(&simple_queue);[2]. 等待操作: wait_event(simple_queue, simple_f..
2020-07-14 17:20:13
1004
转载 ARM平台下独占访问指令LDREX和STREX的原理与使用详解(转载)
为了实现线程间同步,一般都要在执行关键代码段之前加互斥(Mutex)锁,且在执行完关键代码段之后解锁。为了实现所谓的互斥锁的概念,一般都需要所在平台提供支持。本文主要用来说明ARM平台上特有的独占访问指令LDREX和STREX的工作原理,以及如何使用。而它们也是ARM平台上,实现互斥锁等线程同步工具的基础。我们先来看看LDREX和STREX两条指令的语义。其实LDREX和STREX指令,是将单纯的更新内存的原子操作分成了两个独立的步骤。1)LDREX用来读取内存中的值,并标记对该段内存的独占访问
2020-05-25 15:29:52
1300
原创 valgrind PC和ARM(aarch64)的自定义安装
[PC端自定义目录安装]:[0]. 从valgrind官网下载源代码文件, 目前使用的是valgrind-3.15.0.tar.bz2[1]. 解压源代码压缩包:tar -zxvf valgrind-3.15.0.tar.bz2[2]. 进入解压的文件夹: cd valgrind-3.15.0[3]. 使用configure进行配置:--prefix用于设置自定义的安装路径,用户可以自定义设置 ./configure --prefix=/opt/valgrind/[...
2020-05-19 10:25:02
1159
转载 C++笔记-----C++中三种传递参数方法的效率分析(转载)
在C++中有三种参数传递的方式:[0].按值传递(pass by value)[1].按址传递(pass by pointer)[2].引用传递(pass by reference)本文主要讨论采用这三种方法传递参数时函数的效率。传递效率这里所说传递效率,是说调用被调函数的代码将实参传递到被调函数体内的过程,正如上面代码中,这个过程就是函数main()中的 a、b 传递到函数swap()中的过程。这个效率不能一概而论。对于内建的 int char、short、long、floa...
2020-05-15 09:51:42
368
转载 git删除中间某次提交
git log获取commit信息commit 58211e7a5da5e74171e90d8b90b2f00881a48d3aAuthor: test <test@36nu.com>Date: Fri Sep 22 20:55:38 2017 +0800 add d.txtcommit 0fb295fe0e0276f0c81df61c4fd853b7a00...
2020-05-06 10:04:18
855
原创 MIPI-DSI 协议层简析
物理层: 指令和数据串行化和并行转换, 总线控制权切换(Turn Around /TA);通道管理层: N组数据通道的排序与组合以及反序列化;协议层: 数据包格式(长数据包 短数据包) ECC/CRC;应用层: 对发送的命令和数据编码成MIPI-DSI格式与还原;...
2020-04-17 17:31:48
587
转载 LCD液晶屏最常见的几种接口方式
转载自:http://www.mqlcd.com/315.htmlLCD液晶屏的接口方式有:MCU,RGB,MIPI,LVDS,TTL,EDP等等,这几种接口最为常见MCU液晶屏接口一般在小尺寸上比较多,如:2.0寸,2.31寸,2.4寸,2.8寸等等,MCU模式需要的信号有WR,RD,RS,RESET,CS。MCU接口主要应用于单片机控制RGB液晶屏接口方式于MCU接口类似,一般应...
2020-04-07 15:56:36
6013
原创 git合并多个远程commit并提交
文章参考:https://blog.youkuaiyun.com/qq_21744873/article/details/82629343git rebase -i [commit_id]commit_id 是 连续合并的多个分支的前一个commit的commit_id;git status 后会看到,提示让你git pull一下,千万不要这样做!否则你会发现这三条白合并了,还平白多了两条co...
2020-04-02 11:07:19
3505
原创 一种环形队列的C语言实现---RingBuffer
// RingBuffer.h#ifndef __RINGBUFFER_H__#define __RINGBUFFER_H__// 如果要使用在C++中 则使用该宏定义片段// #ifdef __cplusplus// extern "C"// {// #endif#include <unistd.h>#include <pthread.h>typ...
2020-03-27 23:54:44
709
转载 Linux为何操作网卡设备和其他设备不同的原因
文章转载自:https://blog.youkuaiyun.com/iteye_5014/article/details/81824895###这个问题其实没有什么意思,知道了问题的答案能表明一个人技术水平有多高吗?不能!这个问题有答案以及有意义吗?答案都是没有!那我还为何一直对这个问题死死揪住不放?这类问题可以提高一个人的素质以及了解一段关于网络和unix的历史,正是因为这些都很有趣,才如此值得关注。...
2020-03-19 10:42:30
270
原创 g++/gcc -I(大写的i) -l -L 解释
-I(大写的i) -I ./include/path 用于设置首选头文件目录路径, 中间有空格;-l -lm ltest 用于指定程序需要链接的库名称, 中间无空格;-L ./lib/path/ 用于设置首选库文件目录路径, 中间有空格;...
2020-02-19 12:36:12
521
原创 证明交换一个行列式的某两行(列), 行列式改变符号.
求证:行列式的行与列交换,行列式不变 (即行列式等于其转置行列式) 证明如下:设给定行列式为:D=∣a11a12...a1n......ai1ai2...ain......aj1aj2...ajn......an1an2...ann∣ 交换ij两行以后得:D′=∣a11a12...a1n......aj1aj2...ajn......ai1ai2...ain........
2019-12-28 18:02:49
8558
1
原创 证明一个排列中的任意两个元素对换,该排列的奇偶性发生改变
求证: 一个排列中的任意两个元素对换, 排列改变奇偶性。 证明: 设有排列 a1a2a3...al−1alal+1...am−1amam+1...ana_1a_2a_3...a_{l-1}a_la_{l+1}...a_{m-1}a_ma_{m+1 ...}a_na1a2a3...al−1alal+1...am−1amam+1...an &...
2019-12-28 01:25:45
6425
转载 最佳实践 —— 详细谈谈如何减小APK体积
随着Android移动开发的需求越来越复杂,我们不可避免的遇到发布出去的apk体积越来越大的问题,目前超过10MB、20MB的apk已经是很常见的事情了,但是依然能够看到一些apk的体积控制的很小。apk体积增大源于:新需求不断的提出 需要支持高分辨率的屏幕而加入了高分图片 依赖了更多的第三方库本文将从我自己的经历项目中探讨如何有效减小apk的体积。减小Apk体积是一件很有用处的andr...
2019-10-28 09:45:21
502
1
原创 NUC970-AIC
====================================================================start.sVector_Table:[0x00] B Reset_GO;[0x04] LDR PC, Undefined_Addr;[0x08] LDR PC, SWI_Addr;[0x0C] LDR PC, Prefetch_Addr...
2019-10-20 16:05:34
327
原创 NUC970-Clock
the clock controller generates all clocks for vedio, audio, cpu, amba and all engine modules, nuc970 include two PLL Modules;the clock souce for each module come from the PLL, or from external cryst...
2019-10-15 18:16:07
508
转载 STM32 USB 数据缓冲区解疑
转载自:https://blog.youkuaiyun.com/dingzj2000/article/details/927956801. STM32USB数据缓冲区疑问USB不同的应用需要使用到的端点数和端点数据长度各不相同,如果为每个端点都单独规划一个存储区非常浪费。所以STM32为USB模块提供了共512个字节的存储区,至于如何为每个端点分配使用这512B的空间,就是用户自己的事情了,这样存...
2019-09-19 11:47:28
2789
1
转载 wince uboot [转载]
转载自: http://www.360doc.com/content/14/1022/20/5268588_419034392.shtmlwince常见文件[NBOOT1] [NBOOT2] [EBOOT] [Wince内核], 各个文件的作用如下:[NBOOT1]: S3C2440 Stepping Stone 4KB代码运行, NBOOT1启动运行以后从Flash中加载NBOOT2...
2019-09-19 11:18:48
244
原创 libcurl库编译生成不带版本的设置方法
Android JNI 最近调试发现Android可以调用Linux的so库,但是Android不能直接调用so库带版本号的文件,类似于xxx.so.4.5.0;xxx.so.4.5.0 的文件方式是Linux用来区分so库文件的版本作用的,为了让Android能够调用so库,需要在编译so库的时候,配置编译脚本,使其支持生成不带版本号的so库文件;我们在使用libcurl库的时候,就出现了...
2019-07-03 10:00:26
971
转载 mac下安装替换mac自带ctags
// 转载自https://www.cnblogs.com/hornedreaper1988/p/4293763.htmlmac下递归创建ctags报错: "illegal option -- R"在mac系统下不论是使用vim还是sublime text2的ctags插件都会碰到“illegal option -- R”这个错误,原因是mac使用的是自己的ctags,而我们通常在linu...
2019-06-28 09:35:04
1028
原创 在mosquitto中使用ssl认证, 使用openssl生成ca.crt和客户端,服务端的证书
// ======================================================// SSL // ======================================================openssl req -new -x509 -days 36500 -extensions v3_ca -keyout ca.key -ou...
2019-06-17 09:58:48
1232
原创 mosquitto在ARM嵌入式平台的移植
MQTT 基础概念Broker(服务端, 代理者)---- 使用PC(192.168.100.33:1883)机 运行mosquitto程序即可Subscriber(客户端-订阅者)---- 192.168.100.35 嵌入式板子APublisher(客户端-发布者)...
2019-06-15 22:09:22
4070
2
原创 libevent在ARM嵌入式平台的移植
libevent-2.1.8-stable.tar.gz 下载openssl-1.1.1a.tar.gz 下载openssl 交叉编译在《arm-linux 交叉编译wget支持openssl, 使wget支持https链接地址下载文件》一文中已经有具体的编译安装说明了,在这里就不展开描述了;[1]. 解压libevent-2.1.8-stable.tar.gz tar -zxv...
2019-05-03 21:30:14
2351
原创 git基本使用
[0]. git remote -v # 查看远程主机信息;[1].git diff # 可以查看当前没有被add的内容修改;[2]. git diff --cached # 查看已经add但还没有commit的文件改动;[3]. git diff HEAD = git diff + git diff -cached;[4]. git status # 查看当前git工作状态, 可以看到...
2019-04-24 22:00:38
187
原创 Linux 内核源代码顶层目录结构说明
include/ ----> 内核头文件, 需要提供给外部模块(例如用户空间代码)使用;kernel/ ----> Linux内核的核心代码, 包含进程调度子系统以及进程调度相关的模块;mm/ ----> 内核管理子系统;fs/ ----> VFS子系统;net/ ----> 不包括网络...
2019-04-23 00:10:09
1007
转载 do{...}while(0)的好处
转载自:http://www.cnblogs.com/charlesblc/p/6080315.html在开源软件里面经常可以看到这样的写法。#define X(a) do { f1(a); f2(a); } while(0)1. 主要作用是放在宏定义里面,避免宏带来的语法问题。比如#define DOSOMETHING()\ cmd1;\ ...
2019-03-28 23:30:57
187
MQTT客户端_Win64_Paho.rar(org.eclipse.paho.ui.app-1.0.2-win32.win32.x86_64)
2018-05-11
基于VC6.0实现程序截图保存图片格式任意设定
2015-08-27
基于MFC的CTable和Dialog结合的CTableSheet类的实现
2015-08-26
基于VC6.0曲线控件的代码实现
2015-08-26
基于MFC桌面截屏保存为BMP和JPG图片格式代码实现
2015-08-26
基于ActiveMovie控件的音乐播放器(代码)
2012-10-01
基于ActiveMovie控件的音乐播放器的制作(文档)
2012-10-01
实现文档 or 对话框程序的托盘化
2012-09-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人