自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 SPI正确连接

因为SPI接线错误,导致SPI调试两周不成功却找不到原因!

2022-09-13 18:54:28 336 1

原创 指针函数 和 函数指针

指针函数,简单的来说,就是一个返回指针的函数,其本质是一个函数,而该函数的返回值是一个指针。声明格式为*类型标识符函数名(参数表)

2022-07-28 16:32:29 156

原创 查看gcc的版本,c版本

查看gcc的版本

2022-07-08 17:47:59 14910

原创 vsomeip

https://github.com/GENIVI/vsomeip/

2021-09-09 16:49:44 232

原创 iperf编译

iperf编译下载后解压iperf-2.0.9-source.tar.gz文件,进入iperf-2.0.9目录,输入命令配置./configure --host=arm-linux-gnueabihf CC=arm-linux-gnueabihf-gcc CFLAGS=-static CXX=arm-linux-gnueabihf-g++ CXXFLAGS=-stat

2021-08-05 18:47:51 156

原创 Shell if 条件判断

https://blog.csdn.net/zhan570556752/article/details/80399154?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162753812316780357219581%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=162753812316780357219581&a

2021-07-29 15:03:59 91

原创 JSON开发及应用

https://github.com/DaveGamble/cJSON

2021-07-28 11:01:24 102

原创 ProtoBuf?

何为 ProtoBuf我们先来看看官方文档给出的定义和描述:protocol buffers 是一种语言无关、平台无关、可扩展的序列化结构数据的方法,它可用于(数据)通信协议、数据存储等。Protocol Buffers 是一种灵活,高效,自动化机制的结构数据序列化方法-可类比 XML,但是比 XML 更小(3 ~ 10倍)、更快(20 ~ 100倍)、更为简单。你可以定义数据的结构,然后使用特殊生成的源代码轻松的在各种数据流中使用各种语言进行编写和读取结构数据。你甚至可以更新数据结构,而

2021-07-22 15:35:12 179

原创 zmq的三中模式

