嵌入式Linux中文站

开发专区

Linux设备树语法详解

Linux设备树语法详解

阅读(246)

概念 Linux内核从3.x开始引入设备树的概念,用于实现 驱动代码与设备信息相分离 。在设备树出现以前,所有关于设备的具体信息都要写在驱动里,一旦外围设备变化,驱动代码就要重写。引入了设备树之后,驱动代码只负责处理驱动的逻辑,而关于设备的具体信息存放到设备树文件中,这样,如果只是硬件接口信息的变化而没有驱动逻辑的变化,驱动开发者只需要修改设备树文件信息,不需要改写驱动代码。比如在ARM Linux内,一个 .dts(device tree source)文件 对应一个ARM的machine,一般放置在内...

Linux V4L2驱动要点

Linux V4L2驱动要点

阅读(197)

首先来看Read/Write,如果VIDIOC_QUERYCAP调用返回的v4l2_capability参数中,V4L2_CAP_READWRITE被设置成真了的话,就说明支持Read/Write I/O。这是最简单最原始的方法,它需要进行数据的拷贝(而不是像memory map那样只需要进行指针的交换),而且不会交换元数据(比如说帧计数器和时间戳之类的可用于识别帧丢失和进行帧同步),虽然它是最原始的方法,但因为其简单,所以对于简单的应用程序比如只需要capture静态图像是很有用的。 如果使用Read/...

C实战:项目构建Make,Automake,CMake

C实战:项目构建Make,Automake,CMake

阅读(115)

本文继续C实战的主题,对同样非常流行的构建工具Make的用法和原理一探究竟,并顺便看一下一些高级衍生产品。 1 .Make基础首先我们编写一个简单的C项目,以此项目在实战中学习Make的相关知识。更全面的介绍请参考官方手册。cdai@vm /syspace/ 2 -ccpp/ 24 -pragmatic/build-tool/ make $ tree.├── hello.c├── hello.h├── main.c└── Makefile 0 directories, 4 files整个程序的逻辑非常简单...

SPI总线协议及SPI时序图详解

SPI总线协议及SPI时序图详解

阅读(115)

SPI,是英语Serial Peripheral Interface的缩写,顾名思义就是串行外围设备接口。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议。 SPI是一个环形总线结构,由ss(cs)、sck、sdi、sdo构成,其时序其实很简单,主要是在sck的控制下,两个双向移位寄存器进行数据交换。 上升沿发送、下降沿接收、高位先发送。 上升沿到来的时候...

内核探测工具systemtap简介

内核探测工具systemtap简介

阅读(180)

systemtap是内核开发者必须要掌握的一个工具,本文我将简单介绍一下此工具,后续将会有系列文章介绍systemtap的用法。 什么是systemtap 假如现在有这么一个需求:需要获取正在运行的 Linux 系统的信息,如我想知道系统什么时候发生系统调用,发生的是什么系统调用等这些信息,有什么解决方案呢? 最原始的方法是,找到内核系统调用的代码,加上我们需要获得信息的代码、重新编译内核、安装、选择我们新编译的内核重启。这种做法对于内核开发人员简直是梦魇,因为一遍做下来至少得需要1个多小时,不仅破坏了原...

Linux运行时I/O设备的电源管理框架

Linux运行时I/O设备的电源管理框架

阅读(82)

1. 介绍 对I/O设备的运行时电源管理(运行时PM)的支持,是在电源管理的核心(PM core)下借助于以下方式实现的: 电源管理工作队列 pm_wq ,总线类型(bus types)和设备驱动(device drivers)可以把自己的PM相关的工作项(work items)置于其上。我们强烈建议, pm_wq 用于对所有运行时PM相关的工作项进行排队,因为这使得他们能够与全系统的电源转换(power transitions)进行同步【挂起到RAM(suspend to RAM),休眠(hiberna...

内核中断,异常,抢占总结篇

内核中断,异常,抢占总结篇

阅读(221)

一、基本概念 中断分为同步中断和异步中断。同步中断是由CPU控制单元产生的,同步是指只有在一条指令执行完毕后,CPU才会发出中断,而不是发生在代码指令执行期间,比如系统调用。而异步中断是由其他硬件设备依照CPU时钟信号产生的,即意味着中断能够在指令之间发生,例如键盘中断。 按照Intel的微处理器手册,同步中断和异步中断也分别称为异常(或者软件中断)和中断。中断大家都比较熟悉,是由硬件设备产生的。异常的产生源有两种:一种是由程序的错误产生的,内核通过发送一个Unix程序员都熟悉的信号来处理异常;第二种时内...

linux syscall 详解

linux syscall 详解

阅读(160)

一、Syscall意义 内核提供用户空间程序与内核空间进行交互的一套标准接口,这些接口让用户态程序能受限访问硬件设备,比如申请系统资源,操作设备读写,创建新进程等。用户空间发生请求,内核空间负责执行,这些接口便是用户空间和内核空间共同识别的桥梁,这里提到两个字受限,是由于为了保证内核稳定性,而不能让用户空间程序随意更改系统,必须是内核对外开放的且满足权限的程序才能调用相应接口。 在用户空间和内核空间之间,有一个叫做Syscall(系统调用, system call)的中间层,是连接用户态和内核态的桥梁。这...