自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 资源 (1)
  • 收藏
  • 关注

原创 arm64 Linux操作系统知识点

低地址存放:指向上一个栈 (父函数的栈)的栈基地址 FP,类似于链表的prev指针。应用程序要访问内核就必须通过系统调用层,内核可以在系统调用层对应用程序的访问权限、用户类型和其他一些规则进行过滤,以避免应用程序不正确地访问内核。高地址存放:当前函数的返回地址,也就是进入该函数时LR的值,本书把这个地址称为P_LR(Previous LR)。在函数执行时,FP和SP寄存器会指向该函数栈空间的FP处。4. 函数返回时,ARM64处理器先把栈中的P_LR的值载入当前LR,然后执行RET指令。

2024-09-11 09:25:15 1840

原创 Ubuntu搭建FTP服务器

5. 执行以下指令打开/etc/xinetd.d/tftp 文件, 配置/etc/ xinetd.d/tftp 文件,将 tftp 路径设置为tftp服务目录。2. 新建tftp工作目录,并添加读、写、执行权限(没有权限后面无法正常访问该文件夹),如下图所示。3. 安装 tftp-hpa 和 tftpd-hpa 服务程序,其命令如下图所示。

2024-09-10 14:42:59 873

原创 arm64高速缓存基础知识

随机法:随机地确定替换的高速缓存行,由一个随机数产生器产生随机数来确认替换行FIFO法:选择最先调入的高速缓存行进行替换LRU法:最少使用的行优先替换。

2024-09-09 11:33:36 2190 3

原创 Linux shell编程--sed进阶

小写的n命令会告诉sed编辑器移动到数据流中的下一文本行,而不用重新回到命令的最开始 再执行一遍。如果分支命令的模式没有匹配,sed编辑器会继续执行脚本中的命令,包括分支标签后的命令。单行next命令会将数据流中的下一文本行移动到sed编辑器的工作空间(称为模式空间)。美元符表示数据流中的最后一行文本,所以当sed编辑器到了最后一行时,它没有执行N命令,但它对所有其他行都执 行了这个命令。它只打印多行模式空间中的第一行。8. 跟分支命令一样,在没有指定标签的情况下,如果测试成功,sed会跳转到脚本的结尾。

2024-09-07 08:23:33 1509

原创 Linux编程--信号基础

1. 信号是事件发生时对进程的通知机制。有时也称为软件中断2. 引发内核为进程产生信号的各类事件如下:硬件发生异常,即硬件检测到一个错误条件并通知内核,随即再由内核发送相应信号给相关进程。硬件异常的例子包括执行一条异常的机器语言指令,诸如,被 0 除,或者引用了无法访问的内存区域。用户键入了能够产生信号的终端特殊字符。其中包括中断字符(通常是Control-C)、暂停字符(通常是 Control-Z)。发生了软件事件。

2024-09-06 10:03:59 1483

原创 Linux--目录与文件操作函数

