自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(142)
  • 资源 (28)
  • 收藏
  • 关注

原创 安卓linux uevent内核上报机制实例

uevent可以实现内核通知上层的一种机制,最常见的电池状态的变化就是kernel uevent通知的,每次百分比或者其他的变化通过power_supply_changed通知上层update;每个device下面都有kobj,找到device就可以通过kobject_uevent_env 通知android了;以拔出T卡为例,内核通知上层。这里的T卡是一种sdio设备,普通T

2015-01-20 21:21:29 5142 2

原创 linux select与poll实现机制与实例分析

我们直到上层对文件操作结合select与poll可以实现阻塞操作,那么究竟是如何实现的呢?select接口:    int select(int nfds, fd_set *readset, fd_set *writeset,               fd_set *exceptset, struct timeval *timeout);      其中: nf

2015-01-20 18:09:13 2795

原创 linux内核3.4基于wakeup_source的autosleep机制分析

一:wakeup_source简介:    linux 3.4内核PM使用了wakeup_source来保持唤醒状态,也就是keep awake。之前android一直是基于Linux加入了wake_lock机制来阻止系统休眠,后来Linux 3.4内核加入了wakeup_source来管理,安卓4.4跟着升级内核也就摒弃了自己的臃肿的wake_lock机制,在对上层接口并不改变,在内核wak

2014-11-24 19:25:53 6058

原创 Linux音频ALSA机制学习笔记<二>

首先是dapm是什么?就是音频电源动态管理。相信电源管理大家都不会陌生。dapm设计的目的就是只有需要时才打开必要的部件(widget),不需要时则关闭部件, 达到省电的目的。ALSA通过kcontrol来切换音频通道,当playback或者capture时会更新通道激活下的widget power,这个是由内核event统一完成的,无须上层干预。widget定义widgets

2014-11-04 21:28:15 3673

原创 Linux音频ALSA机制学习笔记<一>

首先宏观看内核暴露给上层的接口:root@android:/ # cat /dev/snd/controlC0 pcmC0D10p pcmC0D13c pcmC0D15c pcmC0D2c pcmC0D3c pcmC0D5p pcmC0D8cpcmC0D0c pcmC0D11p pcmC0D13p pcmC0D15p pcmC0D2p pcmC0D3p pcmC0D6c pcmC0D9

2014-11-04 21:26:02 9710 1

原创 做高通平台安卓驱动感言

第二次写这类博客,之前还是求职期间写的面试之类的经历。          不知不觉做驱动再过2个月就3年了,可以说这3年学习到的很多,老大或者同事们的指教,针对性通过百度等搜索等,还有就是自己一边工作一边自己研究到的。知识,解决问题的能力也是慢慢积累起来的。这二年多来一直在做驱动,由开始开始接触调试LCD  TP等等,每次会重复做事,但是自己学习到的也很多,学会分析关键问题,掌握一些驱

2014-10-13 22:23:03 5162 8

原创 linux内核notifier机制 linux通知链

在linux内核系统中,各个模块、子系统之间是相互独立的。Linux内核可以通过通 知链机制来获取由其它模块或子系统产生的它感兴趣的某些事 件。使用notifier由通知者可以传递给被通知者整形参数与指针,在linux中有许多地 方用到,比如reboot通知,cpu调频通知,电池低 电警报等等。熟悉使用notifier有助于驱动开发。notifier_block结构:s

2014-09-23 21:02:18 3059

原创 从linux usb bus节点来认识usb linux usb认识

