自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 Linux中TCP连接断开判断

(read/write、select、getsockopt、signal)实时判断socket连接状态/是否断开_getsockopt函数判断sock链接状态-CSDN博客

2024-08-06 16:21:32 66

原创 主机和从机的概念及功能

在通信和计算机系统中,主机(Host)和从机(Peripheral 或 Slave)是两种常见的设备角色,它们在系统中的角色和功能有所不同:定义:功能:定义:功能:在主机和从机之间的通信通常遵循特定的协议,这些协议定义了数据传输的方式和格式。例如:通过这种主从关系,系统可以实现有效的资源管理和任务分配,提高整体的运行效率和可靠性。

2024-07-22 11:10:58 830

原创 在不同的数据传输协议中,MSB和LSB的传输方式有什么不同?

总之,MSBFIRST和LSBFIRST是数据传输协议中两种基本的位序传输方式。选择哪种方式取决于具体的协议要求、硬件设备的特性以及软件系统的处理方式。正确地理解和应用这些传输方式对于确保数据通信的准确性和可靠性至关重要。在数据传输协议中,MSB(最高有效位)和LSB(最低有效位)的传输方式主要影响数据的位序,即数据是如何按位发送的。

2024-07-22 11:08:12 754

原创 execv函数简单使用

在Unix-like系统中,execv函数用于执行一个新的程序,同时可以传递参数给它。这个函数是exec系列函数之一,用于替换当前进程映像。

2024-07-18 12:01:58 263

原创 SDA 上传输的数据必须在 SCL 为高电平期间保持稳定, SDA 上的数据只能在 SCL 为低电平期间变化

I2C(Inter-Integrated Circuit)是一种常用的串行通信协议,广泛应用于微控制器和各种设备之间的通信。I2C 通信依赖于两根线:数据线(SDA)和时钟线(SCL)。SDA 上传输的数据必须在 SCL 为高电平期间保持稳定, SDA 上的数据只能在 SCL 为低电平期间变化。总之,I2C 协议的这种设计确保了数据传输的可靠性和同步性,使得多个设备能够在同一总线上有效通信。

2024-07-18 11:59:19 396

原创 单点触摸屏和多点触摸屏介绍以及原理简略

单点和多点触摸屏技术是现代触摸设备的基础,下述简单解释这两种技术及其差异。

2024-07-15 22:40:04 418

原创 电容屏确定触点位置原理

电容屏中有一个控制芯片,它会周期性产生驱动信号,接收电极接收到信 号,并可测量电荷大小。当电容屏被按下时,相当于引入了新的电容,从而影 响了接收电极接收到的电荷大小。主控芯片根据电荷大小即可计算出触点位置。 怎么通过电荷计算出触点位置?这由控制芯片实现,这类芯片一般是 I2C 接口。

2024-07-15 22:16:05 553

原创 相对位移(鼠标)和绝对位移(触摸屏)

在Linux操作系统中,输入设备如鼠标和触摸屏通过事件设备接口(Event Device Interface)来与系统交互。这个接口定义了一组事件类型,用于描述设备生成的输入事件。其中,EV_REL和EV_ABS是两种不同的事件类型,分别代表相对位移和绝对位置。EV_REL (相对位移)相对位移事件是指输入设备报告的是一个相对于上一个位置的移动量。例如,鼠标移动时,它不会告诉系统它在屏幕上的确切位置,而是告诉系统它从上一个位置移动了多少像素。

2024-07-12 20:20:39 1344

原创 Framebuffer编程

本示例程序的功能是在LCD屏上绘制100个红色像素点。程序首先打开Framebuffer设备,获取当前屏幕信息,然后通过内存映射访问Framebuffer,最后在指定位置绘制像素点,并在绘制完成后清理资源。这些变量用于存储Framebuffer文件描述符、屏幕信息、屏幕大小、Framebuffer内存地址等。本文通过一个简单的示例程序,展示了如何在Linux Framebuffer上进行像素级的控制。这在嵌入式系统开发中非常有用,尤其是在需要直接操作显示内存的场景。

2024-07-11 22:17:03 851

转载 一文搞懂CPU、MPU、MCU、SOC的联系与区别

MCU(Micro Control Unit),叫微控制器,是指随着大规模集成电路的出现及其发展,把中央处理器、存储器、定时/计数器(timer/counter)、各种输入输出接口等都集成在一块集成电路芯片上的微型计算机,形成芯片级的芯片。它的最大优点是体积小,可放在仪表内部,但存储量小,输入输出接口简单,功能较低。所谓的计算机的可编程性主要是指对CPU的编程。制造的中央处理器,这些高度收缩的组件就是所谓的微处理器,其中分出的中央处理器最为复杂的电路可以做成单一微小功能强大的单元,也就是所谓的核心。

2024-07-11 22:12:34 1557

