- 博客(20)
- 收藏
- 关注
原创 linux 根文件系统启动流程
linux 根文件系统启动流程当init服务运行rc.sysinit时 要依次完毕以下一系列工作:(1)启动udev(2)设置内核參数运行sysctl –p,以便从/etc/sysctl.conf设置内核參数(3)设置系统时间将硬件时间设置为系统时间(4)启用交换内存空间运行swpaon –a –e,以便依据/etc/fstab的设置启用全部的交换内存空间。(5)检查并挂载全部文件系统检查全部须要挂载的文件系统。以确保这些文件系统的完整性。检查完成后以可读可写的方式挂载文件系统。(6)
2021-11-30 15:54:52
1193
原创 linux文件系统的常用目录
Linux文件系统中一般有如下几个目录:/bin目录该目录下存放所有用户都可以使用的、基本的命令,这些命令在挂接其它文件系统之前就可以使用,所以/bin目录必须和根文件系统在同一个分区中。/bin目录下常用的命令有:cat,chgrp,chmod,cp,ls,sh,kill,mount,umount,mkdir,mknod,test等,我们在利用Busybox制作根文件系统时,在生成的bin目录下,可以看到一些可执行的文件,也就是可用的一些命令。/sbin 目录该目录下存放系统命令,即只有管理员能
2021-11-30 15:49:12
1934
原创 Linux 嵌入式根文件系统文件调用流程
s3c2440 Linux 嵌入式根文件系统(jffs2与ubifs)在这里我们主要分享两种嵌入式的根文件系统jffs2与ubifs,s3c2440虽然已经过时,但对初学者还是比较推荐的。1.什么是根文件系统
2021-11-30 15:46:55
958
原创 制作imx6ull Linux系统的img镜像文件(emmc烧录 )
制作imx6ull Linux系统的img镜像文件1.什么是img镜像文件在讲解img镜像文件之前我们要了解一般的imx6ull系列开发板烧录F方法一般有两种,一种是通过通过USB刷机,用mfgtools工具将uboot kernel dtb rootfs这些文件烧写到emmc nandflash sd卡等存储介质上面,但是这种方法的缺点是烧写比较慢,而且只能一个一个刷写,官方推荐的量产烧写方式是通过SD卡刷机,就是把SD卡做成启动盘,然后启动系统,再把内容烧录到emmc或者nand flash里面。
2021-11-20 20:18:15
7146
1
原创 linux下C语言常见宏定义
linux下C语言常见宏定义(1) 写一个“标准”宏,这个宏输入两个参数并返回较小的一个 。#define MIN(a,b) ((a) > (b) ? (a) :(b))(2)表明1年中有多少秒(忽略闰年问题):#define SUM_YEAR_SECONDES (365*24*60*60)(3)一句C语言实现把0x2000地址处的整型变量第7位置1,其他位不变。*(volatile unsigned int *)0x2000 | = 1<<6;(4)写两个宏, 分别
2021-09-25 22:45:04
945
1
原创 数据结构笔记(二)---------- 双向链表的两种实现
双向链表的两种实现上次我们学习了单链表,这次我们来看双链表,双链表与单链表相比 ,我们知道,单链表只能通过索引(next指针)找到他的后继,而若要找他的前驱就需要从头遍历,非常麻烦,所以我们在单连链表的基础上多加一个指针域,指向它的前驱,这样我们找每个元素都能在o(1)的复杂度内,找到他的前驱。接下来我们来看具体的代码实现:动态链表...
2021-08-22 20:51:48
123
原创 指针函数的调用
指针函数之前写了关于函数指针的博客,今天来探讨一下与他非常像的指针函数,仅仅是把前后两个词调换顺序, 就是另外一个东西,我们之前讲了,函数指针是指针,那么指针函数就是函数。1.1定义...
2021-07-21 17:51:25
4873
原创 BC28连接电信Iot平台上报数据(详细解析)
一、在电信物联网平台创建产品1.1、创建产品IMEI号通过AT+CGSN=1 //查询IMEI号AT+CIMI //查询IMSI号上面我们设置为服务ID为1时会在提交时显示重复,所以我们改为4,因为在我们选择智慧农业时,会自带一些类型,也已不用新建,用已经设置好的类型。到这,云端设置基本完成,接下来,进行在线测试。在这基本在线测试已经完成!!!接下来我们在模块上注册:BC28通过AT指令附着网络(即连接网
2021-07-21 16:39:01
3844
6
原创 函数指针 、回调函数与typedef
函数指针、回调函数与typedef1.函数指针函数指针:我们知道,函数名就是函数的首地址,只要是地址,就可以用指针指向他,而指向函数的指针就是函数指针,而函数指针与指针的用法一致,可以通过指针去调用函数。函数指针的声明方法:我们一般的函数声明为:int add (int x);(类型,函数名,(形参))函数指针声明为:int (*ptr)(int x);(类型)ptr =add;下面做具体演示:#include<iostream>#include<string>
2021-07-17 20:10:37
314
原创 数据结构笔记(一)--------单链表的两种实现方式
链表常见的定义与原理,这里不再赘述,不懂的可以去自己搜搜,这里主要记录常见的两种链表的实现方式,也就是动态链表与静态链表。一、动态链表与静态链表动态链表就是我们常见的用结构体实现的链表,因为结构体的内存分是动态的(只有的被定义时才会分配内存),所以在运行时会根据需要动态的分配内存,在实际应用开发中应用较多,但在运行时动态的分配内存,会占据大量的时间,但在做一些算法题时,会有时间限制,所以就需要静态链表一次性申请内存(动态链表也可以但实现有些麻烦)。1、动态链表typedef struct Node
2021-07-17 00:06:47
236
原创 TCP滑动窗口协议与nagle算法
一. 缓冲区TCP协议是一个全双工的协议,当主机A与服务器A建立好连接后,可以互相发送数据,当主机A作为发送方时,存在一个发送缓冲区,也就是说发送的数据会先放置在发送缓冲区处,而作为接收方的服务器A会有一个接收缓冲区,接收到的信息会先存储在接收缓冲处。二. 滑动窗口而滑动窗口是每次从缓冲区拿包的个数,但两方的缓冲区大小可能不相同,所以,如下图,在第一次建立连接后,主机A会尝试给服务器发了四个大小为1024的数据包,服务器会通过ack确认,这里服务器只能收三个,有一个数据包丢失,所以ack在3072后加
2021-03-30 18:25:46
449
原创 快速上手mosquitto在ubuntu18.04下的安装及测试
一、什么是MQTTMQTT是一种基于发布/订阅模式的“轻量级”通讯协议,该协议构建于TCP/IP协议上。MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。MQTT是一种通讯协议。而mosquitto是基于MQTT协议衍生的一个开源的broker。mosquitto分为三个部分。pub(发布者),broker(代理、服务器),sub(订阅者),他们之间的逻辑关系为pub
2021-03-22 22:50:58
1604
1
原创 由TCP三路握手引出的问题及深度理解socket编程
最近在复习tcp三路握手三路握手以及四路挥手时,想到平时抓包正常是的状态,那当SYN发后,若服务器异常,会出现什么?于是先去查了相关书籍,找到了以下的流程图:于是知道可能返回的是RST,但心里还是不踏实,于是自己开始验证一下:于是先在确定服务器程序正常并且可以正常抓包看到三路握手时,开始模拟服务器异常,我们都知道,服务器程序在运行时,首先是调用socket()函数,过来以此是bind(),listen(),acccept()函数,想起刚开始学习...
2021-03-22 21:52:48
179
原创 Linux下动态库与静态库原理与使用
一、什么是库在系统中,库就是一个现有的,已经写好可供直接使用的代码,很多程序都依赖库;通常,库大致分为两种:分别是动态库和静态库;在编译过程中,有四个阶段(具体参考上篇博文),其中在第四步链接时候,就需要调用动态库和静态库;二、静态库2.1 什么是静态库之所以称为静态库,是因为在链接阶段,会将汇编生成的目标文件.o与引用到的库一起链接打包到可执行文件中。因此对应的链接方式称为静态链接。试想一下,静态库与汇编生成的目标文件一起链接为可执行文件,那么静态库必定跟.o文件格式相似。其实一个静态库可以简单
2021-03-21 19:24:41
332
原创 Linux下gcc编译器的编译过程
一、什么是GCCGCC是以GPL许可证所发行的自由软件,也是GNU计划的关键部分。GCC的初衷是为GNU操作系统专门编写一款编译器,现已被大多数类Unix操作系统(如Linux、BSD、MacOS X等)采纳为标准的编译器,甚至在微软的Windows上也可以使用GCC。GCC支持多种计算机体系结构芯片,如x86、ARM、MIPS等,并已被移植到其他多种硬件平台。这里我们先主要讲解Linux下C语言gcc的使用。1.gcc的使用方法gcc [选项] 文件名在linux下我们可以使用 gcc --hel
2021-03-21 17:24:06
485
原创 Linux_cJSON使用--数据封装与解析
一、JOSN的概念:1.cJSON简介JSON(JavaScript Object Notation)是一种轻量级的文本数据交换格式, 易于让人阅读。同时也易于机器解析和生成.。JSON虽然是Javascript的一个子集, 但JSON是独立于语言的文本格式,并且采用了类似C语言的一些习惯。为什么我们要使用cJSON呢? 我们在传输数据时, 如果只有一个数据比如温度t = 26.53 .我们传输过去一定会知道这个数据是什么。此时如果数据既有温度和湿度. 那么我们传输过去的是俩个字符串. 此时是不能分
2021-03-21 16:06:03
541
2
原创 网络socket编程--多路复用
一、五种网络I/O模型1.什么是I/OIO在计算机中指Input/Output,也就是输入和输出。由于程序和运行时数据是在内存中驻留,由CPU这个超快的计算核心来执行,涉及到数据交换的地方,通常是磁盘、网络等,就需要IO接口。比如你打开浏览器,访问新浪首页,浏览器这个程序就需要通过网络IO获取新浪的网页。浏览器首先会发送数据给新浪服务器,告诉它我想要首页的HTML,这个动作是往外发数据,叫Output,随后新浪服务器把网页发过来,这个动作是从外面接收数据,叫Input。所以,通常,程序完成IO操作会有
2021-02-19 20:37:00
1757
1
原创 socket多线程编程
socket多线程编程实现并发服务器一、多线程简介1、什么是线程? 线程在操作系统原理中是这样描述的:线程是进程的一条执行路径。线程在Unix系统下,通常被称为轻量级的进程,线程虽然不是进程,但却可以看作是Unix进程的表亲,所有的线程都是在同一进程空间运行,这也意味着多条线程将共享该进程中的全部系统资源,如虚拟地址空间,文件描述符和信号处理等等。但同一进程中的多个线程有各自的调用栈(call stack),自己的寄存器环境(register context),自己的线程本地存储(thread-l
2021-01-31 16:38:45
4340
原创 socket多进程编程
socket多进程编程一、服务器并发访问的问题服务器按处理方式可以分为迭代服务器和并发服务器两类。平常用C写的简单Socket客户端服务器通信,服务器每次只能处理一个客户的请求,它实现简单但效率很低,通常这种服务器被称为迭代服务器。 然而在实际应用中,不可能让一个服务器长时间地为一个客户服务,而需要其具有同时处理 多个客户请求的能力,这种同时可以处理多个客户请求的服务器称为并发服务器,其效率很 高却实现复杂。在实际应用中,并发服务器应用的最广泛。linux有3种实现并发服务器的方式:多进程并发服务器,多
2021-01-27 16:32:37
641
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人