自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 网络包简单分析

4位首部长度的数值是以4字节为单位的,最小值为5,也就是说首部长度最小是4x5 = 20字节。

2023-04-04 16:46:48 165 1

原创 PON无源光网络的接入技术-EPON和GPON特点

点对多点的光纤传输和接入技术下行采用广播方式、上行采用时分多址方式动态带宽分配(DBA)组网拓扑:可以灵活地组成树型、星型、总线型等节省光缆资源(单纤)、带宽资源共享、节省机房投资、设备安全性高、建网速度快、综合建网成本低。EPON同传统以太网点对点组网对比。

2023-03-30 16:45:47 830

原创 为电脑添加host

搜索win10 host文件地址,如下:文件路径:C:\WINDOWS\system32\drivers\etc\hosts 以管理员身份运行记事本,再用记事本打开hosts文件才能保存。复制路径 C:\WINDOWS\system32\drivers\etc\, 在对应文件夹下打开,找到hosts文件,打开,将需要配置的内容,回车后放在文件最后,保存。

2023-03-30 15:27:40 2672

原创 网络嗅探工具

常用的工具有wireshark和tcpdump.网络嗅探: 其实就是通过使用网络嗅探工具抓包, 分析和研究,4 指定源主机或者目的主机: src dst。5 抓包时指定端口:port。2 将抓到的包保存到文件中。3 指定主机--host。6 抓包的时候指定协议。

2023-03-12 14:48:01 434

原创 adb命令的使用

应用中 android:persistent=“true”,true 就不让 force-stop,当然进程也就存在。那么如果想强制杀可以这样做:找到应用的进程id,然后通过命令 kill -9 [进程id] 可以强制杀进程。防止抓取多余的日志,保证日志抓取的准确性,方便分析定位问题。注:设备重启后,设置的参数值会失效;但重启应用不会失效。更多相关命令请阅读 adb shell top 命令。组合键: ctrl + C 可以停止抓包。建议抓取日志前,执行一遍该命令。注意:有的时候不一定能成功。

2023-02-28 16:58:36 779

原创 tcpdump抓包

注意这里D盘下的test1文件夹是真实存在的 这个capture.pcap是要导出的文件名不是真实已经存在的 这个命令执行完后就存在了 即你导出的文件。步骤6、通过命令./tcpdump -p -vv -s 0 -w /sdcard/capture.pcap 开始抓包。adb push “此处用鼠标拖入下载的文件” /data/local/tcpdump。步骤4、执行chmod 6755 /data/local/tcpdump 获取操作权限。步骤8、用adb命令导出抓好的包 利用工具分析即可。

2023-02-27 16:19:26 1885

原创 c++笔记---02

1 设计一个类,求圆的周长1.1 class + 类名 { 成员变量 成员函数 }1.2 公共权限 public1.3 设计成员属性1.3.1 半径 int m_R1.4 设计成员函数1.4.1 获取圆周长 int calculateZC(){}1.4.2 获取圆半径 int getR()1.4.3 设置圆半径 void setR()1.5 通过类创建对象过程 称为 实例化对象2 内联函数2.1 内联函数引出—宏缺陷2.1.1 宏缺陷:2.1.1.1 必须要

2022-12-06 00:37:57 254

原创 C++笔记---01

**1 C++概述**1.1 C++两大编程思想:面向对象、泛型编程1.2 移植性和标准1.2.1 ANSI 在1998制定出C++第一套标准**2 c++初识**2.1 引入头文件 #include 标准输入输出流2.2 使用标准命名空间 using namespace std;2.3 标准输出流对象2.4 面向对象三大特性:封装、继承、多态

2022-12-01 01:27:50 653

转载 S3C2440中的UART

