【kernel_memory】
玛丽奥ZJY
这个作者很懒,什么都没留下…
展开
-
CMA连续物理内存用户空间映射
背景:在多媒体和图像处理等应用中,经经常使用到大块内存,尤其是硬件编解码。须要内核分配大块的物理连续内存。这里希望通过把从内核分配的连续物理内存映射到用户空间。在用户空间经过处理,又能够入队到驱动中。前提:Kernel Config中 依据需求配置和调整CMA的大小。方法:(一)1、驱动注冊misc设备。2、驱动实现IOCTL的内存分配,使用dma_alloc_writecombine从CMA中拿出一个内存。3、驱动实现mmap,通过remap_pfn_range,.原创 2020-05-16 13:22:41 · 497 阅读 · 0 评论 -
内核启动错误:vmap allocation for size 314576896 failed: use vmalloc=<size> to increase size
逻辑部分加了一个PCIE-RC组件,启动时发现如下错误:# insmod recorder_all_dongtai.ko[ 188.999787] recorder_all: loading out-of-tree module taints kernel.[ 189.007265] module loading...[ 189.779610] vmap allocation f...原创 2020-05-03 19:36:38 · 3068 阅读 · 0 评论 -
/dev/mem学习
这几天研究了下/dev/mem。发现功能非常奇妙,通过mmap能够将物理地址映射到用户空间的虚拟地址上。在用户空间完毕对设备寄存器的操作,于是上网搜了一些/dev/mem的资料。网上的说法也非常统一,/dev/mem是物理内存的全映像,能够用来訪问物理内存,一般使用方法是open("/dev/mem",O_RDWR|O_SYNC),接着就能够用mmap来訪问物理内存以及外设的IO资源,这...原创 2020-04-07 11:14:15 · 689 阅读 · 1 评论 -
linux 内核CMA笔记
前言本文是近期学习CMA模块的一个学习笔记,方便日后遗忘的时候,回来查询以便迅速恢复上下文。学习的基本方法是这样的:一开始,我自己先提出了若干的问题,然后带着这些问题查看网上的资料,代码,最后整理形成这样以问题为导向的index,顺便也向笨叔叔致敬。笨叔叔写了一本书叫做《奔跑吧Linux内核》,采用了问答的方式描述了4.x Linux内核中的进程管理、内存管理,同步和中断子系统。7月将和大...原创 2020-04-05 15:54:14 · 3708 阅读 · 0 评论 -
Linux内核最新的连续内存分配器(CMA)——避免预留大块内存
在我们使用ARM等嵌入式Linux系统的时候,一个头疼的问题是GPU,Camera,HDMI等都需要预留大量连续内存,这部分内存平时不用,但是一般的做法又必须先预留着。目前,Marek Szyprowski和Michal Nazarewicz实现了一套全新的Contiguous Memory Allocator。通过这套机制,我们可以做到不预留内存,这些内存平时是可用的,只有当需要的时候才被分配给...转载 2020-04-05 15:52:33 · 537 阅读 · 0 评论 -
内核分配大块连续内存的方法【转】
原文链接:https://blog.csdn.net/edwardlulinux/article/details/45896901参数传递:uboot向内核传递参数的方式分为两类。(1)第一类是通过bootcmd例如在uboot终端提示行使用pri命令现实出的bootarg等。(2)第二类是通过DeviceTree。在/arch/arm/boot/dt...原创 2020-04-05 10:59:26 · 833 阅读 · 0 评论 -
Linux x86_64/arm 分配大块物理连续内存
Linux x86/arm 分配大块物理连续内存实现一个PCIe设备驱动,需要分配几个128M的物理连续内存作为DMA的缓冲区,受制于伙伴系统最多分配4M,所以需要使用到cma机制,来分配大块的物理连续内存实现通过DMA搬运数据:硬件平台:x86_64软件平台:CentOs7.4 linux-3.10.0linux在x86下支持cma根据网上的资料看,cma目前应该只能支持x86或者...原创 2020-04-05 11:06:22 · 2177 阅读 · 1 评论