- 博客(43)
- 资源 (4)
- 问答 (3)
- 收藏
- 关注
原创 Socket,TCP,HTTP之间的区别,抄录
socket,tcp,http三者之间的区别和原理一. http、TCP/IP协议与socket之间的区别下面的图表试图显示不同的TCP/IP和其他的协议在最初OSI模型中的位置:7 应用层 例如HTTP、SMTP、SNMP、FTP、Telnet、SIP、SSH、NFS、RTSP、XMPP、Whois、ENRP6 表示层 例如XDR、ASN.1、SMB、AFP、NCP5 会话层 例如ASAP、TLS、SSH、ISO 8327 / CCITT X.225、RP
2021-08-19 15:53:53 171
原创 设备树笔记
一.设备树的引进1.1字符设备驱动的三种写法1.1.1怎么写设备驱动?看原理图1. 确定引脚:2. 看芯片手册:确定如何操作引脚 -写驱动程序(起封装作用,不用涉及硬件)分配一个结构体:file_operation设置结构体成员:open = led_open:把led引脚设置为输出引脚write = led_write :根据App传入的值,设置引脚状态注册(告诉内核,加入驱动链表):利用注册函数 regist_chrdev(主设备号,结构体,name)入口:出口1.
2021-08-19 15:52:08 231
原创 单片机积累
一.寄存器点灯1.1使能 GPIO 时钟1.2配置 GPIO 输入输出模式1.1.1输入模式浮空输入:输入浮空(GPIO_Mode_IN_FLOATING),不经过上拉下拉电阻,经过TTL施密特触发器(边沿转换电路),转换成上升沿或者下降沿,在储存在寄存器,供内部读取-输入上拉(GPIO_Mode_IPU),输入下拉(GPIO_Mode_IPD),顾名思义,经过上拉或下拉电阻,经过TTL施密特触发器(边沿转换电路),转换成上升沿或者下降沿,在储存在寄存器,供内部读。模拟输入(GPIO_Mo
2021-08-19 15:51:16 3179
原创 智能家居项目
一.项目分析1.1 实现的功能控制端支持客户端发送指令支持语音识别,发送指令外设端支持人脸识别开锁支持监控支持火灾报警支持所有的灯光控制支持窗帘和泳池灯的遥控支持电风扇,电视机,空调,小夜灯的遥控1.2硬件主控芯片:树莓派:优点:1. 支持串口,无线蓝牙,WiFi等多种通信方式2. GPIO的引脚比较多(大概可用的GPIO引脚有42个,可以满足我们的需求),可以编程自己配置驱动和引脚功能 3. 支持摄像头,可以用来实现监控和人脸识别解锁4. 可以远程登
2021-08-19 15:49:16 2235
原创 七层网络模型记忆点和理解,TCP/IP协议
一.OSI是什么七层模型,也称为OSI(Open System Interconnection)参考模型,是国际标准化组织(ISO)制定的一个用于计算机或通讯系统间互联的标准体系标准模型1 到 7 分别是:物理层 :建立、维护、断开物理连接。(由底层网络定义协议)。主要定义物理设备标准, 如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。数据链层:建立逻辑连接、进行硬件地址寻址、差错校验等功能。(由底层网络定义协议) SDLC、HDLC、PPP、STP、帧中继等
2021-08-19 15:47:43 445
原创 imx6ull开发板
一.编译1.1 版本说明操作系统:Ubuntu16.04 64 位版交叉工具链:arm-poky-linux-gnueabi-gcc 5.3.0Bootloader 版本:u-boot-2016.03内核版本:linux-4.1.15QT 版本:Qt 5.6.21.2 安装 SDK (包含交叉编译器)将 shell 脚本拷贝到任意目录(例如用户目录:/home/{username}/work)下,在该目录下执行sudo ./fsl-imx-x11-glibc-x86_64-met
2021-08-19 15:41:28 1041
原创 Git工具命令汇总
一.获取库git + clone + 地址二.上传文件追踪或暂存:git + add + 提交:git + commit + -m + git + commit + -a可以跳过暂存上传:git push三.查看状态直接:git status缩略查看:git status -s查看未暂存的修改:git diff查看已暂存的修改:git diff --cached四.忽略文件一般我们总会有些文件无需纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表。
2021-08-19 15:40:39 444
原创 Java泛型
一.泛型简介1.1问题引入如果需要产生多个对象,每个对象的逻辑完全一样,只是对象内的成员变量类型不一样,应该怎么做?1.2问题解决创建多个类文件,给每个类的成员对象,设定指定的数据类型- 缺点,这种方法会导致类的膨胀,重用性差-创建一个类文件,给这个类的成员变量设置Object数据类型缺点,编译时正常,但运行是可能会异常-泛型:创建一个类文件,class +类名,然后类文件中定义数据类型是用’T+变量名’,main函数使用时传入具体的数据类型。...
2021-07-16 21:04:43 98
原创 Java异常
一.异常的概念和分类1.1 什么是异常?所谓的异常是指,程序运行过程中,发生了一些不正常的事件。(如:除0溢出, 数组下标越界,所要读取的文件不存在)1.2异常导致的后果Java程序执行的过程中如出现异常事件,可以生成一个异常类对象,该异常对象封装了异常事件的信息,并将其提交给运行时的Java系统,这个过程称为抛出异常,不处理的话会直接导致程序中断。1.3如何防止程序中断设计良好的程序应该在程序异常发生时,提供处理这些异常的方法。使得程序不会因为异常的发生的阻断,或产生不可预见的结果
2021-07-15 23:40:13 72
原创 Java多态
一.多态的概念多态性是指同一个操作作用于某一类对象,可以有不同的解释,产生不同的执行结果1.1多态存在的三个必要条件需要存在继承和实现的关系同样的方法调用,执行不同的操作,运行不同的代码(重写)在运行时父类或接口的引用变量,可以实现其子类的对象1.2多态的作用多态通过做什么和怎么做,从一个角度将接口和实现进行分离多态消除了类型之间的耦合关系多态的存在提高了程序的拓展性和后期的可维护性二.对象的上下转型2.1概念由子类转型成父类,在继承图上是向上移动的,一般称为向上转型
2021-07-14 22:16:08 74
原创 Java抽象类,接口和内部类
一.抽象类1.1抽象类的概念和作用抽象类:1. Java中可以定义没有方法体的方法,该方法由子类具体实现2. 该没有方法体的方法我们称之为抽象方法,含有抽象方法的类,我们称之为抽象类、抽象方法的特点1. 只有方法头,没有方法体的方法称之为抽象方法2. 抽象方法用abtract来修饰3. 抽象方法代表一种,不确定的操作或行为4. 抽象方法不能被调用抽象类的特点1. 定义中含有抽象方法的类叫做抽象类2. 抽象类用abstruct来修饰3. 抽象类代表一种抽象的 对象类型4
2021-07-14 19:41:41 66
原创 Java封装
一.封装类及其使用1.1 概念将方法(函数指针)和字段(普通变量)包装到一个单元(类似结构体)中,单元以类的形式实现信息隐藏,隐藏对象的实现细节,不让外部直接访问到将数据和方法包装进类中,再加上具体实现的隐藏(访问修饰符),共同被称作封装,结果是一个同时带有特征和行为的数据类型定义类,定义其属性和方法的过程,称之为封装类。1.2 实例class Student{//封装一个类 int age; String name; double score; void introduc
2021-07-12 16:10:45 118
原创 Linux内核驱动 IO编写(树莓派BCM2835为例)
一.概念储备1.1微机总线地址,物理地址和虚拟地址总线地址:cpu 能够访问内存的范围物理地址:硬件的实际地址或绝对地址虚拟地址:逻辑地址(基于算法的,软件层面的,假地址),虚拟地址可以比物理地址大,当我们要运行的程序大于物理地址时,虚拟地址就起作用了,平时我们用到的地址,都是在说虚拟地址,物理地址会映射到虚拟地址。1.2树莓派的cpu型号以及底层架构树莓派3BBCM2835ARM-cotexA53架构1.3写驱动需要的东西电路图芯片手册...
2021-06-25 04:02:46 353 1
原创 寄存器相关积累
一.什么是寄存器寄存器的功能是存储二进制代码,它是由具有存储功能的触发器组合起来构成的。一个触发器可以存储1位二进制代码,故存放n位二进制代码的寄存器,需用n个触发器来构成。按照功能的不同,可将寄存器分为基本寄存器和移位寄存器两大类。基本寄存器只能并行送入数据,也只能并行输出。移位寄存器中的数据可以在移位脉冲作用下依次逐位右移或左移,数据既可以并行输入、并行输出,也可以串行输入、串行输出,还可以并行输入、串行输出,或串行输入、并行输出,十分灵活,用途也很广。二.并行和串行串行数据是指传输过程中各
2021-06-23 16:46:45 1734
原创 Linux底层驱动编译原理 ,编译过程 以及 装载(树莓派)
一.用户支配驱动工作的过程上层应用调用open,read,write等标准C库函数触发软中断:0x80 ,由用户态进入到内核态,发生系统调用系统调用syscall,文件子系统会调用相应的sysopen,sysread,syswrite,sysopen,sysread,syswrite根据设备号和设备名找到相应的驱动设备驱动根据会根据用户的输入调用自己的open,read,write,从而实现对硬件的控制二.驱动的框架一个驱动由设备名和和设备号组成的结构体,设备号又分为主设备号和次设备号
2021-06-22 23:16:24 508
原创 Linux内核编译
一.内核源码树Linux内核源码有上万个文件,有上千万多行的代码Linux有是一个开源的,支持多架构多平台的代码,内容庞大由于Linux内核源码的内容冗杂,所以在使用之前,需要裁剪出我们需要的内容,重新编译进入目标目录下,可以用tree查看源码数目录二.源码树目录结构2.1Linux内核源码的整体分布情况:现代的操作系统一般由进程管理、内存管理、文件系统、驱动程序和网络等组成。arch 目录:包括了所有和体系结构相关的核心代码。它下面的每一个子目录都代表一种Linux支持的体系结构,例
2021-06-22 16:28:19 130
原创 交叉编译——软连接和硬链接
软链接:实际上就是一个文本文件,包含了另一个文件的位置信息创建方法:ln -s 源文件 目标文件,在选定的位置生成一个文件镜像,不占用磁盘空间硬链接: 在你选定的位置上生成一个和源文件大小相同的文件创建方法:ln 源文件 目标文件在选定位置生成一个与源文件大小相同的文件,通过索引节点来连接到文件,多个文件名可以指向同一节点无论是软链接还是硬链接,文件改动都会同步变化(ln的作用),当硬链接所有链接都被删除,文件才会真正被删除,这样可以防止误删。...
2021-06-20 23:19:54 496
原创 树莓派外设开发
一.树莓派外设开发接口文档参考WiringPi库(Linux动态库:so 静态库:.a)API printf(c标准库)链接二.树莓派的接口: 驱动IO口:input output 对主控来说Input:人体,烟雾,火焰,震动等Output:继电器,蜂鸣器PWM:电机调速,灯光调明亮度语音识别模块,液晶屏串口uartIICSPIIIS其他特定硬件的接口:flash有操作系统:Nanopi:Linux S3c2410,2440 6410 Tiny210 tiny44
2021-06-18 21:24:21 2216
原创 Linux库相关
一.先引入分文件编程思想1.1描述以main()函数作为函数的入口,main函数中包含一些功能func函数, 把这些函数单独分成若干个功能模块。1.2分模块的好处:功能划分清楚方便调用和后期修改主程序简洁1.3怎么分模块?将源程序分为main函数入口和多个功能模块的.c文件将包含main函数的.c文件中的功能模块定义实现部分去掉,只留下函数引用在包含main函数的.c文件中添加功能模块的头文件,注意用“”号,“”表示程序运行时,会先到当前文件去找 头文件(.h文件),如果找不
2021-06-18 16:45:43 58
原创 Linux 编程 错题集
有返回值,一定要判断返回值,容易出错strtok会使源数据破换掉strcpy里面不能出现野指针,以后出现指针,不管怎样,一定马上分配空间。
2021-06-10 01:04:54 78
原创 Linux系统编程——线程
一.线程概述1.1什么是线程,什么是进程,它们间的联系和区别?进程:进程是程序运行的实例,而程序只是指令,数据以及组织形式的描述。同时进程是分配资源的最小单位。线程:线程是程序执行的最小单位。联系:线程被包含在进程中。一个进程至少有一个线程,表示进程同时只做一件事。线程和进程所有的数据和信息都是共享的,共用一个地址空间。区别:进程拥有自己独立的地址空间,奔溃不会对其他进程产生影响。线程有自己的栈堆和局部变量,但依赖于所属进程的地址空间,线程死掉,整个进程都会死掉。所以多进程会比多进程健壮,但耗费
2021-06-06 00:13:55 226 1
原创 Linux系统编程——进程间通信(IPC)
一. 概述1.1单机通信半双工管道 (FIFO)全双工管道 (命名全双工管道)消息队列信号量共享存储1.2多机通信:套接字STREAMS二.管道通信管道,通常指无名管道,最古老的IPC形式2.1特点半双工(数据只能在同一方向流动),有固定的读端和写端。管道中的数据,读走就没了只用于具有亲缘关系的进程之间通信可看成一种特殊的文件,但只存在于内存中2.2原型#include <unistd.h>int pipe(int fd[2]); //成功返
2021-06-01 23:16:12 269
原创 Linux系统编程——进程
一.进程相关概念1.1什么是程序?什么是进程?有什么区别?程序是静态的概念,gcc xxx.c -o pro,磁盘中生成的pro,叫做程序进程是程序的一次运行活动,就是程序跑起来了,系统中就多了一个进程1.2如何查看系统中有哪些进程?使用ps指令查看实际工作中,配合grep...
2021-05-26 22:15:15 202
原创 sizeof 和 strlen 的区别
代码#include<stdio.h>#include<string.h>int main(){ char *a = "abcd\0\0"; int size = strlen(a); printf("sizeof(a) = %ld\n",sizeof(a)); printf("strlen(a) = %d\n",size); return 0;}~ - 结果sizeo
2021-05-20 21:49:42 52
原创 树莓派指令
sudo:暂时切换到超级用户的模式sudo nano /etc/apt/sources.list:进入查看源文件sudo apt-get update:更新sudo apt-get install vim :安装vim
2021-05-20 00:19:36 86
原创 交叉编译工具链下载和环境变量的配置
一. 什么是交叉编译?为什么要交叉编译?1.概念 编译:生成在平台本身可执行的代码 交叉编译:在一个平台上生成另一个平台可执行的文件 如:c51在keill平台上交叉编译 stm322.为什么交叉编译? 因为有时候平台上不允许安装我们所需要的的编译器,平台上的资源不允许。 或者平台本身都还没有建立,平台搭建本身就需要交叉编译。3.宿主机与目标机 宿主机(host):编辑和编译的平台,一般是基于x86的pc机,通常称为
2021-05-20 00:18:47 493
原创 Linux系统编程——文件
一.文件编程概述1.重点文件编程内容超多如: 文件系统原理及访问机制 文件在内核中的管理机制 什么是文件信息节点inode 文件的共享 文件权限,各种用户对其权限 。。。。。。应用为王 实际上,我们只要关心如何用代码操作文件,实现文件的创建,打开,编辑等自动化执行。2.文件的修改Windows/Linux下手动修改文档没有任何区别: 打开/创建文档——>编辑文档——>保存文档——>关闭文档如何自动实现文件操作:
2021-05-18 00:36:00 214
原创 客户端服务器模型API
server(服务器)端:流程:socket创建套接字>>>bind为套接字添加信息(IP地址和端口号)>>>listen监听网络连接>>>监听到客户端接入,接受一个连接>>>数据交互>>>关闭套接字,断开连接1.socket-----create an endpoint for communication(创建通信端点,即套接字)#include <sys/types.h> /
2021-05-16 23:54:09 119
原创 结构体大小的计算
1.结构体成员的偏移量,必须是该成员大小的整数倍(0被认为是任何数的整数倍)2.一般情况下,结构体的大小,必须是所有成员大小的整数倍(数组,结构体除外)最后一个元素要根据对齐方式补齐,这种对齐方式很浪费空间,但是根据计算机的访问规则,这种对齐方式提升了效率3.联合体大小,按最大的元素算4.指定对齐方式:#pragma pack(k);当k小于成员大小时,则向K对齐;当K大于成员大小时,则向原本对齐方式对齐;...
2021-05-06 22:46:29 59
原创 C链表 Ncurses 制作贪吃蛇小游戏
关键点: 1:地图界面的刷新 用22x22的方格,作为地图空间,第一和最后一行(列),作为边界; 边界:* 蛇身:【】 食物:## 如图: ![贪吃蛇界面](https://img-blog.csdnimg.cn/20210414002231375.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L
2021-04-14 00:24:45 201 1
原创 第一阶段C 测试题 -- 链表 -- 学生成绩管理系统
链表A,每个节点存放一个新的链表B1,B2,B3,B4,B5的头结点。场景:一个年级,相当链表A该年级5个班,每个班5个人,相当于链表B1–B5做一个学生成绩管理系统学生成绩有语文 数学 英语功能: 录入成绩 找最三科总分的最高分 最低分 算出平均分#include<stdio.h>#include <stdlib.h>#include <string.h>struct A{ struct B *head; char *class; st
2021-03-20 23:55:25 155
原创 树莓派交叉编译笔记
交叉编译是什么,为什么要交叉编译是什么?=交叉编译 是在一个平台上生成另一个平台上的可执行代码。我们再windows上面编写C51代码,并编译成可执行代码,如xx.hex,是在c51上面运行,不是在windows上面运行 我们在ubuntu上面编写树莓派的代码,并编译成可执行代码,如a.out, 是在树莓派上面运行,不是在ubuntu linux上面运行 编译:是在一个平台上生成在该平台上的可执行代码 C51 交叉编译的发生在keil(集成环境上面) stm32 =为什..
2021-02-24 18:57:36 71
原创 SecuerCRT 树莓派 vi编辑器下 上下左右 变成 ABCD的 问题
1.刚开始出现这个问题时,以为是vim没有更新,后面重新更新后发现并不是。2.后面查阅相关资料,发现树莓派vim是默认兼容vi的,而vi编辑器的上下左右正好不能移动光标,所以我直接到/etc/vim/vimrc.tiny更改配置文件,把set compatible改成set nocompatible。但是发现依然不是这个问题。3。最后我用mobaxterm连接树莓派。发现vi在mobaxterm下可以正常使用,显然是我的ScureCRT设置出了问题。4.出现这个问题,只需要把选项-仿真-模式里面的初.
2021-02-21 16:01:39 363
原创 树莓派刷机
一。树莓派破解断开蓝牙连接,打开串口连接:1.config.txt最后一行加上: dtoverlay=pi3-miniuart-bt 保存2.cmdline.txt所有内容替换成: dwc_otg.lpm_enable=0 console=tty1 console=serial0,115200 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repai
2021-02-17 16:52:47 162
原创 树莓派开发文档笔记—基础配置
树莓派开发文档笔记—基础配置树莓派刷机树莓派登录2.1 HDMI视频线 连接到显示器2.2 串口 2.2.1 设备破解默认情况,树莓派的串口和蓝牙连接。想办法断开蓝牙连接,把串口用来数据通信https://blog.csdn.net/syjsxxjy/article/details/80774262a. 观看树莓派的启动过程,字符b. 串口登录树莓派2.2.2默认账号:pi默认密码:raspberry2.3 通过网络登录树莓派2.3.1 让树莓派入网修改ht
2021-01-03 22:33:25 60
原创 Linux库概念及相关编程(面试重点)
Linux库概念及相关编程(面试重点)分文件编程案例好处:分模块的编程思想网络 a超声波b电机ca.功能责任划分b.方便调试c.主程序简洁库https://www.cnblogs.com/sunsky303/p/7731911.htmlhttps://blog.csdn.net/wk_bjut_edu_cn/article/details/81735956a) 静态库静态函数库,是在程序执行前(编译)就加入到目标程序中去了 ;优点: 运行快发布程序无需提供静态库,
2021-01-03 22:26:18 78
原创 c语言学习笔记 数组
1.为什么需要数组?只要大量数据,不关心数字名称的时候2.数组的基本使用数组定义类型 + 数组名+[数组大小]数组单独访问数组中的括号[]只有在定义一个数组的时候,才表示数组大小,其余任何情况,都表示下标来访问数组循环的方式遍历数组int a[10];int i;for(i = 0,i<10,i++){ printf("%d\n",a[i]);}3.数组和函数实际参数的表示方式数组做参数,传递的是数组的首地址(第一个数组元素的地址或数组名),因为数组的特点是:数
2021-01-01 21:04:34 119
原创 c语言学习笔记 函数
1. 什么是函数?函数是一个功能模块,它把实现某个功能的代码包含起来,并起一个函数名,供别人调用,如system函数。是程序运行当中包装起来的一个步骤2. 如何定义一个函数int prepare(int t){printf("帅就完事了");};返回值返回int整形数形式参数t为int型的形式参数函数名prepare函数体大括号里面的代码块3. 如何调用一个函数函数名(参数)...
2021-01-01 16:55:59 152
imx6ull 使用idconfig -a 不显示can
2021-08-12
为什么float型输出float全是0.00啊?
2021-03-20
我最近在学习linux,在树莓派上使用vi的时候,上下左右一直是ABCD,怎么解决?
2021-02-17
TA创建的收藏夹 TA关注的收藏夹
TA关注的人