Linux Kernel
htjacky
这个作者很懒,什么都没留下…
展开
-
Linux內核態搶占機制分析
【摘要】本文首先介紹非搶占式內核(Non-Preemptive Kernel)和可搶占式內核(Preemptive Kernel)的區別。接着分析Linux下有兩種搶占:用戶態搶占(User Preemption)、內核態搶占(Kernel Preemption)。然後分析了在內核態下:如何判斷能否搶占內核(什麼是可搶占的條件);何時觸發重新調度(何時設置可搶占條件);搶占發生的時機(何時檢查可搶转载 2013-10-08 02:01:54 · 726 阅读 · 0 评论 -
Overview of the V4L2 driver framework(一)
Overview of the V4L2driver frameworkV4L2驱动框架概览===================================== Thistext documents the various structures provided by the V4L2 framework andtheir relationships.本文档描述翻译 2017-02-03 18:16:31 · 836 阅读 · 0 评论 -
Overview of the V4L2 driver framework(二)
struct v4l2_device------------------ Each device instanceis represented by a struct v4l2_device (v4l2-device.h). Very simple devices canjust allocate this struct, but most of the time you would翻译 2017-02-03 18:40:57 · 705 阅读 · 0 评论 -
Video4Linux框架简介(3) - video_device
video_device是指向v4l2具体的设备,名字同样有些不够准确,事实上,根据注册时传入type(本例中使用的是VFL_TYPE_GRABBER,也就是视频输入设备 -- Camera)的不同,可以分为视频输入,视频输出,VBI,Radio等。第一步先是在驱动的probe函数中添加video_device的初始化并注册:struct skeleton {struct pci_dev翻译 2017-02-08 19:52:43 · 2720 阅读 · 0 评论 -
Video4Linux框架简介(4) - v4l2_ioctl_ops
译注:本节主要会介绍一些v4l2常用的ioctl回调函数,每个驱动开发者可根据硬件需要来做具体实现或者不做实现。1. Input ioctlsvidioc_enum_input,顾名思义就是枚举输入,对于本示例驱动来说,有标准的S-Video输入和HDMI两种。static int skeleton_enum_input(struct file *file, void *priv,s翻译 2017-02-09 10:38:56 · 3664 阅读 · 0 评论 -
Video4Linux框架简介(5) - Streaming
译注:在前几节我们介绍了如何初始化v4l2驱动的框架、查询能力值、设置输入/视频标准/格式,但是还没有真正地传输过一帧数据。万事俱备,只欠东风,本节将会重点介绍"流媒体"中的数据流。流模式,数据流主要通过如下几种方式进行传输:●read/write接口:这种的基本比较少用。●内存映射流 I / O:驱动程序分配的内存,mmap()到用户空间。●用户指针流 I / O翻译 2017-02-10 11:05:48 · 2765 阅读 · 0 评论 -
Linux Kernel media框架(一)
Linuxkernel media frameworkLinux内核媒体框架============================ Thisdocument describes the Linux kernel media framework, its data structures,functions and their usage.本文档描述了Linux内核媒体框架,翻译 2017-02-03 15:07:45 · 4972 阅读 · 0 评论 -
Linux Kernel media框架(二)
Entities,pads and links实体,垫和链接------------------------ -Entities- 实体Entitiesare represented by a struct media_entity instance, defined ininclude/media/media-entity.h. Thestructure is u翻译 2017-02-03 15:16:08 · 4027 阅读 · 0 评论 -
Linux Kernel media框架(三)
Graphtraversal---------------图遍历 Themedia framework provides APIs to iterate over entities in a graph.媒体框架提供API以在图中的实体之间进行迭代。 Toiterate over all entities belonging to a media device, dri翻译 2017-02-03 17:04:46 · 2478 阅读 · 0 评论 -
Linux Kernel media框架(四)
Pipelinesand media streams管道和媒体流--------------------------- Whenstarting streaming, drivers must notify all entities in the pipeline toprevent link states from being modifiedduring streaming翻译 2017-02-03 17:08:03 · 1565 阅读 · 0 评论 -
Device Tree(一):背景介绍
http://www.wowotech.net/device_model/why-dt.html一、前言作为一个多年耕耘在linux 2.6.23内核的开发者,各个不同项目中各种不同周边外设驱动的开发以及各种琐碎的、扯皮的俗务占据了大部分的时间。当有机会下载3.14的内核并准备学习的时候,突然发现linux kernel对于我似乎变得非常的陌生了,各种新的机制,各种fram转载 2017-06-02 10:37:28 · 429 阅读 · 0 评论 -
Device Tree(二):基本概念
一、前言一些背景知识(例如:为何要引入Device Tree,这个机制是用来解决什么问题的)请参考引入Device Tree的原因,本文主要是介绍Device Tree的基础概念。简单的说,如果要使用Device Tree,首先用户要了解自己的硬件配置和系统运行参数,并把这些信息组织成Device Tree source file。通过DTC(Device Tree Compile转载 2017-06-02 10:39:15 · 531 阅读 · 0 评论 -
Device Tree(三):代码分析
一、前言Device Tree总共有三篇,分别是:1、为何要引入Device Tree,这个机制是用来解决什么问题的?(请参考引入Device Tree的原因)2、Device Tree的基础概念(请参考DT基础概念)3、ARM linux中和Device Tree相关的代码分析(这是本文的主题)本文主要内容是:以Device Tree相关的数据流分析为索引转载 2017-06-02 11:24:01 · 599 阅读 · 0 评论 -
Video4Linux框架简介(6) - 控制框架
V4L2 PCI驱动实例控制框架译注:在图像传输开始后,会有各种各样的控制参数需要下发给硬件,譬如brightness, contrast等。首先,要增加如下的控制处理回调函数,一些芯片厂商把kernel驱动做小,很多就依赖event机制在userspace侧处理。#include #include struct skeleton {...struct v4l2翻译 2017-02-10 14:00:55 · 1274 阅读 · 0 评论 -
Video4Linux框架简介(7) - V4L2框架和v4l2_subdev
V4L2框架译注:这是目前看到关于V4L2框架内众多结构关系最提纲挈领的一张图。子设备:v4l2_subdev struct●通常芯片连接到i2c或SPI总线,或通过GPIO引脚控制,但它们也可以表示SoC / FPGA内部模块。●子设备驱动程序可以由不同的桥驱动程序使用,因此它们不能依赖于任何特定的桥驱动程序。●不能进行探测,因此桥接器驱动程序必须翻译 2017-02-10 14:22:58 · 9356 阅读 · 0 评论 -
Video4Linux框架简介(2) - v4l2_device
V4L2 PCI基础驱动程序实例struct v4l2_device (1)(译注: 第一步,先基于你的桥接驱动(譬如这里就是PCI设备),添加一个v4l2设备对象,通常v4l2设备都不是独立存在的。)#include // 每个V4L2驱动都需要添加这两个头文件#include MODULE_DESCRIPTION("V4L2 PCI Skeleton Dr翻译 2017-02-08 18:58:54 · 1767 阅读 · 0 评论 -
Video4Linux框架简介(1)
原作者:Hans Verkuil特性与架构 特性●视频捕获/输出和调谐(/ dev /videoX,流和控制)●视频捕获和输出覆盖(/ dev / videoX,控制)●内存到内存(也称为编解码器)设备(/ dev / videoX,streaming和控制)●原始和切分VBI捕获和输出(/ dev /vbiX,streaming和控制)●无线电翻译 2017-02-08 17:25:14 · 2098 阅读 · 0 评论 -
ARM VFP的一点体会
关键字: VFP arm1136JF-SMCIMX31 gcc linux参考文献:>、>、>前言:MCIMX31是一款基于ARM1136JF-S的多媒体处理器。他适合用来做智能手机,手持式游戏终端,多媒体播放器等智能手持式设备。有关这款CPU的参数特性可以参考Freescale的DataSheet。最近使用MCIMX31的VFP有些收获,写出来与大家分享。调试环境:成都莱转载 2013-10-08 02:30:22 · 2300 阅读 · 0 评论 -
如何向开源软件贡献自己的力量
摘要: 我想向开源社区贡献源码,但是该怎么做呢?我经常看见很多很多学生在很多论坛里问这个问题。有很多种方式可以贡献源码,我列出了很多,希望能够对你们有多帮助。 贡献给现有的项目: 虽然你对于贡献源码感兴趣,但并 ...“我想向开源社区贡献源码,但是该怎么做呢?”我经常看见很多很多学生在很多论坛里问这个问题。有很多种方式可以贡献源码,我列出了很多,希望转载 2013-10-10 09:45:34 · 729 阅读 · 0 评论 -
Linux内核中的内存都不分页(unpagable)
为何Linux内核中的内存都不分页呢?更确切的理解这个概念应该是说内核中的内存都是不可被交换到二级存储中去的。Linux内核本身也是一个进程,它和其他进程有一个很本质的区别就在于它可以直接操作硬件,进行中断处理,管理内存等等,正因为如此,就造成了它不能进行分页的重要原因:1. 试想一下,中断处理例程的函数指针都在内核内存中,假如这部分内存被交换到二级存储当中,每次发生中断,那么进行中断处理原创 2013-10-25 17:54:34 · 1126 阅读 · 0 评论 -
An issue in Linux kernel 2.6 VFP
[Abstract]This article is about an issue tracing about VFP in Linux kernel 2.6.[Symptom]Kernel oops at the start-up stage, according to stack trace, every time this issue occurs just after vfp e原创 2013-12-04 08:44:09 · 1203 阅读 · 0 评论 -
ARM学习笔记 (二)存储系统
CP15: 用于存储管理的系统控制协处理器。 Translate Table页表是在内存中用来存放虚拟地址和物理地址转换的映射关系表, C2就是用来存放页表的基地址(也就是页表有可能会更新);而TLB (Translatelookaside buffer)是个特殊的存储器件,从内存中的页表查询. 由于ARM支持的存储块分为这几个粒度的:section 1M, Large page6原创 2013-12-20 09:49:58 · 886 阅读 · 0 评论 -
The install progress of bochs 2.4.6
1.>2. make stageNo problem3. make install stage#sudo make installIssue 2: install: cannot stat `./bochsdbg': No such file or directorySolution: #cp bochs bochsdbg原创 2013-12-26 05:45:29 · 1061 阅读 · 0 评论 -
Jos-Lab1 (上)
记录bochs下如何加载和调试jos内核的过程:I.Bochs下编译和运行Jos内核http://pdos.lcs.mit.edu/6.828/2007/labs/lab1/lab1.tar.gz 下载Lab1所需内核tar 解压1. 设置编译环境,安装GCC1.1 Set up gmakesudo ln -s /usr/bin/make /usr/bin/gmak原创 2013-10-29 04:16:45 · 1246 阅读 · 0 评论 -
Linux 面试题
1) Linux中主要有哪几种内核锁?atomic原子锁,spin lock,信号量,读写锁,RCU,mutex2) Linux中的用户模式和内核模式是什么含意?User space即运行在用户进程空间,拥有4G的内存空间,在被保护的状态下运行;内核模式下就直接操作硬件,管理内存,3) 怎样申请大块内核内存?vmalloc()4) 用户进程间通信主要哪几种方式?IP转载 2014-02-13 12:23:03 · 818 阅读 · 0 评论 -
ARM Linux的面试题
1. ARM MMU是什么? 存储器管理单元 TTBR是什么?Translation table base register名稱說明TranslationTable Base Register 0 (TTBR0)用來記錄User-Mode應用Task的記憶體分頁架構所在的BaseAddress,通常大小為128bytes到原创 2014-02-17 16:11:47 · 3973 阅读 · 1 评论 -
Linux kernel 性能优化(一)之优化简介
摘要:这个系列文档主要是描述如何监控Linux操作系统的性能。检查如何解释Linux性能工具的输出。在搜集这些输出以后,做出关于性能瓶颈的分析。不过不包括如何优化内核。题目涵盖以下几个部分:1. 优化简介2. CPU术语3. CPU监控4. 内核CPU线程调度1.0优化简介性能优化就是找到系统的瓶颈并且消除瓶颈的过程。许多管理员以为性能优化就像在百度上搜原创 2014-03-04 23:08:00 · 1960 阅读 · 0 评论 -
Linux kernel 性能优化(二)CPU 术语
CPU的使用很大程度上是依赖于什么资源试图使用它。内核有个调度器是用来调度两种资源:线程(单线程或多线程)和中断。调度器给予不同的资源不同的优先级。以下是从高到低的优先级排列:• 硬件中断 --这些请求是系统硬件产生。比如说,磁盘可能会在IO传输结束后产生一个中断信号或者一个NIC可能会在收到一个数据包后产生一个中断。•软中断 --这些内核软件中断是用来维护内核。比如内核时原创 2014-03-05 00:03:55 · 1431 阅读 · 0 评论 -
Linux kernel 性能优化(三)CPU性能监控
要理解CPU的性能,就要懂得解读运行队列,使用率以及上下文切换。正如前文描述,性能是和基准数据相关。然而在任何系统上都有通用的性能期望。这些期望包括:• 运行队列-- 一个处理器上的运行队列应该有少于1-3个线程。也就是说一个双核系统的运行队列上不应该有多于六个线程。• CPU使用率– 如果一个CPU被完全使用,那么应该达到以下的平衡• 65% – 70原创 2014-03-05 10:38:41 · 1616 阅读 · 0 评论 -
Linux kernel 性能优化(四)虚拟内存
虚拟内存使用磁盘作为RAM的扩展,从而有效的增加内存的使用率。内核会把当前未使用的内存块内容写到硬盘中去,让内存可以有其他用户。当原来的内容需要的时候,再重新读回内存。这个对用户来说是完全透明的;Linux下运行的程序只看到大量可用的内存而不会注意到其中有一些内存是暂存在磁盘中。当然,读写硬盘比使用内存要蛮,所以程序速度就受影响。作为虚拟内存使用的磁盘空间被称做交换空间。4.1 虚原创 2014-03-05 17:18:54 · 2436 阅读 · 0 评论 -
Linux kernel 性能优化(五)Linux虚拟内存优化
Linux内核包含针对虚拟内存子系统的一系列可调参数。这些参数可以透过/proc接口来读取。而Linux提供了sysctl命令作为一个/proc文件系统的管理员接口并且可以优化VM子系统。有些参数是可调的而另外一些是只读的。# sysctl –a | grep vm vm.legacy_va_layout = 0 vm.vfs_cache_pressure = 100原创 2014-03-06 15:25:53 · 2108 阅读 · 0 评论 -
Linux Media子系统
a. 总线初始化media目录下有media_device, media_devnode和media_entity。唯一的subsys_initcall出现在media_devnode,subsys_initcall(media_devnode_init),那就从这里入手。 313 static int __init media_devnode_init(void)314 {315原创 2018-01-09 09:11:16 · 6822 阅读 · 0 评论