UART(universal asynchronous receive transmitter)通用异步收发器,用来收发串行数据,以全双工的形式进行通信,UART使用的电平标准是TTL/CMOS,一帧数据通常包含开始位、数据位、校验位、停止位,UART传输的双方要统一波特率。开始位:UART空闲时,TxD数据线是高电平的(因此需要给相应引脚上拉引脚),将要发送数据时,TxD数据线会以拉低电平作为起始信号,所以“0”电平就相当于开始位。数据发送、接收完成,可以利用中断进行处理,也可以不断查询寄存器标志位。

2022-11-21 21:14:04 395

原创 掌握ARM芯片时钟体系

ARM芯片时钟体系,JZ2440

2022-11-16 00:43:45 358

转载 gcc编译的四个过程详解

在linux中,预处理后的文件以.i为后缀名,这个过程只激活预处理,不生成文件,因此你需要把它重定向到一个输出文件里。执行命令gcc main.o,默认生成a.out,这里我指定的是生成main执行文件,main与a.out是同文件不同名。这里我使用测试文件main.c来讲解gcc编译的四个过程。2.将预处理后的文件转换成汇编语言,生成.s文件。3.汇编变为目标代码(机器代码),生成.o的文件。生成main.s文件,用编辑器打开查看。1.预处理,生成.i的文件。查看main.i文件。

2022-11-15 14:51:41 982

原创 主机、Ubuntu、开发板jz2440三者的ping问题

3、设置三者的IP处于同网段:a.Windows网卡A的IP;c.开发板IP:u-boot的ip与Linux的ip不同步,需要重新设 置ip;6.开发板启动到Linux时,用ifconfig eth0 xxx.xx.xx.xx设置IP。7.开发板运行于U-boot时的ip,启动到Linux时就无效了,在Linux下需要重设IP。5.开发板运行与u-boot时,用set ipaddr xxx.xx.xx.xx设置IP。2.Windows、VMWare上运行的ubuntu、开发板的IP,要设置为同一网段。

2022-11-02 01:26:17 379

原创 JZ2440ARM裸机学习笔记

2、开发板设置为nor启动,上电后马上在串口输入空格键,使板子进入UBOOT,而不是启动板子上的内核。7、烧写完后,op/eop--------开发板之间的排线未断开,导致程序无法运行。1、使用op/eop烧写uboot到nor/nand,设置为nor/nand启动。3、连接PC------开发板的usb device口,安装驱动。3、连接PC------开发板的usb device口,安装驱动。7、断电,设为nand启动,上电,运行nand上烧好的程序。4、下载内核:在UBOOT的串口菜单中输入k。

2022-10-31 23:49:29 469

原创 Makefile的使用

用这种方式定义的变量,会在变量的定义点,按照被引用的变量的当前值进行展开这种定义变量的方式更适合在大的编程项目中使用,因为它更像我们一般的编程语言。(LOADLIBES) $(LDLIBS)”,这个规则对于只有一个源文件的工程有效,同时也对多个Object文件(由不同的源文件生成)的也有效。make只会在当前的目录中去找寻依赖文件和目标文件。$+ 所有的依赖文件,以空格分开,并以出现的先后为序,可能 包含重复的依赖文件。1) 在一些大的工程中,有大量的源文件,我们通常的做法是把这许多的源文件分类,

2022-10-23 00:27:42 6505

原创 GDB调试工具

根据每次调试器的提示信息来做响应的改变,以便修正某个错误引起的问题。首先使用gcc对test.c进行编译,注意一定要加上选项‘-g’只有在代码处于“运行”或“暂停”状态时才能查看变量值。运行被调试程序,设置所有的能影响该程序的参数和变量。当被调试程序停止时,让开发工程师检查发生了什么。保证被调试程序在指定的条件下停止运行。在gcc编译选项中一定要加入‘-g’。(1) 调试器--Gdb调试流程。设置断点后程序在指定行之前停止。(3)Gdb的使用切记点。(2) Gdb调试流程。

2022-10-22 02:29:54 218

原创 5 shell脚本-函数