zqm的三中模式1、请求回复server端 1 import time 2 import zmq 3 import Queue 4 Queue() 5 context=zmq.Context() 6 socket=context.socket(zmq.REP) 7 socket.bind("tcp://*:5555") 8 9 while True:10 message=socket.recv_string()11 socket.send(b"word

2021-07-22 14:21:01 551

原创 protobuf 交叉编译

protobuf-c 的交叉编译1、可以用上一步的protobuf-c-master文件,执行一下make clean; 或者重新解压一下protobuf-c-master安装包3、./autogen.sh4、./configure --host=arm-linux CC=PATH/arm-none-linux-gnueabi-gcc CXX=PATH/arm-none-linux-gnueabi-g++ --disable-protoc --prefix=/usr/local/protobuf-c-

2021-07-20 18:52:01 1447 4

原创 消息队列库——ZeroMQ

消息队列库——ZeroMQhttps://github.com/zeromq/libzmqZeroMQ(简称ZMQ)是一个基于消息队列的多线程网络库,其对套接字类型、连接处理、帧、甚至路由的底层细节进行抽象,提供跨越多种传输协议的套接字。ZMQ是网络通信中新的一层,介于应用层和传输层之间(按照TCP/IP划分),其是一个可伸缩层,可并行运行,分散在分布式系统间。ZMQ不是单独的服务,而是一个嵌入式库,它封装了网络通信、消息队列、线程调度等功能,向上层提供简洁的API,应用程序通过加载库文

2021-07-20 18:02:42 270

原创 c计算百分百比

int a = 2075;int b = 3011;float c = (float) ( a * 100 / b) / 100;int count = c * 100;printf("pecent:%0.2f\n", c);printf("count:%d\n", count);

2021-06-16 16:26:16 2088

原创 Makefile 编译动态库文件及链接动态库

文件目录结构如下复制代码1 dynamiclibapp.c2 Makefile3 comm/inc/apue.h4 comm/errorhandle.c5 dynamiclib/Makefile6 dynamiclib/dynamiclib_add.c7 dynamiclib/dynamiclib_mul.c8 dynamiclib/inc/dynamiclibs.h9 dynamiclib/libs/复制代码dynamiclib目录dynamiclib/inc/dynamic

2021-06-11 16:35:37 2820 3

原创 Linux定时器的使用

使用定时器的目的无非是为了周期性的执行某一任务,或者是到了一个指定时间去执行某一个任务。要达到这一目的,一般有两个常见的比较有效的方法。一个是用linux内部的三个定时器,另一个是用sleep, usleep函数让进程睡眠一段时间,使用alarm定时发出一个信号,还有那就是用gettimeofday, difftime等自己来计算时间间隔,然后时间到了就执行某一任务,但是这种方法效率低,所以不常用。alarmalarm用在不需要经确定时的时候,返回之前剩余的秒数。NAMEalarm - set an

2021-06-11 14:09:56 112 2

原创 clock_gettime demo

#include <stdio.h>#include <string.h>#include <time.h>#include <sys/time.h>#include <assert.h>#include <unistd.h>static void clock_gettime_test(){struct timespec ts;clock_gettime(CLOCK_REALTIME, &ts);printf

2021-06-10 10:13:27 253

原创 运算符参考图

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Ma.

2021-06-09 10:03:47 95

原创 time命令

time命令说明:喜欢写小程序的人都特别注重自己程序的执行效率,那么在Linux上,就有一个time的命令,用于测量命令的运行时间,还可以测量内存、I/O等的使用情况。一个程序在运行时使用的系统资源通常包括CPU、内存和I/O等;CPU资源的统计包括实际使用时间(real time)、用户态使用时间(the process spent in user mode)、内核态使用时间(the process spent in kernel mode)。(关于用户态和内核态的理解,文章后面有解释)

2021-05-25 10:08:53 1302

原创 Linux 下查看所有用户方法

增加用户adduser删除用户userdel方法 1 :使用 /etc/passwd 文件方法 2 :使用 getent 命令getent passwd说明:列表用冒号分割的 7 个字段:**用户名 (magesh): 已创建用户的用户名,字符长度 1 个到 12 个字符。**密码(x):代表加密密码保存在 `/etc/shadow 文件中。**用户 ID(506):代表用户的 ID 号,每个用户都要有一个唯一的 ID 。UID 号为 0 的是为 ...

2021-05-20 10:45:07 6068

原创 火焰图教程

https://www.perl.org/

2021-05-19 15:01:41 129

原创 Linux动态库环境变量设置

修改环境变量设置,编辑/etc/profilevi /etc/profile在文件里末尾加上对应的环境变量信息。动态库环境变量设置:export LD_LIBRARY_PATH=/home/server/lib/使配置即时生效source /etc/profile

2021-05-10 15:30:24 286

原创 三种查看可执行文件所依赖的库方法

查看一个可执行文件所依赖的库一、ldd命令 $ ldd a.out linux-vdso.so.1 (0x000000fffef24000) libc.so.6 => /lib/mips64el-linux-gnuabi64/libc.so.6 (0x000000fff78d4000) /lib64/ld.so.1 (0x000000fff7ae8000)二、objdump命令 $ objdump -x a.out | grep NE...

2021-05-10 13:32:55 2419

原创 C++ rapidjson

http://miloyip.github.io/rapidjson/zh-cn/

2021-05-08 17:51:13 73

原创 /proc/sys/kernel/printk

在 /proc/sys/kernel/printk 会显示4个数值(可由 echo 修改),分别表示当前控制台日志级别、未明确指定日志级别的默认消息日志级别、最小(最高)允许设置的控制台日志级别、引导时默认的日志级别。当 printk() 中的消息日志级别小于当前控制台日志级别时,printk 的信息(要有/n符)就会在控制台上显示。但无论当前控制台日志级别是何值,通过 /proc/kmsg (或使用dmesg)总能查看。另外如果配置好并运行了 syslogd 或 klogd,没有在控制台上显示的 prin

2021-05-07 15:06:07 6228

原创 /proc/sysrq-trigger

/proc/sysrq-trigger详解1.立即重新启动计算机echo b > /proc/sysrq-trigger2.立即关闭计算机echo o > /proc/sysrq-trigger3.导出内存分配的信息 (可以用/var/log/message 查看)echo m > /proc/sysrq-trigger4.导出当前CPU寄存器信息和标志位的信息echo p > /proc/sysrq-trigger5.导出线程状态信息...

2021-04-30 13:24:12 167

原创 Yocto实用技巧

https://www.kancloud.cn/digest/yocto/138623

2021-04-23 16:45:32 85

原创 C++11 FAQ中文版

https://wizardforcel.gitbooks.io/cpp-11-faq/content/index.html

2021-04-20 10:19:17 211

原创 date命令

date命令功能:date 可以用来显示或设定系统的日期与时间。命令参数-d<字符串>:显示字符串所指的日期与时间。字符串前后必须加上双引号;-s<字符串>:根据字符串来设置日期与时间。字符串前后必须加上双引号;-u:显示GMT;--help:在线帮助;--version:显示版本信息。12345日期格式字符串列表如果需要以指定的格式显示日期,可以使用“+”开头的字符串指定其格式%H 小时(以00-23来表示)。%I 小时(以01-12来...

2021-04-14 16:36:50 80

原创 Yocto学习扫盲

1 Yocto术语Yocto项目:是一个开源协作项目。Yocto项目使用基于OpenEmbedded(OE)构建主机,该项目使用 BitBake 工具构建完整的Linux镜像。将BitBake和OE组件组合在一起形成参考构建主机,该主机以前称为Poky。Poky两层含义:含义一:OpenedHand(公司名)最初开发的开源项目。该项目可以从现有的OpenEmbedded构建系统中开发出poky,从而成为对嵌入式Linux商业支持的构建系统。公司被英特尔收购后,该项目便成为Yocto Pro.

2021-04-13 17:18:42 1616

原创 下载特定版本的Linux kernel

https://mirrors.edge.kernel.org/pub/linux/kernel/

2021-04-13 14:45:14 590

原创 proc文件系统3(创建目录或编写文件)

要在/proc文件系统中创建一个虚拟文件,要用proc_create()或proc_create_data()函数。这个函数可以接收一个文件名、一组权限和这个文件在/proc文件系统中出现的位置。这两个函数的返回值是一个proc_dir_entry类型指针(或者为NULL,说明在发生了错误时)。然后就可以使用这个返回的指针来配置这个虚拟文件的其他参数,例如在对该文件执行读操作时应该调用的函数。函数的原型和proc_dir_entry结构中的一部分如下图所示。struct proc_dir_entry {

2021-04-13 11:32:11 711

原创 proc 文件系统2(其他文件简介)

/proc文件系统并不是GNU/Linux系统中的惟一一个虚拟文件系统。在这种系统上,sysfs是一个与/proc类似的文件系统,但是它的组织更好(从 /proc 中学习了很多教训)。不过 /proc 已经确立了自己的地位,因此即使sysfs与/proc相比有一些优点,/proc也依然会存在。还有一个debugfs文件系统,不过(顾名思义)它提供的更多是调试接口。debugfs的一个优点是它将一个值导出给用户空间非常简单(实际上这不过是一个调用而已)。/proc目录下常见的文件介绍:/proc/pc

2021-04-13 11:26:27 124

转载 proc 文件系统1 (/proc/[pid] 目录各文件简析)

Linux内核提供了一种通过 proc 文件系统,在运行时访问内核内部数据结构、改变内核设置的机制。proc 文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。它以文件系统的方式为访问系统内核数据的操作提供接口。 用户和应用程序可以通过 proc 得到系统的信息,并可以改变内核的某些参数。由于系统的信息,如进程,是动态改变的,所以用户或应用程序读取 proc 文件时,proc 文件系统是动态从系统内核读出所需信息并提交的。下面列出的这些文件或子文件夹,并不是都是在你的...

2021-04-12 11:05:07 1349

原创 linux shell数据重定向(输入重定向与输出重定向)

在了解重定向之前,先来看看linux 的文件描述符。linux文件描述符:可以理解为linux跟踪打开文件,而分配的一个数字,这个数字有点类似c语言操作文件时候的句柄,通过句柄就可以实现文件的读写操作。 用户可以自定义文件描述符范围是:3-num,这个最大数字,跟用户的:ulimit –n 定义数字有关系,不能超过最大值。linux启动后,会默认打开3个文件描述符,分别是:标准输入standard input 0,正确输出standard output 1,错误输出:error output .

2021-04-09 16:37:06 207

原创 ASCII 字符代码表

2021-04-09 14:52:54 175

原创 如何查看Linux命令工具的源码

首先,我们需要了解Linux下的命令分为大致分为两类:内置命令与非内置命令。查看内置命令源码内置命令是Shell自带的, shell自己进行管理。 内部命令由shell程序识别并在shell程序内部完成运行。 比如cd命令就是一个内置命令。我们可以通过help命令(help也是内置命令)来查看内置命令有哪些:查看系统当前使用的shell:我这里的shell用是bash,bash源码路径:http://ftp.gnu.org/gnu/bash/查看非内置命令源码非内置命令,也即外部命令。 外部命

2021-04-09 14:33:53 582

原创 清除Linux的交换空间

想清除交换空间,运行下面的命令:swapoff -a && swapon -a现在,我们将上面两种命令结合成一个命令写出正确的脚本来同时清除RAM缓存和交换空间。echo 3 > /proc/sys/vm/drop_caches && swapoff -a && swapon -a && printf ‘\n%s\n’ ‘Ram-cache and Swap Cleared’...

2021-04-08 15:56:16 1135

原创 清除linux中缓存(Cache)

1)清理pagecache(页面缓存)echo 1 > /proc/sys/vm/drop_caches or sysctl -w vm.drop_caches=12)清理dentries(目录缓存)和inodesecho 2 > /proc/sys/vm/drop_caches or sysctl -w vm.drop_caches=23)清理pagecache、dentries和inodesecho 3 > /proc/sys/vm/drop_caches or sys

2021-04-08 15:30:32 1904

原创 更改linux操作系统文件缓存刷新参数

相关参数和文件系统写缓存策略相关的主要是下面两个参数,其它相关参考可自行谷歌:/proc/sys/vm/dirty_ratio文件系统写缓冲区的大小,单位是百分比,表示系统内存的百分比,表示当写缓冲使用到系统内存多少的时候,开始向磁盘写出数据。增大之会使用更多系统内存用于磁盘写缓冲,也可以极大提高系统的写性能。但是,当需要持续、恒定的写入时,应该降低其数值。/proc/sys/vm/dirty_background_ratio控制 pdflush 进程在何时刷新磁盘。单位是百分比,表示系统内存的百

2021-04-08 14:20:38 823

原创 vxworks内存管理基本概念

1、vxworks内存管理基本概念(1)内存和外部存储器的概念:一般RAM属于内存而Flash、ROM、NVRAM是嵌入式操作系统的外部存储器;(2)操作系统的内存分配一般都在系统启动或者复位的情况下进行,在运行时尽量避免内存动态申请和释放,因为这样会带来系统的不稳定性;(3)vxworks为用户提供了2中内存区域:一种是Region内存域,是可变长的内存区域;另一种是partition内存分区,是定长的;vxworks内核和应用程序对内存的操作都是基于内存分区进行的;2、vxworks中的

2021-04-08 13:37:36 1032

原创 libpcap (基础学习) 抓包流程

(1)网络设备查找网络设备查找的目的就是发现可用的网卡,它的实现函数是pcap_lookupdev(),如果当前有多个网卡,它会返回一个网络设备名指针列表。(2)打开网络设备利用第一步的返回值,用户可以决定Libpcap实用哪个网卡,当然打开这个网络设备的函数是pcap_open_live(),它返回用于捕获网络数据包的数据包捕获描述字。对于此网络设备的任何操作都要基于这个描述字。(3)获取网络参数利用pcap_lookupnet()函数,可以获得指定网络设备的IP地址和子网掩码,当然这个步骤并不

2021-04-07 15:30:11 581

空空如也

空空如也

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

TA关注的人

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