还未设置个性签名
成为VIP会员 享9项特权: 开通会员

完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>

3天内不再提示

Linux文件系统解析

Linux爱好者 来源:搜狐网 作者:搜狐网 2020-09-16 11:29 次阅读

Linux 中,最直观、最可见的部分就是文件系统(file system)。下面我们就来一起探讨一下关于 Linux 中国的文件系统,系统调用以及文件系统实现背后的原理和思想。这些思想中有一些来源于 MULTICS,现在已经被 Windows 等其他操作系统使用。Linux 的设计理念就是小的就是好的(Small is Beautiful)。虽然 Linux 只是使用了最简单的机制和少量的系统调用,但是 Linux 却提供了强大而优雅的文件系统。

Linux文件系统基本概念

Linux 在最初的设计是 MINIX1 文件系统,它只支持 14 字节的文件名,它的最大文件只支持到 64 MB。在 MINIX 1 之后的文件系统是 ext 文件系统。ext 系统相较于 MINIX 1 来说,在支持字节大小和文件大小上均有很大提升,但是 ext 的速度仍没有 MINIX 1 快,于是,ext 2 被开发出来,它能够支持长文件名和大文件,而且具有比 MINIX 1 更好的性能。这使他成为 Linux 的主要文件系统。只不过 Linux 会使用VFS曾支持多种文件系统。在 Linux 链接时,用户可以动态的将不同的文件系统挂载倒 VFS 上。

Linux 中的文件是一个任意长度的字节序列,Linux 中的文件可以包含任意信息,比如 ASCII 码、二进制文件和其他类型的文件是不加区分的。

为了方便起见,文件可以被组织在一个目录中,目录存储成文件的形式在很大程度上可以作为文件处理。目录可以有子目录,这样形成有层次的文件系统,Linux 系统下面的根目录是/,它通常包含了多个子目录。字符/还用于对目录名进行区分,例如/usr/cxuan表示的就是根目录下面的 usr 目录,其中有一个叫做 cxuan 的子目录。

下面我们介绍一下 Linux 系统根目录下面的目录名

/bin,它是重要的二进制应用程序,包含二进制文件,系统的所有用户使用的命令都在这里

/boot,启动包含引导加载程序的相关文件

/dev,包含设备文件,终端文件,USB 或者连接到系统的任何设备

/etc,配置文件,启动脚本等,包含所有程序所需要的配置文件,也包含了启动/停止单个应用程序的启动和关闭 shell 脚本

/home,本地主要路径,所有用户用 home 目录存储个人信息

/lib,系统库文件,包含支持位于 /bin 和 /sbin 下的二进制库文件

/lost+found,在根目录下提供一个遗失+查找系统,必须在 root 用户下才能查看当前目录下的内容

/media,挂载可移动介质

/mnt,挂载文件系统

/opt,提供一个可选的应用程序安装目录

/proc,特殊的动态目录,用于维护系统信息和状态,包括当前运行中进程信息

/root,root 用户的主要目录文件夹

/sbin,重要的二进制系统文件

/tmp, 系统和用户创建的临时文件,系统重启时,这个目录下的文件都会被删除

/usr,包含绝大多数用户都能访问的应用程序和文件

/var,经常变化的文件,诸如日志文件或数据库

在 Linux 中,有两种路径,一种是绝对路径(absolute path),绝对路径告诉你从根目录下查找文件,绝对路径的缺点是太长而且不太方便。还有一种是相对路径(relative path),相对路径所在的目录也叫做工作目录(working directory)。

如果/usr/local/books是工作目录,那么 shell 命令

cpbooksbooks-replica

就表示的是相对路径,而

cp/usr/local/books/books/usr/local/books/books-replica

则表示的是绝对路径。

在 Linux 中经常出现一个用户使用另一个用户的文件或者使用文件树结构中的文件。两个用户共享同一个文件,这个文件位于某个用户的目录结构中,另一个用户需要使用这个文件时,必须通过绝对路径才能引用到他。如果绝对路径很长,那么每次输入起来会变的非常麻烦,所以 Linux 提供了一种链接(link)机制。

举个例子,下面是一个使用链接之前的图

以上所示,比如有两个工作账户 jianshe 和 cxuan,jianshe 想要使用 cxuan 账户下的 A 目录,那么它可能会输入/usr/cxuan/A,这是一种未使用链接之后的图。