check_user $uname # 调用函数, 并传递参数uname。check_user( ) { #查找已登录的指定用户。(1)全局作用域:在脚本的其他任何地方都能够访问该变量。(2)局部作用域:只能在声明变量的作用域内访问。return 1 #找到指定用户。函数的所有标准输出都传递给了主程序的变量。【1】shell函数调用。获取函数的返回的状态。【2】函数变量作用域。

2022-10-22 01:57:54 90

原创 4 shell脚本-循环语句

循环次数由单词表中的单词数确定. 命令表中的命令可以是一条, 也可以是由分号或换行符分开的多条。(1)while语句首先测试其后的命令或表达式的值,如果为真,就执行一次循环体中的命令,2)变量依次取单词表中的各个单词, 每取一次单词, 就执行一次循环体中的命令.然后再测试该命令或表达式的值,执行循环体,直到该命令或表达式为假时退出循环。1)当循环次数已知或确定时,使用for循环语句来多次执行一条或一组命令。(2)while语句的退出状态为命令表中被执行的最后一条命令的退出状态。(1)循环语句for。

2022-10-22 01:33:09 407

原创 3 shell脚本-分支语句

主要包括:条件测试语句(两路分支)、多路分支语句、循环语句、循环控制语句和后台执行语句等。shell程序if1.sh(测试命令行参数是否为已存在的文件或目录)。-s name 测试name 文件是否存在且其长度不为0。-x name 测试name 文件是否存在且为可执行。-r name 测试name 文件是否存在且为可读。-w name 测试name 文件是否存在且为可写。-d name 测试name 是否为一个目录。-f name 测试name 是否为普通文件。

2022-10-22 00:40:01 190

原创 2 shell脚本-功能语句

shell语句包括三类:说明性语句、功能性语句和结构性语句。如果执行read语句时标准输入无数据, 则程序在此停留等侯, 直到数据的到来或被终止运行。注释行可以出现在程序中的任何位置,既可以单独占用一行, 也可以接在执行语句的后面.# ------> 告诉OS用哪种类型的shell来解释执行该程序。条件测试语句、多路分支语句、循环语句、循环控制语句等。-n s1 测试s1 字符串的长度是否不为0。-z s1 测试s1 字符串的长度是否为0。a -ne b 测试a 与b 是否不相等。

2022-10-21 19:21:56 161

原创 1 shell脚本-变量

step3. 执行shell文件 两种执行方式: ./文件名 bash 文件名。TERM:终端类型,常用的有vt100,ansi,vt200,xterm等。step1: 建立shell文件 (可用任何建立文本文件的方法)Step2: 赋予执行权限: (初始文本文件无执行权限)$@ 包含所有命令行参数:“$1,$2,……$* 包含所有命令行参数:“$1,$2,……1) 在shell编程中通常使用全大写变量,方便识别。PS1,PS2:默认提示符($)及换行提示符(>)

2022-10-21 01:03:45 130

原创 Linux内核的组成

系统调用作为用户级与内核级交互方式,分为2部分:与文件子系统的交互和与进程控制子系统的交互。Linux内核主要由5个子系统组成:进程调度、内存管理、虚拟文件系统、进程间通信和网络接口。包括:分配文件空间、管理空闲空间、控制对文件的存取以及为用户检索数据。4.进程间通信(IPC):用于支持多种进程间的信息交换。2.内存管理(MM):用于确保所有进程能够安全地共享机器主内存区。1.进程调度(SCHED):用来负责控制进程对CPU资源的使用。进程控制子系统负责进程同步、进程间通信、进程调度和存储管理。

2022-10-18 15:19:48 2453

原创 基于树莓派的智能家居项目整理

智能家居用到的硬件有:树莓派4B、LD3320语音识别模块、pi 摄像头、继电器组、火焰传感器、蜂鸣器、电磁锁采用了简单工厂模式的一个设计方式。稳定,拓展性更强,在C语言中,因为没有接口、类这一说法,所以这里采用了结构体来“等效替换”。有四个灯,所以我创建了四个灯控制.c程序。每一个程序文件中,都有一个设备结构体,每个程序文件的函数实现方法不同,当有新设备进入只需要在创建一个.c文件,改变函数实现方法即可。

