linux驱动
文章平均质量分 85
jacob
这个作者很懒,什么都没留下…
展开
-
I2C总线时序
I2C(Inter-Integrated Circuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。I2C总线产生于在80年代,最初为音频和视频设备开发,如今主要在服务器管理中使用,其中包括单个组件状态的通信。例如管理员可对各个组件进行查询,以管理系统的配置或掌握组件的功能状态,如电源和系统风扇。可随时监控内存、硬盘、网络、系统温度等多个参数,增加了系统的安转载 2014-03-12 20:12:49 · 1773 阅读 · 1 评论 -
如何在Android 或Linux 下,做Suspend /Resume 的Debug
Question:如何在Linux 或 Android下得到足夠的information,來做Power Management的fine tune呢?Answer:在Linux或Android下,做power management 的調適時,常遇到沒有足夠的information,可以做為debug時的依據和參考我們整理了幾個常用的參數或Command,可供設計转载 2014-04-29 19:20:00 · 10122 阅读 · 0 评论 -
Linux内核30题
1) Linux中主要有哪几种内核锁?Linux的内核锁主要是自旋锁和信号量。自旋锁最多只能被一个可执行线程持有,如果一个执行线程试图请求一个已被争用(已经被持有)的自旋锁,那么这个线程就会一直进行忙循环——旋转——等待锁重新可用。要是锁未被争用,请求它的执行线程便能立刻得到它并且继续进行。自旋锁可以在任何时刻防止多于一个的执行线程同时进入临界区。Linux中的信号量是一种睡转载 2014-04-02 13:24:10 · 1697 阅读 · 0 评论 -
late_initcall和module_init
在init.h 中有如下定义 #define pure_initcall(fn) __define_initcall("0",fn,1)#define core_initcall(fn) __define_initcall("1",fn,1)#define core_initcall_sync(fn) __define_initcall("1s",fn,1s)转载 2014-05-08 14:40:43 · 683 阅读 · 0 评论 -
Ubuntu12.04嵌入式交叉编译环境arm-linu-gcc搭建过程,图解
Ubuntu12.04嵌入式交叉编译环境arm-linu-gcc搭建过程,图解分类: Qt编程2013-06-12 08:44 3249人阅读 评论(2) 收藏 举报ubuntu12.04arm-linux-gcc安装环境 Linux版本:Ubuntu 12.04 内核版本:Linux 3.5.0 交叉编译器版本:arm-linux转载 2014-04-10 17:35:26 · 749 阅读 · 0 评论 -
Debug Android and Linux suspend and resume (中文)
积攒了一些关于调试Android和Linux下面的suspend 和 resume的经验, 在这里和大家分享一下。希望可以有些帮助, (下面没有写Android专用的, 就是Linux通用的)。1. no_console_suspend 在kernel启动参数里面加上no_console_suspend, 这个是最基本的, 因为kernel在把console suspend转载 2014-04-29 11:17:53 · 868 阅读 · 0 评论 -
request_mem_region,ioremap
Linux在头文件include/linux/ioport.h中定义了三个对I/O内存资源进行操作的宏:(1)request_mem_region()宏,请求分配指定的I/O内存资源。(2)check_mem_region()宏,检查指定的I/O内存资源是否已被占用。(3)release_mem_region()宏,释放指定的I/O内存资源。 这三个宏的定义如下:转载 2014-06-14 09:48:35 · 1247 阅读 · 0 评论 -
apt-get 使用详解
目前常用的==========*更新本机中的数据库缓存:sudo apt-get update*查找包含部分关键字的软件包:sudo apt-cache search *安装指定的软件:sudo apt-get install *下载软件包源代码(如果有的话):apt-get source转载 2014-09-03 16:48:55 · 595 阅读 · 0 评论 -
详解SPI中的极性CPOL和相位CPHA
SPI由于接口相对简单(只需要4根线),用途算是比较广泛,主要应用在 EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。即一个SPI的Master通过SPI与一个从设备,即上述的那些Flash,ADC等,进行通讯。而主从设备之间通过SPI进行通讯,首先要保证两者之间时钟SCLK要一致,互相要商量好了,要匹配,否则,就没法正常通讯了,即保证时序上的一致才可正常讯转载 2017-11-18 19:02:37 · 1069 阅读 · 0 评论 -
打印堆栈
kernel:dump_stack();java 层Throwable throwable = new Throwable(); Log.w(LOGTAG, Log.getStackTraceString(throwable));或者 Log.d(TAG,Log.getStackTraceString(new Throwable转载 2017-11-30 11:49:34 · 243 阅读 · 0 评论 -
杂记
设置内核输出日志级别 修改虚拟文件 echo 8 > /proc/sys/kernel/printk如果没有权限,要先su 再echo抓log到某个文件adb shellcat /proc/kmsg > /data/log.txtadb pull /data/log.txt使用如下命令可以将logcat中的内容输出到文转载 2017-11-30 12:05:31 · 234 阅读 · 0 评论 -
USB协议架构及驱动架构
1. USB协议1.1 USB主机系统 在USB主机系统中,通过根集线器与外部USB从机设备相连的处理芯片,称为USB主机控制器。USB主机控制器包含硬件、软件和固件一部分。1.2 USB设备系统 USB设备按功能分为两部分:集线器(Hub)和功能部件。从下图可知,主机通过根集线器连接到各种外围设备(集线器和功能部件)。1.转载 2017-12-04 12:42:44 · 256 阅读 · 0 评论 -
platform模型驱动中断和内存资源使用步骤
IO 内存资源使用步骤/* io memory */ res = platform_get_resource(pdev, IORESOURCE_MEM, 0); if (!res) { dev_err(&pdev->dev, "failed to get io memory region\n"); ret = -EINVAL; goto err_clk_disable原创 2014-02-27 10:55:55 · 963 阅读 · 0 评论 -
alarm从上层到底层完整调用流程
来三星入职已经10天了,以后会把学习到的一些新知识发帖共享给巴友们,希望大家一起学习,有错误能指出来。 下面进入正题: Android上层界面到内核代码的完整的流程分析,以alarm为例子涉及代码;./packages/apps/DeskClock/src/com/android/deskclock/Alarms.java./frameworks/base/cor转载 2013-12-17 10:21:39 · 2364 阅读 · 0 评论 -
Linux 启动过程分析
ARM Linux 启动过程分析 本文档基于 AT91SAM9260EK 板的,所用的 Linux 内核版本为 2.6.21 1 压缩与非压缩内核映象 非压缩内核映象是真正的 Linux 内核代码。压缩内核映象是把非压缩内核映象作为数据进行压缩打包,并加上了解压缩代码。也就是说,它是一个自解压的可执行映象。压缩内核映象执行时,先解压内部包含的数据块(转载 2013-10-30 21:16:38 · 1798 阅读 · 0 评论 -
触摸屏驱动分析
触摸屏的主要分为四种,分别是电阻式,电容感应式,红外线式以及表面声波式。我们现在我们主要谈论是电阻式触摸屏。看下图可以大概了解电阻式触摸屏。电阻式触摸屏的屏体部分是一块与显示器表面相匹配的多层复合薄膜,由一层玻璃或有机玻璃作为基层,表面涂有一层透明的导电层,上面再盖有一层外表面的硬化处理,光滑的防刮的塑料层,它的内表面也涂有一层透明的导电层,在两层导电层之间有许多细小的透明原创 2011-10-07 12:26:02 · 822 阅读 · 0 评论 -
Linux设备驱动程序学习(0) -设备驱动介绍& Hello, world!模块
设备驱动的分类字符设备:字符(char)设备是个能够像字节流(类似文件)一样被访问的设备。字符设备驱动程序通常至少要实现open、close、read和write系统调用。块设备:一个块设备驱动程序主要通过传输固定大小的数据来访问设备。块设备和字符设备的区别仅仅在于内核内部管理数据的方式,也就是内核及驱动程序之间的软件接口,而这些不同对用户程序是透明的。在内核中,和字符驱动转载 2012-03-11 12:17:13 · 746 阅读 · 0 评论 -
dm9000a驱动源码分析(网络基础部分)
网卡驱动基础部分每个网络接口都由一个net_device结构来描述, 该结构可使用如下内核函数动态分配: 1、struct net_device *alloc_netdev(int sizeof_priv, const char *mask, void (*setup)(struct net_device *)) sizeof_priv 私有数据区大小;mask:设备名原创 2011-09-24 16:52:51 · 1478 阅读 · 0 评论 -
dm9000a驱动源码分析(一)
dm9000a框架原理图:EEPROM Interface接口用于存放mac地址,InternalSRAM用于存放收发数据,MII部分把MAC部分与PHY部分连接起来通信,AUTO-MDIX用于自适应10/100M网络,在物理层上,MAC在PHY之下。 由dm9000a驱动可知,dm9000a驱动是用platform模型编写的,分析一个驱动源码都是从模块加载函数原创 2011-09-24 17:01:23 · 5538 阅读 · 0 评论 -
dm9000a驱动源码分析(二)
现在我们来看dm9000a的open函数:/* * Open the interface. * The interface is opened whenever "ifconfig" actives it. 当使用ifconfig激活该网络接口时调用 */static intdm9000_open(struct net_device *dev){ board原创 2011-09-24 17:49:51 · 2229 阅读 · 0 评论 -
dm9000a驱动源码分析(三)
dm9000a数据发送函数:/* * Hardware start transmission. * Send a packet to media from the upper layer. */static intdm9000_start_xmit(struct sk_buff *skb, struct net_device *dev){ unsigned原创 2011-09-24 17:57:29 · 2905 阅读 · 0 评论 -
延时操作
tasklet例程简单实现步骤1.DECLARE_TASKLET() 2. tasklet_schedule(&demo_tasklet); //设备相关的指针static struct demo_dev *p = ....;//延迟操作函数void demo_delay_action(unsigned long data){ // 通过data获得设备相关指针原创 2013-06-04 17:15:38 · 1160 阅读 · 0 评论 -
platform_device内存,中断,时钟
platform_device内存资源使用步骤1.res = platform_get_resource(pdev,IORESOURCE_MEM,0);platform_get_resource 返回资源对象2.request_mem_region(res->,res->end - res->start + 1,DRIVER_NAME);request_mem_region()宏,原创 2013-07-15 17:11:52 · 824 阅读 · 0 评论 -
MIPI video mode 和 command mode 的区别
MIPI video mode 和 command mode 的区别首先来讲第一个话题LCD RAM由来最近魅族论坛和小米论坛最火的话题之一莫过于LCD RAM,当然小米最近后院起火,导致售后/投诉才是最火的.何为LCD RAM?LCD 是指字面意思是液晶显示屏(Liquid Crystal Display), 而RAM: 随机存取存储器(Random-Ac转载 2013-08-29 16:59:52 · 1792 阅读 · 0 评论 -
大端格式、小端格式
大端格式、小端格式大端格式:在这种格式中,字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中,如图2.1所示: 图2.1小端格式:与大端存储格式相反,在小端存储格式中,低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节。如图2.2所示: 图2.2 请写一个C 函数,若处理器是Big转载 2013-08-29 17:00:53 · 1120 阅读 · 0 评论 -
理解 linux contain_of() 宏
linux contain_of() 宏container_of()函数1.该宏定义在include/linux/kernel.h中439/**440 * container_of - cast a member of a structure out to the containing structure441 * @ptr:转载 2013-08-29 16:58:41 · 7749 阅读 · 1 评论 -
U-boot启动过程
1.1 U-Boot工作过程 U-Boot启动内核的过程可以分为两个阶段,两个阶段的功能如下: (1)第一阶段的功能Ø 硬件设备初始化Ø 加载U-Boot第二阶段代码到RAM空间Ø 设置好栈Ø 跳转到第二阶段代码入口 (2)第二阶段的功能Ø 初始化本阶段使用的硬件设备Ø 检测系统内存映射Ø 将内核从Fla转载 2013-10-30 21:04:07 · 638 阅读 · 0 评论 -
I2S音频总线学习(四)I2S接口设计
I2S音频总线学习(四)I2S接口设计一、数据发送端的设计图1 发送端 随着WS信号的改变,导出一个WSP脉冲信号,进入并行移位寄存器装入DATA LEFT或DATA RIGHT,从而输出数据被激活。串行数据在时钟下降沿移出。串行数据的默认输入是0,因此所有位于最低位(LSB)后的数据将被设置为0。二、数据接收端的设计转载 2017-12-13 11:06:34 · 677 阅读 · 0 评论