Linux
文章平均质量分 59
blog.pytool.com
这个作者很懒,什么都没留下…
展开
-
stty控制终端
1.stty size 打印终端行数和列数2,在命令行下禁止输出小写stty olcuc #开启stty -olcuc#恢复3,打印出终端的行数和列数stty size4,改变ctrl+D的方法:stty eof "string"系统默认是ctrl+D来表示文件的结束,而通过这种方法,可以改变!5,屏蔽显示 解决输入内容不显示的问题stty -echo #禁止回显stty echo #打开回显测试方法:stty -echo;read;stty echo;read6,...原创 2021-04-09 17:31:48 · 201 阅读 · 0 评论 -
【linux驱动】pcie驱动入门
pcie总线向下兼容pci总线,文中所述pci默认等于pciepcie拓扑结构pcie拓扑主要由总线、桥和设备卡组成,桥将父总线与子总线连接在一起形成树型结构。桥主要分为一下三类:Host/PCI桥:用于连接CPU与PCI根总线,在PC中,内存控制器也通常被集成到Host/PCI桥设备芯片,Host/PCI桥通常被称 为“北桥芯片组”。 PCI/ISA桥:用于连接旧的ISA总线。PCI/ISA桥也被称为“南桥芯片组”。 PCI-to-PCI桥:用于连接PCI主总线与次总线。 pci总线编转载 2021-01-22 16:51:28 · 4269 阅读 · 0 评论 -
IPMI中SOL的使用
http://blog.chinaunix.net/uid-1838361-id-3134038.htmlSOL需要IPMI2.0支持,使用lanplus进行远程连接。7.1Serial Over LAN (SOL) 功能非常有用。SOL 通过 IPMI 会话重定向本地串行接口,允许远程访问 Windows 的紧急事件管理控制台 (EMS) 特殊管理控制台 (SAC),或访问 LINUX 串行控制台。ipmitool sol set enabled true 1 ipmitool sol se.原创 2021-01-20 13:25:43 · 3847 阅读 · 0 评论 -
eMMC小总结
通俗的来说,eMMC=NAND闪存+闪存控制芯片+标准接口封装。本文大致做下边几个小结:(1)MMC与Host之间的连接连接由下图可见(2)eMMC和NAND Flash与Host的连接比较NAND Flash直接接入HostNAND Flash直接接入Host时,Host端通常需要有NAND Flash Translation Layer,即NFTL或者NAND Flash文件系统来做坏块管理、ECC等的功能。由eMMC接入HosteMMC则在其内...原创 2021-01-19 11:22:44 · 2171 阅读 · 0 评论 -
Python3包导入规则
如需转载请注明出处。win10+Python 3.6.3一旦使用多层文件架构就很容易遇上import的坑!哈哈。一、理解一些基本概念1、模块、包**模块 module:**一般情况下,是一个以.py为后缀的文件。其他可作为module的文件类型还有".pyo"、".pyc"、".pyd"、".so"、".dll",但Python初学者几乎用不到。module 可看作一个工具类,可共用或者隐藏代码细节,将相关代码放置在一个module以便让代码更好用、易懂,让coder重点放在高层逻辑上。m转载 2021-01-14 16:21:05 · 994 阅读 · 0 评论 -
ONIE-sonic内核调试
产品信息系统:SONiC系统(linux 4.9.110),ONIE(4.1.38) 项目背景:此项目是一个网络流量设备,作为流量转发器,将大批量的流量收集,筛选,过滤,重定向至新的端口,然后转发至后端设备,进行流量操作。 硬件:COM-E CPU主板,交换芯片,多种IIC设备(pca9548,pca9535等),NVME磁盘,USB转IIC总线芯片等;32个100G网口,2个USB口,一个串口,1个以太网口。调试过程第一阶段—检查硬件检查电源是否正常,插上电源,判定能够设备是否上电,若未转载 2021-01-13 19:42:06 · 2112 阅读 · 0 评论 -
No DSR -- login is not available with DSR low`
Added support for console port login without DSR. This avoids the error message 'No DSR -- login is not available with DSR low' when connecting from a serial device that does not support DSR or does not assert DSR high. As in pr...原创 2021-01-11 09:40:35 · 256 阅读 · 0 评论 -
服务器BMC与IPMI基础知识
初识BMC与IPMI什么是BMC?BMC全名Baseboard management controller, 是一种嵌入式管理微控制器。BMC是实现IPMI通用接口规范的核心控制器。在支持IPMI v1.5典型接口时,配置上需要有32K的RAM内存和128K的flash memory。当然,配置越高它的性能越强大。那么BMC在系统中是怎么起到其作用的呢?下面是2001年Intel发布的IPMI v1.5的架构图:从图中我们可以看到BMC对外通过System Interface连接系统总线,对转载 2021-01-06 09:18:52 · 27745 阅读 · 2 评论 -
HBA (HOST BUS ADAPTER)(主机总线适配器)
HBA 主机总线适配器(Host Bus Adapter,HBA)是一个在服务器和存储装置间提供输入/输出(I/O)处理和物理连接的电路板和/或集成电路适配器。因为HBA减轻了主处理器在数据存储和检索任务的负担,它能够提高服务器的性能。一个HBA和与之相连的磁盘子系统有时一起被称作一个磁盘通道。 我们知道网卡是用于连接计算机和计算机网络。网卡一般插在计算机大总线扩展槽上,卡上有连接计算机网络的接口。网卡物理上连接计算机内部总线,例如PCI,PCI-X,PCI-E,SUN的Sbus总线等,和计算机网原创 2021-01-05 10:16:45 · 1886 阅读 · 0 评论 -
Linux多线程同步
1. 同步与互斥(1)互斥与同步机制是计算机系统中,用于控制进程对某些特定资源(共享资源)的访问的机制(2)同步是指用于实现控制多个进程按照一定的规则或顺序访问某些系统资源的机制。(3)互斥是指用于实现控制某些系统资源在任意时刻只能允许一个进程访问的机制。互斥是同步机制中的一种特殊情况。(4)同步机制是linux操作系统可以高效稳定运行的重要机制2. Linux系统并发主要来源 在操作系统引入了进程概念,进程成为调度实体后,系统就具备了并发执行多个进程的能力,但也导致了系统中.转载 2020-11-14 14:33:04 · 90 阅读 · 0 评论 -
linux 信号量sem_t和pthread_cond_t 的区别
尽量使用 sem 代替 pthread_cond因为 pthread_cond 会有丢失信号的问题,sem 是原子操作,所以不会丢失信号Mac 下对 sem_init()/sem_destory() 不支持:注意:MacOS 不支持sem_init()和sem_destroy();这个例子若是想在 mac 下编译通过,需要自行修改替换相关的函数。sem_init(&sem, 0, 1)改成sem_open("sem", O_CREAT|O_EXCL, S_...原创 2020-11-14 11:35:55 · 1181 阅读 · 0 评论 -
linux内核驱动休眠和唤醒机制 【sem_wait select 休眠等待实现机制】
阻塞与非阻塞的概念:阻塞IO: 当数据不可读或不可写,进程休眠,直到得到数据可读或可写时才返回。阻塞效率高,实时性比较好。非阻塞IO:不管数据是否可读可写,都马上返回。应用程序是否能实现阻塞或非阻塞是取决于驱动程序。实际驱动中应该把阻塞和非阻塞这种选择权交给应用程序来选择。要实现这个效果 ,就必须让驱动程序知道应用程序的选择。这个信息是通过 file 结构来传递的。struct file 结构中有成员: unsigned int f_flags;存放的就是 open...原创 2020-11-13 12:01:49 · 1681 阅读 · 0 评论 -
如何解决发送pthread_signal 发送了 0x50000 个signal 但只有 0x4fe79 次被唤醒?
现象:发送pthread_signal 发送了 0x50000 个signal 但只有 0x4fe79 次任务被处理?解决:一般由于线程任务事件过长,所有的线程都是唤醒状态,这样即使发送信号,也会被忽略掉。可以增加线程池的数量...原创 2020-11-12 18:00:05 · 194 阅读 · 0 评论 -
linux 下 pthread_cond_t 详解
一览本文目的 为何需要条件变量 三个问题 传入前锁mutex 传入后解锁mutex 返回前再次锁mutex pthread_cond_signal的两种写法 尾语本文目的 首先说明,本文重点不在怎么用条件变量。这里我先列出apue中对于pthread_cond_wait函数的这么一段话:“ 调用者把锁住的互斥量传给函数,函数然后自动把调用线程放到等待条件的线程列表上,**对互斥量解锁。**这就关闭了条件检查和线程进入休眠状态等待条件改变这...转载 2020-11-12 14:05:19 · 4749 阅读 · 2 评论 -
gevent 无法新建连接,关闭连接不停输出connection close
现象:服务端不停的打印错误日志,客户端无法新建连接故障排查:在 void ev_on_read(struct ev_loop* loop, struct ev_io* watcher, int revents) if (read == 0) { printf("client disconnected.\n"); // close socket close(watcher->fd); ev原创 2020-11-11 15:50:26 · 222 阅读 · 0 评论 -
【Linux编程-数据结构】rbtree
Linux kernel rbtree因编写内核模块时需要用到rbtree来记录异步request,研究分析了一下kernel rbtree的使用方法,记录于此。本文主要参考了内核文档rbtree.txtrbtree简介Red-black trees(rbtree)是一种自平衡的二叉搜索树,用于存储可分类的key/value数据对。它不同于radix trees或者hash tables。radix trees用于有效存储稀疏数组(使用长整型索引进行节点的插入、查询和删除),其索引值太大无法用转载 2020-10-27 15:21:42 · 438 阅读 · 0 评论 -
时间设置settimeofday
void settimeofday(){ struct timeval tv; struct timezone tz; gettimeofday(&tv, &tz); // 根据时间戳设置时间 tv.tv_sec =time(NULL); printf("tv_sec:%d,tv_usec:%d.\n",tv.tv_sec,tv.tv_usec); printf("tz_minuteswest:%d,tz_dsttime:%d.\n",tz.tz_m...原创 2020-10-24 09:35:15 · 3007 阅读 · 0 评论 -
C语言中宏定义隐藏结构体指针的小技巧
1. 通过宏定义 隐藏指针传递定义:#define vector_push_back(v, e) _vector_push_back(v, (void *)&e, sizeof(e))void _vector_push_back(struct vector *v, void *e, size_t type_size)使用:struct tmp_box tb;tb.c = 'a';vector_push_back(c, tb);可以看到在使用的时候直接传递结构体对...原创 2020-10-23 10:28:53 · 465 阅读 · 0 评论 -
国家电网I1接口交互及应用层数据传输规范
I1接口交互及应用层数据传输规范本规范适用于前端监拍装置与市公司监控后台之间的通讯。交互规范 概述 本文档的接口交互规范仅限于I1接口。CMA具体指的是各地市级监控后台。CMD具体指的是杆塔上安装的前端监拍装置...原创 2020-10-21 21:35:04 · 5223 阅读 · 1 评论 -
Linux编程之recvmsg和sendmsg函数
Linux编程之recvmsg和sendmsg函数recvmsg 和 sendmsg 函数#include <sys/types.h>#include <sys/socket.h>ssize_t send(int sockfd, const void *buf, size_t len, int flags);ssize_t sendto(int sockfd, const void *buf, size_t len, int flags,原创 2020-10-15 10:36:06 · 543 阅读 · 0 评论 -
用greadlink替代readlink 解决MacOS下readlink: illegal option -- f
解决MacOS下readlink: illegal option -- fMac下的readlink没有-f参数,诸如screenfetch又会去调用readlink -f,于是每次都会出现:readlink: illegal option -- fusage: readlink [-n] [file ...]很是烦人,解决方案如下:1.安装coreutils:brew install coreutils2.设置环境变量,编辑~/.bash_profile,添加:expor原创 2020-10-08 18:52:27 · 1188 阅读 · 1 评论 -
state-threads Netscape协程库libst
https://github.com/ossrs/state-threads原创 2020-10-08 17:01:02 · 203 阅读 · 0 评论 -
vscode 加载配置
{ "configurations": [ { "name": "Win32", "includePath": [ "${workspaceFolder}/*", "${env:SOURCES}/linux/include/*", "${env:SOURCES}/linux/*" ], "browse": { .原创 2020-10-07 12:02:27 · 442 阅读 · 0 评论 -
如何修改linux内核,实现操作系统中的ethxx设备名修改
修改linux 中的ethxx 设备名应用场景: 有些公司想将模块换成合宙的模块,但是之前的模块出现的是USBxx 网卡,合宙的是ethxx ,这让就让应用程序改动应用程序,很是麻烦!修改方法:方法一 修改脚本 1.找到文件/etc/udev/rules.d/70-persistent-net.rules 将SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="...原创 2020-09-27 20:22:28 · 900 阅读 · 0 评论 -
cmake设置编译器为arm-none-linux-gnueabi-gcc不生效的问题
cmake_minimum_required(VERSION 3.1) # include(cmake/internal.cmake) SET(CMAKE_C_COMPILER "/home/public/local/bin/gcc") SET(CMAKE_CXX_COMPILER "/home/public/local/bin/g++") 方法一使用gccexport CC=/usr/bin/gccexport CXX=/usr/bi...原创 2020-09-24 17:18:33 · 1401 阅读 · 1 评论 -
error: undefined reference to ‘charge_read(unsigned char)‘ | collect2: error: ld returned 1 exit
atfwd_daemon.cpp:264: error: undefined reference to 'charge_read(unsigned char)' | collect2: error: ld returned 1 exit status | make[1]: *** [atfwd_daemon] Error 1 | make[1]: Leaving directory `/home/pytool/apps_proc/poky/build/tmp-glibc/work/mdm9607-oe...原创 2020-09-18 21:23:15 · 168 阅读 · 0 评论 -
串口 select函数使用
Select函数在Socket编程中还是比较重要的,可是对于初学Socket的人来说都不太爱用Select写程序,他们只是习惯写诸如connect、accept、recv、recvfrom这样的阻塞程序。可是使用Select就可以完成非阻塞方式工作的程序,它能够监视我们需要监视的文件描述符的变化情况——读写或是异常。所谓阻塞方式block,顾名思义,就是进程或是线程执行到这些函数时必须等待某个事件的发生,如果事件没有发生,进程或线程就被阻塞,函数不能立即返回。所谓非阻塞方式non-block,就是.原创 2020-09-12 15:35:58 · 2314 阅读 · 0 评论 -
使用select接口写高精确延时
使用select接口写高精确延时。select接口int select(int maxfdp, fd_set *readset, fd_set *writeset, fd_set *exceptset,struct timeval *timeout);原理利用select的timeout参数实现定时器; 设置timeval的值,而将其他参数都置为NULL,当内部时间耗尽后select便会退出。示例void usleep(unsigned long usec){ str.原创 2020-09-12 15:19:04 · 552 阅读 · 0 评论 -
c语言中让程序只有一个实例在运行
#include<stdio.h> //standard buffered input/output#include<fcntl.h> //file control options#include<stdlib.h> //standard library definitions#include<errno.h> //system error numbers#include<unistd.h> //standard symb.原创 2020-09-12 14:52:34 · 666 阅读 · 0 评论 -
嵌入式strcpy写法看程序员功底
题目:已知strcpy函数的原型是:char * strcpy(char * strDest,const char * strSrc);1.不调用库函数,实现strcpy函数。2.解释为什么要返回char *。1.strcpy的实现代码:char * strcpy(char * strDest,const char * strSrc){if ((strDest==NULL)||(strSrc==NULL)) //[1]throw “Invalid argument(s)”; //[2]ch原创 2020-09-12 14:50:46 · 221 阅读 · 0 评论 -
PS封装格式:GB28181协议RTP传输
转载 PS封装格式:GB28181协议RTP传输 1. GB28181要求的RTP流格式 2. 头部信息 在安防行业,有个协议是无论如何都要适配的,因为公安监控网络用的就是它,它就是:GB28181。而这份协议主要由海康制定,所以除了海康其他厂商想要适配都会少许有点儿麻烦。题主前东家便是海康,这里稍微分析下该协议几个容易搞混的细节,记录在此,方便以后自己查阅,也方便诸位。1. GB28181要求的RTP流格式 首先,我们来看看I帧的.转载 2020-09-10 14:08:38 · 849 阅读 · 2 评论 -
arm-none-linux-gnueabi-gcc command not found
arm-none-linux-gnueabi-gcc command not found现象:明明有arm-none-linux-gnueabi-gcc文件,也加入到环境变量中,但是编译的时候却报command not found错误!解压arm gcc 交叉编译工具链,并成功的导出到环境变量运行的时候 报以下错误:由于64位下运行32编译器缺少相应的库文件,所以运行时会报错运行下面加载库文件的命令:sudo apt-get install lib32ncurses5 lib32..原创 2020-09-09 12:08:43 · 2567 阅读 · 0 评论 -
如何HI3516DV300/hi3519AV100/hi3559AV100实现yolov4视频识别
Yolov4 作为2020年最新的识别框架,集各种trick于一身原创 2020-07-31 08:40:59 · 2395 阅读 · 2 评论 -
linux网络编程中listen函数 backlog的含义
结论: backlog 是用来指定在TCP连接时,同时进行 3次握手建立连接的客户端数量listen函数在一般在调用bind之后-调用accept之前调用,它的函数原型是:#include<sys/socket.h>int listen(int sockfd, int backlog)返回:0──成功, -1──失败参数sockfd被listen函数作用的套接字,sockfd之前由socket函数返回。在被socket函数返回的套接字fd之时,它是一个主动连接的套接字,也就是此时系原创 2020-06-04 16:00:22 · 795 阅读 · 0 评论 -
HI3516DV300/HI3519AV100/HI3559AV100 实现RTSP/RTMP视频流实时识别YOLOV3 识别速度14帧/S
ps:做技术真是太难了????本教程是基于yolov3在硬件实现硬件的实时视频处理!不是SAMPLE中的处理单张图片照片!未采用opencv库,数据处理全部采用硬件加速!直接对摄像头数据直接进行图像识别!HI3516 识别速度 8帧/SHI3519 识别速度 12帧/S教程目的: 在硬件实现视频流实时识别,将深度学习落地于实战项目中。实现原理:VPSS 使用3路,部分芯片VPSS CH0 不支持缩小,为保证输出帧率,保留第一路不使用。VPSS CH1 当作 yolov3 的检测输入识原创 2020-05-09 18:58:28 · 5397 阅读 · 6 评论 -
linux下 s3c2440 lcd驱动移植详解
http://blog.csdn.net/control_tech/article/details/57053441. LCD工作的硬件需求: 要使一块LCD正常的显示文字或图像,不仅需要LCD驱动器,而且还需要相应的LCD控制器。在通常情况下,生产厂商把LCD驱动器会以COF/COG的形式与LCD玻璃基板制作在一起,而LCD控制器则是由外部的电路来实现,现在很转载 2013-12-12 17:44:59 · 1640 阅读 · 0 评论