使用链接后的示意如下

现在,jianshe 可以创建一个链接来使用 cxuan 下面的目录了。‘

当一个目录被创建出来后,有两个目录项也同时被创建出来,它们就是.和..,前者代表工作目录自身,后者代表该目录的父目录,也就是该目录所在的目录。这样一来,在 /usr/jianshe 中访问 cxuan 中的目录就是../cxuan/xxx

Linux 文件系统不区分磁盘的,这是什么意思呢?一般来说,一个磁盘中的文件系统相互之间保持独立,如果一个文件系统目录想要访问另一个磁盘中的文件系统,在 Windows 中你可以像下面这样。

两个文件系统分别在不同的磁盘中,彼此保持独立。

而在 Linux 中,是支持挂载的,它允许一个磁盘挂在到另外一个磁盘上,那么上面的关系会变成下面这样

挂在之后,两个文件系统就不再需要关心文件系统在哪个磁盘上了,两个文件系统彼此可见。

Linux 文件系统的另外一个特性是支持加锁(locking)。在一些应用中会出现两个或者更多的进程同时使用同一个文件的情况,这样很可能会导致竞争条件(race condition)。一种解决方法是对其进行加不同粒度的锁,就是为了防止某一个进程只修改某一行记录从而导致整个文件都不能使用的情况。

POSIX 提供了一种灵活的、不同粒度级别的锁机制,允许一个进程使用一个不可分割的操作对一个字节或者整个文件进行加锁。加锁机制要求尝试加锁的进程指定其要加锁的文件,开始位置以及要加锁的字节

Linux 系统提供了两种锁:共享锁和互斥锁。如果文件的一部分已经加上了共享锁,那么再加排他锁是不会成功的;如果文件系统的一部分已经被加了互斥锁,那么在互斥锁解除之前的任何加锁都不会成功。为了成功加锁、请求加锁的部分的所有字节都必须是可用的。

在加锁阶段,进程需要设计好加锁失败后的情况,也就是判断加锁失败后是否选择阻塞,如果选择阻塞式,那么当已经加锁的进程中的锁被删除时,这个进程会解除阻塞并替换锁。如果进程选择非阻塞式的,那么就不会替换这个锁,会立刻从系统调用中返回,标记状态码表示是否加锁成功,然后进程会选择下一个时间再次尝试。

加锁区域是可以重叠的。下面我们演示了三种不同条件的加锁区域。

如上图所示,A 的共享锁在第四字节到第八字节进行加锁

如上图所示,进程在 A 和 B 上同时加了共享锁,其中 6 - 8 字节是重叠锁

如上图所示,进程 A 和 B 和 C 同时加了共享锁,那么第六字节和第七字节是共享锁。

如果此时一个进程尝试在第 6 个字节处加锁,此时会设置失败并阻塞,由于该区域被 A B C 同时加锁,那么只有等到 A B C 都释放锁后,进程才能加锁成功。

Linux 文件系统调用

许多系统调用都会和文件与文件系统有关。我们首先先看一下对单个文件的系统调用,然后再来看一下对整个目录和文件的系统调用。

为了创建一个新的文件,会使用到creat方法,注意没有e。

这里说一个小插曲,曾经有人问 UNIX 创始人 Ken Thompson,如果有机会重新写 UNIX ,你会怎么办,他回答自己要把 creat 改成 create ,哈哈哈哈。

这个系统调用的两个参数是文件名和保护模式

fd=creat("aaa",mode);

这段命令会创建一个名为 aaa 的文件,并根据 mode 设置文件的保护位。这些位决定了哪个用户可能访问文件、如何访问。

creat 系统调用不仅仅创建了一个名为 aaa 的文件,还会打开这个文件。为了允许后续的系统调用访问这个文件,这个 creat 系统调用会返回一个非负整数, 这个就叫做文件描述符(file descriptor),也就是上面的 fd。

如果在已经存在的文件上调用了 creat 系统调用,那么该文件中的内容会被清除,从 0 开始。通过设置合适的参数,open系统调用也能够创建文件。

下面让我们看一看主要的系统调用,如下表所示

