<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Focus on the Linux kernel ]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/eqwewr</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; eqwewr]]></copyright><item><title><![CDATA[安卓linux uevent内核上报机制实例]]></title><link>https://blog.youkuaiyun.com/eqwewr/article/details/42929001</link><guid>https://blog.youkuaiyun.com/eqwewr/article/details/42929001</guid><author>eqwewr</author><pubDate>Tue, 20 Jan 2015 21:21:29 +0800</pubDate><description><![CDATA[uevent可以实现内核通知上层的一种机制，最常见的电池状态的变化就是kernel uevent通知的，每次百分比或者其他的变化通过power_supply_changed通知上层update；


每个device下面都有kobj,找到device就可以通过kobject_uevent_env 通知android了；

以拔出T卡为例，内核通知上层。这里的T卡是一种sdio设备，普通T]]></description><category></category></item><item><title><![CDATA[linux select与poll实现机制与实例分析]]></title><link>https://blog.youkuaiyun.com/eqwewr/article/details/42921447</link><guid>https://blog.youkuaiyun.com/eqwewr/article/details/42921447</guid><author>eqwewr</author><pubDate>Tue, 20 Jan 2015 18:09:13 +0800</pubDate><description><![CDATA[我们直到上层对文件操作结合select与poll可以实现阻塞操作，那么究竟是如何实现的呢？

select接口：
    int select(int nfds, fd_set *readset, fd_set *writeset,
               fd_set *exceptset, struct timeval *timeout);
      
其中： 

nf]]></description><category></category></item><item><title><![CDATA[linux内核3.4基于wakeup_source的autosleep机制分析]]></title><link>https://blog.youkuaiyun.com/eqwewr/article/details/41450025</link><guid>https://blog.youkuaiyun.com/eqwewr/article/details/41450025</guid><author>eqwewr</author><pubDate>Mon, 24 Nov 2014 19:25:53 +0800</pubDate><description><![CDATA[一：wakeup_source简介：
    linux 3.4内核PM使用了wakeup_source来保持唤醒状态，也就是keep awake。之前android一直是基于Linux加入了wake_lock机制来阻止系统休眠，后来Linux 3.4内核加入了wakeup_source来管理，安卓4.4跟着升级内核也就摒弃了自己的臃肿的wake_lock机制，在对上层接口并不改变，在内核wak]]></description><category></category></item><item><title><![CDATA[Linux音频ALSA机制学习笔记<二>]]></title><link>https://blog.youkuaiyun.com/eqwewr/article/details/40793725</link><guid>https://blog.youkuaiyun.com/eqwewr/article/details/40793725</guid><author>eqwewr</author><pubDate>Tue, 04 Nov 2014 21:28:15 +0800</pubDate><description><![CDATA[首先是dapm是什么？就是音频电源动态管理。相信电源管理大家都不会陌生。dapm设计的目的就是只有需要时才打开必要的部件
（widget），不需要时则关闭部件， 达到省电的目的。ALSA通过kcontrol来切换音频通道，当playback或者capture时会更新通道激活下
的widget power,这个是由内核event统一完成的，无须上层干预。
widget
定义widget
s]]></description><category></category></item><item><title><![CDATA[Linux音频ALSA机制学习笔记<一>]]></title><link>https://blog.youkuaiyun.com/eqwewr/article/details/40793623</link><guid>https://blog.youkuaiyun.com/eqwewr/article/details/40793623</guid><author>eqwewr</author><pubDate>Tue, 04 Nov 2014 21:26:02 +0800</pubDate><description><![CDATA[首先宏观看内核暴露给上层的接口：
root@android:/ # cat /dev/snd/
controlC0 pcmC0D10p pcmC0D13c pcmC0D15c pcmC0D2c pcmC0D3c pcmC0D5p pcmC0D8c
pcmC0D0c pcmC0D11p pcmC0D13p pcmC0D15p pcmC0D2p pcmC0D3p pcmC0D6c pcmC0D9]]></description><category></category></item><item><title><![CDATA[做高通平台安卓驱动感言]]></title><link>https://blog.youkuaiyun.com/eqwewr/article/details/40052697</link><guid>https://blog.youkuaiyun.com/eqwewr/article/details/40052697</guid><author>eqwewr</author><pubDate>Mon, 13 Oct 2014 22:23:03 +0800</pubDate><description><![CDATA[第二次写这类博客，之前还是求职期间写的面试之类的经历。
          不知不觉做驱动再过2个月就3年了，可以说这3年学习到的很多，老大或者同事们的指教，针对性通过百度等搜索等，还有就是自己一边工作一边自己研究到的。