因此,如果移除了符号链接所指向的文件名,符号链接本身还将继续存在,尽管无法再对其进行解引用(下溯)操作,也将此类链 接称之为悬空链接。(换言之,newpath 也是符号链 接,指向 oldpath 所指代的同一文件。改名既不影响指向该文件的其他硬链 接,也不影响持有该文件打开描述符的任何进程,因为这些文件描述符指向的是打开文件描 述,(在调用 open()之后)与文件名并无瓜葛。unlink()系统调用不会对符号链接进行解引用操作,若 pathname 为符号链接,则移除链接 本身,而非链接指向的名称。

2024-09-05 15:49:00 1460

原创 linux文件的拓展属性

3. 默认情况下,若具有给定名称(name)的 EA 不存在,上述系统调用会创建一个新 EA。欲改变userEA值,则需要写权限,如欲将 user EA 与一文件关联, 在装配底层文件系统时需带有 user_xattr 选项。6. 想获取与某文件相关联的 EA 名列表,只需对文件拥有“访问”权限(亦即对 pathname 下的所有路径均拥有执行权限),对文件本身则无需任何权限。系统调用 setxattr()、lsetxattr()以及 fsetxattr()用来设置文件的 EA 值之一。

2024-09-04 00:00:00 1622

原创 arm调试-- gdb与gdbserver的安装与使用

将生成的可执行文件和 gdb-7.11.1 /gdb/gdbserver路径下生成的gdbserver复制到开发板中。PC端把可执行文件和源码拷贝到gdb-7.11.1/_install/bin下。2. 解压编译gdb以及gdbserver。1、复制gdbserver。2、运行gdbserver。5、连接gdbserver。4、在PC端运行gdb。(1)gdb PC端。(2)arm终端打印。

2024-09-03 09:03:59 1701 2

原创 GNU汇编器

align 有三个参数,第一个参数表示对齐的要求,第二个参数表示要填充的数(可忽略),第三个参数表示这个对齐应该跳过的最大字节数。通常只是用第一个参数。汇编阶段生成的可重定向目标文件和链接阶段生成的可执行二进制文件的主要区别在于,可重定向目标文件的所有段的起始地址都是0。1、预处理:GCC的预编译器(CPP)对各种预处理命令进行处理,例如对头文件的处理、宏定义的展开、条件编译的选择等。汇编阶段生成的可重定位目标文件以及链接阶段生成的可执行二进制文件都是按照一定的文件格式(ELF)组成的二进制目标文件。

2024-09-02 13:48:39 1471

原创 Linux系统编程--时间函数

2. settimeofday()调用所造成的那种系统时间的突然变化,可能会对依赖于系统时钟单调递增 的应用造成有害的影响。最后两个字段返回的信息是:父进程(比如,times()的调用者)执行了系统调用 wait()的所有 已经终止的子进程使用的 CPU 时间。相形之下,函数 localtime()需要考虑时区和夏令时设置,返回对应于系统本 地时间的一个分解时间。当我们运行一个 shell 程序,我们可以使用的 time(1)命令,同时获得这两个部分的时间值, 以及运行程序所需的实际时间。

2024-09-02 11:02:02 2343

原创 shell脚本--正则表达式

它为常见模式提供了高级模式符号和特殊符号,比如匹配数字、单词以及按字母排序的字符。在转义特殊字符时,你需要在它前面加 一个特殊字符来告诉正则表达式引擎应该将接下来的字符当作普通的文本字符。(1) 在正则表达式模式中,也可以反转字符组的作用。可以寻找组中没有的字符,而不是去寻找组中含有的字符。它必须匹配一个字符,如果在点号字符的位置没有字符,那么模式就不成立。如果模式出现在行首之外的位置, 正则表达式模式则无法匹配。2. 管道符号两侧的正则表达式可以采用任何正则表达式模式(包括字符组)来定义文本。

2024-08-31 09:41:46 1665

原创 Makefile编写2--使用变量,函数

如果有变量是通常 make的命令行参数设置的,那么 Makefile中对这个变量的赋值会被忽略。如果你想在 Makefile 中设置这类参数的值,那么,你可以使用“override”指示符。中的单词(单词以“空格”、“Tab”或“回车”“换行”分隔)是否符合模式,如果匹配的话,则以替换。其格式是“$(var:a=b)”或是“${var:a=b}”,其意思是,把变量“var”中所有以“a”字串“结尾。模式变量的好处就是,我们可以给定一种“模式”,可以把变量定义在符合这种模式的 所有目标上。

2024-08-30 09:26:05 1553

原创 Linux--实现U盘,SD卡的自动挂载

在/etc/init.d/rsC或S10mdev中加入以下语句:当有热插拔事件产生时,内核会调用/proc/sys/kernel/hotplug文件里指定的应用程序来处理热插拔事件。把/sbin/mdev写到/proc/sys/kernel/hotplug文件里。当有热拔插事件时,内核调用/sbin/mdev来处理。

2024-08-29 15:11:26 1687

原创 shell脚本--创建函数

bash shell会把函数当作一个小型脚本,运行结束时会返回一个退出状态码。有3种不同的方法来为函数生成退出状态码。十、在.bashrc 文件中定义函数。三、使用函数输出(类似于定向输出)十一、shtool库下载及安装。四、在函数中使用变量。六、向函数传数组参数。五、在函数中处理变量。

2024-08-29 14:19:28 1220

原创 nvme的PRP与SGL

主机在命令中设置好PRP或者SGL,并告诉SSD数据源在内存的什么位置,或者从闪存上读取的数据应该放到内存的什么位置。

2024-08-28 08:48:44 2547

原创 arm64--异常处理与中断处理

EL0 非特权模式,用于运行应用程序EL1为特权模式,用于运行操作系统内核EL2用于运行虚拟化管理程序EL3用于运行安全世界的管理程序。

2024-08-27 10:24:13 1682

原创 Linux-arm64中断现场保护详解

_entry_task为内核静态定义的percpu变量,在进程切换时,会将next进程的进程描述符保存到该变量中。十一、S_LR与S_STACKFRAME与S_STACKFRAME。三、per_cpu变量获取offset。五、disable_step_tsk。六、get_thread_info。一、ldr_this_cpu。二、__entry_task。七、S_FRAME_SIZE。九、thread_info。

2024-08-26 14:31:17 793

原创 Linux文件IO缓存

当操作磁盘文件时,缓冲大块数据以减少系统调用,C 语言函数库的 I/O 函数(比如, fprintf()、fscanf()、fgets()、fputs()、fputc()、fgetc())正是这么做的。3. 总之,如果需要强制刷新内核缓冲区,那么在设计应用程序时就应考虑是否可以使用大 尺寸的 write()缓冲区,或者在调用 fsync()或 fdatasync()时谨慎行事,而不是在打开文件时就使用 O_SYNC 标志。有时也称此为直接 I/O(direct I/O)或者裸 I/O(raw I/O)。

2024-08-26 08:32:51 1732

原创 shell脚本构造

也可以在read命令行中不指定变量。如果是这样,read命令会将它收到的任何数据都放进 特殊环境变量REPLY中。shell脚本中最有用的特性之一就是可以从命令输出中提取信息,并将其赋给变量。把输出赋 给变量之后,就可以随意在脚本中使用了。-t选项指定了read命令等待输入的秒数。read命令从标准输入(键盘)或另一个文件描述符中接受输入。这两个变量都能够在单个变量中存储所有的命 令行参数。变量会将命令行上提供的所有参数当作同一字符串中的多个独立的单词。$*变量会将命令行上提供的所有参数当作一个单词保存。

2024-08-25 09:28:31 1263

原创 深入探究linux文件IO

原子性是 readv()的重要属性。这意味着,假设即使有另一进 程(或线程)与其共享同一文件偏移量,且在调用 readv()的同时企图修改文件偏移量,readv() 所读取的数据仍将是连续的。要获取和修改打开的文件标志(例如,O_APPEND、O_NONBLOCK 和 O_ASYNC),可 执行 fcntl()的 F_GETFL 和 F_SETFL 操作,其对作用域的约束与上一条颇为类似。2. dup()调用复制一个打开的文件描述符 oldfd,并返回一个新描述符,二者都指向同一打开 的文件句柄。

2024-08-25 09:09:25 1146

原创 Linux5.0 NVMe驱动详细注释

本篇文章非常全面的介绍了基于linux5.0的nvme驱动的所有函数,基本每个函数都有非常详细的注释。同时,本篇文章全部是代码+注释的方式呈现,非常的清晰易懂。希望大家加一个关注,下一篇文章详细讲解nvme驱动中的各个结构体。

2024-08-24 11:39:15 1509

原创 arm64--内嵌汇编

result”定义了一个汇编符号操作数,符号名为result,它对应“=r”(res),并使用了函数中定义的 res 变量,在汇编代码中对应%w[resul]中,w表示ARM64中的32位通用寄存器。第1个汇编符号操作数是 input_i ,对应的是函数形参i,第2个汇编符号操作数是 input_j,对应的是函数形参j。1.作用:对于特定重要和时间敏感的代码进行优化,同时在C语言中访问某些特殊指令(例如内存屏障指令)来实现特殊功能。1.内嵌汇编函数与C 语言宏可以结合起来使用,让代码变得高效和简洁。

2024-08-24 11:28:52 1241

原创 arm64--汇编器

前面两篇讲了ARM64汇编指令,本篇主要讲一下汇编器,何为汇编器呢?汇编器主要是将汇编语言翻译为及其目标代码的程序。

2024-08-23 08:49:20 971

原创 ARM64指令集2-算术与移位指令

接着上文,接着讲一下算术与移位指令,想要系统学习arm64指令的朋友们,添加一个关注,后面会持续更新的。

2024-08-23 08:29:23 1518

原创 ARM64指令集1-加载与存储

从今天开始,我将每天写一篇关于ARM64的文章,主要给大家介绍一下arm64相关的特性,包括指令集、异常处理、中断、浮点计算、NEON、缓存、原子操作等,想要系统学习ARM64的朋友们,加一个关注,保证干货满满今天是第一篇,主要是介绍一下加载与存储指令。

2024-08-22 08:43:21 1077

原创 linux驱动--LDM数据结构

属性是由kobject导出到用户空间的sysfs文件。文件的默认设置是通过 kobject 和 kset 中的 ktype 字段、kobj_type 的 default.attrs 字段提供的。sysfs是非持久性虚拟文件系统,它提供系统的全局试图,并通过它们的kobject显示内核对象的层次结构,每个kobject显示为目录和目录中的文件。内核对象集合主要将相关的内核对象组合在一起,kset是kobject的集合,换句话说,kset将相关的kobject收集到一个位置,例如所有的块设备。

2024-08-22 08:21:40 1047

原创 Linux驱动设备--IIO驱动

IIO 设备提供触发缓冲区支持时,必须设置 iiodev->pollfunc,触发器触发时执行它,该处理程序负责通过 indio_dev-> active_scan_mask查找启用的通道,检索其数据,并使用 iio_push_to_buffers_with_timestamp函数将它们提供给indio_dev-> buffer。此参数取决于设备,应参考其数据表。/sys/bus/iio/devices/triggerY/:一旦IIO触发器注册到IIO核心并且对应于索引为Y的触发器,就会创建该目录。

2024-08-21 09:01:54 1015

原创 lINUX驱动之IIO设备数据结构

而write_event_value则主要用于event事件触发的阈值参数的设置与读取等、而read_event_config、write_event_config则可以用于实现event的使能与否;对struct iio_buffer_access_funcs则是该iio_buffer对应的缓存空间的访问访问,目前使用kfifo缓存数据,则其访问方法为iio_store_to_kfifo、iio_read_first_n_kfifo等,主要是将数据存储至kfifo或从kfifo中取出缓存数据等。

2024-08-21 08:16:40 961

原创 Ubuntu与windows文件互传

home/user/linux/nfs 是要共享的目录,*代表允许所有的网络段访问,rw 是可读写权 限,sync 是文件同步写入存储器,no_root_squash 是 nfs 客户端分享目录使用者的权 限。如果客户端使用的是 root 用户,那么对于该共享目录而言,该客户端就具有 root 权限。②TFTP 需要一个文件夹来存放文件,我们在根目录下新建一个/tftpboot 目录做为 TFTP 文件存储目录。NFS 允许挂载的目录及权限在文件/etc/exports 中进行定义。

2024-08-20 09:44:52 469

原创 GNU C扩展

GCC的C编译器除了支持ANSI C标准之外,还对C语言进行了很多的扩充。这些扩充对代码优化、目标代码布局以及安全检查等方面提供了很强的支持,因此支持 GNU扩展的C语言称为GNU C语言。Linux 内核采用GCC编译器,所以Linux内核的代码自然使用了很多GCC的新扩充特性。

2024-08-20 09:37:42 931

原创 ZYNQMP XDMA硬件设计

Xilinx 提供的DMA Subsystem for PCI Express IP(简称XDMA)是一个高性能,可配置的、适用于PCIE2.0,PCIE3.0 的SG 模式 DMA,提供用户可选择的 AXI4 接口或者 AXI4-Stream接口。XDMA 是SGDMA,并非Block DMA,SG 模式下,主机会把要传输的数据组成链表的形式,然后将链表首地址通过BAR 传送给XDMA,XDMA 会根据链表结构首地址依次完成链表所指定的传输业务。XDMA其他的参数配置无需更改,默认即可。

2024-08-19 17:54:16 1265 1

原创 Linux内核工具和辅助函数

由于队列上挂起的任务在每个 CPU 上是串行执行的,因此任务不应该长时间睡眠因为在它唤醒之前,该队列上的其他任务都无法运行,一个任务甚至不知道它和哪些任务共享工作队列,所以任务可能需要较长时间才能得到CPU。第一部分称作上半部或者硬IRQ,它使用 request_irq()注册函数,最终将根据需要屏蔽/隐藏中断,执行快速操作(实际上是时间敏感务,读写硬件寄存器,以及快速处理此数据),调度第二部分和下一部分,然后确认中断线禁用的所有中断都必须在退出下半部之前重新启用。下面是内核中的3项功能。

2024-08-19 17:40:22 1452

原创 如何编写Makefile

如何进行makefile的编写

2024-08-19 17:30:38 633

zynqmp官方开发手册

1.xilinx zynqmp所有的手册以及寄存器手册,包括ug1085-zynq-ultrascale-trm,各种ug,pg手册,里面包含的手册高达30多个,几乎囊括了zynqmp相关的所有手册以及部分zynq 7k的部分手册 2.里面还包含了官方开发板zcu106,zcu102的硬件原理图以及开发手册。

2024-09-11

空空如也

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

TA关注的人

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