驱动开发
文章平均质量分 82
CH_Qing
尚善若水,水善利万物,而不争!
展开
-
关于CIS移植的一些基本概念
【代码】MIPI 摄像头的原理。原创 2023-01-18 15:25:30 · 4007 阅读 · 0 评论 -
Linux battery 移植的相关概念
FullChargeCapacity(FCC): 充满后的电量,由于环境,温度,重点次数的影响,一般都比DesignCapacity 小。绝对充电状态可能,永远达不到100%,因为Design Capacity 是一个固定值,因为FCC 总会随着时间等因素缩减。相对充电状态总是从0% 到 100%, FCC 会随着充电次数,环境等因素逐渐递减。RelativeStateOfChage (RSOC): 相对充电状态。DesignCapacity: 设计电量,就是理论最大电量。原创 2023-05-04 18:58:35 · 1781 阅读 · 1 评论 -
LCD 显示问题分析
我们说的LCD 显示包括并口的LCD,串行的LVDS 接口的LCD,mipi 接口的LCD, 和edp 接口的LCD,甚至包括VGA,和HDMI。原创 2023-07-03 13:46:13 · 3158 阅读 · 0 评论 -
Linux IIO 子系统简介
IIO 子系统系统框架。原创 2023-01-11 13:50:40 · 2424 阅读 · 0 评论 -
大话I2C与smbus 开发
说其I2C 的复杂传输协议,就是在一次I2C 传输协议里,可能包含上面的好几个简单I2C 传输(但不完全是简单的I2C传输协议), 只不过,他们只有一个stop bit 【P】。在平常的开发中,一直以为I2C & smbus 只是硬件上的差异,软件上基本没有什么差异,后来的开发中发现,其实两者还是有很多的差异。在这一次复杂的I2C 传输中,包含两个I2C 的简单传输帧,第一个是S Addr Rd [A] [Data] NA,第二个是 S Addr Wr [A] Data [A] P。原创 2022-10-25 14:33:19 · 3695 阅读 · 3 评论 -
[AM57xx] IPU AMMU 独家专解
1. About the AMMU:Sorry for the confusion. Given you are using QNX and not SYSBIOS on the host, the situation is different. IPC has a different set of examples that support loading and starting the ...原创 2019-11-22 10:09:53 · 832 阅读 · 0 评论 -
I2C Timing Item
I2c timing protocol; 1) WRTIE: In the case of writing, we need to use only one message;-Start -|Addr+w| register| data| -stop-2) READ: when reading, we need two.-Start -|Addr+w| register| -stop-原创 2017-03-20 11:47:35 · 2077 阅读 · 0 评论 -
linux ehci ehci_urb_enqueue之qh_urb_transaction()分析 【史上最强大分析】
以下文字会对linux usb hcd driver中的ehci_urb_enqueue函数做一些说明。先把该函数罗列一下。/* * non-error returns are a promise to giveback() the urb later * we drop ownership so next owner (or urb unlink) can get it转载 2017-09-29 15:00:15 · 2471 阅读 · 0 评论 -
与LCD移植相关的概念
1. N bit的 LCD 指的是什么意思?我们常常会说18bit 的LCD, 24 bit 的LCD, 是什么意思呢? 18/24 bit 指的是LCD 数据总线的宽度。 如下图RGB的数据总线: 搞清楚这个是很简单的,但如果你在配置设备树时遇到这样的情况, 往往很容易混淆: mxcfb1: fb@0 { compatible = “fsl,mxc_sdc_fb”原创 2017-11-21 18:33:21 · 2273 阅读 · 1 评论 -
IMX6DL Lvds pixelclock 深入详解
写在前面的话: 嵌入式系统中有两个比较难搞的问题, 一个是电源,一个是Clock。随着现在电源管理芯片的成熟,我们将会越来越少地关注到电源的配置和设定(但管理应用还是比较广泛的)。 Clock系统是一个嵌入式产品的命脉,Soc 复杂的Clock 常常会让大家望而却步, 另外还有Soc厂商大都已经完善了Soc Clock 的配置, 这让我们在移植过程中 更是不长接触soc c...原创 2018-02-23 16:20:08 · 7023 阅读 · 1 评论 -
IMX6 多屏幕显示问题
1. 运行Qt程序 1.1 两个屏幕运行不同Qt 程序: 若Qt5运行于eglfs平台,与屏幕设置有关的环境变量为QT_QPA_EGLFS_FB,在LVDS 上& HDMI 上显示: export QT_QPA_EGLFS_FB=/dev/fb0 ./QtDemo1 & export QT_QPA_EGLFS_FB=/dev/fb2 / ./QtDe...原创 2018-05-11 17:31:03 · 4058 阅读 · 1 评论 -
关于IMX双通道LVDS 的深入讲解
其实之前写过LCD/LVDS的一些时序的基本概念《与LCD移植相关的概念》。但后来发现还是不够全面。关于双通道LVDS,可能会有很多人有一些陌生,它是什么原理? 有什么作用? 时序如何设定? 接下来, 就让我们带着这些问题去阅读下面的文章吧! 1. IMX LDB桥对LVDS 的支持情况:让我们先看一张imx6 TRM 中的图.IMX6 LVDS 桥提供两个LVDS通道, 或许...原创 2018-07-20 10:59:37 · 12781 阅读 · 8 评论 -
PCIe device tree range属性详解
https://elinux.org/Device_Tree_Usage#PCI_Address_Translation原创 2018-11-15 13:22:59 · 3007 阅读 · 1 评论 -
HowVideoCardWork & DRM_IOCRTL
https://www.x.org/wiki/Development/Documentation/HowVideoCardsWork/原创 2017-03-01 13:36:28 · 541 阅读 · 0 评论 -
VGA 分辨率参数
[1] = { .name = "INNOLUX_VGA_800x600@60", .width = 800, .height = 600, .hfp = 50, .hbp = 179, .hsw = 27, .vfp = 1, .vbp = 24, .vsw = 3, .pxl_clk = 40000000,原创 2016-08-16 14:40:02 · 3514 阅读 · 0 评论 -
C中的"#"与“##”
以前转过一篇,好好看下,蛮有用的。1. 宏可以像函数一样被定义,例如:#define min(x,y) (x 但是在实际使用时,只有当写上min(),必须加括号,min才会被作为宏展开,否则不做任何处理。2. 如果宏需要参数,你可以不传,编译器会给你警告(宏参数不够),但是这会导致错误。如C++书籍中所描述的,编译器(预处理器)对宏的语法检查不够,所以更多的检查性工作得你自转载 2015-03-21 17:59:51 · 558 阅读 · 0 评论 -
从tty到uart层,分析uart数据流程(一)
(本文分析基于linux3.2.0)关于Uart 和tty的关系,在此不必多谈,总之uart driver 是基于tty实现!下面我们直指主题:一. tty层的架构 关于tty层的架构,这个图是最好的描述: 其中读,写数据必须先通过line discipline,然后通过line discipline将数据分别交付给tty_core层或tty_d原创 2015-03-10 09:24:11 · 4155 阅读 · 1 评论 -
从tty到uart层,分析uart数据流程(二)
上一节中,我们主要了解了uart的一些重要的数据结构,和uart的发送数据的流程。下来我们会分析uart接受数据的流程,和发送比较起来,收流程更加复杂一点!关于发送流程,我们会从底层一步一步分析,知道tty core层。原创 2015-03-10 20:04:21 · 3427 阅读 · 1 评论 -
一个模块使用另一个模块导出的符号,该模块怎样编译?很经典!
6.3 Symbols From Another External Module Sometimes, an external module uses exported symbols from another external module. kbuild needs to have full knowledge of all symbols to avoid原创 2015-06-16 16:58:49 · 746 阅读 · 0 评论 -
关于uboot的CONFIG_SPL_BUILD宏的一个小知识点
我们知道uboot分为BL0, BL1, BL2。其中BL0就是我们常说的ROM Code。BL1就是我们常说的SPL1,BL2就是我们常说的狭义的uboot。其中SPL 和uboot共用一个源码体系。他们之间的产生是通过一个重要的宏CONFIG_SPL_BUILD来在源码中分开的。 有一个问题很重要问题,在uboot源码中,经常会看到这些片段#if defined(CONFIG_SPL_BUIL原创 2015-08-21 13:39:30 · 5095 阅读 · 0 评论 -
Linux设备树笔记
设备述概念: http://www.wowotech.net/linux_kenrel/dt_basic_concept.html 设备树流程分析: http://blog.csdn.net/mrwangwang/article/details/36181131原创 2016-03-30 21:51:40 · 757 阅读 · 0 评论 -
Enabling Stack Dumping in Linux Kernel
Contents1 Purpose2 Enabling in Kernel Config3 Using dump_stack()4 Conclusion5 ArchivedPurposeIt can often be useful when debugging the kernel to be able to print the stack (and call trace) in the转载 2016-07-25 19:52:17 · 466 阅读 · 0 评论 -
SPI flash debug trace
最近想直接脱离mtd 层对SPI flash 进行相关操作。 Linux 下spidev的东东能帮我们做这个事情。 于是,我便使用spidev 的API 编写一个操作SPI 的code, 编译,测试, 读取的数据总是0xFF,我测量了了一下SPI 的数据信号和时候总,都是OK的,这个时候陷入了困境, 没有思路了。。。。。在这里要说明一下,我使用的是spi ioctl 函数,它调到驱动了,肯定是调用原创 2016-07-17 15:42:58 · 722 阅读 · 0 评论 -
U-boot porting guide
Tips to add/remove boardsWhen adding a new board, the following steps are generally needed:[1] Add a header file include/configs/.h [2] Make sure to define necessary CONFIG_SYS_* in Kconfig:原创 2016-10-11 09:49:22 · 771 阅读 · 0 评论 -
PCI设备的地址空间
PCI设备的地址空间 PCI配置空间(PCI Configuration Space) PCI设备(PCI device)都有一个配置空间,大小为256字节,实际上是一组连续的寄存器,位于设备上。其中头部64字节是PCI标准规定的,格式如下: 剩余的部分是PCI设备自定义的。 PCI配置空间头部有6个BAR(Base Address Registers),BAR记录了设备所需要的地址空间的类转载 2016-10-24 16:20:15 · 585 阅读 · 0 评论 -
OMAP SOC Compatible
Texas Instruments OMAPOMAP is currently using a static file per SoC family to describe the IPs present in the SoC. On top of that an omap_device is created to extend the platform_device capabilitie翻译 2016-11-09 10:22:47 · 813 阅读 · 0 评论 -
Cpufreq
调频文件节点:ll /sys/devices/system/cpu/cpu0/cpufreq/ <-r--r--r-- root root 4096 2016-03-03 10:28 affected_cpus-r-------- root root 4096 2016-0转载 2016-11-29 14:33:41 · 511 阅读 · 0 评论 -
文章标题
Vringstruct vring { uint32_t num; struct vring_desc *desc; struct vring_avail *avail; struct vring_used *used;};struct vring_desc { /* Address (guest-physical). */ uint64_t addr原创 2016-11-22 10:11:31 · 368 阅读 · 0 评论 -
tcgetattr函数的实现(glibc)
/* Copyright (C) 1992-2014 Free Software Foundation, Inc.2 This file is part of the GNU C Library.3 4 The GNU C Library is free software; you can redistribute it and/or5 modify it under the原创 2014-12-08 15:24:36 · 1244 阅读 · 0 评论