为了对一个文件进行读写的前提是先需要打开文件,必须使用 creat 或者 open 打开,参数是打开文件的方式,是只读、可读写还是只写。open 系统调用也会返回文件描述符。打开文件后,需要使用close系统调用进行关闭。close 和 open 返回的 fd 总是未被使用的最小数量。

什么是文件描述符?文件描述符就是一个数字,这个数字标示了计算机操作系统中打开的文件。它描述了数据资源,以及访问资源的方式。

当程序要求打开一个文件时,内核会进行如下操作

授予访问权限

在全局文件表(global file table)中创建一个条目(entry)

软件提供条目的位置

文件描述符由唯一的非负整数组成,系统上每个打开的文件至少存在一个文件描述符。文件描述符最初在 Unix 中使用,并且被包括 Linux,macOS 和 BSD 在内的现代操作系统所使用。

当一个进程成功访问一个打开的文件时,内核会返回一个文件描述符,这个文件描述符指向全局文件表的 entry 项。这个文件表项包含文件的 inode 信息,字节位移,访问限制等。例如下图所示

默认情况下,前三个文件描述符为STDIN(标准输入)、STDOUT(标准输出)、STDERR(标准错误)。

标准输入的文件描述符是 0 ,在终端中,默认为用户的键盘输入

标准输出的文件描述符是 1 ,在终端中,默认为用户的屏幕

与错误有关的默认数据流是 2,在终端中,默认为用户的屏幕。

在简单聊了一下文件描述符后,我们继续回到文件系统调用的探讨。

在文件系统调用中,开销最大的就是 read 和 write 了。read 和 write 都有三个参数

文件描述符:告诉需要对哪一个打开文件进行读取和写入

缓冲区地址:告诉数据需要从哪里读取和写入哪里

统计:告诉需要传输多少字节

这就是所有的参数了,这个设计非常简单轻巧。

虽然几乎所有程序都按顺序读取和写入文件,但是某些程序需要能够随机访问文件的任何部分。与每个文件相关联的是一个指针,该指针指示文件中的当前位置。顺序读取(或写入)时,它通常指向要读取(写入)的下一个字节。如果指针在读取 1024 个字节之前位于 4096 的位置,则它将在成功读取系统调用后自动移至 5120 的位置。

Lseek系统调用会更改指针位置的值,以便后续对 read 或 write 的调用可以在文件中的任何位置开始,甚至可以超出文件末尾。

lseek = Lseek ,段首大写。

lseek 避免叫做 seek 的原因就是 seek 已经在之前 16 位的计算机上用于搜素功能了。

Lseek有三个参数:第一个是文件的文件描述符,第二个是文件的位置;第三个告诉文件位置是相对于文件的开头,当前位置还是文件的结尾

lseek(intfildes,off_toffset,intwhence);

lseek 的返回值是更改文件指针后文件中的绝对位置。lseek 是唯一从来不会造成真正磁盘查找的系统调用,它只是更新当前的文件位置,这个文件位置就是内存中的数字。

对于每个文件,Linux 都会跟踪文件模式(常规,目录,特殊文件),大小,最后修改时间以及其他信息。程序能够通过stat系统调用看到这些信息。第一个参数就是文件名,第二个是指向要放置请求信息结构的指针。这些结构的属性如下图所示。

fstat调用和stat相同,只有一点区别,fstat 可以对打开文件进行操作,而 stat 只能对路径进行操作。

pipe文件系统调用被用来创建 shell 管道。它会创建一系列的伪文件,来缓冲和管道组件之间的数据,并且返回读取或者写入缓冲区的文件描述符。在管道中,像是如下操作

sort

sort 进程将会输出到文件描述符1,也就是标准输出,写入管道中,而 head 进程将从管道中读入。在这种方式中,sort 只是从文件描述符 0 中读取并写入到文件描述符 1 (管道)中,甚至不知道它们已经被重定向了。如果没有重定向的话,sort 会自动的从键盘读入并输出到屏幕中。

最后一个系统调用是fcntl,它用来锁定和解锁文件,应用共享锁和互斥锁,或者是执行一些文件相关的其他操作。

现在我们来关心一下和整体目录和文件系统相关的系统调用,而不是把精力放在单个的文件上,下面列出了这些系统调用,我们一起来看一下。

可以使用 mkdir 和 rmdir 创建和删除目录。但是需要注意,只有目录为空时才可以删除。