2022-10-15 00:49:02 6396 1

原创 人脸识别功能实现

1、库下载https://github.com/curl/curl/releases/tag/curl-7_71_1。在翔云平台注册并购买人脸识别服务,将key和secret复制过来放入代码中,通过https协议与翔云建立连接。6、安装成功后用如下指令编译人脸识别代码,需要提前将比对图片xx.jpg格式的图片放到文件夹下。下载openssl-1.1.1a.tar.gz(我传到我的资源里,可到资源里免费下载)3、需要安装可支持https的openLLS。7、./a.out运行,运行结果如下。

2022-10-08 20:52:56 538

原创 libcurl库介绍

libcurl库的安装步凑。libCurl需要读取数据传递给远程主机时将调用CURLOPT_READFUNCTION指定的函数,函数原型中的stream指针来源。该函数是curl中非常重要的函数,curl所有设置都是在该函数中完成的,该函数的设置选项众多,注意本节的阐述的只是部分常见选项。

2022-10-07 23:18:24 763

原创 https协议

http协议是明文传输的,因此很容易被截取和解析,泄漏个人数据。https协议是在http和tcp之间多添加了一层,进行身份验证和数据加密。

2022-10-07 23:03:33 330

原创 http协议

​http协议是建立在TCP/IP协议之上应用层协议,默认端口为80,8080http协议的的特点是无状态,无连接利用抓包工具httpwatch可以获取报文http协议的报文传输的是ASCII码,在TCP/IP协议之上,主要主要分为三部分请求行第一行,包含三个信息:请求方式,url,http协议版本GET 请求POST 请求1、url可见性:get,参数url可见;post,url参数不可见2、数据传输上:get,通过拼接url进行传递参数;post,通过body体传输参数。

2022-10-07 22:38:58 188

原创 socket ,tcp,http三者的区别

socket ,tcp,http三者的区别及其原理

2022-10-07 21:27:22 147

原创 三次握手和四次挥手

三次握手:序列号seq:占4个字节,用来标记数据段的顺序,TCP把连接中发送的所有数据字节都编上一个序号,第一个字节的编号由本地随机产生;给字节编上序号后,就给每一个报文段指派一个序号;序列号seq就是这个报文段中的第一个字节的数据编号。确认号ack:占4个字节,期待收到对方下一个报文段的第一个数据字节的序号;序列号表示报文段携带数据的第一个字节的编号;而确认号指的是期望接收到下一个字节的编号;因此当前报文段最后一个字节的编号+1即为确认号。确认ACK:占1位,仅当ACK=1时,确认号字段才有效。

2022-10-07 21:25:17 80

原创 树莓派mjpg-streamer方案的实现监控功能

在浏览器输入 http://IP地址:8080,回车 显示如下页面,点击页面左侧,Stream栏,显示监视画面。MJPG只是多个JPEG图片的组合,它补考虑前后两帧的数据变化,总是传输一帧帧图像:传输带宽要求高。input_uvc.so是usb摄像头,input_raspicam.so是pi摄像头。H264等视频格式,会考虑前后两帧的数据变化,只传输变化的数据:传输带宽要求低。很多摄像头本身就支持JPEG,MJPG,所以处理器不要太多处理。JPEG是静态图片的编码格式,MJPG是动态的视频编码格式。

2022-10-07 16:51:55 183

原创 工厂模式的使用及功能验证

智能家居代码架构—简单工厂模式代码设计经验的总结,稳定,拓展性更强。一系列编程思想工厂模式的使用1. 什么是类和对象类是一种用户定义的引用数据类型,也称类类型。结构体对象: 类的一种具象2. 什么是工厂模式工厂模式使用demo增加功能需求的时候,只需要添加一个文件,不会影响其他功能,更加稳定头文件animal.h主函数mainPro.c功能模块1 cat.c功能模块