知识，解决问题的能力也是慢慢积累起来的。这二年多来一直在做驱动，由开始开始接触调试LCD  TP等等，每次会重复做事，但是自己学习到的也很多，学会
分析关键问题，掌握一些驱]]></description><category></category></item><item><title><![CDATA[linux内核notifier机制  linux通知链]]></title><link>https://blog.youkuaiyun.com/eqwewr/article/details/39504063</link><guid>https://blog.youkuaiyun.com/eqwewr/article/details/39504063</guid><author>eqwewr</author><pubDate>Tue, 23 Sep 2014 21:02:18 +0800</pubDate><description><![CDATA[在linux内核系统中，各个模块、子系统之间是相互独立的。Linux内核可以通过通 
知链机制来获取由其它模块或子系统产生的它感兴趣的某些事 件。
使用notifier由通知者可以传递给被通知者整形参数与指针，在linux中有许多地 
方用到，比如reboot通知,cpu调频通知，电池低 电警报等等。熟
悉使用notifier有助于驱动开发。

notifier_block结构：
s]]></description><category></category></item><item><title><![CDATA[Linux环境下USB的原理、驱动和配置]]></title><link>https://blog.youkuaiyun.com/eqwewr/article/details/39483745</link><guid>https://blog.youkuaiyun.com/eqwewr/article/details/39483745</guid><author>eqwewr</author><pubDate>Mon, 22 Sep 2014 23:10:57 +0800</pubDate><description><![CDATA[作者：北京中科红旗软件技术有限公司 嵌入式工程师 梁国军来源:优快云

本文关键词： Linux USB



作者为北京中科红旗软件技术有限公司 嵌入式工程师 梁国军

随着生活水平的提高，人们对USB设备的使用也越来越多，鉴于Linux在硬件配置上尚不能全部即插即用，因此关于Linux如何配置和使用，成为困扰我们的一大问题。



什么是USB？

USB是英文U]]></description><category></category></item><item><title><![CDATA[耳机接口pin脚定义]]></title><link>https://blog.youkuaiyun.com/eqwewr/article/details/39482951</link><guid>https://blog.youkuaiyun.com/eqwewr/article/details/39482951</guid><author>eqwewr</author><pubDate>Mon, 22 Sep 2014 22:11:53 +0800</pubDate><description><![CDATA[耳机接口pin脚定义

耳机有两种标准：
国标L R MIC GND   
欧标:L R GND MIC

测量方法：左声道或者右声道  与另外pin脚间电阻有30欧姆左右说明是测量pin脚是GND；]]></description><category></category></item><item><title><![CDATA[从linux usb bus节点来认识usb linux usb认识]]></title><link>https://blog.youkuaiyun.com/eqwewr/article/details/39482363</link><guid>https://blog.youkuaiyun.com/eqwewr/article/details/39482363</guid><author>eqwewr</author><pubDate>Mon, 22 Sep 2014 21:34:35 +0800</pubDate><description><![CDATA[首先从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]]></description><category></category></item><item><title><![CDATA[安卓kernel自主唤醒系统方法—设置alarm]]></title><link>https://blog.youkuaiyun.com/eqwewr/article/details/39349479</link><guid>https://blog.youkuaiyun.com/eqwewr/article/details/39349479</guid><author>eqwewr</author><pubDate>Wed, 17 Sep 2014 22:45:18 +0800</pubDate><description><![CDATA[#include 


1：定义alarm变量：
struct alarm  xx_alarm;


2:alarm绑定：


alarm 触发时callback:
static void
xx_callback(struct alarm *alarm)
{
     structchip *chip = container_of(alarm, structchip,]]></description><category></category></item><item><title><![CDATA[Linux USB驱动工作流程]]></title><link>https://blog.youkuaiyun.com/eqwewr/article/details/39254941</link><guid>https://blog.youkuaiyun.com/eqwewr/article/details/39254941</guid><author>eqwewr</author><pubDate>Sat, 13 Sep 2014 20:40:39 +0800</pubDate><description><![CDATA[1. USB主机
在Linux驱动中，USB驱动处于最底层的是USB主机控制器硬件，在其之上运行的是USB主机控制器驱动，主机控制器之上为USB核心层，再上层为USB设备驱动层（插入主机上的U盘、鼠标、USB转串口等设备驱动）。

因此，在主机侧的层次结构中，要实现的USB驱动包括两类：USB主机控制器驱动和USB设备驱动，前者控制插入其中的USB设备，后者控制USB设备如何与主机通信。Li]]></description><category></category></item><item><title><![CDATA[linux kernel将buf保存到文件做法 很好的调试方法]]></title><link>https://blog.youkuaiyun.com/eqwewr/article/details/39085607</link><guid>https://blog.youkuaiyun.com/eqwewr/article/details/39085607</guid><author>eqwewr</author><pubDate>Fri, 05 Sep 2014 21:46:00 +0800</pubDate><description><![CDATA[linux kernel将关键信息保存到文件做法      很好的调试方法

下面有2个示例：
    1：保存机器从开机到结束的VBATT；
    2：保存uart接收到的数据到文件；

意义不多说了。
以下是代码：
#include 
#include 
#include 

static  struct file *fp =NULL;

