嵌入式Linux中文站

Linux内核驱动之延时---内核超时处理

阅读(224)

jiffies计数器 定时器中断由系统定时硬件以规律地间隔产生;这个间隔在启动时由内核根据HZ值来编程, HZ是一个体系依赖的值,每次发生一个时钟中断,一个内核计数器的值递增.这个计数器在系统启动时初始化为0,因此它代表从最后一次启动以来的时钟嘀哒的数目. 这个计数器和来读取它的实用函数位于,尽管你会常常只是包含, #include unsigned long j, stamp_1, stamp_half, stamp_n; j = jiffies; /* read the current value *

mipi LCD 的CLK时钟频率与显示分辨率及帧率的关系

阅读(123)

我们先来看一个公式:Mipiclock = [ (width+hsync+hfp+hbp) x (height+vsync+vfp+vbp) ] x(bus_width) x fps/ (lane_num)/2 即mipi 屏的传输时钟频率(CLKN,CLKP)等于(屏幕分辨率宽width+hsync+hfp+hbp)x ( 屏幕分辨率高height+vsync+vfp+vbp) x(RGB显示数据宽度) x 帧率/ (lane_num)/2 简单解释下: 一帧画面需要的数据量为(单位bit):FRAME

Linux内核空间内存申请函数kmalloc、kzalloc、vmalloc的区别

阅读(358)

我们都知道在用户空间动态申请内存用的函数是 malloc(),这个函数在各种操作系统上的使用是一致的,对应的用户空间内存释放函数是 free()。注意:动态申请的内存使用完后必须要释放,否则会造成内存泄漏,如果内存泄漏发生在内核空间,则会造成系统崩溃。 那么,在内核空间中如何申请内存呢?一般我们会用到 kmalloc()、kzalloc()、vmalloc() 等,下面我们介绍一下这些函数的使用以及它们之间的区别。 kmalloc() 函数原型: void *kmalloc(size_t size, gf

Device Tree机制

阅读(439)

1. 设备树(DeviceTree)基本概念及作用 在内核源码中,存在大量对板级细节信息描述的代码。这些代码充斥在/arch/arm/plat-xxx和/arch/arm/mach-xxx目录,对内核而言这些platform设备、resource、i2c_board_info、spi_board_info以及各种硬件的platform_data绝大多数纯属垃圾冗余代码。为了解决这一问题,ARM内核版本3.x之后引入了原先在PowerPC等其他体系架构已经使用的FlattenedDeviceTree。 Ad

Linux信号集、信号屏蔽字和捕捉信号

阅读(306)

一. 阻塞信号 1. 信号的常见其他概念 实际执行信号的处理动作(3种)称为信号递达; 信号从产生到递达之间的状态,叫做信号未决; 进程可以选择阻塞某个信号; 被阻塞的信号产生时,将保持在未决状态,直至进程取消对该信号的阻塞,才执行递达的动作; 注意:阻塞和忽略是不同的。只要信号阻塞就不会被递达;而忽略是信号在递达之后的一种处理方式。 2. 在内核中的表示 信号在内核中的表示示意图: 每个信号都有两个标志位分别表示阻塞(block)和未决(pending),还有一个函数指针(handler)表示处理动作。

MIPI协议学习总结(一)

阅读(356)

一、MIPI 简介: MIPI(移动行业处理器接口)是 Mobile Industry Processor Interface 的缩写。MIPI是MIPI联盟发起的为移动应用处理器制定的开放标准。 已经完成和正在计划中的规范如下: 二、MIPI DSI规范: 1、名词解释 DCS ( Display Command Set ):DCS是一个标准化的命令集,用于命令模式的显示模组。 DSI, CSI ( Display Serial Interface,Camera Serial Interface ) D

Linux设备树语法详解

阅读(299)

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

Linux V4L2驱动要点

阅读(243)

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