转载 Linux 查看某一个进程占用内存情况

第一个标注的地方是CPU和内存占用率,后面的943100是物理内存使用量,单位是k,此时kafka大约占用943M内存。通过: ps aux | sort -k4,4nr | head -n 10 查看内存占用前10名的程序。Linux下查看某一个进程所占用的内存,首先可以通过ps命令找到进程id,比如 ps -ef |还可以查看进程的status文件: cat /proc/2913/status。这样可以动态实时的看到CPU和内存的占用率,然后按q键回到命令行。

2024-07-10 17:38:07 359

原创 free第一次成功,第二次失败

寻找每一个可能的会操作内存的位置,确定是否操作了未分配的内存。如果动了没有分配的内存,free会出问题的。

2024-07-10 17:30:07 235

转载 【无标题】

本文以TFT-RGB接口的LCD为例,主要阐述LCD硬件工作原理以及LCD时序参数分析。通过阅读本文可以帮助你快速了解LCD的工作原理与应用,有助于在实际工作中,使用LCD屏幕开发时能够快速上手开发。

2024-07-09 22:30:06 23

原创 LED灯的呼吸功能

在开发板上,LED 的呼吸功能可能是通过软件控制实现的,可能涉及到 PWM(脉宽调制)信号来调节 LED 的亮度。关闭呼吸功能后,LED 可能会保持常亮或者完全熄灭,具体取决于开发板的固件或软件是如何配置的。可能代表开启呼吸功能或者以某种模式点亮 LED。具体使用哪个值来控制 LED 的行为,需要参考开发板的技术文档或示例代码。,这通常表示关闭 LED 或者关闭其呼吸功能。这种效果通常用于指示设备的状态或者简单地作为装饰效果。目录下的设备文件用于访问硬件设备,就是这个 LED 的设备文件。

2024-07-08 23:44:17 269

原创 8.8.8.8 IP地址的作用

DNS(域名系统)是互联网的基础服务,负责将人类可读的域名(如www.google.com)转换为机器可读的IP地址。:虽然不如专业的隐私保护DNS服务,但Google的DNS服务(Google DNS)相比某些ISP提供的DNS服务,在隐私方面提供了一定程度的保护。:由于Google的DNS服务具有高速缓存和快速的响应时间,使用8.8.8.8可以加快域名解析速度,从而提高网页加载速度。:与一些可能不稳定或响应慢的本地DNS服务相比,Google的DNS服务提供了更高的可靠性和稳定性。

2024-07-08 23:40:49 587

原创 Linux显示文件夹大小为4096

即使文件夹是空的,它也会占用至少一个块的空间,因此显示的大小是4096字节。在Linux系统中,当你查看一个新创建的文件夹(空文件夹)或某些特定类型的文件系统上的大小时,可能会发现它们显示为4096字节,即使它们是空的。:文件夹本身包含一些元数据,如目录项(记录文件夹内文件和子文件夹的名称和属性),这些也会占用一些空间,通常足以填满一个块。:不同的文件系统可能有不同的块大小和元数据存储方式,这可能会影响显示的文件夹大小。:文件系统本身需要一些空间来存储文件和目录的索引信息,这也会影响显示的大小。

2024-07-04 19:00:00 306

原创 Ubuntu su命令输入密码后提示“su: 认证失败”

命令切换到root用户时提示“su: 认证失败”通常是因为root账户默认情况下是被锁定的,没有设置密码。:如果确实需要使用root账户,可以通过设置root密码来启用它。命令允许普通用户执行具有root权限的命令。在Ubuntu系统中,使用。来执行需要root权限的命令1。命令代替直接使用root用户。:Ubuntu推荐使用。

2024-07-04 10:15:00 757

原创 Linux中cat命令的英文含义

命令之所以被命名为"cat",是因为它可以将多个文件(或输入)"连接"在一起,并"打印"出来。这与"猫"这个动物没有直接联系,而是与它在文本处理中的作用有关。Unix哲学鼓励使用简单、通用的工具来完成特定的任务,这个命令的名称是这两个功能的首字母缩写。尽管"cat"在英语中确实有"猫"的意思,但在Unix和类Unix系统中,命令的主要功能是用于查看、创建和拼接文件。我之前一直在想cat不是猫的意思吗,命令就是这种哲学的一个典型例子。oncatenate(连接)和。命令的名称与动物无关。

2024-07-03 23:31:57 528

原创 snap和apt的区别简单了解

在决定使用哪个命令之前,你可以检查你的系统是否支持 Snap,以及你是否有特定的版本需求。如果没有特别的偏好或需求,通常使用系统默认的包管理器(在大多数 Ubuntu 系统上是。命令行工具的,但它们使用的是不同的包管理器和软件源。这两个命令都是用来安装。)是一个安全的选择。

2024-07-03 22:48:36 795