首先从dmesg来认识usb:[   19.610046] msm_hsic_host msm_hsic_host: Qualcomm EHCI Host Controller using HSIC[   19.620391] msm_hsic_host msm_hsic_host: new USB bus registered, assigned bus number 1[   19

2014-09-22 21:34:35 12234

原创 安卓kernel自主唤醒系统方法—设置alarm

#include 1:定义alarm变量:struct alarm  xx_alarm;2:alarm绑定:alarm 触发时callback:static voidxx_callback(struct alarm *alarm){     structchip *chip = container_of(alarm, structchip,

2014-09-17 22:45:18 4671 1

原创 linux kernel将buf保存到文件做法 很好的调试方法

linux kernel将关键信息保存到文件做法      很好的调试方法下面有2个示例:    1:保存机器从开机到结束的VBATT;    2:保存uart接收到的数据到文件;意义不多说了。以下是代码:#include #include #include static struct file *fp =NULL;int write_to_file

2014-09-05 21:46:00 3870

原创 linux网卡数据流 发送与接收

通常在驱动中看见的网卡代码很多,但是都离不开发送与接收,掌握好骨干也就好阅读网卡驱动了。数据发送 :发送函数:xxx_start_xmit()上层封装好了sk_buff丢进kernel后,buf存储在skb->data中,通 过 xxx_start_xmit(),发送出去。下面的实例是通过写入某个设备节点发送出去,当然这个设备肯定是串口或者sdio等传输设备,也可以直接

2014-09-03 21:34:11 4332

原创 linux sdio card休眠处理 sdio card removed解决办法

最近调试几款sdio card suspend时都会出现sdio card removed,之后 要么死机要么模块不能正常工作,根本原因也就是休眠没有处理好。昨天在博通网卡上终于找到了解决方法。         1:host端需要设置nonremovable,软件设置:mmc->caps |= MMC_CAP_NONREMOVABLE;         2:host端需要设置k

2014-09-02 21:25:56 6494

原创 linux runtime pm机制的深入理解

一:runtime机制说明    何为runtime机制?也就是系统在非睡眠状态,设备在空闲时可以进入runtime suspend状态同时不依赖系统wake_lock机制,非空闲时执行runtime resume使得设备进入正常工作状态。    主要代码放在Runtime.c (drivers\base\power)中,同时附带的Runtime_pm.txt (documentati

2014-07-24 21:26:50 13248

转载 Android通过tcpdump抓包

1. 手机要有root权限2. 下载tcpdump   http://www.strazzere.com/android/tcpdump3. adb push c:\wherever_you_put\tcpdump /data/local/tcpdump4. adb shell chmod 6755 /data/local/tcpdump5, adb shell,

2014-06-24 22:08:50 1184

原创 高通平台串口调试 AP与模块串口通讯调试总结

1:检查AP端串口配置是否ok:a:高通平台查看DMA传输:echo 1 > /sys/kernel/debug/msm_serial_hsl/loopback.0 //打开回环开关adb shell cat /dev/ttyHSL1另起窗口# adb shell# echo 11111111 > /dev/ttyHSL1若DMA通道ok,控制台会循环显示;b:查看

2014-04-22 22:05:29 7955

原创 android alarm底层理解

分享以前调试alarm关机闹钟时,写的关于alarm的总结;    alarm上层调用包括RTC唤醒和闹钟,前者使用的更频繁,接口一样;上层应用频繁调用rtc唤醒系统会增加功耗,所有有些厂家做了所谓的同步心跳技术来统一规划RTC唤醒系统;    alarm本质是底层起了timer,在系统未睡眠时当达到上层设定时间之后timer会trigger同时调用alarm的回调函数来改变全局变量,从而

2014-03-28 21:53:46 2448

原创 linux 进程睡眠与wait_even t_interruptible()分析

驱动中最底层处理buffer通常会对该进程睡眠和唤醒操作,比如上层写入buffer时,内核buffer缓冲区是满的,那么写入进程需要阻塞住,直到内核buffer缓冲区可以容纳上层写入的buffer才唤醒该进程。首先必须认清一个事实:先将进程置为INTERRUPTIBLE,再调用schedule()后本进程才睡眠;而不是执行set_current_state(TASK_INTERRUPT

2014-03-19 22:38:24 6688

转载 Linux ARM Device Tree

一、ARM Device Tree起源 历史问题:1、在过去的ARM Linux中,arch/arm/plat-xxx和arch/arm/mach-xxx中充斥着大量的垃圾代码;  相当多数的代码只是在描述板级细节,而这些板级细节对于内核来讲,不过是垃圾,  如板上的platform设备、resource、i2c_board_info、spi_board_info以及各种硬

2014-03-11 21:45:31 1825

原创 针对高通BMS的研究 高通电量计

高通8064 8974 8926等pm芯片都集成了电量计,估计后续芯片都会一直存在,现在许多项目电池旁都有百分比显示,所以需要深入分析BMS有助于解决电量方面的BUG。一: SOC(荷电状态)计算方法名词:FCC  Full-charge capacity      UC     Remaining capacityCC     Coulumb counter    UUC

2014-03-08 08:29:02 8455 1

转载 UART中的硬件流控RTS与CTS

转载地址:http://blog.csdn.net/zeroboundary/article/details/8966586最近太忙了,没时间写对Ucos-II的移植,先将工作中容易搞错的一个知识点记录下来,关于CTS与RTS的。在RS232中本来CTS 与RTS 有明确的意义,但自从贺氏(HAYES ) 推出了聪明猫(SmartModem)后就有点混淆了,不过现在这种意义为主流意

2014-02-11 20:59:45 2727

原创 android restart reason机制

Reboot传递参数,使得开机进入参数固定的模式(通常有我们熟悉的bootloader和recovery等),本质是在kernel shutdown时会调用到restart,将模式数值写到share memory中,那么在开机bootloader阶段,再去读取这块内存,boot进入指定的模式,要是匹配不起来就正常boot,以下是贴出的代码;a: android_reboot(A

2014-01-06 21:12:04 5668 3

原创 lcd刷新率计算方法

frame_rate通常低于50通常仔细会看到闪烁,在55-60最合适,这时候屏最安静,通常pclk决定frame_rate,pclk要适中,pclk过高会导致平台功耗过高,虽然肉眼看不见但确实是实实在在的。在mipi lcd中有参数frame_rate可以填入,发现填入frame_rate=60时 pclk确达到了166M,通过高通自己的算法会导致pclk过高,所以mipi参数中

2013-12-18 21:44:31 5819

原创 android关机闹钟设计思路

1: 首先需要硬件支持,支持alarm中断触发开机,目前高通平台几乎都支持;2:关机前需要在rtc-xxx.c中做到enable_irq_wake,和不disable alarm功能(默认开机后alarm功能就会打开,通常关机时qct会关闭该功能避免alarm触发乱开机);3: 在AlarmManagerService.java当set请求来自闹钟时改变type类型,alarm_dev.c

2013-12-10 22:31:41 3302

原创 android adb网络调试 Android中使用WIFI来连接ADB 简单100%成功

android adb网络调试 Android中使用WIFI来连接ADB 简单100%成功

2013-11-25 20:22:57 2325 1

原创 apq 8064 uart debug

一般需要示波器测试TX,但是8064有个内部循环,直接enable可以不需要示波器也能判断,UART是否是通的:

2013-08-06 22:13:37 1872 2

转载 linux cpufeq相关知识

转载地址: http://www.soft6.com/tech/16/167430.htmlCPUfreq 的一般设置  我们先来介绍 Linux CPUfreq 子系统的使用设置并提供一些接口选项,看看使用它是多么容易。先讨论一些一般设置:  /sys 接口  cpuspeed 设置文件  cpufreq-utils  使用 /sys 接口

2013-05-26 20:44:12 1822

原创 如何输出dev_dbg log

kernel里面默认都配置了CONFIG_DYNAMIC_DEBUG=y;     假如我们要打印acpuclock-krait.c中的     dev_dbg(drv.dev, "ACPU%d speed change complete\n", cpu);     在adb shell中输入:     mount –t debugfs none /sys/kernel/debug

2013-05-25 22:33:46 4298

原创 Qualcomm pmic充电流程分析(msm8660)

首先软件上Pmic CHGVAL中断触发,pm8058_chg_chgval_handler函数被调用,即表明pmic检测到usb_vbus,说明有usb或者dc的插入,接着进入充电流程;之后调用msm_charger_notify_event(),在该函数中调度工作队列msm_chg.queue_work;之后调用到工作队列处理函数process_events();再之后逐步调用到pmi

2013-04-22 22:09:01 6628

原创 高通平台发送mipi参数的分析

我们知道,调试lk里面mipi lcd显示,需要在kernel里面参数数组里面改写包头(长包还是短包)和注意4字节对齐,不够则补齐0xff;其实我们kernel是对参数进行了封装,参数经过DMA发送到DSI_BASE偏移0x44的寄存器中的值是和lk里面是一致的。在mipi_dsi_host.c中mipi_dsi_cmd_dma_tx()函数打开DSI_HOST_DEBUG宏即可

2013-04-13 12:04:06 6260 1

原创 kernel power off流程分析

凡是linux内核上层关机时,底层均会调到kernel_power_off(),电脑可以使用按键ctr+alt+del键进入关机,下面我们看看代码流程: SYSCALL_DEFINE4() -> kernel_power_off()-> pm_power_off_prepare() -> machine_power_off()->    pm_power_off() 在这里我想

2013-03-12 22:59:06 13608

原创 android kernel devices睡眠唤醒调试

下面是跟踪log方法,可以调试suspend,resume,earlysuspend lateresume等方面的问题,如哪一过程时间过长,跟踪log才可以很好定位问题,解决问题。1:early_suspend late_resume添加log在earlysuspend.c中static int debug_mask = DEBUG_USER_STATE;->static

2013-02-28 21:16:53 5406

原创 电池温度脚检测电池温度原理

电池温度检测原理电池温度检测原理:电路图如下所示,温度脚所在的串联电路。已知温度与R的线性关系,温度越高电阻阻值越小,通过pmic adc采样到Vbat_therm来确定电池的温度。软件中只要定义一个温度与电压的数组,通过ADC采样到电压就可以查出此时的温度了。温度(℃)电阻(kΩ)电阻精度(%)温度精度(

2013-02-24 21:17:48 7905

转载 指针使用的注意事项

相信大家对指针的用法已经很熟了,这里也不多说些定义性的东西了,只说一下指针使用中的注意事项吧。一.在定义指针的时候注意连续声明多个指针时容易犯的错误,例如int* a,b;这种声明是声明了一个指向int类型变量的指针a和一个int型的变量b,这时候要清醒的记着,而不要混淆成是声明了两个int型指针。二.要避免使用未初始化的指针。很多运行时错误都是由未初始化的指针导致的,而且这种错误又不能被

2013-01-26 18:49:44 1472

转载 学习指针-指针终极理解

指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。 要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的 类型,指针的值或者叫指针所指向的内存区,还有指针本身所占据的内存区。指针所指向的内存区就是从指针的值所代表的那个内存地址开始,长度为si zeof(指针所指向的类型)的一片内存区。指针本身占了多大的内存?你只要用函数sizeof(指针的类型)测一下就知道了。在32

2013-01-26 18:48:56 1801

转载 Qualcomm Android display架构分析

Android display架构分析(一)http://blog.csdn.net/BonderWu/archive/2010/08/12/5805961.aspxhttp://hi.baidu.com/leowenj/blog/item/429c2dd6ac1480c851da4b95.html高通7系列硬件架构分析如上图,高通7系列 Display的硬件部

2013-01-12 15:41:07 3562

转载 deadlock linux死锁

所谓死锁: 是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去.此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等竺的进程称为死锁进程.目录具体定义由于资源占用是互斥的,当某个进程提出申请资源后,使得有关进程在无外力协助下,永远分配不到必需的资源而无法继续运行,这就产生了一种特殊现象死锁。一种

2013-01-12 14:57:44 1872

原创 Linux系统ioctl使用示例 ioctl实验

本文是我在andoid实验的ioctl的功能,如双向传递参数。贴出来希望对学习ioctl的人很有帮助。    linux的ioctl功能是很强大的,android显示模块还有camera模块都离不开ioctl让上层和内核交互。这个实验对初学者很有帮助的。board中添加platform_devcestatic struct ioctl_test_platform_data io

2013-01-12 14:35:56 7800 2

原创 linux debugfs使用分享 软件查看gpio状态

在调试中加入debugfs有时可以起到事半功倍的效果: adb shell#mkdir /data/debug#mount -t debugfs debugfs /data/debug#cd /data/debug  查看gpio状态root@android:/data/debugfs # cat gpioGPIOs 0-15: gpio-0   (fr

2012-12-15 23:10:14 5647

原创 高通平台开机logo连续显示调试总结

所谓开机logo连续显示即我们在bootloader里面即lk下面将开机logo点亮了。但是进入到kernel会掉掉。那么究竟怎么才能保持连续显示呢?         下面以rgb屏为例:         1:在lk下面出lk时不关闭mdp引擎,让开机logo保持到kernel接管。还有lk下面fb_base要定义高点,为了kernel起来时模块不会冲走lk下面那段framebuffer。

2012-09-23 21:42:47 7637 12

原创 linux delayed _work使用小结

Delayed _work使用小结直接使用delay_work将任务推迟执行,如同queue work一样。//声明static struct delayed_work wlan_suspend_worker;//处理任务函数static void xxx_worker(struct work_struct *work){      .........;   sch

2012-09-22 23:06:07 7607

linux alsa机制学习笔记2

linux alsa机制学习笔记2,分析widget route path以及dapm机制

2014-11-04

linux alsa机制学习笔记1

linux alsa机制学习笔记1,详细记录学习过程,特别详解kcontrol

2014-11-04

android tcpdump 工具

android tcpdump 工具 tcpdump抓包工具

2014-06-23

电池温度检测原理

电池温度检测原理 电池中间温度脚 检测温度原理

2013-02-25

mipi lcd spec hx8363a spec

mipi lcd spec mipi lcd datasheet hx8363a spec 珍贵的Mipi学习资料

2012-09-21

Image2lcd2.9以及注册码logo制作工具

logo制作工具Image2lcd2.9以及注册码 可以制作c数组,二进制.bin文件等

2012-07-17

android休眠与唤醒

android休眠与唤醒 讲解精辟 绝对值得学习

2012-04-26

高通CAMIF和Ov_sensor_调试总结

高通CAMIF和Ov_sensor_调试总结 详尽很好的学习文档。

2011-10-28

camera sensor mt9d112芯片手册

camera sensor mt9d112芯片手册 官方芯片手册很难找的网上

2011-10-28

最小linux启动文件系统映像(nand128以上)及其源码

最小linux启动文件系统映像(nand128以上)及其源码 busybox1.3.3

2011-05-14

s3c2440开发板nandflash启动u-boot.bin下载支持dm9000

nandflash启动 支持dm9000 修改自己主机ip可以Ping通主机 tftp下载 支持nand写入 大家赶快来下啊!

2011-05-13

linux下模块驱动makefile模版极大方便调试驱动程序

根据makefile自己修改源码树目录和交叉编译器目录

2011-05-11

移植好的mini2440开发板u-boot 内存启动 支持dm9000 tftp下载

使用方法:1:将dnw配置设置成0x33f80000,按d下载 2:移植好的源码编译make smdk2410_config,make 我使用的编译器arm-linux-gcc 3.3.2 3:目前只支持下载到内存运行,不支持nandflash读写。

2011-05-07

u-boot1.1.6在mini2440上nor和nandflash启动

u-boot1.1.6在mini2440上nor和nandflash启动,分norflash和nandflash启动做了详尽的移植分析

2011-04-02

Mini2440 Linux移植开发实战指南.pdf

Mini2440 Linux移植开发实战指南.pdf mini2440光盘自带的资料实战资料

2011-04-02

busybox-1.9.2.tar.bz2

制作linux根文件系统工具,源码很不错的

2011-04-02

ARM汇编详尽学习笔记

很详尽的介绍了arm汇编的指令 不愧为好的学习资料

2011-02-28

U-BOOT移植S3C2440完全手册

详尽介绍U-BOOT移植S3C2440并有部分代码解释很好的移植文档

2011-02-28

s3c2440开发板原理图及pcb及常见pads2007封装库

s3c2440开发板原理图及pcb及常见pads2007封装库 学习绘制pcb不可多的好材料 免费送 快快下载 有2中格式的 protel 和 pads2007

2010-11-12

msp430实验代码文档

msp430 实验代码 文档资料 16位单片机 入门必不可少 文档代码 均为c格式 欢迎学习16位单片机的下载学习 能快速提高430编程

2010-11-09

深入浅出ARM7(上) arm入门经典书籍

深入浅出 ARM7(上) arm入门经典书籍 初学arm必备

2010-10-30

周立功ARM实验代码大全

arm7全部实验源代码 不可多得的提高编程好材料

2010-10-23

ARM7+基础实验教程

ARM7+基础实验教程 学习arm7好资料

2010-10-10

Proteus仿真单片机实例.

Proteus仿真单片机实例. 很好的学习单片机仿真

2010-10-05

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除