![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
内核驱动
文章平均质量分 84
内核驱动
zhangatong
这个作者很懒,什么都没留下…
展开
-
linux iotable_init 静态映射与内核页表的建立
arm32 linux3.18 mach-vexpress常用的ioremap或者of_iomap都是动态映射,静态映射的接口是iotable_initvoid __init iotable_init(struct map_desc *io_desc, int nr);struct map_desc { unsigned long virtual; unsigned l...转载 2020-04-23 18:31:18 · 322 阅读 · 0 评论 -
/dev/mem可没那么简单
这几天研究了下/dev/mem。发现功能非常奇妙,通过mmap能够将物理地址映射到用户空间的虚拟地址上。在用户空间完毕对设备寄存器的操作,于是上网搜了一些/dev/mem的资料。网上的说法也非常统一,/dev/mem是物理内存的全映像,能够用来訪问物理内存,一般使用方法是open("/dev/mem",O_RDWR|O_SYNC),接着就能够用mmap来訪问物理内存以及外设的IO资源,这就是实...转载 2020-04-01 09:20:40 · 585 阅读 · 0 评论 -
Linux内核模块自动加载机制 .
思考如果想让内核启动过程中自动加载某个模块该怎么做呢?最容易想到的方法就是到/etc/init.d/中添加一个启动脚本,然后在/etc/rcN.d/目录下创建一个符号链接,这个链接的名字以S开头,这内核启动时,就会自动运行这个脚本了,这样就可以在脚本中使用modprobe来实现自动加载。但是我们发现,内核中加载了许多硬件设备的驱动,而搜索/etc目录,却没有发现任何脚本负责加载这些硬件设备驱动程...转载 2020-03-31 11:20:14 · 306 阅读 · 0 评论 -
Linux内存管理 —— DMA和一致性缓存cache
1. 出现内存不一致的原因CPU写内存的时候有两种方式:1. write through: CPU直接写内存,不经过cache。2. write back: CPU只写到cache中。cache的硬件使用LRU算法将cache里面的内容替换到内存。通常是这种方式。DMA可以完成从内存到外设直接进行数据搬移。但DMA不能访问CPU的cache,CPU在读内存的时候,如果cache命中则只是...转载 2020-01-07 11:22:53 · 1638 阅读 · 0 评论 -
linux 内核版本号 的生成和修改
linux下可以通过 cat /proc/version 命令查看内核版本信息。root@am57xx-evm:~# cat /proc/versionLinux version 4.14.79-gbde58ab01e (allen@david-virtual-machine) (gcc version 7.2.1 20171011 (Linaro GCC 7.2-2017.11)) #2...原创 2019-12-17 14:29:57 · 4387 阅读 · 0 评论 -
OMAP335X-内核BSP之hwmod
MPU平台:OAMP3352内核版本:3.2.0声明:我讲解的范畴是从内核解压以后经过汇编代码执行最后跳到第一个C代码这个点开始讲解,一直讲到文件系统被正确的挂载起来,用户可以正常登入!至于之前的解压缩内核、汇编启动代码我会以后另开文章讲解。目标:本文想阐述清楚OAMP335X这个平台的BSP部分的hwmod。start_kernel-->rest_i...转载 2019-11-04 21:41:33 · 543 阅读 · 0 评论 -
使用modprobe加载驱动
modprobe则可以一次性将有依赖关系的驱动全部加载到内核,不需要驱动的具体地址。但需要将驱动拷贝到/lib/modules/$(uname -r)/目录下。modprobe并不需要指定到具体的KO文件目录,我们不仿测试下:[root@x4412 /]# modprobe x4412-beep.komodprobe: can't change directory to '/lib/mod...转载 2019-10-12 15:34:43 · 2697 阅读 · 0 评论 -
硬件自动化测试 - LTP-DDT
概述LTP-DDT 是 TI 开发整理的一个测试套件,目的是用来验证 Linux 发行版。而它是基于 LTP 的。LTP 全称 Linux Test Project,由 IBM、思科等多个公司共同开发维护。LTP-DDT 相较于 LTP 针对运行于嵌入式设备上的 Linux 内核及驱动的测试做了增强和优化,尤其是适配了 TI 自己的很多 ARM 平台。而这一点正是我们看重的。本文尝试说明使用...转载 2019-10-12 14:16:02 · 1390 阅读 · 0 评论 -
CMA模块学习笔记
原文:CMA模块学习笔记前言本文是近期学习CMA模块的一个学习笔记,方便日后遗忘的时候,回来查询以便迅速恢复上下文。学习的基本方法是这样的:一开始,我自己先提出了若干的问题,然后带着这些问题查看网上的资料,代码,最后整理形成这样以问题为导向的index,顺便也向笨叔叔致敬。笨叔叔写了一本书叫做《奔跑吧Linux内核》,采用了问答的方式描述了4.x Linux内核中的进程管理、内存管理,...转载 2019-09-12 15:30:30 · 998 阅读 · 0 评论 -
Linux学习--内存分配算法
一、Buddy算法DMA(Direct Memory Access,直接内存存取)、常规、高端内存这3个区域都采用buddy算法进行管理,把空闲的页以2的n次方为单位进行管理,因此Linux最底层的内存申请都是以2n 为单位的。Buddy算法最主要的的特点任何时候区域里的空闲内存都能以2的n次方进行拆分或合并。例如,假设ZONE_NORMAL有16页内存(24),此时有人申请一页内存,...转载 2019-09-12 18:02:05 · 1282 阅读 · 0 评论 -
linux 内核 usb驱动分析
本文基于ti的am5728平台,4.14.79版本内核,DesignWare USB3.0方案,xhci主机控制器。简单分析 USB 主机控制器驱动 根 Hub 的注册过程,以及 USB设备的枚举过程,并不涉及USB协议,单纯分析驱动框架流程。无论是hub还是普通的usb设备,它们注册到 usb_bus_type 都会经历两次 Match ,因为第一次注册进来时,是将整个设备作为一个 device...原创 2019-09-21 09:49:24 · 1888 阅读 · 0 评论 -
Linux workqueue
一、workqueue简介workqueue与tasklet类似,都是允许内核代码请求某个函数在将来的时间被调用(抄《ldd3》上的)每个workqueue就是一个内核进程。workqueue与tasklet的区别:tasklet是通过软中断实现的,在软中断上下文中运行,tasklet代码必须是原子的. 而workqueue是通过内核进程实现的,就没有上述限制的,而且工作队列函数可以...转载 2019-09-21 09:16:23 · 192 阅读 · 0 评论 -
【Linux】Linux的内核空间(低端内存、高端内存)
内核也是程序,也应该具有自己的虚存空间,但是作为一种为用户程序服务的程序,内核空间有它自己的特点。内核空间与用户空间的关系在一个32位系统中,一个程序的虚拟空间最大可以是4GB,那么最直接的做法就是,把内核也看作是一个程序,使它和其他程序一样也具有4GB空间。但是这种做法会使系统不断的切换用户程序的页表和内核页表,以致影响计算机的效率。解决这个问题的最好做法就是把4GB空间分成两个部...转载 2019-09-12 15:17:34 · 383 阅读 · 0 评论 -
linux kernel内存初始化过程
基于linux4.14.79内核,TI AM5728平台。0.在boot中对内存块的大小设置spl/ubbot中对内存的配置board_init_f sdram_init dmm_init(DMM_BASE); emif_get_dmm_regs(&lisa_map_regs); //根据board得到内存lisa_map...原创 2019-09-12 11:46:10 · 3195 阅读 · 0 评论 -
编译内核错误:recipe for target 'kernel/timeconst.h' failed kernel/timeconst.h] Error 255
在使用ubuntu16.04编译Linux-3.4.2内核时出现这样的错误:解决办法是:将kernel/timeconst.pl中第373行的defined()去掉,只留下 !@val 就可以了,去掉后如下:原创 2019-03-05 23:04:24 · 3295 阅读 · 0 评论 -
移植 u-boot-2012.04.01 jz2440时,不能跳转到 board_init_r的问题
串口打印:U-Boot 2012.04.01-g3f86493-dirty (Jan 27 2019 - 18:50:09)CPUID: 32440001FCLK: 400 MHzHCLK: 100 MHzPCLK: 50 MHzDRAM: 64 MiB 检查代码是把函数 board_init_f 的返回值从void 修改为 unsigned...原创 2019-01-27 19:57:23 · 287 阅读 · 0 评论 -
/u-boot-2012.04.01/fs/yaffs2/yaffscfg.c:210: undefined reference to `nand_info'
在毕业班第2课第3.2节_移植最新u-boot之修改代码支持NAND启动时编译出现错误:/home/lvxiaoliang/Ftp/u-boot-2012.04.01/fs/yaffs2/yaffscfg.c:210: undefined reference to `nand_info'make: *** [u-boot] Error 112直接屏蔽掉yaffs: include/c...转载 2019-01-27 15:51:25 · 526 阅读 · 0 评论 -
双核CPU是怎么工作的?
双核处理器一般分为两种情况:2个内核相同(双核心),2个内核不同(双CPU)。工作原理主要是将单内核中的并行计算扩展到多CPU之间,具体如下:双核心:2个内核相同,一块CPU基板上集成两个处理器核心,并通过并行总线将各处理器核心连接起来。双核心并不是一个新概念,而只是CMP(Chip Multi Processors ,单芯片多处理器) 中最基本、最简单、最容易实现的一种类型。换言之双核心...原创 2018-12-23 09:49:38 · 3328 阅读 · 0 评论 -
安装mtd-utils 时出现没有zlib.h文件或目录
在交叉编译mtd-utils时出现:mkfs.jffs2.c:68:18: zlib.h: No such file or directory于是去 http://www.zlib.net/ 下载了 zlib-1.2.11由于是给开发板用的,所以这里也需要使用交叉编译:tar xzvf zlib-1.2.11.tar.gz 解压之后1.配置# ./configure --s...原创 2018-12-20 22:13:45 · 476 阅读 · 0 评论 -
内核输入子系统 设置能产生哪类事件和那些事件总结:
在jz2440上编写使用输入子系统驱动程序时,经常会遇到设置产生哪类事件和哪些事件,这里自己总结了一下代码里的2种方法:下面是一些宏和结构体定义:struct input_dev { ......... unsigned long evbit[512]; unsigned long keybit[32]; ........}#define se...原创 2018-12-15 13:33:57 · 144 阅读 · 0 评论 -
Linux 设备树 : 节点与属性的删除
一、节点删除应用条件:通常DTS中包含了多个平台的描述文件,且多个平台会共享一些通用的dtsi。这些dtsi的节点对于指定的平台来说,其节点未必全部需要,因此就需要将不需要的节点进行裁剪或者DISABLE。节点删除就是实现这个作用。语法如下:/delete-node/ 节点名;例如在dra7.dtsi里面定义了rtc的节点,但是在自己的产品中不想使用这个RTC,而使用其他的rtc:...原创 2019-03-07 14:17:18 · 4367 阅读 · 0 评论 -
cma: CMA area cma_default_region@ac000000 could not be activated
在给cma分配保留内存区域时报错:在cma内存区域创建好后内核会对其进行初始化,这个报错是在初始化里出现的,具体代码:static int __init cma_init_reserved_areas(void){ int i; for (i = 0; i < cma_area_count; i++) { int ret = cma_activate_area(&...原创 2019-09-11 16:51:39 · 454 阅读 · 0 评论 -
内存屏障
https://zh.wikipedia.org/wiki/%E5%86%85%E5%AD%98%E5%B1%8F%E9%9A%9C转载 2019-09-06 17:43:38 · 127 阅读 · 0 评论 -
对嵌入式Linux中的根文件系统的理解和解析
虽是转载的,但是我自己用红色字体标注了一些觉得对自己有用的点,并且有些地方还加入了自己的“aaron注:”===================分界线========================= 虽然前面已经利用Busybox制作了根文件系统,但是对于根文件系统的作用和普通的文件系统之间的区别还是有点模糊。通过查找资料总结了一下对根文件系统的理解,也欢迎大家一起讨论。...转载 2019-06-03 21:57:47 · 301 阅读 · 0 评论 -
EMMC与NAND FLASH核心对比
通俗的来说,eMMC=NAND闪存+闪存控制芯片+标准接口封装。本文大致做下边几个小结:(1)MMC与Host之间的连接连接由下图可见(2)eMMC和NAND Flash与Host的连接比较NAND Flash直接接入HostNAND Flash 直接接入 Host 时,Host 端通常需要有 NAND Flash Translation Layer,即 NFTL ...转载 2019-05-24 09:51:36 · 1077 阅读 · 0 评论 -
i2c和spi对比
一.单工、半双工、全双工的定义:单工数据传输只支持数据在一个方向上传输;半双工数据传输允许数据在两个方向上传输,但是,在某一时刻,只允许数据在一个方向上传输,它实际上是一种切换方向的单工通信;全双工数据通信允许数据同时在两个方向上传输,因此,全双工通信是两个单工通信方式的结合,它要求发送设备和接收设备都有独立的接收和发送能力。网卡的全双工(Full Duplex)是指网卡在发送数据的同时也...原创 2019-05-26 17:43:33 · 8259 阅读 · 0 评论