自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Zynq7000学习 1.如何在Linux平台上运行DMA模块

本文中所使用的实验环境说明:VMware虚拟机,ubuntu16.04版本的linux系统,Xilinx SDK2017.4(文中用到了它的 编译器),Petalinux2019.1(可以选装黑金的2017.4版本,笔者这里安装错了版本也就没有卸载重装)。

2019-10-31 15:54:58 6539 10

原创 Linux内存管理专题——zone结构初始化

struct zone结构体是Linux内核内存管理的关键模块,其重要性和作用不言自明。

2025-08-05 17:14:47 758

原创 Linux内核驱动框架之异步通知

Linux操作系统支持硬件I/O设备的异步通知操作,硬件中断是硬件外设对操作系统的中断行为,而异步通知则是操作系统对应用程序的中断行为,本篇文章我们来一起学习一下异步通知相关的驱动程序和应用程序应该怎样实现。

2025-07-26 19:33:16 330

原创 Linux内存管理专题——early_fixmap和early_ioremap

内核将设备树描述的内存节点信息,添加到memblock模块管理之后,就会初始化early_fixmap和early_ioremap。这两个是什么功能呢?汇编阶段的内核映射是Section粒度的映射,每个PGD页表项能够映射1MB大小的物理地址范围,这部分属于内核的临时映射机制。Linux内核在后续的初始化过程里,会再次映射内核映像,粒度下降到4KB大小的地址范围。

2025-07-13 11:45:06 559

原创 Linux内存管理专题——设备树相关

摘要 本文详细解析了Linux内核如何从设备树获取内存物理地址信息的过程。首先通过汇编代码分析,说明内核如何通过__atags_pointer变量接收uboot传递的设备树首地址(150字)。然后阐述了从设备树中解析内存信息的完整调用路径:从start_kernel()到setup_arch(),最终通过early_init_dt_scan_memory()函数查找"memory"节点,提取reg属性中的内存信息并存入memblock模块。整个过程涉及设备树物理地址到虚拟地址的转换、节点

2025-07-12 13:28:24 555

原创 Linux内存管理专题——汇编阶段的内存映射

本文分析了Linux内核在汇编阶段的内存映射机制,重点讨论了MMU初始化和启用过程。在MMU启用前,内核通过物理地址直接访问内存;启用后则通过虚拟地址访问。为实现平滑过渡,内核采用恒等映射(Identity Mapping)技术,使MMU初始化代码在启用前后都能被正确访问。文章详细解读了__create_page_tables汇编代码,展示了如何清除页表区域、设置MMU标志位,并通过计算物理地址与虚拟地址偏移量完成关键代码段的映射。最后提到内核映像的映射过程,为后续页表管理机制的分析奠定了基础。

2025-07-09 21:38:14 576

原创 Linux内核之中断——irq_domain基础介绍

irq_domain_add_linear()和irq_domain_create_linear()在功能上是等同的,但它们的第一个参数不一样,前者接受的是开放固件特定的’struct device_node’而后者接受更通用的‘struct fwnode_handle’。但现在Linux内核里的中断号仅仅是一个逻辑上的概念。irq_alloc_desc*()和irq_free_desc*()这些API提供的IRQ号的注册,但它们不提供任何将控制器本地中断号,即硬件中断号映射到内核IRQ号空间的功能。

2025-05-19 11:11:16 1025

原创 Linux内核之中断(三)处理器模式切换与SVC模式

中断向量表里的几个向量都链接在一个段里,名为.vectors段。这段代码完成的主要功能是,保存r0, 被中断程序的返回地址,被中断前的cpsr寄存器,以及模式切换。

2025-05-11 21:46:31 691

原创 Linux内存管理子系统

想搞明白一件复杂的事情,首先要理解这件事完成了什么内容。举例说明,我们普通人想搞明白满汉全席的来龙去脉,应该梳理出这样事情的框架脉络,框架描述可以不求甚至,也不应该事无巨细,重点在于用简短的话语描述出整件事情的每个环境或步骤。以满汉全席来举例:实际情况应该更加复杂,因为我们是在了解全貌的角度上去看待这件事情,各个部分的理解难免有偏差。实际开始操作的时候,可以带着一种迭代的思想,不断完善认知,更新事情的框架。收回思绪,学习Linux内核很重要的一点就是树立架构的思想,遇到看不懂的代码,看不懂的函数,初期不必

2025-04-30 14:52:51 421

原创 Linux内核之中断(前言)

罗列中断子系统相关的知识,并尽量做深入的理解和分享

2025-03-28 14:23:49 155

原创 Linux内核之中断(一)中断向量表

这部分代码使用汇编语言完成,主要是对CPU进行了一系列的设置,包括完成mmu的初始化,随后在完成stext标点这段代码前,转入了start_kernel这个C语言函数的执行。当中断发生时,CPU硬件会先进行处理,例如将返回地址压栈,保存被中断的程序的状态,保存CPU的CPSR寄存器值等。值得注意的是,ARMv7架构中,r11,r13,r14,r15这几个寄存器,分别是fp, sp, lr, pc寄存器,也就是栈基指针,堆栈指针,链接寄存器,程序计数器。明白了中断向量表的存放,就可以继续往下走了。

2025-03-19 21:07:37 1285

原创 Linux中断子系统(二)——ARM架构下Linux系统的中断处理函数设置

这系列文章将会介绍Linux内核的中断子系统,关于中断的基本概念网上有很多文章,这里就不再介绍了。

2025-01-02 10:52:47 310

原创 Linux驱动框架之DMA(一)——dma_interleaved_template结构体介绍

linux内核代码结构体dma_interleaved_template介绍

2024-12-07 20:58:42 294

原创 在ARM-Linux上安装FTP服务

在ARM-Linux上安装FTP服务欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。新的改变我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:全新的界面设计 ,将会带来全新的写作体验;在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选

2020-07-09 20:46:05 2472

转载 通俗易懂:Linux下的C语言开发之Makefile编写

通俗易懂:Linux下的C语言开发之Makefile编写来源:EEPW对于程序设计员来说,Makefile是我们绕不过去的一个坎。可能对于习惯Visual C++的用户来说,是否会编写Makefile无所谓。毕竟工具本身已经帮我们做好了全部的编译流程。但是在Linux上面,一切变得不一样了,没有人会为你做这一切。编代码要靠你,测试要靠你,最后自动化编译设计也要靠你自己。Makefile介绍...

2019-11-08 09:37:10 306

空空如也

空空如也

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

TA关注的人

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