int  write_to_file]]></description><category></category></item><item><title><![CDATA[linux网卡数据流 发送与接收]]></title><link>https://blog.youkuaiyun.com/eqwewr/article/details/39033351</link><guid>https://blog.youkuaiyun.com/eqwewr/article/details/39033351</guid><author>eqwewr</author><pubDate>Wed, 03 Sep 2014 21:34:11 +0800</pubDate><description><![CDATA[通常在驱动中看见的网卡代码很多，但是都离不开发送与接收，掌握好骨干也就好阅读网卡驱动了。
数据发送 ：

发送函数：xxx_start_xmit（）

上层封装好了sk_buff丢进kernel后，buf存储在skb->data中，通 过 xxx_start_xmit（），发送出去。
下面的实例是通过写入某个设备节点发送出去，当然这个设备肯定是串口或者sdio等传输设备，
也可以直接]]></description><category></category></item><item><title><![CDATA[linux sdio card休眠处理 sdio card removed解决办法]]></title><link>https://blog.youkuaiyun.com/eqwewr/article/details/39011991</link><guid>https://blog.youkuaiyun.com/eqwewr/article/details/39011991</guid><author>eqwewr</author><pubDate>Tue, 02 Sep 2014 21:25:56 +0800</pubDate><description><![CDATA[最近调试几款sdio card suspend时都会出现sdio card removed，之后 
要么死机要么模块不能正常工作，根本原因也就是休眠没有处理好。
昨天在博通网卡上终于找到了解决方法。
         1：host端需要设置nonremovable,软件设置：mmc->caps |= 
MMC_CAP_NONREMOVABLE;
         2：host端需要设置k]]></description><category></category></item><item><title><![CDATA[linux runtime pm机制的深入理解]]></title><link>https://blog.youkuaiyun.com/eqwewr/article/details/38092115</link><guid>https://blog.youkuaiyun.com/eqwewr/article/details/38092115</guid><author>eqwewr</author><pubDate>Thu, 24 Jul 2014 21:26:50 +0800</pubDate><description><![CDATA[一：runtime机制说明

    何为runtime机制?也就是系统在非睡眠状态，设备在空闲时可以进入runtime suspend状态同时不依赖系统wake_lock机制，非空闲时执行runtime resume使得设备进入正常工作状态。
    主要代码放在Runtime.c (drivers\base\power)中，同时附带的Runtime_pm.txt (documentati]]></description><category></category></item><item><title><![CDATA[Android通过tcpdump抓包]]></title><link>https://blog.youkuaiyun.com/eqwewr/article/details/34173315</link><guid>https://blog.youkuaiyun.com/eqwewr/article/details/34173315</guid><author>eqwewr</author><pubDate>Tue, 24 Jun 2014 22:08:50 +0800</pubDate><description><![CDATA[1. 手机要有root权限

2. 下载tcpdump   http://www.strazzere.com/android/tcpdump

3. adb push c:\wherever_you_put\tcpdump /data/local/tcpdump

4. adb shell chmod 6755 /data/local/tcpdump

5, adb shell, ]]></description><category></category></item><item><title><![CDATA[高通平台串口调试  AP与模块串口通讯调试总结]]></title><link>https://blog.youkuaiyun.com/eqwewr/article/details/24329043</link><guid>https://blog.youkuaiyun.com/eqwewr/article/details/24329043</guid><author>eqwewr</author><pubDate>Tue, 22 Apr 2014 22:05:29 +0800</pubDate><description><![CDATA[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：查看]]></description><category></category></item><item><title><![CDATA[android alarm底层理解]]></title><link>https://blog.youkuaiyun.com/eqwewr/article/details/22436277</link><guid>https://blog.youkuaiyun.com/eqwewr/article/details/22436277</guid><author>eqwewr</author><pubDate>Fri, 28 Mar 2014 21:53:46 +0800</pubDate><description><![CDATA[分享以前调试alarm关机闹钟时，写的关于alarm的总结；
    alarm上层调用包括RTC唤醒和闹钟,前者使用的更频繁，接口一样;上层应用频繁调用rtc唤醒系统会增加功耗，所有有些厂家做了所谓的同步心跳技术来统一规划RTC唤醒系统；
    alarm本质是底层起了timer，在系统未睡眠时当达到上层设定时间之后timer会trigger同时调用alarm的回调函数来改变全局变量，从而]]></description><category></category></item><item><title><![CDATA[linux 进程睡眠与wait_even t_interruptible（）分析]]></title><link>https://blog.youkuaiyun.com/eqwewr/article/details/21561949</link><guid>https://blog.youkuaiyun.com/eqwewr/article/details/21561949</guid><author>eqwewr</author><pubDate>Wed, 19 Mar 2014 22:38:24 +0800</pubDate><description><![CDATA[驱动中最底层处理buffer通常会对该进程睡眠和唤醒操作，比如上层写入buffer时，内核buffer缓冲区是满的，那么写入进程需要阻塞住，直到内核buffer缓冲区可以容纳上层写入的buffer才唤醒该进程。

首先必须认清一个事实：
先将进程置为INTERRUPTIBLE，再调用schedule()后本进程才睡眠；而不是执行set_current_state(TASK_INTERRUPT]]></description><category></category></item></channel></rss>