- 博客(110)
- 收藏
- 关注
原创 Linux网络编程之多路复用I/O
1 输入输出I/O模型 在UNIX/Linux下主要有4种I/O 模型1.1 阻塞I/O1.1.1阻塞I/O概述 阻塞I/O 模式是最普遍使用的I/O 模式,大部分程序使用的都是阻塞模式的I/O ,其最常用。 缺省情况下(默认情况下),套接字Socket() 建立后所处于的模式就是阻塞I/O 模式。前面学习的很多读写函数都是阻塞I/O,如下:1、读操作中的read、recv、re...
2020-03-06 02:08:56
597
原创 Linux网络编程之UDP编程
1 TCP网络编程与UDP网络编程对比1.1 相同点一、都采用CS模式:客户端(Client)和服务器(Serve)模式。客户端是主动的,服务器是被动的。一般情况下,一定服务器会响应多个客户端。二、TCP网络编程与UDP网络编程都使用套接字创建函数Socket()、关闭套接字函数close () 和IP地址与端口号绑定函数bind () 。1.2 不同点一、TCP网络编程需要连接(三次握...
2020-03-05 17:50:33
305
原创 Linux网络编程之TCP编程
1 CS 模式 客户端(Client)和服务器(Serve)模式。客户端是主动的,服务器是被动的。一般情况下,一定服务器会响应多个客户端。2 TCP网络编程架构3 TCP 网络编程相关函数(API)3.1 创建套接字函数 Socket() 套接字和无名管道、有名管道、信号灯,共享内存、消息队列、信号灯集都属于进程间通讯方式。套接字一般用于网络通信,其他的一般用于本地通信。3.1...
2020-03-05 17:30:09
556
原创 Linux网络编程基础-下
1 Socket1.1 Socket定义 socket是一个应用编程的接口,它是一种特殊的文件描述符,可对它执行IO的操作函数,比如,read(),write(),close()等操作函数。Socket代表着网络编程的一种资源。Socket并不仅限于TCP/IP协议,它可以面向连接(TCP/IP)也可以面向无连接(UDP和IPX)。1.2 Socket的类型1.2.1 流式套接字(SOC...
2020-03-04 15:02:40
250
原创 Linux网络编程基础-上
1 TCP/IP协议族 互联网(Internet)协议中最重要的协议就是TCP/IP协议族,TCP/IP协议族中最重要就是TCP和IP协议。TCP/IP协议族是Internet事实上的工业标准。 TCP协议:能检测网络传输中差错的传输控制协议(可靠的传输); IP协议:专门负责对不同网络进行互联的互联网协议(不可靠的传输)。2 网络体系结构2.1 网络的特点1、网络采用分而治之的...
2020-03-04 11:57:27
406
原创 Linux进程通信
1 Linux进程间通信方式1.1 继承早期unix进程间通讯方式1、无名管道(pipe);2、有名管道(fifo);3、信号(signal)。1.2 System V IPC( Inter-Process Communication 进程间通信)1、共享内存(share memory);2、消息队列(message queue);3、信号灯集(semaphore set)。以上...
2020-03-01 12:49:10
240
原创 Linux之线程
1 线程相关概念1.1 为什么要引入线程不同进程之间切换,系统开销很大,为了提高效率很多操作系统(Windows和Linux)都引入了轻量级进程LWP,即线程。 因为同一进程下的线程共享相同的地址空间,所以(同一进程下的)线程之间切换系统开销小效率高。 在Linux下编程,不严格区分进程与线程,将它们都视为任务,用结构体task_struct描述。1.2 线程定义共享相同地址空间(...
2020-03-01 11:37:55
193
原创 Linux之进程
1 定义1.1 程序存放在磁盘上的指令和数据的有序集合(文件),程序是静态的。1.2 进程执行一个程序所分配的资源的总称。1.3 进程的特点1、进程是程序的一次执行过程。程序的每一次执行都至少创建一个进程。2、进程是动态的,包括创建、调度、执行和消亡。2 进程的组成2.1 正文段2.2 用户数据段“正文段”和“用户数据段”就是程序。2.3 系统数据段2.3.1 系统数据段...
2020-02-29 02:23:11
222
原创 Linux I/O之库
1 库1.1 定义库是一个二进制文件,包含的代码可被程序调用。如标准c库、数学库、线程库。1.2 库的特点1、库中包含很多函数,程序调用库其实是调用库中的函数;2、库有源码,可以下载库源码,然后自己编译(也可以修改优化库源码),生成二进制文件库。也可以直接安装库的二进制包;3、在Linux下,库一般放在/lib或/usr/lib目录下。1.3 库的分类静态库和共享库。2 静态库...
2020-02-27 23:49:30
250
原创 Linux I/O之文件I/O
1 标准I/O与文件I/O的区别与联系2 文件描述符2.1 定义Linux为程序中每个打开的文件分配一个文件描述符。文件描述符是一个非负整数。2.2 文件描述符分配规则从0开始,依次递增。即分配最小可用的文件描述符(非负整数)。2.3 文件描述符特点1、 不同程序中的文件描述符互不干涉,互不影响。比如,程序A中有文件描述符0、1、2、3、4…,程序B中也可以有文件描述符0、1、2、...
2020-02-27 10:10:19
131
1
原创 Linux I/O之标准I/O
1 I/0操作分类标准I/O和文件I/O;2 I/O操作的对象文件3 文件的属性文件类型;文件名称;文件路径。4 文件类型常规文件 r;目录文件 d;字符设备文件 c;块设备文件 b;管道文件 p;套接字文件 s;符号链接文件 l;5 标准I/O5.1 定义标准I/O中的标准就是C语言标准(ANSI C),标准I/O就是C语言标准I/O库中定义的输入输出函数(API...
2020-02-03 00:09:26
203
原创 设备树之简介2
一、设备树镜像文件烧写1、烧写工具:fastboot;2、烧写前提:将开发板上的老uboot镜像文件更换为支持设备树的新uboot镜像文件;3、烧录过程/命令:3.1、用fastboot工具,烧录支持设备树的uboot镜像文件:fastboot.exe flash bootloader u-boot-iTOP-4412.bin;3.2、用fastboot工具,烧录支持设备树的内核镜像文件...
2020-01-28 23:47:15
315
原创 设备树之简介1
一、引入设备树的原因 Linux驱动开发引入设备树的原因:节省空间;安全可靠;简单化。二、学习设备树的基础 以平台文件的方式注册设备驱动。三、设备树开发环境 1、PC机环境:Ubuntu; 2、设备树编译器:如gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12.tar.gz; 3、设备树源码:如itop4412_kerne...
2020-01-28 22:12:46
199
原创 Linux内核目录结构
arch目录arch目录是平台目录。内核支持的所有CPU架构,在该目录下都有对应的子目录。每个CPU的子目录,又进一步分解为boot,mm,kernel等子目录,分别控制系统引导,内存管理,系统调用。还有动态调频,主频率设置部分等。...
2020-01-18 15:24:04
397
原创 裸机嵌入式开发和操作系统嵌入式开发
一、开发过程的不同1、裸机开发原理图→芯片数据手册→内存物理地址;2、带操作系统的开发原理图→芯片数据手册→内存物理地址→内存虚拟地址。二、硬件组成不同跑操作系统的MCU要比跑裸机的MCU多两个硬件设备:高速缓冲(CACHE)和内存管理单元(MMU)。三、高速缓冲(CACHE)1、就运行速度快慢而言,处理器自己运算的速度最快,其次是处理器访问自身寄存器的速度,再次是高速缓冲的运行...
2020-01-18 14:48:45
4378
原创 驱动与uboot、内核、文件系统的关系
一、驱动是“嵌在”内核中;应用程序是“嵌在”系统文件中。二、Linux设备驱动的作用1、对上:Linux设备驱动要给上层系统文件的应用程序提供函数调用的接口;2、对中:Linux设备驱动要注册到Linux内核中(或挂载到总线);3、对下:Linux设备驱动要操作硬件(GPIO、PWM、网卡、硬盘等)三、学习驱动其实就是学习接口函数。...
2020-01-18 10:09:53
1633
原创 Linux文件系统制作与BusyBox工具的关系
一、前提说明 像Ubuntu和Android都是Linux操作系统,其文件系统都有各自的发行公司制作(Ubuntu由Canonical Group Ltd开发,Android由Google Inc开发),使用者使用时直接从相应官网下载即可,不需要参与制作文件系统。但是在嵌入式领域,工程师往往需要根据项目需求自己制作最小Linux系统或定制特殊Linux文件系统,这是就需要BusyBox工具了。...
2020-01-16 17:44:55
514
原创 Linux内核源码的裁剪与配置
Linux内核源码裁剪与配置系统由以下三个部分组成:一、Makefile文件分布在Linux内核源码中的Makefile文件定义了Linux内核的编译规则。二、Kconfig文件Kconfig文件提供Linux内核的各种功能,以供用户裁剪和配置,最总得到想要的Linux内核源码配置文件.config。Kconfig文件与配置工具menuconfig的关系如下图。三、配置工具1、文本类...
2020-01-16 17:08:07
792
原创 Linux体系结构与Linux内核结构
说法一Linux内核组成:进程调度(SCHED);内存管理(MM);虚拟文件系统(VFS);网络接口(NET);进程间通信(IPC)。说法二:inux内核组件:系统调用接口(SCI);进程管理(PM);内存管理(MM);虚拟文件系统(VFS);网络堆栈(NS);设备驱动程序(DD)硬件架构相关代码(Arch)。...
2020-01-16 16:38:40
567
原创 uboot、Linux内核(kernel)和文件系统(System)的编译
一、前提说明1、Andriod 、Ubuntu、最小Linux系统、QT、QTE等都属于类Linux操作系统,它们其实都由uboot、kernel和system组成(Andriod 、Ubuntu、最小Linux系统、QT、QTE等最主要的区别都在system上)2、烧录Andriod 、Ubuntu、最小Linux系统、QT、QTE等操作系统时,都是烧录其各自uboot、kernel和sys...
2020-01-15 16:48:05
1114
原创 TF卡与SD卡
一、大小区分:SD卡体积为24mm×32mm×2.1mm,如下图。TF卡体积为15mm×11mm×1mm,如下图。二、名称区分:SD卡即Secure Digital Memory Card,中文翻译为安全数码卡。TF卡即T-Flash又称MicroSD,是一种记忆卡。后改称为TransFlash;而重新命名为MicroSD的原因是因为被SD协会(SDA)采立。另一些被SDA采立的记忆卡...
2020-01-14 16:14:52
937
原创 镜像文件
镜像文件镜像,是一种文件形式,可以把许多文件做成一个镜像文件。说到底,镜像就是源代码编译并连接以后生成的可执行文件包,把这些镜像文件烧写到开发板的存储芯片里,开机就可以运行了。...
2020-01-14 15:35:13
125
原创 类Linux操作系统组成与烧录
1、类Linux操作系统组成1.1、类Linux操作系统:Android、QT、QTE、Ubuntu、最小Linux操作系统、Debian等;1.2、类Linux操作系统组成:BootLoader(Uboot)、Linux内核(zImage)和文件系统(System);2、类Linux操作系统烧录2.1、类Linux操作系统烧录文件组成:BootLoader(Uboot)、Linux内核(...
2020-01-14 14:46:38
309
原创 Windows与Linux的文件系统
一、Windows的文件系统1、NTFS是Windows(Win7、Win10)标准的文件系统。2、Windows支持的文件系统:FAT系列(FAT112、FAT16、FAT32、exFAT)、CDFS(光盘文件系统)、HFS和HFS+(分层文件系统,Apple开发)、RAW(未格式化的文件系统)。二、Linux的文件系统1、ext是Linux标准文件系统,其专门为Linux设计,包括:e...
2020-01-14 10:41:29
4837
原创 fdisk -c 1 2700 50 50 命令解析
fdisk -c 1 2700 50 50 命令解析:1、-c表示DOS模式;2、1表示给TF卡分区(如果是0表示给eMMC分区);3、2700 50 50 表示TF卡以ext3格式分3个区,其空间大小分别为2700M、50M、50M,除去2700M、50M、50M TF剩下的空间默认分为fat格式的区(如果TF卡为8GB,那么fat格式的区大小为5.2GB)。欢迎使用Markdown编辑...
2020-01-11 16:47:57
875
转载 Git与Github 原理图解
目录1.提交 代码到远程仓库2.将远程仓库代码更新到本地3.更新到本地仓库时, 出现冲突,解决冲突后记: 正文 本文背景,在实际项目中使用git已有一年,发现不少同事虽然会使用常用git指令,但并不理解每个指令对应的作用原理。今天静下心总结下git 的基本理解:代码的存在区域;本文以实际项目出发,理清使用git过程中,代码的迁徙流程。git跟传统的代码管理器(如:svn)不...
2019-09-06 18:13:37
428
转载 Git与Github使用教程
一:Git是什么? Git是目前世界上最先进的分布式版本控制系统。二:SVN与Git的最主要的区别? SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到中央服务器。集中式版本控...
2019-09-06 18:02:57
195
转载 ubuntu安装和分区方案(转载他人)
ubuntu安装和分区方案 </h1> <div class="clear"></div> <div class="postBody"> 方案引用Swap(相当于电脑内存):逻辑分区、大小设置为电脑内存大小,2G,...
2019-08-28 15:16:09
339
转载 if break、if continue和if return三者之间的区别(转载)
if breakif break 用来终止循环,如下面的代码#include using namespace std;int main(){for(int i=0;i<10;i++){ if(i==3) break; cout<<"a"<<i<<endl;}cout<<"a"<<end...
2019-07-01 17:49:12
4757
2
转载 __weak 关键字的作用
在使用STM32的hal库的时候,我们常常可以看到很多库自带的函数有很多是使用__weak修饰的,比如:这个修饰符的作用是什么呢?先看看单词的意思:我们可以知道这是弱的意思,具体弱在哪里?又是和什么比较?其实函数名称前面加上__weak 修饰符,我们一般称这个函数为“弱函数”。加上了__weak 修饰符的函数,用户可以在用户文件中重新定义一个同名函数,最终编译器编译的时候,...
2019-06-18 16:18:49
1331
转载 C语言中数值后面跟字母解析
一、用于说明数据类型数值后面加“L”和“l”(小写的l)的意义是该数值是long型。 详细说如下: 5L的数据类型为long int。 5.12L的数据类型为long double。 数值后面加“U”和“u”的意义是该数值是unsigned型。 U表示该常数用无符号整型方式存储,相当于unsigned int L表示该常数用长整型方式存储,相当于long F表示该常...
2019-06-18 15:43:21
5734
转载 中国主流嵌入式实时操作系统(RTOS)
嵌入式Linux系统 VS RTOS一提到嵌入式的操作系统,自然绕不开嵌入式Linux操作系统。嵌入式linux 是将日益流行的Linux操作系统进行裁剪修改,使之能在嵌入式计算机系统上运行。它性能优异,软件移植容易,代码开放,有许多应用软件支持,应用...
2019-05-23 16:23:27
25703
3
转载 几种常见嵌入式实时操作系统简介
1、vxworks是美国windriver公司于1983年设计开发的高性能、可扩展的实时操作系统,具有嵌入实时应用中最新一代的开发和执行环境,支持市场上几乎所有的处理器,以其良好的可靠性和卓越的实时性被广泛地应用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域中,如卫星通讯、...
2019-05-23 16:17:43
14835
原创 操作系统概述-总结于源享科技(刘凯)
一、多任务实现途径1、通过多CPU实现多任务 通过在硬件上增加多个CPU或采用多核的CPU,来实现多任务,比如我国研发的超级计算机(如曙光、天河和银河等系列)。2、通过中断来实现多任务 在无操作系统的单片机裸机程序开发中,常用中断来实现多任务。3、通多操作系统实现多任务 如在操作系统中通过“时间片”的方式来实现多任务。二、操作系统特性...
2019-05-18 09:50:18
2003
原创 Linux 网络知识普及
一、网络体系结构1、网络体系结构定义 网络的层次结构和每层所使用的协议集合称为网络的体系结构;2、网络体系结构分类 OSI模型 TCP/IP模型二、OSI七层模型1、定义第七层:应用层第六层:表示层第五层:回话层第四层:传输层(TCP/UDP)第三层:网络层(IP)第二层:数据链路层(路由器)第一层:物理层(网线、有线/无线网卡)2、说明2-1、OSI模型相...
2019-04-28 15:10:56
315
原创 进程间通信方式
一、说明 Linux的设计思想和机制都是来源于Unix,所以Linux进程间通讯的方式是继承与Unix的。二、Linux进程间通讯的方式1、继承早期的Unix进程间通信方式 1-1、无名管道(pipe); 1-2、有名管道 (fifo); 1-3、信号(signal);2、继承后期(Unix版本贝尔实验室版和校园版分家)的Unix进程间通信方式:System V IPC 2-1、...
2019-04-27 13:05:56
252
原创 进程与线程
一、进程特点1、进程是动态的(包括创建、调度、执行和消亡)。操作系统要为进程分配资源,进程是操作系统执行一个程序所分配资源的总称,它有独立的地址空间;2、Linux为每个进程创建task_struct;3、每个进程都参与内核调度,互不影响。二、进程的缺点(也是引入线程的原因) 一般操作系统都是多任务的,多任务的操作系统就会导致不同进程之间要来回切换,而进程在切换时系统开销很大,比如进程...
2019-04-26 13:55:50
84
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