- 博客(60)
- 资源 (5)
- 收藏
- 关注
原创 Rockpi4 ubuntu1804搭建NVC桌面远程服务,亲测有效
rockpi4 安装vnc server,并启动服务监听5900端口,win10使用MobaXterm,vnc连接。
2024-05-05 10:38:48
300
原创 spi总线之通信原理及linux驱动读写实现
一、SPI简介1.SPI,全称SerialPerripheral Interface,也就是串行外围设备接口,是一种高速全双工穿的同步通信总线,SPI时钟频率相比I2C要高得多,最高可以达到上百MHz,SPI以主从方式工作,通常是一个主设备和一个或多个从设备,一般SPI需要4根线,也可以使用3根线(单向传输),下面介绍标准的4线通信:CS/SS,Slave Select/Chip Select,这个是片选信号线,用于选择需要进行通信的从设备。I2C 主机是通过发送从机设备地址来选择需要进行通信的从机
2022-03-28 11:02:30
2728
原创 i2c总线之通信原理及linux驱动中读写时序的实现
一、I2C简介I2C使用两条线在主控制器和从机之间通信,SCL(串行时钟线)和SDA(串行数据线),这两条线需接5~10欧上拉电阻,总线空闲空闲时,SCL和SDA处于高电平,I2C总线标准模式速度可以达到100K/S,快速模式可以达到400K/S。一个I2C总线可以挂多个I2C从设备,通过I2C器件地址去识别不同的设备,如图二、I2C通信原理1.起始位2.停止位3.数据传输:I2C在数据传输时要保证SCL高电平期间,SDA数据稳定,因此SDA上数据变化只能SCL低电平期间发生,如图4.
2022-03-18 17:56:00
1874
原创 Linux企业级负载集群之Nginx配置详解二
一、location详解在server中location字段使用语法规则location [ = | ~ | ~* | ^~] uri { ... }#匹配优先级location优先级:(location =) > (location ^~ 路径) > (location ~,~* 正则顺序) > (location 完整路径) > (location 部分起始路径) > (/)=:精确匹配#精确匹配/usr/share/nginx/images/
2022-02-01 18:05:54
2532
原创 Linux企业级负载集群之LVS-TUN模式配置及实现
一、LVS简介1.LVS-TUN工作原理2.TUN模式特点:RIP和DIP可以不处于同一物理网络中,RS的网关一般不能指向DIP,且RIP可以和公网通信。集群节点可以跨互联网实现。RealServer的tun接口上需要配置VIP地址,以便接收director转发过来的数据包,以及作为响应的报文源IP不支持端口映射二、LVS-TUN模式实例1.实验平台Client:192.168.0.6/24 GW:192.168.0.10 Router: eth0:仅主机,192.168.0.10/
2022-01-29 22:25:27
2065
原创 Linux企业级负载集群之LVS-DR模式配置及实现
一、DR模式概念1.Direct Routing(直接路由),LVS默认模式,应用最广泛,通过为请求报文重新封装一个MAC首部进行转发,源MAC是DIP所在的接口的MAC,目标MAC是某挑选出的RS的RIP所在接口的MAC地址;源IP/PORT,以及目标IP/PORT均保持不变2.DR模式特点Director和各RS都配置有VIP,解决地址冲突的方式有三种:(1) 在前端网关做静态绑定(2) 在各RS使用arptables(3) 在各RS修改内核参数,来限制arp响应和通告的级别,arp_ig
2022-01-29 16:33:47
1579
原创 Linux企业级负载集群之LVS简介和NAT模式配置及实现
一、LVS简介1.LVS(Linux Virtual Server),负载调度器,内核集成2.LVS体系结构LVS架构的服务器集群系统有三个部分组成:Loader Balancer(负载均衡层),Server Array(中间的服务器群组层),Shared Storage(数据共享存储层)。3.LVS工作原理当用户访问 www.sina.com.cn 时,用户数据通过层层网络,最后通过交换机进入LVS服务器网卡,并进入内核网络层。进入PREROUTING后经过路由查找,确定访问的目的VIP是
2022-01-29 11:51:25
2352
原创 Linux网络安全之网络防火墙NAT原理简析
一、网络防火墙基本架构二、NAT表(网络地址转换)1.概念:将内网IP翻译成外网IP的技术,支持PREROUTING,INPUT,OUTPUT,POSTROUTING四个链。2.NAT实现分为下面类型SNAT:内网访问外部网络时,将内网地址转换成本地网络中特定的公网地址,再使用该公网地址,访问外部网络,这是请求报文过程,响应报文即外部网络将数据传送到本地网络特定的公网IP,再转换成本地内网IP,进而应答内网对应的服务器IP。请求阶段,将内网的源地址转换成了本地的特定公网IP(端口号不冲突即可),进
2022-01-24 17:54:09
4115
原创 Linux网络安全原理之Linux防火墙工具iptables
一、基础的概念性东西,我就不再赘述了点击这里参考网址,netfilter/iptables全攻略二、iptables用法说明iptables [-t table] SUBCOMMAND chain [-m matchname [per-match-options]] -j targetname [per-target-options]1.[-t table]:指定表raw, mangle, nat, [filter]默认2.SUBCOMMAND:子命令 ,定义如何对规则进行管理链管理类-N
2022-01-23 17:58:11
3501
原创 Linux企业级服务之http协议基础
一、http请求访问过程1.建立连接2.接收请求:(Web I/O)模型单进程I/O模型:启动一个进程处理用户请求,而且一次只处理一个,多个请求被串行响应多进程I/O模型:并行启动多个进程,每个进程响应一个连接请求,eg:APACHE复用I/O结构:启动一个进程,同时响应N个连接请求复用的多进程I/O模型:启动M个进程,每个进程响应N个连接请求,同时接收M*N个请求3.处理请求对请求报文进行解析,常用请求Method: GET、POST、HEAD、PUT、DELETE、TRACE、OPT
2022-01-22 17:56:29
1225
原创 Linux企业级服务之http基础配置*.conf
一、httpd常见配置/etc/httpd/conf/httpd.conf#检查/etc/httpd/conf/httpd.conf语法httpd -t#查看静态编译模块的命令httpd -l#查看静态编译及动态装载的模块httpd -M##指定加载模块配置文件ServerRoot "/etc/httpd"#包含other配置文件Include conf.modules.d/*.conf#当无匹配文件时,include会报错,IncludeOptional会忽略错误Include
2022-01-21 17:43:01
1285
1
原创 Linux企业级服务之NFS共享存储的LAMP架构
一、实验平台1.在MySQL服务器上配置yum -y install mysqlsystemctl enable --now mysql#进入数据库mysql#创建数据表create database wordpress;create user wdpress@'10.0.0.%' identified by '654321';2.在NFS服务器上配置mkdir -pv ~/data/nfs_pathchmod 777 ~/data/nfs_pathtouch ~/data/nf
2022-01-18 20:44:14
1712
原创 Linux企业级服务之NFS共享服务的实现
一、NFS原理和基础配置,可以参考脚本之家的详细介绍。二、NFS共享服务的实现实验平台:NFS服务器10.0.0.153NFS客户端10.0.0.1541.NFS服务器配置yum -y install nfs-utils rpcbindsystemctl enable --now nfs-server.service#新建共享目录并赋权限mkdir /root/data/nfschmod 777 /root/data/nfs2.修改NFS配置文件/etc/exports#格式:/
2022-01-17 18:11:02
459
原创 Linux企业级服务之实现基于mysql验证的vsftpd虚拟用户
一、实验平台二、实验步骤1.在数据库服务器上安装mysql并启动服务yum -y install mariadb-serversystemctl enable --now mariadb2.建立存储虚拟用户的数据库和表3.创建连接的数据库用户4.在ftp服务器上安装vsftpd和pam模块(源码编译)yum -y install vsftpd#下载并解压pam源码包wget http://prdownloads.sourceforge.net/pam-mysql/pam_m
2022-01-16 18:06:56
679
原创 Linux企业级服务之FTP文件传输协议基础
一、FTP原理简述1.传输方式:ascii传输模式和二进制数据传输模式。2.双通道协议:命令和数据连接3.ftp支持的两种模式:相对于ftp服务端来说,分为主动(Active)模式和被动(PASV)模式。主动模式:服务器主动连接 命令(控制):客户端:随机port —> 服务器:21/tcp
2022-01-15 17:00:13
351
原创 Linux企业级服务之实现DNS子域服务器
一、DNS父域和子域服务的实现实验要求DNS父域服务器:10.0.0.153DNS子域服务器:10.0.0.157DNS客户端:10.0.0.154实验过程DNS父域服务器,1.修改/var/named/codeammon.com.zone,我是在上一篇博文基础上修改的,增加子域字段shenzhen,实现DNS域名委派,更改版本号(serial),同步到从服务器@ IN SOA master 123456.qq.com. (
2022-01-11 17:33:55
993
原创 Linux企业级服务之实现DNS反向解析服务和DNS从服务器的搭建
一、DNS反向解析服务的实现实验要求DNS服务端:10.0.0.153DNS客户端:10.0.0.154服务器:10.0.0.11.修改/etc/named.rfc1912.zones,按照格式添加内容zone "0.0.10.in-addr.arpa" IN { type master; file "10.0.0.zone"; allow-update { none; };
2022-01-10 23:17:19
207
原创 Linux企业级服务之DNS基础配置和正向解析服务的实现
一、DNS服务基础配置实现私有互联网访问实验要求DNS服务端:10.0.0.153DNS客户端:10.0.0.154实验过程DNS服务端:10.0.0.1531.dns软件bind和测试工具bind-utils的安装yum -y install bind bind-utils#测试工具常用命令dig,host,nslookup,rndc#rndc reload#rndc flush #清除DNS缓存2.修改dns配置文件/etc/named.conf#去掉listen-on
2022-01-10 17:31:47
639
原创 Linux企业级常用服务之DNS简述和原理
一、什么是DNS?DNS:域名系统,应用层协议,是互联网的一项服务。用于TCP/IP网络,将名称转化(解析)为IP地址,例如,将我们访问x.acme.com,通过DNS查出它的IP是38.25.63.10,本地名称解析配置文件:hostsLinux:/etc/hostswindows:C:\Windows\System32\drivers\etc\hosts# For example:## 102.54.94.97 rhino.acme.com # source se
2022-01-08 21:15:19
681
原创 TCP/IP入门之网络分层模型
一、TCP和UDP的区别1.UDP是简单的面向数据报的运输层协议,TCP是提供面向连接的、可靠的字节流服务2.UDP不提供可靠性,它把应用程序给IP层的数据发送出去,但并不保证它们能到达目的地;而TCP则通过下列方式提供可靠性:应用程序被分割成TCP认为最适合发送的数据块,UDP则是应用程序产生的数据报长度将保持不变,若超过网络的MTU,则对IP数据报进行分片TCP协议中的三次握手和四次挥手3.UDP的检验和是可选的,而TCP的检验和是必需的二、TCP三次握手,四次挥手,参考博文三、nm
2021-12-19 23:00:17
1230
原创 linux网络设备驱动之dm9000驱动源码框架解析
一、linux网络设备驱动结构1.linux网络设备驱动四个层次,1)网络协议接口层:向网络层协议提供统一的数据包收发接口,不论上层协议是ARP,还是IP,都通过dev_queue_xmit()函数发送数据,并通过netif_rx()函数接收数据。这一层的存在使得上层协议独立于具体的设备。2)网络设备接口层:向协议接口层提供统一的用于描述具体网络设备属性和操作的结构体net_device,该结构体是设备驱动功能层中各函数的容器。实际上,网络设备接口层从宏观上规划了具体操作硬件的设备驱动功能层的结构。
2021-12-17 11:04:47
1008
原创 今天偶遇win10的CTRL+c和CTRL+v,失灵。不知道为什么,也试验了各种帖子什么clip不行。发现有一个简单粗暴的方法
win10此电脑右键管理设备管理器找到键盘右键,卸载设备(都卸了)重启电脑就ok了。
2021-12-08 18:02:15
10029
6
原创 RGB转CMY最简单的方法
网上看了各家的做法,都比较杂,小可发出这个,有不足或者错误之处还请大家多多指教1、下载matlab2020b,2、程序:P=imread(‘C:\Users\19681\Desktop\shuiguo.jpg’);cmy=imcomplement§;C=cmy(:,:,1);M=cmy(:,:,2);Y=cmy(:,:,3);subplot(2,3,1);imshow©;title(‘C’);subplot(2,3,2);imshow(M);title(‘M’);subplot(2,3,
2021-11-08 20:44:08
5012
原创 再读《深入理解linux内核》-----阅读目的
此次阅读,是因为在日常的开发工作中,用到了书中的内容,第一次阅读的时候,感觉晦涩难懂,且没有结合实例,只是了解了一些概念性东西,脑子里有了些印象,时隔一年,再次阅读,有了不同的感受、不同的认识和新的理解,结合工作学习中遇到的问题,再结合书中所介绍的相关知识,使自己印象更为深刻,俗话说,好记性不如烂笔头,所以把自己用到的知识整理记录下来,以便日后查漏补缺。...
2021-11-01 10:06:48
106
原创 再读《深入理解linux内核》-----内核同步常用方法简介
一、原子操作“读—修改—写”类型,访问同一存储器单元两次,第一次读原值,第二次写新值。当运行在两个CPU上的两个内核控制路径同时“读—修改—写”同一存储器单元,避免交错的“读—修改—写”,从而导致结果不对,使用原子操作,linux内核提供了一个专门的atomic_t类型(原子访问计数器)和一些专门的函数和宏。1.原子整型操作2.原子位操作二、自旋锁1.当一个线程获取了锁之后,其他试图获取这个锁的线程一直在循环等待获取这个锁,直至锁重新可用。由于线程是在一直循环的获取这个锁,所以会造成CPU处理
2021-10-29 16:22:35
131
转载 android sensor架构和原理分析---转载做学习记录
原文地址请点击此处 本文主要描述了在android2.3平台G-sensor相关软硬件的体系架构和实现原理,按照Applications、Framework、HAL、Driver和Hardware五大层次分别介绍。 1.系统架构 (Architecture) 1.1 Android体系架构图 1.2 Sensor子系统架构图 · Applicati
2021-10-19 16:10:42
893
原创 tmd26353接近传感器之i2c驱动RK标准sensor框架,HAL层无需修改
一、dts配置ps_tmd26353: tmd26353@39 { compatible = "ps_tmd26353"; reg = <0x39>; type = <SENSOR_TYPE_PROXIMITY>; pinctrl-names = "default"; //pinctrl-0 = <&gpio2_c3>; irq-gpio = <&a
2021-10-19 10:10:38
1155
原创 tmd26353接近传感器之i2c驱动改进,只做思路记录,代码未验证
#include <linux/kernel.h>#include <linux/module.h>#include <linux/i2c.h>#include <linux/err.h>#include <linux/of_device.h>#include <linux/iio/iio.h>#include <linux/iio/sysfs.h>#include <linux/iio/trigger
2021-10-19 09:55:12
358
原创 RK平台的sensor框架HAL层兼容其他HAL层so库
一、首先确定各自sensor框架调试正常,各自平台均可正常显示数据二、合并编译多个HAL层so库1.打开/hardware/libhardware/modules/sensors/Android.mk将USE_SENSOR_MULTI_HAL宏打开,USE_SENSOR_MULTI_HAL := true2.编写hals.conf,添加要编译的两个库名字,源码目录放在/device/rockchip/rkxx/,目的是将其从该目录拷贝到/system/stc/sensors/,hal.conf文件内
2021-10-19 09:41:38
1564
2
原创 linux中IIO子系统------IIO数据结构部分解析1
一、kernel/include/linux/iio/iio.h1.iio_dev结构体struct iio_dev { int id; struct module *driver_module; int modes;//表示设备支持的不同操作模式 int currentmode;//表示设备实际使用的模式 struct device dev;//表示IIO设备所依赖的struct设备(根据Linux设备型号) struct iio_event_interface
2021-09-04 15:20:31
907
原创 Android下模块编译linux driver,不在android源码中编译
一、实现思路新建驱动源码目录,编写Makefile,将android SDK中kernel目录链接进来即可二、源码分析//driver目录~/linux_driver/isl29501///android sdk的kernel目录~/3399_master/kernel/1.在~/linux_driver/isl29501/下编写Makefileobj-m := isl29501.oKERNELDIR := ~/3399_master/kernelCURRENT_PATH := $(s
2021-09-03 15:25:53
294
原创 [Android10]JNI添加及编译为so库,在系统里实现的例子
一、实现思路1.创建一个可供java 代码调用的本地函数2.将需要实现本地实现的java代码加上native声明3.使用javac -h xxx1 xxx2 编译java类,xxx1是生成.h文件的目录(若无此目录,则自动新建),xxx2是需要编译的java源文件,同目录下生成xx.class,xx是类名4.新建cpp文件,实现生成的.h中的native方法5.编写Android.mk,使用mm命令,编译该jni模块为so库6.在java类中加载此so库二、源码如下sdk/device/roc
2021-09-02 16:49:13
653
原创 tmd26353接近传感器之i2c驱动编写
一、tmd26353驱动编写思路:基于i2c设备驱动框架,首先参考原理图配置dts设备树,挂载在哪个i2c总线下面,阅读规格书去确定此器件的器件地址是0x39(也可以使用i2ctools查看器件挂在情况,下篇讲解);测试i2c通讯成功与否,可以去读DEVICE_ID这个寄存器值,然后初始化tmd26353,最后在线程里读接近传感器ADC的值(之前编写是使用中断去获取ADC值,查阅资料发现,在内核里中断处理程序里不能操作I2C操作接口,因为操作I2C_transfer时transfer内部也会有中断产生的。
2021-09-01 16:45:46
484
原创 Android.mk编写规则及部分变量使用说明
一、通过Android.mk添加一个编译模块到系统中的顺序如下:LOCAL_PATH;CLEAR_VARS;LOCAL_SRC_FILES;LOCAL_CFLAGS (可选);LOCAL_MODULE;LOCAL_STATIC LIBRARIES (可选);BUILD_HOST_EXECUTABLE/BUILD_EXECUTABLE等二、Android.mk中常用的重要变量解析...
2021-09-01 15:05:04
238
原创 RK3288_Android7.1色温固化的部分移植问题
一、编译apk源码后,点击OUTPUT IMAGE,apk闪退未依赖libcompute_color-jni.so库和libsave_baseparameter_util.so库解决办法进入apk源码jni文件夹,mm -B编译生成so库二、调节好参数后OUTPUT IMAGE fail这种情况是没找到baseparameter分区,路径/dev/block/platform/ff0f0000.dwmmc/by-name/baseparameter解决办法1.确定在/device/rockc
2021-05-11 18:38:42
916
转载 RK3288[android 7.1]调试笔记 LVDS屏调试---转载
RK的LVDS屏调试,主要是配置正确LVDS的dts,配置正确基本都是可以点亮的1 首先拿到LVDS屏厂商给的屏规格书,规格书有用的信息就是时序参数1.1下面就是我拿到规格书的时序参数表从这个时序表中,我们可以得知时钟dclk 频率: clock-frequency =65MHZ水平有效像素:Hactive=1024垂直有效像素:Vactive=768水平总周期 =1344hback-porch/hfront-porch/hsync-len:水平同步信号vback-porch/vfron
2021-05-06 16:34:11
2924
1
Qt实现思维导图功能 代码有偿获取
2024-07-16
TA创建的收藏夹 TA关注的收藏夹
TA关注的人