Linux
spic_jackmaster
工作变动,博客断更。
展开
-
CM4 启用SPI6(cs0)
CM4 启用SPI6(cs0)原创 2023-02-27 17:24:49 · 525 阅读 · 1 评论 -
CM4 启用UART3~6
CM4 启用UART3~6原创 2023-02-27 17:24:39 · 408 阅读 · 0 评论 -
raspberry OS buster InRelease: The following signatures couldn‘t be verified
系统换源后更新,出现以下问题:Get:1 http://mirror.tuna.tsinghua.edu.cn/raspberrypi buster InRelease [32.6 kB]Get:2 http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian buster InRelease [15.0 kB]Get:3 http://mirror.tuna.tsinghua.edu.cn/raspberrypi buster/main Source原创 2022-04-20 17:50:06 · 1848 阅读 · 0 评论 -
SSL 多线程通信 linux openSSL C API编程
一、环境需要提前准备好服务端和客户端的证书和私钥,以及CA的证书。OpenSSL 1.1.1f 31 Mar 2020built on: Wed Nov 24 13:20:48 2021 UTCplatform: debian-amd64options: bn(64,64) rc4(16x,int) des(int) blowfish(ptr)Thread model: posixgcc version 9.3.0 (Ubuntu 9.3.0-17ubuntu1~20.04)二...原创 2022-02-21 20:11:04 · 2656 阅读 · 1 评论 -
阿里云linux主机安装qt报错:缺少libxkbcommon-x11.so.0
ubuntu云主机安装xfce桌面后,下载qt5.12.10,开发桌面应用,安装qt时报错缺少libxkbcommon-x11.so.0。由于xfce是轻量级桌面不带libxkbcommon-x11.so.0,而qt5.12.10默认系统已经自带,所以,报错。此时更新一下apt源信息,然后重新安装即可。apt-get updateapt-get install libxkbcommon-x11-0./qt-opensource-linux-x64-5.12.1...原创 2021-11-08 20:17:02 · 10408 阅读 · 1 评论 -
Windows Subsystem for Linux(WSL)安装emqx
一、安装win10自带linux子系统,wsl ubuntu,安装方法同ubuntu。脚本一键安装:curl https://repos.emqx.io/install_emqx.sh | bash二、使用$ emqx startemqx 4.0.0 is started successfully!$ emqx_ctl statusNode 'emqx@127.0.0.1' is startedemqx v4.0.0 is running$ emqx stopok数据面.原创 2021-10-11 15:17:17 · 354 阅读 · 0 评论 -
一次ssh登录不成功的解决经历
一、列出解决过程中所有报错信息ssh connection refused port 22 Stopped OpenBSD Secure Shell server. Failed to start OpenBSD Secure Shell server. OpenSSL version mismatch. Built against 1010104f, you have 101000cf Unable to fetch some archives, maybe run apt-get updat.原创 2021-09-29 10:35:26 · 7709 阅读 · 0 评论 -
无线网卡共享Internet访问到电脑有线接口注意事项
一、共享网卡访问网卡属性--共享--以太网Note: 观察有线以太网的IPv4是否有Internet访问权限。 Note:配置IPv4的NDS与无线网卡WLAN的属性一致。二、有线网卡配置Note:连接到有线网卡上的外接设备需要配置IP地址为192.168.137.xxx,处于同一局域网。掩码与有线网卡一致。 Note:先检查能否ping www.baidu.com,若能ping通,则网络可以正常使用;若不能ping通,测试能否ping ip,例如ping 8.8.8.8,如果..原创 2021-09-28 11:06:59 · 790 阅读 · 0 评论 -
iperf 测试局域网速度
介绍iperf使用cs架构,启用一台设备作为server,另一台设备作为client,测试server和lclient的网络速度。linux 安装sudo apt install iperf使用方法(1)服务器端 iperf -s 启用tcp连接,默认监控端口5001(2)客户端连接 iperf -c 10.8.0.2 这个ip(10.8.0.2)是server的ip,等待片刻即可给出测试结果...原创 2021-06-22 19:58:35 · 936 阅读 · 1 评论 -
云服务器开启TCP Server 客户端无法连接的解决方法
一、问题描述华为云服务器运行TCPServer后,等待客户端连接,客户端一直无法连接到服务器。经过测试,客户端可以ping通服务器的地址。 客户端网络防火墙已经完全放开。二、解决办法1、查看云服务器端的安全组,是否放开该端口。经过查看,已经打开了该端口。2、查看云服务器的防火墙ufw是否有放开该端口,ubuntu系统自带了ufw防火墙,查看是否有打开防火墙。查看ufw运行状态 : ufw status增加ufw 端口 : ufw allow port_x禁用ufw 端口原创 2021-05-07 11:52:40 · 3468 阅读 · 0 评论 -
如何用脚本可靠关闭一个linux服务或进程
一、脚本样例以quectel的EC20模组关闭ppp拨号服务脚本为例,以下为脚本源码:#!/bin/shtimeout=5killall -15 pppdsleep 1killall -0 pppdwhile [ $? -eq 0 ]do timeout=`expr $timeout - 1` if [ $timeout -eq 0 ] then exit 1 fi sleep 1 killall -0 pppddone if [ $? -ne 0 ]then原创 2020-12-14 11:44:48 · 736 阅读 · 0 评论 -
CRC16循环冗余校验 RTU-MODBUS标准 Linux C
1、概述CRC16循环冗余校验常用在MODBUS协议中,用于校验报文的完整性。CRC16校验值为uint16_t 无符号整形2字节,在MODBUS协议中,低检验字节在前,高校验字节在后,比如校验结果crc16=0x1788,则MODBUS中的校验顺序为 ...0x88 0x17。以下为自己写的linux C 代码,可以直接用。2、C程序/*****************************************************************************原创 2020-07-23 12:08:04 · 1134 阅读 · 1 评论 -
C 如何对指针进行指定字节的偏置操作
1、概念指针进行偏置操作后,需要注意的是偏置指向为同类型的指针,不可简单认为指针的指向地址增加或减小响应的偏置量。2、示例int aVal = 100;int *pVal;int offset = 2;pVal = &aVal+offset;Q:假设aVal的地址为6684156;求pVal的值?解答: 根据pVal的表达式,取aVal的地址值为6684156,不能简单的加上offset=2,指针的偏置需要考虑指针的类型,因此,pVal的值为6684156+2*size原创 2020-07-21 09:59:44 · 1224 阅读 · 0 评论 -
BCC异或校验 Linux C
1、BCC异或校验从输入的HEX第一个字节开始,按字节依次循环计算异或值直到HEX结尾字节,得到的最终一个字节值。2、C程序#include <stdio.h>#include <string.h>#include <stdbool.h>int Char2Int(char chr,bool *isOK){ int nibb1; if(chr >= '0' && chr <= '9'){ nibb1 = chr -原创 2020-07-20 11:48:15 · 926 阅读 · 0 评论 -
arm-linux-gnueabihf gcc8.3交叉编译工具搭建教程
一、运行环境1.1 执行机环境 ld GNU ld (GNU Binutils for Raspbian) 2.31.1 ldd ldd (Debian GLIBC 2.28-10+rpi1) 2.28 Copyright (C) 2018 Free Software Foundation, Inc. gcc (Raspbian 8.3.0-6+rpi1) 8.3.0 Copyr...原创 2020-06-28 16:13:35 · 10294 阅读 · 2 评论 -
Bash脚本报错:“/bin/bash^M: bad interpreter: No such file or directory”
1、问题github下载一个源码,运行install脚本时(# ./myinstal_cp)一直报错“/bin/bash^M: bad interpreter: No such file or directory”,如:-bash: ./myinstall_cp: /bin/bash^M: bad interpreter: No such file or directory用bash命令执行(# bash myinstal_cp),然后提示脚本文件出现很多\r\n的问题,仔细看脚本源码,逻辑.原创 2020-06-19 09:25:19 · 4320 阅读 · 0 评论 -
Linux 延时函数
有一些延时函数写法非常占用CPU,比如while(gettime()>timeSet){},在Linux中应当尽量使用系统调用执行延时,在延时等待期间执行一次进程调度,降低延时函数的CPU占用率。Linux中的延时函数有sleep,usleep和nanosleep,以及select。1、sleepsleep()调用alarm()来设定报警时间,调用sigsuspend()将进程挂起在信号SIGALARM上。2、usleepusleep()有可能会影响信号,用于延迟挂起进程。3、原创 2020-05-26 11:04:10 · 949 阅读 · 0 评论 -
Linux给GCC编译的应用程序创建服务
一、创建服务文件linux 服务文件的位置在: /etc/systemd/system ,进入该目录。 首先创建一个服务文件,名字可以按照xxx.service 的格式命名,例如我的噪声处理服务命名: noiserun.service。 创建文件需要sudo权限:sudo touch noiserun.service 给文件赋权限:sudo chmod 777 noiserun.ser...原创 2020-04-29 10:35:57 · 347 阅读 · 0 评论 -
Linux多线程开发-线程同步-条件变量pthread_cond_t
1、条件变量的概念一个线程A的执行需要另一个线程B来唤醒,否则A挂起等待。线程B可以产生线程A继续执行的信号。条件变量常用在共享数据状态变化的场景中,例如:生产则和消费者问题。POSIX线程库提供了条件变量这种同步机制。使用条件变量需要联合互斥锁一起使用。2、如何声明一个条件变量#include <pthread.h>pthread_cond_t cond;3、如...原创 2020-04-15 11:05:54 · 416 阅读 · 0 评论 -
Linux多线程开发-线程同步-读写锁pthread_rwlock_t
1、读写锁概念对资源的访问抽象为两种类型,即独占和共享。独占资源具有排他性,例如写操作。共享资源可以同时由多个线程访问,不对该资源执行写操作。针对资源的读和写操作分别加锁,写操作加锁与互斥锁相同,但读操作加锁可以让多个线程同时访问。优点:互斥锁进入临界区后,未获得锁的线程会阻塞,因此,会降低程序的并发效率。读写锁可以对读操作高效访问,提高资源利用效率,并发性能更高。POSIX库中用类型...原创 2020-04-15 09:58:43 · 319 阅读 · 0 评论 -
Linux多线程开发-线程同步-互斥锁pthread_mutex_t
1、互斥锁同一时刻只允许一个线程对临界区进行访问。POSIX库中用类型pthread_mutex_t来定义互斥锁,类型在pthreadtypes.h中定义。2、如何声明一个互斥锁#include <pthread.h>pthread_mutex_t mutex;3、如何初始化一个互斥锁//静态初始化互斥锁pthread_mutex_t mutex = PT...原创 2020-04-15 09:40:20 · 470 阅读 · 0 评论 -
linux重定向到文件permission denied
1. 执行重定向命令报权限错误,如下:sudo nohup ${obj} >${log_file} 2>&1 &./autoRun.sh: line 23: /home/netmeas/log-20200414-164657.txt: Permission denied2.分析原因sudo 给了obj超级执行权限,但是重定向到log_file没有得到...原创 2020-04-14 16:57:37 · 1425 阅读 · 0 评论 -
Linux open函数使用方法记录
1、作用linux一切皆文件,那么如何打开文件,靠的就是open函数。打开和创建文件,对于文件来说存在文件则打开,不存在则创建;对于设备,可以打开相应设备(串口,SPI,I2C等)。2、函数原型//包含头文件#include<fcntl.h>int open(const char *pathname, int oflag, ... );返回值:成功则返回文件描述符...原创 2020-04-03 14:08:42 · 1150 阅读 · 0 评论 -
无线网络共享到CM3计算板调试时 connect: Network is unreachable
1、问题描述硬件连接:电脑(有线+无线) <--有线--> CM计算板(或其他Linux),端口:电脑共享的有线网口 192.168.137.1 ,CM3配置静态IP 192.168.137.120/24CM3ping不通,报错:connect: Network is unreachable2、问题分析查看路由:route192.168.137....原创 2020-03-25 11:45:09 · 379 阅读 · 0 评论 -
华为ECS云服务器 Ubuntu 安装和配置FTP教程
折腾了一下在云服务器上搭建FTP,记录如下。0、环境华为云ECS ubuntu18.04, vsftpd 3.0.3一、FTP登陆方式FTP可以有三种登入方式分别是:*匿名登录:不需要用户密码 *本地用户:使用本地用户和密码登入 *虚拟用户:也是使用用户和密码登入,但是该用户不是linux中创建的用户二、FTP连接方式控制连接:...原创 2020-03-03 16:22:37 · 1001 阅读 · 0 评论 -
Qt QProcess执行Linux 命令行的方法
1、QProcess 打开一个bash终端,可以执行一般的命令,主要实现步骤如下m_proces_bash = new QProcess;m_proces_bash->start("bash");m_proces_bash->waitForStarted();connect(m_proces_bash,SIGNAL(readyReadStandardOutput()),th...原创 2020-02-08 17:45:35 · 14050 阅读 · 2 评论 -
Ubuntu换源失败:Could not get lock /var/lib/apt/lists/lock - open
1、根据网上相关教程更改国内的镜像源,编辑了sources.list后,执行sudo apt-get update 出现以下报错:E:Could not get lock /var/lib/apt/lists/lock - open (11: Resource temporarily unavailable)2、问题解析:内部进程正在执行读取资源,导致资源加锁,不可用。3、解决办法...原创 2020-02-05 13:20:27 · 1222 阅读 · 0 评论 -
Ubuntu如何卸载安装的软件以FileZilla为例
1、查看已安装的软件包:dpkg --list2、卸载FileZillasudo apt-get remove filezilla原创 2020-01-15 10:45:46 · 1833 阅读 · 0 评论 -
Linux mount挂载和umont卸载U盘
1、树莓派插入U盘没有自动挂载,可以在/dev/下看到盘符,但是打不开,需要挂载到指定的文件位置。2、挂载U盘使用mount命令。(1)首先查看插入设备后的文件描述符:找到sda1(2)新建文件夹(3)挂载U盘到Udisk文件夹sudo mount /dev/sda1 /home/pi/Udisk可以在Udisk目录下看到U盘的内容。3、卸载U盘使用umo...原创 2020-01-14 15:47:37 · 1602 阅读 · 0 评论 -
Linux du查看磁盘文件夹占用容量
1、du查看当前文件夹的占用容量:du -sh eg. 查看/usr的占用2、指定层级查看查看当前目录下最多一级目录的容量du -h --max-depth=1原创 2020-01-14 15:22:18 · 358 阅读 · 0 评论 -
Linux 多线程开发-线程的结束pthread_kill和pthread_cancel
1、线程结束的方式(1)线程函数中调用pthread_exit函数,不会导致对象析构,可以使用 (2)线程所属的进程结束,进程调用exit,线程C++对象不会销毁,不安全,属于被动结束 (3)线程函数执行返回return,好的退出方式 (4)线程被同一进程或其他线程通知结束,属于被动结束2、线程主动结束线程主动结束使用return或者pthread_exit函数,原型如下:v...原创 2020-01-03 16:18:27 · 3163 阅读 · 0 评论 -
Linux 多线程开发-线程的属性-分离detached和连接joinable
1、描述linux的POSIX线程分离状态决定一个线程以什么方式来终止。默认的分离状态是可连接态(joinable),创建线程是参数设置为NULL,就是默认连接态,可以被pthread_join。Linux的POSIX线程要么分离要么连接分别用一下宏表示:分离状态:PTHREAD_CREAT_DETACHED 连接态:PTHREAD_CREAT_JOINABLE一个可连接的线程的特...原创 2020-01-03 15:27:58 · 292 阅读 · 0 评论 -
Linux 多线程开发-等待线程结束pthread_join
1、函数原型int pthread_join(pthread_t pid, void **value_ptr);pid:所等待的线程ID; value_ptr:通常设置为NULL,如果不为NULL,pthread_join将复制一份线程退出值到一个内存区域,并让*value_ptr指向该内存。 返回值:执行成功返回0,否则返回错误码。2、作用pthread_creat创建完成子...原创 2020-01-03 14:57:51 · 3335 阅读 · 2 评论 -
Linux 多线程开发-线程创建pthread_creat
1、函数原型int pthread_creat(pthread_t *pid, const pthread_attr_t *attr,void *(*start_routine)(void *),void *arg);pid:返回创建成功后的线程ID,unsigned int型变量; attr:设置线程属性,为NULL则为默认属性; start_routine:指向线程函数; ar...原创 2020-01-03 14:44:03 · 279 阅读 · 0 评论 -
警告warning: strncpy specified bound XX equals destination size
1、问题用strncpy字符串拷贝时,出现警告:warning: 'strncpy' specified bound 32 equals destination size [-Wstringop-truncation]。2、解决:strncpy不拷贝最后一个字节,手动给它赋值'\0'。例子:#define SIZE = 20;char *a_str = "12345678";c...原创 2020-01-03 10:22:32 · 12958 阅读 · 1 评论 -
Linux 用C/C++创建新文件并写入内容
1、需求在Linux环境下用C编写一个函数,用于记录运行日志,要求只存在一个同名文件,每次记录前清除已有的信息。2、思路需要完成的是:(1)查找(access)是否该文件存在,存在则删除,不存在则新建(fopen)。(2)定位写入记录的位置(fseek)。(3)写文件(fprintf)。(4)刷新文件(fflush)。(5)关闭文件退出(fclose)。3、代码...原创 2019-12-30 17:24:54 · 8558 阅读 · 0 评论 -
Linux Socket网络通信示例
记录一下Linux 网络通信编程示例,主要用内网穿透和网络调试助手进行调试。1、源文件:#include <stdlib.h>#include <sys/types.h>#include <stdio.h>#include <netinet/in.h>#incldue <string.h> //bze...原创 2019-12-30 16:59:47 · 389 阅读 · 0 评论 -
分享自己编写的一个比较通用的makefile
############################################################################## Author: jianwang16# Date: 2017 06 18# E-mail: jianwang16@foxmail.com###############################################...原创 2019-10-30 16:48:26 · 194 阅读 · 0 评论 -
Linux下如何定位Java进程CPU利用率过高原因
首先通过Top命令查看占用CPU较高的进程PID,执行Top之后按1可以查看每个核占用比例1 top 这里由于我是用的虚拟机,即使我的Java进程占用CPU很高也只是占的虚拟机的,而对整个机器的CPU来说占的并不高。这里我们找到了pid=7957 然后我们在根据pid找出占用CPU过高的线程1 top -H -p 7957然后根据线程id=7958使用strace -p命令查看调用...转载 2019-10-29 09:20:57 · 158 阅读 · 0 评论 -
Linux 使用sigaction查询或设置信号处理方式
一、概述Linux的系统调用函数sigaction()可以用来查询或设置信号处理方式。函数声明为:#include <signal.h>int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact);如果执行成功返回0,否则返回-1。其中,参数表示的含义如下:si...原创 2019-10-28 21:22:38 · 703 阅读 · 0 评论