创建一个指向已有文件的链接时会创建一个目录项(directory entry)。系统调用 link 来创建链接,oldpath 代表已有的路径,newpath 代表需要链接的路径,使用unlink可以删除目录项。当文件的最后一个链接被删除时,这个文件会被自动删除。

使用chdir系统调用可以改变工作目录。

最后四个系统调用是用于读取目录的。和普通文件类似,他们可以被打开、关闭和读取。每次调用readdir都会以固定的格式返回一个目录项。用户不能对目录执行写操作,但是可以使用 creat 或者 link 在文件夹中创建一个目录,或使用 unlink 删除一个目录。用户不能在目录中查找某个特定文件,但是可以使用rewindir作用于一个打开的目录,使他能在此从头开始读取。

  • Linux
    +关注

    关注

    75

    文章

    7638

    浏览量

    196557
  • 文件系统
    +关注

    关注

    0

    文章

    128

    浏览量

    18567
收藏 人收藏

    评论

    相关推荐

    Linux内存管理体系介绍

    内存是计算机最重要的资源之一,内存管理是操作系统最重要的任务之一。内存管理并不是简单地管理一下内存而....
    的头像 Linux阅码场 发表于 08-08 09:28 14次 阅读

    自旋锁的发展历史与使用方法

    自旋锁是Linux内核里最常用的锁之一,自旋锁的概念很简单,就是如果加锁失败在等锁时是使用休眠等待还....
    的头像 Linux阅码场 发表于 08-08 08:51 27次 阅读

    是谁关闭了Linux抢占?

    我们理解,spin_lock()会调用preempt_disable() 导致本核的抢占调度被关闭(....
    发表于 08-07 17:19 65次 阅读
    是谁关闭了Linux抢占?

    Linux僵尸进程会被杀死吗?

    那么,根据POSIX标准关于信号(signal)的定义,当我们执行kill -9 4730(4730....
    发表于 08-07 16:48 29次 阅读
    Linux僵尸进程会被杀死吗?

    Linux内核之ISP驱动流程分析

    应用层就是通过访问video_device生成的节点来进行操作Camera,所以video_devi....
    的头像 冬至配饺子 发表于 08-07 16:13 112次 阅读

    Linux内核之Camera驱动分析

    上面主要是根据全局变量ov13850_custom_config中的信息填充时序信息。然后初始化v4....
    的头像 冬至配饺子 发表于 08-07 16:08 138次 阅读

    看看Linux为相机提供的驱动框架

      V4L2 (Video Linux Two),是为支持Linux内核设计的驱动框架驱动框架。为应....
    的头像 冬至配饺子 发表于 08-07 16:03 166次 阅读
    看看Linux为相机提供的驱动框架

    分享linux中的13个基本Cat命令案例

    当您将重定向与标准输入一起使用时<'(小于符号),它使用文件名test2作为命令的输入,输出将显示在终端中。
    的头像 冬至配饺子 发表于 08-07 15:54 100次 阅读
    分享linux中的13个基本Cat命令案例

    用Linux语言输出变色字体代码案例

     字背景颜色范围:40 - 4940:黑41:深红42:绿43:黄色44:蓝色45:紫色46:深绿4....
    发表于 08-06 17:12 88次 阅读

    深度解析Linux的内存管理体系

    Linux内存管理的整体模式是虚拟内存管理(分页内存管理),并在此基础上建立了一个庞大的内存管理体系....
    发表于 08-06 16:55 108次 阅读

    以x86 CPU架构理解Linux中断机制

    中断机制:CPU在执行指令时,收到某个中断信号转而去执行预先设定好的代码,然后再返回到原指令流中继续....
    的头像 Linux阅码场 发表于 08-06 16:19 459次 阅读

    Linux-基础IO详解

    磁盘上的文件 本质是对文件的所有操作,都是对外设的输入和输出 简称 IO
    发表于 08-05 10:47 101次 阅读

    什么是调度?如何进行调度?

    进程调度是操作系统最重要的内容之一,也是学习操作系统的重点和难点。关于进程调度,我们首先就会问出一些....
    发表于 08-05 09:04 68次 阅读

    【开发教程1】手把手教你做平板电脑-Linux 引导过程

    Linux 引导过程 ——疯壳·嵌入式平板开发   Linux 内核与 Android 系统 linux 内核有什么区别? ...
    发表于 08-04 18:55 997次 阅读
    【开发教程1】手把手教你做平板电脑-Linux 引导过程

    驱动访问Linux IO内存流程

    在内核中访问IO内存(通常是芯片内部的各个I2C,SPI, USB等控制器的寄存器或者外部内存总线上....
    的头像 冬至配饺子 发表于 08-04 18:10 235次 阅读
    驱动访问Linux IO内存流程

    小编科普几种查看网络带宽的方法

    有些时候我们的网络缓慢并不是由远程服务器或路由器所引起的,有可能是因为系统中的某些进程占用了太多可用....
    的头像 冬至配饺子 发表于 08-03 17:57 440次 阅读
    小编科普几种查看网络带宽的方法

    Linux和Android车载系统比较

    Android Automotive OS,尽管开头都顶着Android的大名,但Android A....
    的头像 city_prolove 发表于 08-03 15:45 209次 阅读

    精简linux系统下载

    Linux是现在最流行的操作系统,含有大量的源代码。Xilinx 2020.1使用的Linux 5.....
    的头像 树没了派 发表于 08-02 17:10 137次 阅读

    在Linux/U-Boot里为QSPI Flash使用UBIFS

    UBIFS是更强壮的FLash文件系统。很多嵌入式系统都使用了UBIFS。Xilinx PetaLi....
    发表于 08-02 15:51 15次 阅读

    不同操作系统间QoR性能存在差异

    本篇博文中的分析是根据真实客户问题撰写的,该客户发现不同操作系统间 QoR 性能存在差异。虽然可以理....
    的头像 1654966251.876700 发表于 08-02 11:52 102次 阅读
    不同操作系统间QoR性能存在差异

    自动删除SDK/Vitis下驱动程序的旧版本的Linux脚本

    Xilinx的开发工具SDK/Vitis都可以自动根据Vivado设计,创建软件工程,自动配置各个外....
    发表于 08-02 11:32 29次 阅读

    测试MPSoC GEM的1588功能

    MPSoC的MAC支持1588。在Linux Kernel的配置项中使能CONFIG_MACB_US....
    的头像 王磊 发表于 08-02 09:39 71次 阅读
    测试MPSoC GEM的1588功能

    扩展MPSoC中断详解

    MPSoC是带ARM处理器和FPGA(PL)的SoC,包含4核A53及其常用外部模块(PS)。A53....
    发表于 08-02 09:14 21次 阅读

    检查Linux DRM显示设备ID的脚本

    不同设计里,Linux DRM子系统里设备ID不一样。每次修改,费时费力,也容易出错。因此写了以下脚....
    发表于 08-02 09:01 43次 阅读

    Standalone例程的应用与分析

    如果是VCK190 ES单板,需要在Lounge里申请"Versal Tools Early Eac....
    的头像 LL-LING宁 发表于 08-02 08:03 49次 阅读
    Standalone例程的应用与分析

    如何在Linux平台上进行Linux程序开发

    最近陆陆续续有工程师拿到了VCK190单板。 VCK190集成了Xilinx的7nm AIE,有很强....
    发表于 08-02 08:03 68次 阅读
    如何在Linux平台上进行Linux程序开发

    修改V4L2的Video Pipeline的devicetree

    PetaLinux 能够根据Vivado的设计,自动生成V4L2的Video Pipeline的de....
    的头像 李春梅 发表于 08-02 08:03 33次 阅读
    修改V4L2的Video Pipeline的devicetree

    如何用好你的SSD?

    在过去十几年中,CPU的性能提升了100倍以上,而传统的HDD硬盘(Hard Disk Drive)....
    发表于 08-01 16:44 69次 阅读

    到底什么是调度延迟

    本次圈定的性能指标是调度延迟,那首要的目标就是看看到底什么是调度延迟,调度延迟是保证每一个可运行进程....
    的头像 Linux阅码场 发表于 08-01 11:08 150次 阅读

    Linux内核版本号是如何形成的?

    当 Linus 刚开始开发内核时,所使用的版本控制系统只是由一个从零(0.x)开始的递增变量方案组成....
    的头像 马哥Linux运维 发表于 07-31 11:37 110次 阅读

    LINUX设备驱动程序

    以 Linux 为代表的自由操作系统的很多优点之一, 是它们的内部是开放给所有 人看的. 操作系统....
    发表于 07-31 11:02 18次 阅读

    FDIR简介与工作原理

    Intel 以太网Flow Director技术(Intel Ethernet Flow Direc....
    的头像 FPGA之家 发表于 07-31 10:37 132次 阅读

    【飞凌RZ/G2L开发板试用体验】基于飞凌RZ/G2L开发板的波形显示系统的搭建

    本人收到开发板后,进行了基础功能的测试,便根据所申请内容进行课题开发。本开发板支持MIPI接口的LCD显示器,但是本人没...
    发表于 07-30 18:43 3302次 阅读

    HiddenWasp 恶意软件针对特定的Linux设备所有者

    Linux 已经变成了如此庞大的代码和补丁组合,以至于相对容易放入编写良好的恶意软件。
    的头像 算一挂 发表于 07-30 16:55 129次 阅读

    【RT-Thread学习笔记】使用hexdump打印字节数组

    【Linux C语言编程】使用hexdump打印字节数组
    的头像 嵌入式物联网开发 发表于 07-30 13:59 341次 阅读
    【RT-Thread学习笔记】使用hexdump打印字节数组

    【RT-Thread学习笔记】Makefile的FORCE

    【RT-Thread学习笔记】十分钟学会Makefile的FORCE
    的头像 嵌入式物联网开发 发表于 07-30 13:55 371次 阅读
    【RT-Thread学习笔记】Makefile的FORCE

    【RT-Thread学习笔记】Makefile核心基础知识

    ​ 笔者常年在Linux环境编程,经常在项目中与Makefile打交道,最近总结了几个Makefil....
    的头像 嵌入式物联网开发 发表于 07-30 13:53 334次 阅读
    【RT-Thread学习笔记】Makefile核心基础知识

    【RT-Thread学习笔记】基于Linux的反汇编和栈追溯

    【经验分享】基于Linux命令行编程环境的栈追溯和反汇编技术实践分享
    的头像 嵌入式物联网开发 发表于 07-30 13:44 501次 阅读
    【RT-Thread学习笔记】基于Linux的反汇编和栈追溯

    Linux内核的基本架构 Rudroid的架构分析

    WORKDIR /setupRUN git clone https://github.com/uni....
    发表于 07-29 15:44 76次 阅读

    Linux终端工具介绍——WindTerm

    它是一款 C 语言开发的跨平台(Windows、MacOS、Linux) SSH 客户端,完全免费用....
    发表于 07-29 15:21 131次 阅读

    Linux驱动开发之IO模型介绍

    在Linux驱动开发中,应用程序通过循环读取或者中断的方式都会使得CPU的占用率很高。本文介绍五种I....
    发表于 07-29 09:03 136次 阅读

    Linux下如何使用中断的方式来驱动按键

    Linux下的按键输入驱动开发模板一文中介绍了基本的按键输入捕获流程,这里将进一步介绍如何使用中断的....
    发表于 07-29 08:59 95次 阅读

    Linux内核中断设计与实现

    裸机编程中使用中断比较麻烦,需要配置寄存器、使能IRQ等等。而在Linux驱动编程中,内核提供了完善....
    发表于 07-29 08:57 93次 阅读

    Linux的I/O优化知识

    IO性能对于一个系统的影响是至关重要的。一个系统经过多项优化以后,瓶颈往往落在数据库;而数据库经过多....
    发表于 07-28 09:25 123次 阅读

    在linux里对多个MAC使用同一subnet的方法

    这个问题是Linux Kernel TCP/IP Stack对于同一子网的IP处理方式决定的,严格来....
    发表于 07-27 09:47 103次 阅读

    Linux内核之块分配器

    为了解决小块内存的分配问题,Linux 内核提供了块分配器,最早实现的块分配器是SLAB 分配器。
    的头像 Linux阅码场 发表于 07-27 09:35 148次 阅读

    嵌入式Linux开发教程及案例+案例分享

    发表于 07-26 14:17 1555次 阅读

    嵌入式Linux设计:内核配置

    配置是构建内核的第一步。有许多方法和各种选项可供选择。内核将在进程结束时生成一个 .config 文....
    发表于 07-26 11:42 102次 阅读
    嵌入式Linux设计:内核配置

    嵌入式Linux设计:内核分析

    嵌入式系统设计需要与所选操作系统兼容的硬件——在这种情况下是 Linux。分发的选择涉及各种修改和基....
    发表于 07-26 10:58 96次 阅读
    嵌入式Linux设计:内核分析

    嵌入式Linux设计:文件系统和引导加载程序

    Linux 内核在系统引导期间所做的最后一件事是挂载根文件系统。Linux 内核没有规定文件系统结构....
    发表于 07-26 10:53 109次 阅读
    嵌入式Linux设计:文件系统和引导加载程序

    嵌入式Linux设计

    术语“嵌入式 Linux”属于嵌入式系统中使用的发行版类别,即专门的电子设备,它们是要控制的更大系统....
    发表于 07-26 10:24 92次 阅读
    嵌入式Linux设计

    每日推荐 | V853开发板开发进阶,单PCB轮式机器人的教程

    大家好,以下为电子发烧友推荐每日好帖,欢迎留言点评讨论~ 1、V853开发板开发进阶——在Linux下加载E907核心固件 推荐理由...
    发表于 07-26 09:59 10514次 阅读

    请问ch582有linux下的ble例程可以提供么?

    虽然这个问题可能有点怪 我的环境是arch+mrs 官网上下载的工程完全无法编译,各种库文件名不对、无法找到函数和变量的定义 ...
    发表于 07-26 06:44 61次 阅读

    V853开发板开发进阶——在Linux下加载E907核心固件

    V853开发板购买链接:https://www.hqchip.com/p/KFB-V853.html V853开发板资料下载:V853 Doc E907 核心固件加载 在...
    发表于 07-25 16:03 3910次 阅读

    求助,请问有Linux版的wchisptool吗

    如果没有 不是不必需买个wchlink才行 手头只有jlink   ...
    发表于 07-21 06:29 336次 阅读

    嵌入式项目开发实例资料合集(监控类、音视频类、智能家居类)

    资料包括嵌入式项目开发资料、视频教程等,回帖即可免费获取 [hide]链接:  提取码: b91t [/hide] ...
    发表于 07-20 14:35 5671次 阅读
    嵌入式项目开发实例资料合集(监控类、音视频类、智能家居类)

    CH9344SER_LINUX编译失败是为什么?

    make -C /lib/modules/5.15.32-v8+/build M=/home/pi/Downloads/LINUX make[1]: Entering directory '/usr/src/linux-...
    发表于 07-20 06:51 618次 阅读

    基于全志RK3568J的RGB和SATA功能转接模块

    RGB功能转接模块 FET3568-C核心板一共支持五种显示接口,大家可以在开发板上看到的分别是HDMI、eDP、LVDS...
    发表于 07-19 14:50 3043次 阅读

    AM4379 AM437x ARM Cortex-A9 微处理器 (MPU)

    TI AM437x高性能处理器基于ARM Cortex-A9内核。 这些处理器通过3D图形加速得到增强,可实现丰富的图形用户界面,还配备了协处理器,用于进行确定性实时处理(包括EtherCAT,PROFIBUS,EnDat等工业通信协议)。该器件支持高级操作系统(HLOS)。基于Linux的® 可从TI免费获取。其它HLOS可从TI的设计网络和生态系统合作伙伴处获取。 这些器件支持对采用较低性能ARM内核的系统升级,并提供更新外设,包括QSPI-NOR和LPDDR2等存储器选项。 这些处理器包含功能方框图中显示的子系统,并且后跟相应的“说明”中添加了更多信息说明。 处理器子系统基于ARM Cortex-A9内核,PowerVR SGX™图形加速器子系统提供3D图形加速功能以支持显示和高级用户界面。 可编程实时单元子系统和工业通信子系统(PRU-ICSS与ARM内核分离,允许单独操作和计时,以实现更高的效率和灵活性.PRU-ICSS支持更多外设接口和EtherCAT,PROFINET,EtherNet /IP,PROFIBUS,以太网Powerlink,Sercos,EnDat等...
    发表于 09-25 11:51 686次 阅读
    AM4379 AM437x ARM Cortex-A9 微处理器 (MPU)