摘要:
1.MQTT服务安装 下载EMQX做MQTT代理服务器 https://www.emqx.cn/downloads/broker/v4.2.7/emqx-centos7-4.2.7-x86_64.zip 解压安装即可 启动MQTT服务器 在emqx/bin目录下 2、启动 EMQX(两种启动方式:e 阅读全文
摘要:
1.ubuntu20.04安装Nginx代理服务器 安装nginx sudo apt updatesudo apt install nginx 安装完成后,Nginx 将会自动被启动。运行下面的命令来验证: 测试安装 在网页输入你的ip地址 nginx配置: 所有的 Nginx 配置文件都在/etc 阅读全文
摘要:
一、块设备简介 块设备驱动是存储设备驱动,块设备驱动相比字符设备驱动的主要区别如下: ①、块设备只能以块为单位进行读写访问,块是 linux 虚拟文件系统(VFS)基本的数据传输单位。字符设备是以字节为单位进行数据传输的,不需要缓冲。 ②、块设备在结构上是可以进行随机访问的,对于这些设备的读写都是按 阅读全文
摘要:
对于提供了MMU(存储管理器,辅助操作系统进行内存管理,提供虚实地址转换等硬件支持)的处理器而言,Linux提供了复杂的存储管理系统,使得进程所能访问的内存达到4GB。 进程的4GB内存空间被人为的分为两个部分--用户空间与内核空间。用户空间地址分布从0到3GB(PAGE_OFFSET,在0x86中 阅读全文
摘要:
一、阻塞和非阻塞简介 当应用程序对设备驱动进行操作的时候,如果不能获取到设备资源,那么阻塞式 IO 就会将应用程序对应的线程挂起,直到设备资源可以获取为止。对于非阻塞 IO,应用程序对应的线程不会挂起,它要么一直轮询等待,直到设备资源可以使用,要么就直接放弃。 二、阻塞访问(等待队列) 阻塞访问最大 阅读全文
摘要:
一、并发与竞争简介 并发:多个“用户”同时访问一个共享的内存。 竞争:多个“用户”同时访问一段共享的内存并对其修改,就会造成数据混乱,甚至程序崩溃,这就是竞争。 二、造成并发与竞争的原因 1、多线程并发访问, Linux 是多任务(线程)的系统,所以多线程访问是最基本的原因。 2、抢占式并发访问, 阅读全文
摘要:
大小端的原理 对于一个由2个字节组成的16位整数,在内存中存储这两个字节有两种方法:一种是将低序字节存储在起始地址,这称为小端字节序;另一种方法是将高序字节存储在起始地址,这称为大端字节序。即 大端是高字节存放到内存的低地址 小端是高字节存放到内存的高地址 假如现有一32位int型数0x123456 阅读全文
摘要:
一段代码想要最终被计算机执行,首先需要被翻译成机器可识别和执行的指令,代码编译的过程往往包含几个步骤: 代码 -> 词法语法分析 -> 语义分析 -> 中间代码生成 -> 目标代码生成 在中间代码生成这个阶段,编译器会尝试对中间代码进行优化,通过减少无效或冗余的代码、计算强度优化等手段,以助于减少最 阅读全文
摘要:
字符设备是按照字节流进行读写操作的设备,读写数据是分先后顺序的。常见的点灯、按键、 IIC、 SPI和LCD 等都是字符设备 。 字符设备驱动开发步骤: 总体思路: 定义并初始化一个字符设备 -1、定义一个字符设备—>struct cdev 2、定义并初始化字符设备的文件操作集—>struct fi 阅读全文
摘要:
1、const修饰变量 被const修饰过的变量相当于常量,它的值不能被赋值改变,在整个作用域内保持固定。所以说它定义的是只读变量,在定义的时候需要给它赋初值。 1 const int a = 1; 2 a = 2; /*错误,常量的值不能改变*/ 3 const int a; /*错误,常量定义时 阅读全文