2022-10-03 01:56:40 683

原创 ls -l的编程实现

用C语言编写一个简单的“Linux”文件浏览器,用于读取目录下所有文件信息,显示文件名、文件大小、文件属性。

2022-10-01 21:18:13 713 2

原创 4.树莓派IO口驱动

树莓派IO口驱动,根据芯片手册,需要操作三个寄存器。

2022-10-01 01:46:48 637

原创 3.驱动代码编译测试

6.将pindriver.ko 和编译得到的可执行文件pintest发送到树莓派中。9.sudo chmod 666 /dev/pin4 改为权限,所有用户均可读写。uname -r查看内核版本是否一致,不一致重新编译内核并更新到树莓派中。7.sudo insmod pin4driver.ko 装载驱动。10.sudo rmmod pindriver 卸载驱动。3.修改Makefile,告诉编译器,要编译该驱动文件。2.将驱动代码拷贝到下面路径。./pintest运行。驱动代码编译测试成功。

2022-09-30 16:21:31 138

原创 2.驱动框架

基于框架编写驱动代码的驱动框架。

2022-09-29 23:33:48 97

原创 1.驱动的认知

关于厂家提供的wiringPi,有的厂家不一定提供,那么开发者必须要学会自己开发。fd = open /read/write("/dev/pin4",权限);操作寄存器来驱动IO口。驱动插入链表的顺序由设备号检索。2.设备号:主设备号、次设备号。调用驱动程序,用户空间去open。驱动链表:管理所有设备的驱动。编写完驱动程序,加载到内核。

2022-09-29 22:45:10 304

原创 linux文件系统

文件不管:vfs就是对各种文件系统的一个抽象,它为各种文件系统提供了一个通用的接口,C(装系统的位置)也可以随意在C盘存放文件. D盘(用户随意发挥)Linux: 按照功能来分区,每个分区严格存放文件(开发者)以上说的方法:就是文件管理系统(程序),简称文件系统。常规认知: 根目录,不是分区,和windows不同。windows: 随意(面向普通用户PC),目录即分区。2. 文件系统(文件管理系统的方法)的种类有哪些?

2022-09-29 20:31:18 79

原创 sqlite3数据库

SQLite的源码是C语言,其源代码完全开发,SQLite第一个Alpha版本诞生于2000年5月,他是一个轻量级的。用C语言来操作sqlite3数据库

2022-09-29 18:03:12 1287

原创 C语言复习笔记

C语言复习笔记。sizeof与strlen的区别。无类型指针,内存泄漏解决方法。typedef关键字。函数和数组的综合应用。结构体指针玩学生成绩。

2022-09-25 16:28:39 270

原创 树莓派Linux内核编译没有打包工具mkknlimg解决办法

没有打包工具mkknlimg,尝试了很多方法都不行,后来发现打包工具mkknlimg被淘汰了,我重新下载源码Linux-rpi-4.14.y.zip,unzip解压,在文件夹scripts里找到打包工具mkknlimg,将该打包工具拷贝到linux-rpi-5.4.y/scripts。编译成功后,看到源码树目录多了vmlinux,失败则无此文件。成功后,目标zImage镜像arch/arm/boot底下。打包zImage成树莓派可用的xxx.img。

2022-09-17 21:15:50 939

原创 树莓派高阶开发

树莓派高阶开发,linux内核源码树,树莓派Linux源码配置,树莓派Linux内核编译

2022-09-16 15:46:48 259

工厂模式的使用与测试,可做demo使用

工厂模式的使用与测试,可做demo使用

2022-10-03

树莓派4b的IO口驱动代码

树莓派4b的IO口驱动代码,可做字符驱动框架使用

2022-10-01

基于框架编写驱动代码的驱动框架字符驱动

基于框架编写驱动代码的驱动框架

2022-09-29

空空如也

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

TA关注的人

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