嵌入式开发
文章平均质量分 84
mediapipe
这个作者很懒,什么都没留下…
展开
-
Linux文件系统详解
4、因为文件名的记录是在目录的block当中,「新增/删除/更名文件名」与目录的w权限有关所以在Linux/Unix中,文件名称只是文件的一个属性,叫别名也好,叫绰号也罢,仅为了方便用户记忆和使用,但系统内部并不需要用文件名来定为文件位置,这样处理最直观的好处就是,你可以对正在使用的文件改名,换目录,甚至放到废纸篓,都不会影响当前文件的使用,这在Windows里是无法想象的。通过这个模型,API的设计可以化繁为简,用户可以使用通用的方式去访问任何资源,自有相应的中间件做好对底层的适配。原创 2024-08-09 11:30:00 · 1044 阅读 · 0 评论 -
Linux文件系统
文件系统就是分区或磁盘上的所有文件的逻辑集合。文件系统不仅包含着文件中的数据而且还有文件系统的结构,所有Linux 用户和程序看到的文件、目录、软连接及文件保护信息等都存储在其中。不同Linux发行版本之间的文件系统差别很少,主要表现在系统管理的特色工具以及软件包管理方式的不同,文件目录结构基本上都是一样的。原创 2024-08-09 10:15:00 · 638 阅读 · 0 评论 -
Linux文件管理
Linux中的所有数据都被保存在文件中,所有的文件被分配到不同的目录。目录是一种类似于树的结构,称为文件系统。原创 2024-08-08 16:45:00 · 572 阅读 · 0 评论 -
Linux文件存储结构
大部分的Linux文件系统(如ext2、ext3)规定,一个文件由目录项、inode和数据块组成。原创 2024-08-08 10:15:00 · 1562 阅读 · 0 评论 -
Linux操作系统原理-文件系统(2)
理解了文件系统的结构之后,我们来看一下文件的类型。Linux以文件的形式对计算机中的数据和硬件资源进行管理,也就是彻底的一切皆文件,反映在Linux的文件类型上就是:**普通文件、目录文件(也就是文件夹)、设备文件、链接文件、管道文件、套接字文件(数据通信的接口)**等等。而这些种类繁多的文件被Linux使用目录树进行管理, 所谓的目录树就是以根目录(/)为主,向下呈现分支状的一种文件结构。原创 2024-08-07 14:30:00 · 957 阅读 · 0 评论 -
Linux操作系统原理-文件系统(1)
虚拟文件系统(Virtual File System,简称VFS)是Linux内核的子系统之一,它为用户程序提供文件和文件系统操作的统一接口,屏蔽不同文件系统的差异和操作细节。借助VFS可以直接使用open()、read()、write()这样的系统调用操作文件,而无须考虑具体的文件系统和实际的存储介质。通过VFS系统,Linux提供了通用的系统调用,可以跨越不同文件系统和介质之间执行,极大简化了用户访问不同文件系统的过程。原创 2024-08-07 11:15:00 · 907 阅读 · 0 评论 -
Linux操作系统学习之文件系统
Linux一切皆文件的思想可谓众所周知,而其文件系统又是字符设备、块设备、管道、进程间通信、网络等等的必备知识,因此其重要性可想而知。本文将先介绍文件系统基础知识,然后介绍最重要的结构体inode以及构建于其上的一层层的文件系统。本文主要从文件系统的设计角度出发,逐步分析了inode和基于inode的ext4文件系统结构和主要组成部分,下面引用极客时间中的一张图作为总结。原创 2024-08-06 20:30:00 · 847 阅读 · 0 评论 -
LinuxIO之文件系统的实现
预备知识:数据库里的transaction(事务)有什么特性?原创 2024-08-06 11:00:00 · 358 阅读 · 0 评论 -
LinuxIO之文件系统的架构
应用程序 ->read ->文件系统的代码 如何实现?当目录里面 A/B/C ,是如何找到C的全过程?文件系统如何描述文件在磁盘的哪些位置?硬链接和 符号链接的详细区别?userspace的文件系统的实现?原创 2024-08-05 13:00:00 · 761 阅读 · 0 评论 -
LinuxIO之块IO流程与IO调度器
这时应用程序感受不到自己被限速了,而内核在处理write-back的阶段,由于没有相关page cache中的inode是属于那个cgroup的信息记录,所以所有的page cache的回写只能放到cgroup的root组中进行限制,而不能在其他cgroup中进行限制,因为root组的cgroup一般是不做限制的。每个请求包含一个或多个bio结构,bio之间用有序链表连接起来,按bio起始扇区的位置从小到大,而且这些bio之间在磁盘扇区是相邻的,也就是说一个bio的结尾刚好是下一个bio的开头。原创 2024-08-05 10:30:00 · 873 阅读 · 0 评论 -
《Linux学习笔记》工作管理方法
【代码】《Linux学习笔记》工作管理方法。原创 2024-08-04 15:15:00 · 133 阅读 · 0 评论 -
用户登录查看命令
ww 用户名。原创 2024-08-03 09:03:16 · 358 阅读 · 0 评论 -
数组中重复的数字
对于这种数组元素在 [0, n-1] 范围内的问题,可以将值为 i 的元素调整到第 i 个位置上进行求解。在调整过程中,如果第 i 位置上已经有一个值为 i 的元素,就可以知道 i 值重复。在一个长度为 n 的数组里的所有数字都在 0 到 n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字是重复的,也不知道每个数字重复几次。请找出数组中任意一个重复的数字。要求时间复杂度 O(N),空间复杂度 O(1)。因此不能使用排序的方法,也不能使用额外的标记数组。原创 2024-07-18 09:08:51 · 302 阅读 · 0 评论 -
图解LCD原理-调色板与Framebuffer原理
那么当使用像素深度为8pp时候,像素深度和我们的带宽不一致,我们的颜色要用16位表示,如果直接用上肯定不可能,那我们就可以选择用调色板,调色板中存放了256种16bpp的颜色,这时候我们color存放的就不是真实的颜色值了,而是存放的是调色板中256种颜色的索引,成线性关系一一对应,这样我们大大减轻了系统的负担。用16bpp还是8bpp这得取决实际情况,16bpp肯定比8pp清晰,但同时带来的负荷也更加重。16BPP中,本来用16bit表示1像素,也可用利用调色板,用8位表示;16/24BPP:真彩色。原创 2024-07-04 09:45:00 · 1081 阅读 · 0 评论 -
MIPI接口LCD调试-DRM显示与应用调试
就是屏幕,比如主控芯片通过HDMI、MIPI DSI,分别接2个屏幕显示,就会有2个对应的Connectors ID;原创 2024-07-03 14:30:00 · 824 阅读 · 0 评论 -
Linux屏幕驱动开发调试笔记
首先了解下什么是MIPI-DSIMIPI-DSI是一种应用于显示技术的串行接口,兼容DPI(显示像素接口,)、DBI(显示总线接口,)和DCS(显示命令集,),以串行的方式发送像素信息或指令给外设,而且从外设中读取状态信息或像素信息,而且在传输的过程中享有自己独立的通信协议,包括数据包格式和纠错检错机制。下图所示的是MIPI-DSI接口的简单示意图。MIPI-DSI。原创 2024-07-03 10:00:00 · 1412 阅读 · 3 评论 -
判断磁盘是SSD或HDD盘
lsblk -d -o name,rota命令,0表示SSD,1表示HDD下载工具执行检测命令。原创 2024-07-02 13:45:00 · 252 阅读 · 0 评论 -
Linux操作系统学习——启动
Linux操作系统内核是服务端学习的根基,也是提高编程能力、源码阅读能力和进阶知识学习能力的重要部分,本文开始将记录Linux操作系统中的各个部分源码学习历程。关于如何学习源码,个人觉得可以从以下角度入手,有效地提高阅读和学习的效率。(学习语言就不说了,这是基本功。学习IDE推荐Source Insight或者Visual Studio,网站源码阅读推荐woboq)理解代码的组织结构。以Linux源码举例,首先你得知道操作系统分为哪几个部分,他们单独做了什么功能,如何进行配合完成更为具体的功能。原创 2024-07-01 23:47:25 · 964 阅读 · 0 评论 -
Linux操作系统学习——内核运行
上文中,我们分析了从按下电源键到BootLoader完成加载的过程。加载完成之后,就要正式启动Linux内核了,而在这之前首先要完成从实模式到保护模式的切换。本文主要分析以下几部分内容新旧中断的交替打开A20进入main函数内核初始化其实整个过程中还有很多内容,比如检查各种硬件设备等,在此略过不提。下面就开始潜入Linux源码的海洋畅游啦。本文介绍了实模式到保护模式的整个切换过程,完成了内核的加载并开始正式准备创建0号进程。后续将继续分析启动内核创建0号、1号、2号进程的整个过程。原创 2024-06-28 10:45:00 · 806 阅读 · 3 评论 -
Linux操作系统学习——内核初始化
前文分析到Linux内核正式启动,完成了实模式到保护模式的切换,并做好了各种准备工作。下来就要看开始内核初始化工作了,源码位置位于init/main.c中的start_kernel(),源码如附录所示。这包括了一系列重要的初始化工作,本文会介绍其中一部分较为重要的,但是详细的介绍依然会留在后文各个模块的源码学习中单独进行。本文的目的在于承接上文给出一个从内核启动到各个模块开始运转的过程介绍,而不是详细的各部分内容介绍。创建0号进程:INIT_TASK(init_task)原创 2024-06-28 10:30:00 · 1024 阅读 · 0 评论 -
Linux操作系统通过实战理解CPU上下文切换
Linux是一个多任务的操作系统,可以支持远大于CPU数量的任务同时运行,但是我们都知道这其实是一个错觉,真正是系统在很短的时间内将CPU轮流分配给各个进程,给用户造成多任务同时运行的错觉。所以这就是有一个问题,在每次运行进程之前CPU都需要知道进程从哪里加载、从哪里运行,也就是说需要系统提前帮它设置好CPU寄存器和程序计数器。原创 2024-06-27 13:30:00 · 834 阅读 · 0 评论 -
Linux操作系统内存管理之磁盘高速缓存机制
相信通过前面的虚拟文件系统VFS及一个具体的Ext2文件系统博文,大家对基本的VFS体系有一个大致的掌握了吧。从本章开始,我们将讨论一些VFS底层的技术细节,磁盘高速缓存就是其中一个重要的技术。磁盘高速缓存是一种软件机制,它允许系统把通常存放在磁盘上的一些数据保留在RAM中,以便对那些数据的进一步访问而不用再访问磁盘。因为对同一磁盘数据的反复访问频繁发生,所以磁盘高速缓存对系统性能至关重要。与磁盘交互的用户进程有权反复请求读或写同一磁盘数据。此外,不同的进程可能也需要在不同的时间访问相同的磁盘数据。原创 2024-06-27 10:30:00 · 1055 阅读 · 0 评论 -
Linux操作系统内存管理RAID磁盘阵列与配置
2、使用fdisk工具将新磁盘设备/dev/sdb、/dev/sdc、/dev/sdd、/dev/sde划分出主分区sdb1、sdc1、sdd1、sde1,并且把分区类型的 ID 标记号改为“fd”把多块独立的物理硬盘按不同的方式组合起来形成一个硬盘组(逻辑硬盘)。组成磁盘阵列的不同方式称为RAID级别(RAID Levels)RAID0、RAID1、RAID5、RAID6、RAID1+0等。⑤、RAID 1+0(先做镜像,再做条带)⑥、RAID 0+1(先做条带,再做镜像)①、RAID 0(条带化存储)原创 2024-06-26 12:00:00 · 1085 阅读 · 0 评论 -
Linux操作系统进程同步的几种方式及基本原理
其中sem=1表示进程PA和PB都未进入类名为S的临界区,sem=0表示进程PA或PB已进入类名为S的临界区,sem=-1表示进程PA和PB中,一个进程已进入临界区,而另一个进程等待进入该临界区。:一组在异步环境下的并发进程,各自的执行结果互为对方的执行条件,从而限制各进程的执行速度的过程称为并发进程间的直接制约。在并发进程中,一个或多个进程要对公用资源进行访问时,必须确保该资源处于空闲状态,也就是说,在并发进程中,临界区只允许一个进程进入,而其他进程阻塞,等待该共享临界资源释放。该信号即为信号量s。原创 2024-06-25 17:00:00 · 1186 阅读 · 0 评论 -
Linux操作系统进程的状态和转换(五态模型)
为了缓和内存紧张的情况,将内存中处于阻塞状态的进程换至外存上。三态模型和五态模型都是假设所有进程都在内存中的事实上有序不断的创建进程,当系统资源尤其是内存资源已经不能满足进程运行的要求时,必须把某些进程挂起(suspend),对换到磁盘对换区中,释放它占有的某些资源,暂时不参与低级调度。挂起等待态→挂起就绪态:引起进程等待的事件发生之后,相应的挂起等待态进程将转换为挂起就绪态挂起就绪态→就绪态:当内存中没有就绪态进程,或者挂起就绪态进程具有比就绪态进程更高的优先级,系统将把挂起就绪态进程转换成就绪态。原创 2024-06-26 11:00:00 · 862 阅读 · 0 评论 -
Linux操作系统基础的常用命令
Linux是一种自由和开放源码的操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、台式计算机。Linux出现于1991年,是由芬兰赫尔辛基大学学生Linus Torvalds和后来加入的众多爱好者共同开发完成。原创 2024-06-25 09:45:00 · 356 阅读 · 0 评论 -
Linux操作系统汇编指令入门级整理知识点
我们大都是被高级语言惯坏了的一代,源源不断的新特性正在逐步添加到各类高级语言之中,汇编作为最接近机器指令的低级语言,已经很少被直接拿来写程序了,不过我还真的遇到了一个,那是之前的一个同事,因为在写代码时遇到了成员函数权限及可见性的问题,导致他无法正确调用想执行的函数,结果他就开始在 C++ 代码里嵌入汇编了,绕过了种种限制终于如愿以偿,但是读代码的时候我们傻眼了…原创 2024-06-24 17:00:00 · 803 阅读 · 0 评论 -
Linux操作系统汇编语言基础知识(图文代码)
汇编语言是程序设计语言的基础语言,是唯一可以直接与计算机硬件打交道的语言。原创 2024-06-24 09:00:00 · 905 阅读 · 0 评论 -
Linux操作系统段式存储管理、 段页式存储管理
用户程序划分:按段式划分(对用户来讲,按段的逻辑关系进行划分;对系统讲,按页划分每一段)逻辑地址:内存划分:按页式存储管理方案内存分配:以页为单位进行分配全部优点2. 提供了虚存空间,能更有效利用主存缺点:增加了硬件成本系统复杂度较大[外链图片转存中…(img-jMCdSzgh-1719021894217)]原创 2024-06-23 15:30:00 · 449 阅读 · 0 评论 -
Linux操作系统处理器调度基本准则和实现
如果处理机正在执行第i级队列中的某进程时,又有新进程进入优先级较高的队列(第 1 ~ (i-1)中的任何一个队列),则此时新进程将抢占正在运行进程的处理机,即由调度程序把正在运行的进程放回到第i级队列的末尾,把处理机分配给新到的更高优先级的进程。调度算法和方式的不同,也会对系统的吞吐量产生较大的影响。当某一个进程正在处理机上运行时,即使有某个更为重要或紧迫的进程进入就绪队列,仍然让正在运行的进程继续运行,直到由于其自身的原因而主动让出处理机时(任务完成或等待事件),才把处理机分配给更为重要或紧迫的进程。原创 2024-06-23 09:45:00 · 847 阅读 · 0 评论 -
Linux操作系统IO机制原理(流程图详解)
我们之前的文章提到了操作系统的三个抽象,它们分别是进程、地址空间和文件,除此之外,操作系统还要控制所有的 I/O 设备。操作系统必须向设备发送命令,捕捉中断并处理错误。它还应该在设备和操作系统的其余部分之间提供一个简单易用的接口。操作系统如何管理 I/O 是我们接下来的重点。不同的人对 I/O 硬件的理解也不同。对于电子工程师而言,I/O 硬件就是芯片、导线、电源和其他组成硬件的物理设备。而我们程序员眼中的 I/O 其实就是硬件提供给软件的接口,比如硬件接受到的命令、执行的操作以及反馈的错误。原创 2024-06-22 10:04:04 · 1352 阅读 · 0 评论 -
Linux操作系统ARM指令集与汇编语言程序设计
应用ARM汇编指令集编写程序,实现正常状态下开发板上的LED灯不亮,按下一个按键之后开发板上的LED灯进入流水灯模式。将生成的二进制代码用烧写脚本烧写到SD卡中,插入开发板的SD卡槽,从SD卡启动,按下按键即开启LED流水灯模式。通过掩码取出按键数据地址中的值的状态来判断按键是否按下,若按下则跳转到LED流水灯的程序当中。流水灯程序即顺序的程序结构,依次点亮LED灯,延时并熄灭,达到流水效果。把按键控制地址的内容全置零,为输入模式(复位值为0,此步骤可省略)。1.了解并掌握ARM汇编指令集。原创 2024-06-22 10:03:31 · 351 阅读 · 0 评论