原创 Linux中为什么etc是存放配置文件

目录逐渐成为存放系统级配置文件的标准位置。这些配置文件通常由系统管理员编辑以调整系统设置,它们控制着系统的行为和操作方式。目录中的文件通常是文本格式,可以通过文本编辑器进行编辑。由于这些文件对系统的正常运行至关重要,因此只有具有适当权限的用户(通常是root或管理员)才能修改它们。的命名来源于早期Unix系统中的 "etcetera"(拉丁语 "et cetera" 的缩写,意为 "等等"),因为该目录最初用于存放各种杂项配置文件。是一个目录的名称,通常位于Unix和类Unix操作系统中,如Linux。

2024-07-03 22:42:19 282

原创 VMware每次打开网络设置都出现需要运行NetworkManager问题

【代码】VMware每次打开网络设置都出现需要运行NetworkManager问题。

2024-06-30 17:43:41 227

原创 VMware17安装Ubuntu20版本-保姆级别

保姆级,使用VMware17安装Ubuntu20

2024-06-30 16:24:05 709

转载 悲观锁和乐观锁

Java 按照锁的实现分为乐观锁和悲观锁,乐观锁和悲观锁并不是一种真实存在的锁,而是一种设计思想,乐观锁和悲观锁对于理解 Java 多线程和数据库来说至关重要,那么本篇文章就来详细探讨一下这两种锁的概念以及实现方式。

2024-06-25 17:20:56 15

原创 getifaddrs 函数详解

getifaddrs函数用于获取系统中所有网络接口的信息。它返回一个链表,链表中的每个节点包含一个结构,该结构定义在ifaddrs.h头文件中。下面是关于getifaddrs函数和。

2024-06-08 15:06:13 895

原创 vmware中Ubuntu虚拟机和本地电脑Win10互相ping通

然后就可以互相ping通了,而且虚拟机也能够ping通www.baidu.com,表示有网络。初始的时候是NAT,没动的.点击右键编辑“属性”

2024-05-29 22:36:40 884

原创 linux编译顺序

被依赖的库必须放在最后,放在最后,编译的时候是从后往前的!!!

2024-05-28 11:17:49 90

原创 mosquitto启动命令以及配置文件使用

在使用MQTT Broker Mosquitto时,为了实现更精细、更具控制力的用户认证管理,除了基本的密码文件方式外,还可以利用各类认证插件来满足需求。这个有兴趣的可以自己尝试以下,我试了一下发现动态库mosquitto_dynamic_security.so加载失败了,所以没能进行下去,应该是交叉编译的时候没有把openssl放入其中。,启用所有类型的日志输出。启用此选项后,它将覆盖配置文件中设定的所有日志级别选项,确保mosquitto以最详细的日志级别运行,有助于调试和监控broker状态。

2024-04-01 10:57:01 2232

原创 揭秘ARM处理器的工作模式:深入浅出理解其运作机制

ARM处理器的五种工作模式设计精巧,各有分工,充分体现了其高度可配置性和安全性。理解这些工作模式,不仅能帮助我们更好地理解ARM处理器的工作原理,还能在设计和优化系统时,充分利用这些模式的优势,提高系统的性能和安全性。通过灵活切换和使用不同的工作模式,可以更好地满足不同层次的需求,确保系统的稳定运行和高效执行。

2024-03-22 18:30:00 436

原创 探秘ARM体系CPU的双态世界:ARM状态与Thumb状态的奥秘

ARM状态和Thumb状态的并存,是ARM体系CPU设计理念的一个重要体现,它在提高处理器性能、降低功耗、减少存储需求等方面起到了关键作用。通过对这两种状态的理解和有效运用,开发者可以更好地驾驭ARM架构,打造出性能优异、资源利用高效的嵌入式和移动设备应用。

2024-03-21 16:45:00 622

原创 快中断与慢中断区别

快中断(Fast Interrupt)和慢中断(Slow Interrupt)是操作系统中对中断处理机制进行分类的两种不同类型的中断。中断是CPU在执行当前任务过程中,对外部或内部事件做出响应的一种机制。

2024-03-20 12:05:58 486

原创 ARM与X86架构的简单剖析与未来展望

在计算机硬件领域,ARM和X86架构无疑是两种最具影响力的处理器架构。它们各自在全球范围内应用于广泛的设备中,从嵌入式系统到服务器,再到个人电脑和移动设备,塑造了现代计算技术的面貌。本文将深入解析ARM与X86架构的异同,并对未来市场发展趋势进行前瞻分析。

2024-03-20 11:54:41 1740

原创 中继器的相关疑问

