Linux 系统
文章平均质量分 83
zqixiao_09
这个作者很懒,什么都没留下…
展开
-
Linux DBUS总线
D-Bus三层架构D-Bus是一个为应用程序间通信的消息总线系统, 用于进程之间的通信。它是个3层架构的IPC 系统,包括:1、函数库libdbus ,用于两个应用程序互相联系和交互消息。2、一个基于libdbus构造的消息总线守护进程,可同时与多个应用程序相连,并能把来自一个应用程序的消息路由到0或者多个其他程序。3、基于特定应用程序框架的封装库或捆绑(wrapp转载 2018-03-11 20:48:23 · 13734 阅读 · 0 评论 -
Linux 下的DMA浅析
DMA是一种无需CPU的参与就可以让外设和系统内存之间进行双向数据传输的硬件机制。使用DMA可以使系统CPU从实际的I/O数据传输过程中摆脱出来,从而大大提高系统的吞吐率。DMA经常与硬件体系结构特别是外设的总线技术密切相关。一、DMA控制器硬件结构 DMA允许外围设备和主内存之间直接传输 I/O 数据, DMA 依赖于系统。每一种体系结构DMA传输不同,编程接口也不同原创 2016-04-07 20:55:54 · 30607 阅读 · 6 评论 -
Exynos4412 中断处理流程详解
Linux 中,当外设触发中断后,大体处理流程如下:a -- 具体CPU architecture相关的模块会进行现场保护,然后调用machine driver对应的中断处理handler;b -- machine driver对应的中断处理handler中会根据硬件的信息获取HW interrupt ID,并且通过irq domain模块翻译成IRQ number;c -- 调用该原创 2016-03-19 00:36:03 · 9213 阅读 · 0 评论 -
Linux 设备驱动开发 —— platform设备驱动应用实例解析
前面我们已经学习了platform设备的理论知识Linux 设备驱动开发 —— platform 设备驱动 ,下面将通过一个实例来深入我们的学习。 一、platform 驱动的工作过程 platform模型驱动编程,需要实现platform_device(设备)与platform_driver(驱动)在platform(虚拟总线)上的注册、匹配,相互绑定,然后原创 2016-03-14 19:27:40 · 45463 阅读 · 25 评论 -
进程上下文、中断上下文及原子上下文
谈论进程上下文 、中断上下文 、 原子上下文之前,有必要讨论下两个概念:a -- 上下文 上下文是从英文context翻译过来,指的是一种环境。相对于进程而言,就是进程执行时的环境; 具体来说就是各个变量和数据,包括所有的寄存器变量、进程打开的文件、内存信息等。b -- 原子 原子(atom)本意是“不能被进一步分割的最小粒子”,而原子操作(原创 2016-03-13 15:21:13 · 6278 阅读 · 0 评论 -
Linux 文件系统与设备文件系统 (一)—— udev 设备文件系统
一、什么是Linux设备文件系统 首先我们不看定义,定义总是太抽象很难理解,我们先看现象。当我们往开发板上移植了一个新的文件系统之后(假如各种设备驱动也移植好了),启动开发板,我们用串口工具进入开发板,查看系统/dev目录,往往里面没有或者就只有null、console等几个系统必须的设备文件在这儿外,没有任何设备文件了。那我们移植好的各种设备驱动的设备文件怎么没有啊?如果要使用这些原创 2016-03-12 10:55:35 · 15374 阅读 · 3 评论 -
Linux 字符设备驱动开发基础(六)—— VFS 虚拟文件系统解析
一、VFS 虚拟文件系统基础概念 Linux 允许众多不同的文件系统共存,并支持跨文件系统的文件操作,这是因为有虚拟文件系统的存在。虚拟文件系统,即VFS(Virtual File System)是 Linux 内核中的一个软件抽象层。它通过一些数据结构及其方法向实际的文件系统如 ext2,vfat 提供接口机制。 Linux 有两个特性:a -- 跨原创 2016-03-11 23:39:49 · 6731 阅读 · 2 评论 -
Linux 文件系统与设备文件系统 (二)—— sysfs 文件系统与Linux设备模型
提到 sysfs 文件系统 ,必须先需要了解的是Linux设备模型,什么事Linux设备模型呢?一、Linux 设备模型1、设备模型概述 从2.6版本开始,Linux开发团队便为内核建立起一个统一的设备模型。在以前的内核中没有独立的数据结构用来让内核获得系统整体配合的信息。尽管缺乏这些信息,在多数情况下内核还是能正常工作的。然而,随着拓扑结构越来越复杂,以及要支持诸如电源管理等原创 2016-03-12 12:19:28 · 12074 阅读 · 2 评论 -
Linux 驱动面试题总结
1、 Linux设备中字符设备与块设备有什么主要的区别?请分别列举一些实际的设备说出它们是属于哪一类设备。 字符设备:字符设备是个能够像字节流(类似文件)一样被访问的设备,由字符设备驱动程序来实现这种特性。字符设备驱动程序通常至少实现open,close,read和write系统调用。字符终端、串口、鼠标、键盘、摄像头、声卡和显卡等就是典型的字符设备。 块设备:和字符设备类似,原创 2016-03-20 20:51:11 · 23767 阅读 · 3 评论 -
Linux下test命令使用
test命令格式: test condition通常,在if-then-else语句中,用[]代替,即[ condition ]。注意:方括号两边都要用空格。 1、数值比较 =========================================================== 比 较 描 述 -------------原创 2016-05-15 16:32:55 · 4295 阅读 · 0 评论 -
Linux下tail命令使用
linux tail命令用途是依照要求将指定的文件的最后部分输出到标准设备,通常是终端,通俗讲来,就是把某个档案文件的最后几行显示到终端上,假设该档案有更新,tail会自己主动刷新,确保你看到最新的档案内容。一、tail命令语法tail [ -f ] [ -c Number | -n Number | -m Number | -b Number | -k Number原创 2016-05-15 16:40:15 · 1728 阅读 · 0 评论 -
Linux下ln命令使用
ln是linux中又一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个同步的链接.当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在 其它的目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间。1.命令格式: ln [参数][源文件或目录][目标文件或目录]原创 2016-05-15 16:52:04 · 6643 阅读 · 1 评论 -
Linux 网络协议栈开发番外篇(一)—— hlist 详解
http://blog.csdn.net/hs794502825/article/details/24597773在Linux内核中,hlist(哈希链表)使用非常广泛。本文将对其数据结构和核心函数进行分析。和hlist相关的数据结构有两个:hlist_head 和 hlist_node[cpp] view plain copy转载 2018-01-16 21:44:25 · 735 阅读 · 0 评论 -
Linux内核态与用户态通信篇(一)—— Netlink
转自 http://blog.csdn.net/u012819339/article/details/51334600linux-3.10.36版本的内核相比linux-2.6.36版本中netlink的代码有所变化,以前的代码已经不能成功编译了。netlink是linux内核的一套基于socket的通信机制,那么,只需要知道怎么创建套接字,发送数据,接收数据就行了。原创 2017-08-12 21:44:23 · 6621 阅读 · 0 评论 -
/etc目录介绍
/etc 是Linux下的配置文件的老家, 很多管理和使用的修改都在这里3. 网络配置文件3.1 /etc/hosts#/etc/hosts#文件格式: IPaddress hostname aliases#文件功能: 提供主机名到IP地址的对应关系,建议将自己经常使用的主机# 加入此文件中,也可将没有DNS记录的机器加入到此文件中,#原创 2016-11-27 09:53:28 · 4854 阅读 · 0 评论 -
linux下C程序插入执行shell脚本
最近在看深入理解计算机系统,看到一个函数叫做execve(),这个函数很有意思,可以在一个进程插入另外一个进程执行,但是又不像fork()一样产生一个子进程,execve()插入的进程和原进程共享进程号,就好像执行这进程就像执行过程调用一般随意。函数原型如下:int execve(const char *filename, char *const argv[], char *con原创 2016-11-27 09:49:31 · 3678 阅读 · 1 评论 -
route命令详解与使用实例
1. 使用背景需要接入两个网络,一个是部署环境所在内网环境,这个环境是上不了外网, 外网环境很可能是一个无线网络。如果两者都连接上,很可能导致有一方不能起作用,即外网或内网上不了,常常需要使用繁琐的“禁用网络连接”、“启用网络连接”的操作来进行内外网的切换,甚是麻烦。为了解决这个问题,可以使用route命令来使得同时内外网都可用。2. rou原创 2016-11-29 22:56:35 · 28512 阅读 · 3 评论 -
iptables配置——NAT地址转换
iptables nat 原理同filter表一样,nat表也有三条缺省的"链"(chains): PREROUTING:目的DNAT规则 把从外来的访问重定向到其他的机子上,比如内部SERVER,或者DMZ。 因为路由时只检查数据包的目的ip地址,所以必须在路由之前就进行目的PREROUTING DNAT; 系统先P原创 2016-11-29 22:30:11 · 64811 阅读 · 0 评论 -
Linux下diff命令与patch命令使用
1,制作补丁diff的使用diff可以完成比较功能,生成补丁文件格式::diff [option] oldfile newfile常用的option选项有:-r 对目录进行递归处理-u 输出统一格式,diff有"传统"和"统一"两种格式,现在一般使用"统一"格式,比较而言,统一格式生成的文件大,但包含了更多的信息,有利于阅读与定位-N 补丁中包含整个新文件-原创 2016-07-05 21:31:07 · 10075 阅读 · 0 评论 -
Linux下find命令使用
find命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。 语法 find(选项)(参数) 选项 选项 -amin:查找在指定时间曾被存取过的文件或目录,单位以分钟计算; -anewer:查找其存取时间较指定文件或原创 2016-05-30 21:21:42 · 4999 阅读 · 0 评论 -
Exynos4412 中断驱动开发相关问题总结
1、Linux 中如何标识一个外部中断? 在linux kernel中,我们使用下面两个ID来标识一个来自外设的中断:a -- IRQ number CPU需要为每一个外设中断编号,我们称之IRQ Number。这个IRQ number是一个虚拟的interrupt ID,和硬件无关,仅仅是被CPU用来标识一个外设中断。b -- HW interrupt ID原创 2016-03-18 21:43:41 · 2816 阅读 · 0 评论 -
Exynos4412 IIC 总线驱动开发相关问题总结
一 、问题1、IIC总线上的设备是怎么描述的?struct i2c_client{struct device dev;...};2、IIC总线上的驱动是怎么描述的?struct i2c_driver{struct device_driver driver;};3、IIC总线上的设备和驱动是怎么匹配的1)、对于 Cortex - A原创 2016-03-18 20:58:30 · 3395 阅读 · 0 评论 -
Exynos4412 IIC总线驱动开发(二)—— IIC 驱动开发
前面在Exynos4412 IIC总线驱动开发(一)—— IIC 基础概念及驱动架构分析 中学习了IIC驱动的架构,下面进入我们的驱动开发过程, 首先看一张代码层次图,有助于我们的理解 上面这些代码的展示是告诉我们:linux内核和芯片提供商为我们的的驱动程序提供了 i2c驱动的框架,以及框架底层与硬件相关的代码的实现。 剩下的就是针对挂原创 2016-03-17 22:15:31 · 8696 阅读 · 4 评论 -
Linux 系统应用编程——网络编程(常用命令解析)
1、telnet Telnet协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的能力。在终端使用者的电脑上使用telnet程序,用它连接到服务器。终端使用者可以在telnet程序中输入命令,这些命令会在服务器上运行,就像直接在服务器的控制台上输入一样。可以在本地就能控制服务器。当我们使用Telnet原创 2016-01-13 20:59:35 · 2839 阅读 · 0 评论 -
linux 目录/sys 解析
今天学习Linux目录时,遇到/sys这个目录,老师怎么讲的,不太清楚,先对/sys目录知识进行一个整理首先,对 /sys目录下的各个子目录进行具体说明:/sys下的子目录内容 /sys/devices该目录下是全局设备结构体系,包含所有被发现的注册在各种总线上的各种物理设备。一般来说,所有原创 2015-12-15 21:22:02 · 5814 阅读 · 0 评论 -
Linux 应用---make及makefile的编写
Make 在我们做linux 开发中是必不可少的一部分,它在我们编写大型项目工程文件中起到非常大的作用。 Make工程管理器也就是个“自动编译管理器”,这里的“自动”是指它能够根据文件时间戳自动发现更新过的文件而减少编译的工作量,同时,它通过读入Makefile文件的内容来执行大量的编译工作。Make将只编译改动的代码文件,而不用完全编译。 而Makefile是Make读入的原创 2015-12-23 17:40:51 · 21443 阅读 · 1 评论 -
Linux 命令 ——less命令
less 工具也是对文件或其它输出进行分页显示的工具,应该说是linux正统查看文件内容的工具,功能极其强大。less 的用法比起 more 更加的有弹性。在 more 的时候,我们并没有办法向前面翻, 只能往后面看,但若使用了 less 时,就可以使用 [pageup] [pagedown] 等按键的功能来往前往后翻看文件,更容易用来查看一个文件的内容!除此之外,在 less 里头可以拥有更多的转载 2015-12-25 21:14:21 · 1587 阅读 · 0 评论 -
进程调度相关命令解析
进程相关命令1、ps 查看系统中的进程使用方式:ps [options] [--help]说明:显示瞬间进程 (process) 的动态参数:ps的参数非常多, 在此仅列出几个常用的参数并大略介绍含义ps命令常用用法(方便查看系统进程)1)ps a 显示现行终端机下的所有程序,包括其他用户的程序。2)ps -A 显示所有进程。3)ps c 列出程序原创 2016-01-09 22:06:24 · 2951 阅读 · 1 评论 -
Linux C 内存管理
提到C语言,我们知道C语言和其他高级语言的最大的区别就是C语言是要操作内存的! 内存的使用时程序设计中需要考虑的重要因素之一,这不仅由于系统内存是有限的(尤其在嵌入式系统中),而且内存分配也会直接影响到程序的效率。因此,我们要对C语言中的内存管理,有个系统的了解。 在C语言中,定义了4个内存区间:代码区;全局变量和静态变量区;局部变量区即栈区;动态存储区,即堆区;具体如下:原创 2015-12-22 17:58:20 · 4835 阅读 · 0 评论 -
Linux目录/bin、/sbin、/usr/bin、/usr/sbin的区别
/bin、/sbin、/usr/bin、/usr/sbin目录的区别 在linux下我们经常用到的四个应用程序的目录是/bin、/sbin、/usr/bin、/usr/sbin 。 而四者存放的文件一般如下: /bin: bin为binary的简写主要放置一些系统的必备执行档例如:cat、cp、chmod df、dmesg、gzip、kill、ls、mkdir、mo原创 2015-12-15 13:12:50 · 2496 阅读 · 0 评论 -
Linux中vi显示中文乱码的问题
linux 下编程,用到的编程工具是VI,编辑编译都方便,但经常出现中文乱码问题,下面可完美解决这个问题由于在windows下默认是gb编码,而我的vim默认是utf-8(gedit默认也是utf-8),所以打开会成乱码。修改了一下配置文件,使vi支持gb编码就好了。$vi ~/.vimrclet &termencoding=&encodingset fileencodings原创 2015-11-17 19:26:29 · 19263 阅读 · 2 评论 -
Linux 下shell编程
什么是shell?Shell是一个命令解析器,是介于Linux操作系统的内核(kernel)与用户之间的一个绝缘层。shell脚本就是讲各类命令预先放入其中,方便一次性执行的一个程序文件,主要用于方便管理员进行设置或者管理。 序员的角度来看, Shell本身是一种用C语言编写的程序,从用户的角度来看,Shell是用户与Linux操作系统沟通的桥梁。用户既可以输入命令执行,又可以利用 She原创 2015-12-17 18:35:07 · 4898 阅读 · 0 评论 -
Linux环境变量的设置和查看
一、Linux的变量种类 按变量的生存周期来划分,Linux变量可分为两类: 1、永久的:需要修改配置文件,变量永久生效。 2、临时的:使用export命令声明即可,变量在关闭shell时失效。 二、设置变量的三种方法1、在/etc/profile文件中添加变量【对所有用户生效(永久的)】 用VI在文件/etc/profile文件原创 2015-12-17 13:04:27 · 69385 阅读 · 0 评论 -
Linux 设备驱动中的 I/O模型(一)—— 阻塞和非阻塞I/O
在前面学习网络编程时,曾经学过I/O模型原创 2016-03-15 21:04:05 · 5328 阅读 · 1 评论 -
Exynos4412 IIC总线驱动开发(一)—— IIC 基础概念及驱动架构分析
关于Exynos4412 IIC 裸机开发请看 :Exynos4412 裸机开发 —— IIC总线 ,下面回顾下 IIC 基础概念一、IIC 基础概念IIC(Inter-Integrated Circuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。IIC总线产生于在80年代,最初为音频和视频设备开发,如今主要在服务器管理中使用,其中包括单个组件状态原创 2016-03-17 20:45:18 · 15645 阅读 · 5 评论 -
Exynos4412 ADC 设备驱动开发
具体ADC硬件知识及裸机驱动请看: Exynos4412裸机开发 —— A/D转换器1、原理图如下:2、相关寄存器信息ADC_BASE 0x126C0000ADCCON 0x0000 1ADCDLY 0x0008 ADCDAT 0x000C原创 2016-03-17 20:35:56 · 7465 阅读 · 4 评论 -
Linux 设备驱动开发 —— 设备树在platform设备驱动中的使用
关与设备树的概念,我们在Exynos4412 内核移植(六)—— 设备树解析 里面已经学习过,下面看一下设备树在设备驱动开发中起到的作用 Device Tree是一种描述硬件的数据结构,设备树源(Device Tree Source)文件(以.dts结尾)就是用来描述目标板硬件信息的。Device Tree由一系列被命名的结点(node)和属性(property)组成,而结点本原创 2016-03-14 20:47:15 · 29184 阅读 · 9 评论 -
Exynos4412 中断驱动开发(一)—— 中断基础及中断的注册过程
一、中断基础概念 所谓中断,指CPU在执行程序的过程中,出现了某些突发事件即待处理,CPU必须暂停当前的程序。转去处理突发事件,处理完毕后CPU又返回原程序被中断的位置并继续执行。1、中断分类a -- 内部中断和外部中断 根据中断的的来源,中断可以分为内部中断和外部中断:内部中断,其中断源来自CPU内部(软件中断指令、溢出、除法错误等),例如,操作系统从原创 2016-03-16 20:45:31 · 7955 阅读 · 2 评论 -
Exynos4412 中断驱动开发(三)—— 设备树中中断节点的创建
提到中断就必须了解到GIC,下面先了解一下GIC一、GIC概念 GIC(Generic Interrupt Controller)是ARM公司提供的一个通用的中断控制器。GIC通过AMBA(Advanced Microcontroller Bus Architecture)这样的片上总线连接到一个或者多个ARM processor上。 下面是Exynos44原创 2016-03-17 19:10:38 · 13704 阅读 · 6 评论 -
Exynos4412 中断驱动开发(二)—— 中断处理流程分析
前面已经学习了中断的注册过程,下面由一张流程图来看一下当中断发生时的处理流程:中断发生之后处理流程a -- 具体的CPU architecture相关模块进行现场保护,然后调用machine driver执行对应的中断处理handler;b -- machine driver对应中断处理handler会根据硬件的信息获取HW interrupt id,然后通过irq原创 2016-03-16 21:58:56 · 4689 阅读 · 0 评论