linux
文章平均质量分 73
悟道禅师
这个作者很懒,什么都没留下…
展开
-
PCI-PCIE中断机制之一
PCI总线使用INTA#、INTB#、INTC#和INTD#信号向处理器发出中断请求。这些中断请求信号为低电平有效,并与处理器的中断控制器连接。在PCI体系结构中,这些中断信号属于边带信号(Sideband Signals),PCI总线规范并没有明确规定在一个处理器系统中如何使用这些信号,因为这些信号对于PCI总线是可选信号。所谓边带信号是指这些信号在PCI总线中是可选信号,而且只能在一个处理器系统的内部使用,并不能离开这个处理器环境。注:PCI Spec对边带信号的定义如下:Any signal原创 2021-11-26 17:59:27 · 1791 阅读 · 0 评论 -
PCI-PCIE中断机制之四
前面的文章中介绍过,MSI本质上是一种Memory Write,和PCIe总线中的Message概念半毛钱关系都没有。并且,MSI的Data Payload也是固定的,始终为1DW。由于MSI也是从PCI总线继承而来的,因此MSI相关的寄存器也存在于配置空间中的PCI兼容部分(前256个字节)。如下图所示,MSI有四种类型:其中Capability ID的值是只读的,05h表示支持MSI功能。Next Capability Pointer也是只读的,其用于查找下一个Capability原创 2021-07-03 14:28:53 · 655 阅读 · 1 评论 -
PCI-PCIE中断机制之二
为了能够让一些优先级高的事务得到优先处理,PCI总线支持外设中断用以提高总线性能。PCIe总线继承了PCI总线的所有中断特性(包括INTx和MSI/MSI-X),以兼容早期的一些PCI应用层软件。本次连载的文章只是简单的介绍PCIe中断的一些基本概念和特性,如需深入了解PCI/PCIe总线的中断内容,请参阅PCI/PCI-X Spec或者Mindshare的书籍(PCI System Architecture)。PCI总线最早采用的中断机制是INTx,这是基于边带信号的。后续的PCI/PCI-X版本,为原创 2021-07-03 14:24:14 · 550 阅读 · 0 评论 -
PCI-PCIE中断机制之零
PCI总线使用INTA#、INTB#、INTC#和INTD#信号向处理器发出中断请求。这些中断请求信号为低电平有效,并与处理器的中断控制器连接。在PCI体系结构中,这些中断信号属于边带信号(Sideband Signals),PCI总线规范并没有明确规定在一个处理器系统中如何使用这些信号,因为这些信号对于PCI总线是可选信号。PCI设备还可以使用MSI机制向处理器提交中断请求,而不使用这组中断信号。1.1中断信号与中断控制器的连接关系不同的处理器使用的中断控制器不同,如x86处理器使用APIC(A.原创 2021-07-03 14:15:52 · 633 阅读 · 0 评论 -
深入PCI与PCIe之一:硬件篇
最近在学习驱动开发过程中涉及到PCI相关知识,在网上看了很多文章,良莠不齐,我总结一下比较好的文章分享给大家,那就从源头开始说起。PCI总线和设备树是X86硬件体系内很重要的组成部分,几乎所有的外围硬件都以这样或那样的形式连接到PCI设备树上。虽然Intel为了方便各种IP的接入而提出IOSF总线,但是其主体接口(primary interface)还依然是PCIe形式。我们下面分成两部分介绍PCI和他的继承者PCIe(PCI express):第一部分是历史沿革和硬件架构;第二部分是软件界面和转载 2021-06-26 16:30:39 · 1678 阅读 · 0 评论 -
GDB调试多线程core文件
在linux下程序崩溃时,一般会在指定目录下生成一个core文件。core文件仅仅是一个内存映象(同时加上调试信息),主要是用来调试的,接下来我们通过一个案例观察怎么利用GDB调试core文件。在命令行中键入 gdb <可执行文件> < core文件>:进入gdb命令行中:键入 bt 可以查看程序终止线程的堆栈:但是有时错误不是发生在这个堆栈上。键入...转载 2020-04-21 00:25:01 · 1076 阅读 · 0 评论 -
linux 串口驱动解析之2440
对于串口驱动的移植准备自己分析一下源代码的,但是发现自己好多地方都只知道一些皮毛,不明白其中的道理,所以我上网搜的时候发现有好多人写了很多很好的文章了,下面我转载的这篇就非常不错,一个困恼我好久的问题是驱动代码中只是注册了platform驱动,而platform设备注册在哪里?这个问题困恼我好久,源代码中一直没找到,下面文章就解决了这个问题。当然文章中详细了讲述了很多细节的知识。原文地址转载 2016-01-29 14:00:45 · 1815 阅读 · 0 评论 -
JFFS2 及其新特性
JFFS2 是一个开放源码的项目(www.infradead.org)。它是在闪存上使用非常广泛的读/写文件系统,在嵌入式系统中被普遍的应用。这篇文章首先分析了在闪存上使用 JFFS2 的必要性,然后详细的阐述了 JFFS2 实现的内部机制,包括日志结构的文件系统,关键的数据结构,挂载过程和垃圾收集机制。同时也指出了 JFFS2 的局限性,并介绍了最新的针对 JFFS2 的不足进行改进的补丁程转载 2016-02-05 11:46:13 · 3537 阅读 · 0 评论 -
/dev/下创建可操作文件
#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #i原创 2015-12-21 17:15:44 · 1420 阅读 · 0 评论 -
sys/kernel下创建可操作内核文件。
#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #i原创 2015-12-21 17:12:07 · 1606 阅读 · 0 评论 -
linux nfs配置
系统平台:Ubuntu 10.04.2 LTS + cloud3916e Linux version 3.4.35-----------------------------------------------------------------------------------------------添加内核对NFS的支持:Networking support Networkin原创 2015-12-21 16:27:19 · 590 阅读 · 0 评论 -
YAFFS2移植指南
YAFFS2移植指南版本V2.0翻译自YAFFS官方版文档,译者做了少许修改。原文地址: http://www.yaffs.net/yaffs-porting-guide– prife 2011/07/02 17:27– prife 2011/07/03 13:53背景知识和NAND Flash特性(暂略部转载 2015-10-30 15:53:16 · 9166 阅读 · 5 评论 -
Linux内核之mmc子系统-sdio(2)
现在的Linux内核中,mmc不仅是一个驱动,而是一个子系统。这里通过分析Linux3.2.0内核,结合TI的arm335x平台及omap_hsmmcd host分析下mmc子系统,重点关注sdio及架构在其上的具体sdio IP驱动实现。1. General overview1.1 源码概览Linux kernel把mmc,sd以及sdio三者的驱动代码转载 2015-06-30 09:28:21 · 1928 阅读 · 0 评论 -
Linux SDIO总线驱动(一)
l翻译 2016-05-06 14:20:58 · 3814 阅读 · 0 评论 -
Linux SDIO总线驱动(二)
驱动:以SDIO为例其会采用mmc_attach_sdio来实现驱动和设备的匹配,其本质还是根据sdio_bus的匹配规则来实现匹配。在mmc_attach_sdio中首先是mmc匹配一个bus,即采用何种bus来进行mmc bus来处理host。在这里需要理解一点就是在SDIO中,对于SD卡存储器mmc为实体设备,而对于非SD卡存储器,如SDIO接口的设备,则mmc则表征为bus,这个比原创 2016-05-06 14:28:45 · 2244 阅读 · 0 评论 -
Linux SDIO总线驱动(三)
注册一个SDIO驱动会调用下面的函数:/** * sdio_register_driver - register a function driver * @drv: SDIO function driver */int sdio_register_driver(struct sdio_driver *drv){drv->drv.name = drv->name;dr转载 2016-05-06 14:56:36 · 1603 阅读 · 0 评论 -
Linux wext和nl80211接口简介
在分析wpa_supplicant软件linux版本下无线驱动事件和无线驱动配置代码之前,先简单介绍下linux无线驱动接口的实现技术和发展情况。 Linux无线驱动接口有两种标准接口,wext(Wireless Extensions无线扩展接口)和nl80211接口。 在linux-2.6.18版本之前,linux内核代码中并没有提供无线驱动接口以及无线驱动协议栈。w转载 2016-05-18 11:07:40 · 916 阅读 · 0 评论 -
linux中驱动异步通知应用程序的方法
驱动程序运行在内核空间中,应用程序运行在用户空间中,两者是不能直接通信的。但在实际应用中,在设备已经准备好的时候,我们希望通知用户程序设备已经ok,用户程序可以读取了,这样应用程序就不需要一直查询该设备的状态,从而节约了资源,这就是异步通知。好,那下一个问题就来了,这个过程如何实现呢?简单,两方面的工作。一 驱动方面:1. 在设备抽象的数据结构中增加一个struct fasync_转载 2016-07-26 10:29:30 · 1465 阅读 · 0 评论 -
在linux内核中读写文件
1. 序曲在用户态,读写文件可以通过read和write这两个系统调用来完成(C库函数实际上是对系统调用的封装)。 但是,在内核态没有这样的系统调用,我们又该如何读写文件呢?阅读linux内核源码,可以知道陷入内核执行的是实际执行的是sys_read和sys_write这两个函数,但是这两个函数没有使用EXPORT_SYMBOL导出,也就是说其他模块不能使用。在fs/ope转载 2016-07-20 16:39:58 · 653 阅读 · 0 评论 -
C语言中关于malloc(0)问题
首先来解释malloc(0)的问题,这个语法是对的,而且确实也分配了内存,但是内存空间是0,就是说返回给你的指针是不能用的,感觉奇怪吧?但是从操作系统的原理来解释就不奇怪了,这要涉及操作系统维护内存的方法来说了,在内存管理中,内存被分为2部分,栈和堆,栈有自己的机器指令,是一个先进后出的数据结构,我就在这里不再过多解释了,malloc分配的内存是堆内存,由于堆没有自己的机器指令,所以要有系统自己编原创 2016-07-31 06:28:42 · 14576 阅读 · 4 评论 -
__attribute__((packed))详解
1. __attribute__ ((packed)) 的作用就是告诉编译器取消结构在编译过程中的优化对齐,按照实际占用字节数进行对齐,是GCC特有的语法。这个功能是跟操作系统没关系,跟编译器有关,gcc编译器不是紧凑模式的,我在windows下,用vc的编译器也不是紧凑的,用tc的编译器就是紧凑的。例如:在TC下:struct my{ char ch; int a;} siz转载 2016-08-18 09:53:11 · 782 阅读 · 0 评论 -
allwinner script_parser_fetch()函数
最近看allwinner方案。发现他们吧一些东西进行了修改。例如初始化之类的配置文件,allwinner把他们放在一起,这样做的好处就是 容易配置,所有初始化一目了然。非常方便,这个配置文件在哪提现到用呢?ALLwinner 在每个驱动初始化时候都加了这么一个函数:int script_parser_fetch(char *main_name, char *sub_name, int valu原创 2013-03-23 10:53:04 · 4932 阅读 · 6 评论 -
Linux内核之mmc子系统-sdio (1)
前言SDIO卡 SDIO卡是在SD内存卡接口的基础上发展起来的接口,SDIO接口兼容以前的SD内存卡,并且可以连接SDIO接口的设备,目前根据SDIO协议的SPEC,SDIO接口支持的设备总类有蓝牙,网卡,电视卡等。 SDIO协议是由SD卡的协议演化升级而来的,很多地方保留了SD卡的读写协议,同时SDIO协议又在SD卡协议之上添加了CMD转载 2015-06-30 09:27:26 · 1597 阅读 · 0 评论 -
linux usb
简述USB 系统概述USB 连接的基本知识 OTG 控制器 OTG 的基本概念 Linux 下的 OTG 架构EHCI控制器 EHCI的基本概念Linux中EHCI控制器驱动的架构Linux中的USB设备驱动USB设备的识别过程USB设备的调试转载 2015-04-13 18:01:40 · 2847 阅读 · 1 评论 -
Kernel System Calls
Reprinted with permission of Linux MagazineKernel System Callsby Alessandro RubiniThis article is the first step towards an understanding of how kHTTPd can take the role of a web server while转载 2013-09-17 11:54:25 · 2615 阅读 · 0 评论 -
workqueue
1. 什么是workqueueLinux中的Workqueue机制就是为了简化内核线程的创建。通过调用workqueue的接口就能创建内核线程。并且可以根据当前系统CPU的个数创建线程的数量,使得线程处理的事务能够并行化。workqueue是内核中实现简单而有效的机制,他显然简化了内核daemon的创建,方便了用户的编程.工作队列(workqueue)是另外一种将工作推后执行的形式.工翻译 2013-09-17 15:42:36 · 769 阅读 · 0 评论 -
android4.2系统bug
android4.2.2部分系统bug原创 2013-09-03 09:46:48 · 1789 阅读 · 17 评论 -
init_module
原文:NAMEinit_module - initialize a loadable module entry SYNOPSIS#include linux/module.h>int init_module(const char *name, struct module *image); DESCRIPTIONinit_module loads翻译 2013-09-03 09:31:23 · 2313 阅读 · 0 评论 -
useradd adduser区别
在Ubuntu中创建新用户,通常会用到两个命令:useradd和adduser。虽然作用一样,但用法却不尽相同:1. 使用useradd时,如果后面不添加任何参数选项,例如:#sudo useradd test创建出来的用户将是默认“三无”用户:一无Home Directory,二无密码,三无系统Shell。2. 使用adduser时,创建用户的过程更像是一种人机对话,系统会提转载 2013-06-14 10:02:40 · 1066 阅读 · 0 评论 -
Android overlay系统
视频输出系统在android中体现为overlay,overlay的意思为 :覆盖铺在…上面,既然覆盖我们要考虑主要是覆盖在什么之上,在linux显示系统中用于界面显示的一般使用帧缓存(framebuffer),framebuffer是linux系统为显示设备提供一个接口,他将显示缓冲区抽象,屏蔽图像硬件的底层差异,帧缓冲设备为标准的字符设备,主设备号为29,对应/dev/fbn设备文件,帧缓冲在转载 2013-03-14 08:52:38 · 5763 阅读 · 0 评论 -
linux 下的 WATCHDOG
Linux 在不同领域如电信、终端便携设备等得到广泛应用,不同领域的应用对 Linux系统也提出相应的需求。Carrier Grade Linux 是 OSDL(Open Source Development Lab)发布的电信级 Linux 的标准,在系统可用性这部分指出 Linux 必须支持 watchdog 机制。Linux 内核从 1.3.51 版本开使提供硬件、软件 watchdog转载 2012-12-12 14:35:59 · 1216 阅读 · 0 评论 -
Linux fstab扫盲
1、fstab文件的作用使用权限 : 超级使用者使用方式 : 使用编辑器来修改 /etc/fstab (eg. vi /etc/fstab)说明 : 存放档案系统与目录结构对应资料的档案文件/etc/fstab存放的是系统中的文件系统信息。当正确的设置了该文件,则可以通过"mount/directoryname"命令来加载一个文件系统,每种文件系统都对应一个独立的行,每翻译 2012-11-12 14:11:00 · 747 阅读 · 0 评论 -
setgid: Operation not permitted
这个错误是因为/bin/su文件被取消了s位,所以解决方法是 chmod a+s /bin/su原创 2012-11-26 13:00:21 · 20120 阅读 · 1 评论 -
ubuntu 12.04 安装在VMware 8不能共享文件解决办法
Ubuntu社区已经推出ubuntu 12.04 beat1版,最近安装了这个版本。在设置文件共享的时候,发现ubuntu 12.04中不能正常挂载出共享目录。网上查了些资料,说要安装补丁,照上面做了,在运行补丁脚本的那一步出现了问题,报错信息大概是提示我vmware-tools没有安装。可是我明明安装过了。为什么会报这个错误呢,通过查看脚本文件,发现里面有个命令我本地vmware-too原创 2013-11-05 15:15:26 · 1084 阅读 · 0 评论 -
Windows XP硬盘安装Ubuntu 12.04双系统图文详解
Ubuntu 12.04 LTS版本于2012年4月26日发布,趁着五一放假,赶紧在自己的Windows XP的电脑上安装下Ubuntu 12.04,下面就是整个安装过程,记录下来,希望能够帮助和我一样第一次在XP中安装Ubuntu 12.04双系统的朋友。下载相关资源 需要下载的东西有两个,一个是grub4dos,另一个是Ubuntu 12.04 LTS的镜像文件,具体下载地址如下:转载 2013-11-20 15:04:19 · 1080 阅读 · 0 评论 -
软考系统架构设计师学习笔记
第一章 1.1.1 系统架构师的概念 现代信息系统“架构”三要素:构件、模式、规划;规划是架构的基石,也是这三个贡献中最重要的。架构本质上存在两个层次:概念层,物理层。 1.2.1 系统架构师的定义 负责 理解、管理 并最终确认和评估 非功能性系统需求,给出开发规范,搭建系统实现的核心架构,对整个软件架构、关键构建、接口 进行总体转载 2015-04-02 09:03:47 · 18419 阅读 · 5 评论 -
linux 配置如何识别U盘
1. kernel 中需要的配置[python] view plaincopyDevice Drivers (U盘属于存储设备,linux将其定义为 SCSI设备) SCSI device support ---> SCSI device support原创 2015-03-12 16:31:38 · 5779 阅读 · 1 评论 -
关于nandflsh 快速对安全区操作一些问题及其解决
最近客户选择了一款相对便宜的nandflash。 由于默认系统对安全区的操作很慢并且频繁,造成启动后加载文件系统很慢,因此想出了对安全区的另一种快速方法,将整个安全区读写出,之后修改需要修改的部分,然后写进去。按照flash特写,这种情况应该是没有问题的,并且咨询的厂商,这最种做法没有问题。但是问题出来了,对于安全区的修改,会牵涉到读写安全区中厂商的一些信息,虽然读出来再写进去,对这些信息原创 2015-02-12 10:29:01 · 880 阅读 · 0 评论 -
marvell r8782 固件加载不了及其问题原因
marvell r8782 固件加载不了及其问题原因原创 2015-02-09 14:59:10 · 2223 阅读 · 1 评论 -
marvel r8782 ap模式编译
marvell r8782 ap模式原创 2015-01-30 10:13:39 · 1494 阅读 · 0 评论