中继器(Repeater)在计算机网络中的作用是接收、放大和重新发送信号,其工作在 OSI 模型的物理层。由于它不具备分析数据包的能力,只能简单地对衰减或失真的电信号进行再生,并不能处理不同传输速率或不同协议的数据。以下是几个原因说明为什么中继器无法在传输速度不同的媒介之间转发:1. 信号同步问题: 中继器无法调整或适应不同传输速度下信号的时钟频率,因此无法将一个速率下的信号转换为另一个速率。

2024-03-19 12:30:00 473

原创 Mosquitto MQTT服务器和客户端简单命令

以上命令需要根据实际需求调整参数。-h 指定MQTT代理的主机地址,-t 指定要发布的主题,-m 指定消息内容。-C 或 --clean-session:设置MQTT连接是否为清理会话。启动一个Mosquitto服务器,-c 参数指定配置文件路径。-p 或 --port:设置连接到MQTT服务器的端口号。3. 查看帮助信息:mosquitto --help。-d 或 --debug:启用调试模式输出更多信息。-q 或 --quiet:静默模式,减少输出。-I 或 --id:为客户端指定ID。

2024-03-18 14:11:15 491

原创 嵌入式设备MQTT服务部署-mosquitto

本文主要阐述通过交叉编译mosquitto库,然后在嵌入式设备上部署MQTT服务器,能够接收其他子设备的MQTT消息信息。以下各个库的版本信息:(cJSON基本都是一样的,随便下载就可以了)

2024-03-18 13:56:28 1383

原创 永远不要在多线程程序里面调用fork

但是由于线程是轻量级的执行单元,操作系统并没有提供原生的机制来复制线程,所以子进程中的线程可能处于任意状态,包括已经加锁的状态、正在执行的状态等等,这可能会导致不确定的行为。函数,但是这种做法通常会带来很多潜在的问题和不确定性,因此通常建议避免在多线程程序中调用。函数后,子进程会继承父进程中的所有信号处理器,这可能会导致意外的信号处理行为。函数后,子进程会继承父进程中的所有互斥锁,这可能会导致资源竞争和死锁的发生。函数时,所有线程都会被复制,这可能会导致复杂的状态不一致性。

2024-03-09 18:30:00 181

原创 pthread_cancel的注意事项

如果目标线程允许取消并且在取消点上阻塞,那么它会在下一个取消点上终止执行。如果目标线程忽略了取消请求或者不在取消点上阻塞,那么取消请求就会被延迟,直到目标线程进入取消点为止。如果目标线程被取消时正在修改共享数据,那么可能会导致数据不一致的情况发生,因为取消操作会突然中断线程的执行,而不会执行清理工作。在目标线程被取消之前,它可能会分配一些资源(例如内存、文件描述符等),但是在被取消之后无法释放这些资源,从而导致资源泄漏。函数用于取消指定的线程。函数时,目标线程会收到一个取消请求,并在适当的时候终止执行。

2024-03-08 11:45:00 249

原创 pthread_cond_wait内部逻辑

引入函数的概念,它是 POSIX 线程库中用于条件变量等待的函数。描述当程序调用函数时会发生什么。包括将执行流放入 PCB 等待队列、解锁等待。解释在等待被唤醒期间会发生的事情,以及当条件变量满足时,如何唤醒等待线程。说明当线程被唤醒后,操作系统如何从 PCB 等待队列中移除线程。详细介绍线程在等待结束后,如何尝试抢占互斥锁。解释当线程无法立即获得互斥锁时,会发生什么。包括线程被切换出 CPU、上下文信息的保存等。描述当线程再次获得 CPU 资源后,如何继续抢占互斥锁。说明当线程最终获得互斥锁时,

2024-03-07 23:00:30 942

原创 死锁的四个必要条件怎么理解

死锁是指在多线程或多进程的环境中,两个或多个进程或线程相互等待对方所持有的资源而无法继续执行的情况。死锁发生时,各个进程或线程都无法继续执行,系统处于僵持状态。至少有一个资源必须是被排他使用的,即一次只能被一个进程或线程使用,其他进程或线程必须等待该资源释放。进程或线程必须持有至少一个资源,并且正在等待获取其他进程或线程持有的资源。换句话说,一个进程在请求新的资源时,仍然保持已经获得的资源。系统中的资源不能被强制性地从持有者手中剥夺,只能由持有资源的进程或线程自行释放。

2024-03-07 22:29:32 442

原创 shell脚本中判断输入的数是否是整数

综合例子 提示用户输入一个正整数num,然后计算1+2+3+...+num的值;必须对num是否为正整数做判断,不符合应当运行再次输入思路:expr只能对整数进行计算,直接用expr 和一个整数计算获取 $?的值来判断是否为整数在使用 expr $num1 > 0 判断是否大于0。

2024-03-06 15:45:00 863

转载 awk的使用方法

linux中awk命令详解(最全面秒懂) - 郑琰 - 博客园 (cnblogs.com)

2024-03-06 13:45:54 27

空空如也

空空如也

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

TA关注的人

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