linux驱动
文章平均质量分 81
dragon_cdut
和大家一起学习交流是快乐
展开
-
linux spin_lock注意事项
原文地址:https://blog.csdn.net/madannasf/article/details/103246042一、概述在kernel中,发生并发访问的发生源主要为一下4种方式1、中断和异常,中断发生之后,中断处理函数与被中断进程之间有可能会出现资源并发访问2、软中端以及tasklet,软中断以及任务调度都会打断当前的进程,从而发生资源的并发性访问3、内核抢占,内核抢占也是会打断当前的进程,从而造成资源的并发性访问4、smp,多个CPU也会对同一个资源进行并发性的访问。为了解决资转载 2022-01-04 14:12:14 · 284 阅读 · 0 评论 -
linux EXPORT_SYMBOL
EXPORT_SYMBOL是Linux内核中一个常见的工具,其作用是讲一个”Symbol”(函数或者变量)导出到内核空间,使得内核的所有代码都可以使用。我们用下面的例子来说明其使用方法。注意:在这篇文章中我假设你已经知道了内核模块开发的基本套路。假设我们创建了两个内核模块mod1和mod2,其中mod1中有一个方法func_exported需要在mod2内调用。Mod1Mod1中的源代码为// mod1.c#include <linux/init.h>#include <lin转载 2021-06-23 11:50:51 · 119 阅读 · 0 评论 -
linux dma_map_sg
原文地址:https://blog.csdn.net/scarecrow_byr/article/details/103020928-v0.1 2019.11.12 Sherlock init如linux/Documentation/DMA-API-HOW.txt里提到的:With scatterlists, you map a region gathered from several regions by:: int i, count = dma_map_sg(dev, sglist,转载 2020-08-07 16:22:33 · 808 阅读 · 0 评论 -
invalid storage class for function "***"
编译驱动时出现此错误,是因为代码中的大括号{ } 没有成对出现的原因,仔细检查代码,补上就可以了转载 2020-05-09 16:24:50 · 2447 阅读 · 0 评论 -
module_init的内核调用顺序
现在以module_init为例分析initcall在内核中的调用顺序在头文件init.h中,有如下定义:#define module_init(x) __initcall(x);#define __initcall(fn) device_initcall(fn)继续看:#define device_initcall(fn) __define_...转载 2020-01-15 15:40:19 · 494 阅读 · 0 评论 -
module_init内核调用顺序
module_init最近有在做一个初始化设备的动作,但是发现在相同的文件夹下已经有两个module_init,当我想再添加一个时,发现我添加的这个是最后执行的。由于其他的两个初始化中有用到我添加的部分,所以想提高优先级。没办法,只能看下module_init在initcall的优先级,然后选取一个合适的。一、同一个文件中的三个module_init1、我想要添加的部分stati...转载 2020-01-15 15:39:13 · 750 阅读 · 0 评论 -
pci和pcie的区别
原文地址:https://blog.csdn.net/u013253075/article/details/80835489最近在学习驱动开发过程中涉及到PCI相关知识,在网上看了很多文章,良莠不齐,我总结一下比较好的文章分享给大家,那就从源头开始说起。PCI总线和设备树是X86硬件体系内很重要的组成部分,几乎所有的外围硬件都以这样或那样的形式连接到PCI设备树上。虽然Intel...转载 2019-10-15 17:35:23 · 49851 阅读 · 4 评论 -
spin_lock 和mutex区别
原文地址:https://www.cnblogs.com/linshangyao/p/3362772.htmlPOSIX threads(简称Pthreads)是在多核平台上进行并行编程的一套常用的API。线程同步(Thread Synchronization)是并行编程中非常重要的通讯手段,其中最典型的应用就是用Pthreads提供的锁机制(lock)来对多个线程之间共 享的临界区(Crit...转载 2019-10-15 14:21:30 · 692 阅读 · 0 评论 -
Linux spinlock和mutex
原文地址:https://www.linuxidc.com/Linux/2011-03/33741.htm内核同步措施为了避免并发,防止竞争。内核提供了一组同步方法来提供对共享数据的保护。 我们的重点不是介绍这些方法的详细用法,而是强调为什么使用这些方法和它们之间的差别。Linux 使用的同步机制可以说从2.0到2.6以来不断发展完善。从最初的原子操作,到后来的信号量,从大内核锁到今天...转载 2019-10-15 14:19:35 · 207 阅读 · 0 评论 -
编译u-boot 报错 openssl/evp.h: No such file or directory
原文地址:https://blog.csdn.net/songkai320/article/details/50316437在陆佳华《嵌入式系统软硬件协同设计实战指南 第2版》一书的第13章节 编译U-boot时会遇到2个错误。原因很简单,就从一开始的错误提示着手: fatal error: openssl/evp.h: 没有那个文件或目录。当然在网上也可以搜索到相关的解决方法。在此仅作为记录...转载 2018-07-25 16:20:43 · 9101 阅读 · 0 评论 -
linux tune2fs命令
原文地址:http://blog.chinaunix.net/uid-7530389-id-2050094.html一.简介:tune2fs是调整和查看ext2/ext3文件系统的文件系统参数,Windows下面如果出现意外断电死机情况,下次开机一般都会出现系统自检。Linux系统下面也有文件系统自检,而且是可以通过tune2fs命令,自行定义自检周期及方式。二.用法:tune2fs [ -l ]...转载 2018-07-12 16:32:26 · 392 阅读 · 0 评论 -
制作ext4文件系统
原文地址:https://blog.csdn.net/zuoyioo7/article/details/74529255 制作ext4文件系统beaglebone对应硬件设备存储器均为emmc,并不是传统的nand flash,因此文件系统格式也不再是传统的yaffs或是jffs文件系统了。需要ext4文件系统。在debian用户目录下新建目录rootfs_tmp文件...转载 2018-07-04 14:15:35 · 2281 阅读 · 0 评论 -
jffs2_scan_eraseblock()问题解决办法
原文地址:https://blog.csdn.net/xin289379297/article/details/40923655 这个问题搞了我三天,尝试了网上的所有办法,均不奏效,只是偶尔能mount上jffs2系统;Old JFFS2 bitmask found at 0x02476c3cYou cannot use older JFFS2 filesystems...转载 2018-07-04 14:10:31 · 3088 阅读 · 0 评论 -
mount jffs2常见问题
原文地址:https://blog.csdn.net/lh2016rocky/article/details/54693437 Question1:JFFS2 error: (1) jffs2_build_inode_pass1: child dir "alsa" (ino #1159) of dir ino #1074 appears to be a hard li...转载 2018-07-04 14:09:11 · 4064 阅读 · 0 评论 -
烧写jffs2遇到的问题及解决方法
原文地址:http://blog.sina.com.cn/s/blog_4ab2ba57010194e6.html最近在弄hi3531的开发板,自制文件系统烧写进32M spi flash启动后出现如下问题:Node at 0x0000f568 with length 0x00000b20 would run over theend of the erase blockPerhaps the fi...转载 2018-07-04 14:07:46 · 2659 阅读 · 0 评论 -
linux 内核配置ramdisk
原文地址:https://blog.csdn.net/ctthuangcheng/article/details/85555291.修改内核配置选项进入内核源码目录linux-2.6.32.2目录#cp config_mini2440_x35 .config#make menuconfig ARCH=arm(1).打开配置菜单,修改两个配置项,分别是:a):General setup-->选...转载 2018-06-29 11:39:32 · 2997 阅读 · 0 评论 -
linux open函数详解
原文地址:https://blog.csdn.net/archyli/article/details/78937937一、open函数用来干什么open函数在Linux下一般用来打开或者创建一个文件,我们可以根据参数来定制我们需要的文件的属性和用户权限等各种参数。二、open函数的定义和参数我们首先来看下open函数在Linux下的定义#include <sys/types.h>#i...转载 2018-06-15 10:28:15 · 47920 阅读 · 5 评论 -
Linux Kernel之flush_cache_all在ARM平台下是如何实现的
原文地址:https://blog.csdn.net/u011461299/article/details/10199989在驱动程序的设计中,我们可能会用到flush_cache_all将ARM cache的内容刷新到RAM,这是因为ARM Linux中cache一般会被设定为write back的。而通常象DMA是访问不了cache,所以如果我们需要启动DMA将RAM中的内容写到Flash中或...转载 2018-06-13 16:01:50 · 3213 阅读 · 0 评论 -
linux 中断触发方式宏定义
引用linux githup库源代码中的irq.h头文件,仅做学习交流,版权属于原作者。#define IRQ_TYPE_NONE 0#define IRQ_TYPE_EDGE_RISING 1//上升沿触发#define IRQ_TYPE_EDGE_FALLING 2//下降沿触发#define IRQ_TYPE_EDGE_BOTH (IRQ_TYPE_EDGE_...原创 2018-06-06 15:34:18 · 5553 阅读 · 0 评论 -
linux cache和buffer详解
原文地址:https://www.cnblogs.com/qiaoyanlin/p/6746791.html1. Cache:缓存区,是高速缓存,是位于CPU和主内存之间的容量较小但速度很快的存储器,因为CPU的速度远远高于主内存的速度,CPU从内存中读取数据需等待很长的时间,而 Cache保存着CPU刚用过的数据或循环使用的部分数据,这时从Cache中读取数据会更快,减少了CPU等待的时间,提...转载 2018-06-13 14:33:42 · 657 阅读 · 0 评论 -
I/O端口和I/O内存的区别
参考文章:1,https://blog.csdn.net/ce123_zhouwei/article/details/72044582,一、I/O端口 端口(port)是接口电路中能被CPU直接访问的寄存器的地址。几乎每一种外设都是通过读写设备上的寄存器来进行的。CPU通过这些地址即端口向接口电路中的寄存器发送命令,读取状态和传送数据。外设寄存器也称为“I/O端口”,通常包括:控制寄存器...转载 2018-05-30 15:45:24 · 5775 阅读 · 0 评论 -
什么是I/O寄存器的边际效应
原文网址: http://qinbh.blog.sohu.com/62733495.html side effect(译为边际效应或副作用):是指读取某个地址时可能导致该地址内容发生变化,比如,有些设备的中断状态寄存器只要一读取,便自动清零。I/O 寄存器的操作具有side effect,因此,不能对其操作不能使用cpu缓存。 似乎不完整,待补充。大家知道的都留言补充一下吧...转载 2018-05-30 15:30:33 · 1364 阅读 · 0 评论 -
x86 I/O端口和I/O内存
原文地址:https://blog.csdn.net/jinchijixiaofeng/article/details/8887894 3.3 管理I/O Region资源 Linux将基于I/O映射方式的I/O端口和基于内存映射方式的I/O端口资源统称为“I/O区域”(I/O Region)。I/O Region仍然是一种I/O资源,因此它仍然可以用resour...转载 2018-05-30 14:53:22 · 595 阅读 · 0 评论 -
编译u-boot 报错 dtc: command not found
原文地址:https://zhidao.baidu.com/question/362258332575035292.htmldtc是device-tree-compiler的缩写,即设备树编译器,说明系统中没有安装这个编译器,如多用的是apt-get install device-tree-compiler安装后就可以成功编译了。...转载 2018-07-25 16:37:57 · 6919 阅读 · 0 评论 -
linux remap_pfn_range、vm_pgoff、pfn
原文地址:https://blog.csdn.net/hshl1214/article/details/87895071. vma->vm_pgoff 是 该vm 区域在map file中的以PAGE大小为单位的偏移。/* Offset (within vm_file) in PAGE_SIZE*/比如4个vm_area MAP到一个文件的1)0-----40962)5*4096 ...转载 2018-08-30 17:35:33 · 749 阅读 · 0 评论 -
linux cache一致性api--dma_alloc_* mmap
原文地址:https://blog.csdn.net/manshq163com/article/details/18451135先理解cache的作用CPU在访问内存时,首先判断所要访问的内容是否在Cache中,如果在,就称为“命中(hit)”,此时CPU直接从Cache中调用该内容;否则,就 称为“ 不命中”,CPU只好去内存中调用所需的子程序或指令了。CPU不但可以直接从Cache中读出...转载 2018-08-30 10:54:20 · 1008 阅读 · 0 评论 -
proc_mkdir,create_proc_entry,create_proc_read_entry
在 Linux 系统中,可用如下函数创建/proc 节点:struct proc_dir_entry *create_proc_entry(const char *name, mode_t mode, struct proc_dir_entry *parent);struct proc_dir_entry *create_proc_read_entry(const char *name, mode原创 2017-07-04 14:15:59 · 1685 阅读 · 0 评论 -
linux PCIe api
原文地址:https://blog.csdn.net/abcamus/article/details/77825129Linux在枚举PCIe设备的过程由内核中的PCI框架负责,在EP配置完成之后,驱动通过以下接口访问PCIe空间,原理参考前文《大话PCIe:设备枚举》一、访问配置空间相关接口位于drivers/pci/access.c1.1 读配置空间 pci_read_c...转载 2019-06-03 14:00:24 · 1526 阅读 · 0 评论 -
linux 定时器简单使用例程
原文地址:https://www.cnblogs.com/swey/p/4114897.html我们常常有设置系统在某一时间执行相应动作的需求,比如设置电脑什么时候自动锁屏,什么时候自动关机,设置应用程序什么时候自动运行,什么时候自动退出。这些与时间相关的功能,都需要依靠操作系统中的定时器来实现。 linux中定时器的使用原理很简单,你只需设置一个超时时间和相应的执行函数,系统就会在超时...转载 2019-05-31 14:27:21 · 7485 阅读 · 0 评论 -
mmap cache、writebuffer一致性问题
原文地址:https://www.cnblogs.com/hoys/archive/2012/02/17/2355914.html// 内核模块加载函数int __init kmalloc_map_init(void){ ../申请设备号,添加cedv结构体 buffer = kmalloc(BUF_SIZE, GFP_KERNEL); //申请buffer for(pa...转载 2019-01-09 16:33:22 · 3508 阅读 · 0 评论 -
linux mkfs命令
原文地址:http://www.runoob.com/linux/linux-comm-mkfs.html英文解释:root@ubuntu:/home/z# mkfsUsage: mkfs [options] [-t type fs-options] device [size]Options: -t, --type=TYPE file system type, when unde...转载 2018-11-30 14:31:04 · 2426 阅读 · 0 评论 -
linux U盘分区和格式化
原文地址:https://blog.csdn.net/qq_14935437/article/details/81129538Linux:U盘删除分区: #fdisk /dev/sdb /*进入fdisk命令操作空间*/ #Command (m for help): m /*命令查看*/ Command action a toggle a...转载 2018-11-30 11:18:41 · 1561 阅读 · 0 评论 -
Zynq Qspi控制器应用笔记
原文地址:http://blog.csdn.net/haoxingheng/article/details/473994371 Zynq Qspi控制器 Zynq Qspi控制器支持三种模式:I/O模式、线性地址模式和传统SPI模式,其中线性地址模式双片选支持最大的线性地址空间为32MB,可通过PS DMA读取。1.1 线性地址模式 线性地址模式只可从Q...转载 2018-11-26 10:16:32 · 3157 阅读 · 0 评论 -
zynq emmc 启动模式
原文地址:https://blog.csdn.net/vacajk/article/details/53908666前面说的我的硬件上有一颗eMMC的芯片,型号是MTFC4GACAJCN-4M IT,有4GB的容量。BOOT.bin的文件较小,只有不到3MB,但是image.ub的文件根据不同的需求,将来可能会越来越大,将它们都放在16MB的QSPI Flash上有点危险,而且下载起来也不太...转载 2018-11-21 15:55:22 · 11504 阅读 · 6 评论 -
zynq axi-uart 驱动和应用层程序
PS侧只有两个uart接口,当串口不够用时需要PL扩展uart接口:xilinx官方提供了开源IP核axi-uart。 linux提供了开源驱动代码uartlite.c 应用层程序我在xilinx wiki 上也没找到,哪位遇到过同样问题的,可否指点一下,或者私信我大家一起交流学习。...原创 2018-12-06 16:54:03 · 5125 阅读 · 3 评论 -
linux rmmod: chdir(3.14.0-xilinx): No such file or directory
原因分析:busybox /lib/modules/目录下对应的linux 内核版本和实际使用的linux镜像对应的linux内核版本不一致。解决: 1,mkdir -p /lib/modules/$(uname -r)2,rmmod ko文件名(不要.ko后缀)打印信息:zynq> ls /lib/modules/3.6.0 //实际使用linux 内核版本是3....原创 2018-09-18 17:31:32 · 586 阅读 · 1 评论 -
什么是物理地址、虚拟地址、总线地址
原文地址:https://blog.csdn.net/u014379540/article/details/525024701 虚拟地址虚拟地址做为程序员应该听说的最多,不管是在linux还是windows下编程,程序所操作地址都是虚拟地址。虚拟地址是硬件MMU与软件内存管理结合的产物,方便更高效率的使用RAM。内存管理是篇大文章,这里就不聊细节了,具体可以看UTLK的内存寻址一章。...转载 2018-09-13 10:49:15 · 7363 阅读 · 1 评论 -
zynq u-boot编译
原文地址:https://blog.csdn.net/ryuuei_1984/article/details/523291421.BOOT.bin介绍映像文件BOOT.BIN一般包括:FSBL,Bitstream和SSBL这三个文件,其中Bitstream是配置PL端程序,是可选项,在制作Linaro系统的时候并不需要。FSBL是first stage boot loader,文件的制作需...转载 2018-09-07 14:22:46 · 1040 阅读 · 0 评论 -
linux dma_alloc_writecombine 和mmap
原文地址:https://blog.csdn.net/manshq163com/article/details/18451135先理解cache的作用CPU在访问内存时,首先判断所要访问的内容是否在Cache中,如果在,就称为“命中(hit)”,此时CPU直接从Cache中调用该内容;否则,就 称为“ 不命中”,CPU只好去内存中调用所需的子程序或指令了。CPU不但可以直接从Cache中读出...转载 2018-09-12 15:44:11 · 765 阅读 · 0 评论 -
zedboard qspi flash 驱动移植
1,配置设备树和menuconfig2,将linux启动文件加载到flash,上电重启,linux运行起来。问题:flash除了启动文件分区,有时需要挂载一个flashdev,用于保存临时数据。可是每次上电重启mount flashdev都会报出错误:jffs2 error。flashDev里保存的数据则损坏,无法正常使用。有相同问题的同学可以私信我,我们一起交流解决,期待和你合作。...原创 2018-11-15 10:08:57 · 485 阅读 · 0 评论