![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux
还能跟乔克叔叔拍一张照
欢迎跟我讨论相关技术问题,我的邮箱superlcc@126.com
展开
-
C语言宏定义##连接符和#符的使用
C语言中如何使用宏C(和C++)中的宏(Macro)属于编译器预处理的范畴,属于编译期概念(而非运行期概念)。下面对常遇到的宏的使用问题做了简单总结。关于#和##在C语言的宏中,#的功能是将其后面的宏参数进行字符串化操作(Stringfication),简单说就是在对它所引用的宏变量 通过替换后在其左右各加上一个双引号。比如下面代码中的宏:#define WARN_IF(EXP转载 2014-05-07 10:38:09 · 509 阅读 · 0 评论 -
Linux __setup解析
__setup这条宏在Linux Kernel中使用最多的地方就是定义处理Kernel的启动参数的函数及数据结构,宏定义如下:#define __setup(str, fn) \__setup_param(str, fn, fn, 0)#define __setup_param(str, unique_id, fn, early) \static char __setu转载 2014-07-03 13:58:17 · 496 阅读 · 0 评论 -
采用Fuel Gauge可能出现的几种电量现象及解释
首先应该熟悉两个变量,bat_volt_check_point是UI上面显示的值。gFG_capacity_by_C,库仑计计算的电量值.也等于SOC的值.公式 DOD1 = DOD0 + (-Car/Qmax).DOD1对应当前的电量值.DOD0对应初始的电量值.Car 为t时间内, 流过Rfg电阻电流的电量.Qmax为电池的容量.下面几种情况会更新DOD0的值,转载 2014-07-03 14:06:12 · 1285 阅读 · 0 评论 -
linux notifier
Linuxnotifier技术内核通知链介绍(引用网络资料):在linux内核系统中,各个模块、子系统之间是相互独立的。Linux内核可以通过通知链机制来获取由其它模块或子系统产生的它感兴趣的某些事件。例如,可以通过通知链来获取某总线上的设备增加、删除情况,来动态添加和卸载dev文件设备。Linux内核中包含四种类型通知链:Atomic notifierchains转载 2014-06-16 17:06:51 · 556 阅读 · 0 评论 -
Linux之IRQ domain
概述Linux使用IRQ domain来描述一个中断控制器(IRQ Controller)所管理的中断源。换句话说,每个中断控制器都有自己的domain。我们可以将IRQ Domain看作是IRQ Controller的软件抽象。这里所说的“中断控制器”,不仅指硬件上实际存在的中断控制器,也可以是一个“虚拟”的中断控制器。例如,假设我们有一块CPU,它有多个GPIO Pin可以作为外部中断转载 2014-07-07 17:56:22 · 1425 阅读 · 0 评论 -
ftrace 简介
ftrace 简介ftrace 的作用是帮助开发人员了解 Linux 内核的运行时行为,以便进行故障调试或性能分析。最早 ftrace 是一个 function tracer,仅能够记录内核的函数调用流程。如今 ftrace 已经成为一个 framework,采用 plugin 的方式支持开发人员添加更多种类的 trace 功能。Ftrace 由 RedHat 的 Stev转载 2014-07-09 11:16:51 · 531 阅读 · 0 评论 -
make help
make helpCleaning targets: clean - Remove most generated files but keep the config and enough build support to build external modules mrproper - Remove all generated fil原创 2014-07-09 14:09:44 · 936 阅读 · 0 评论 -
Linux驱动开发常用调试工具-------之devmem
在Linux开发中着实用到的调试工具并不是很多。devmem的方式是提供给驱动开发人员,在应用层能够侦测内存地址中的数据变化,以此来检测驱动中对内存或者相关配置的正确性验证。 devmem2使用方法: devmem2 { address } [ type [ data ] ] address : 物理地址转载 2014-07-28 20:52:06 · 662 阅读 · 0 评论 -
Linux内核构建系统之一
要想学习Linux内核,特别是要想通过去hacking内核代码来找到您手头问题的答案,那你通常就需要先有一些基础知识,包括操作系统的原理、实际hacking所需要的工具使用、Linux内核构建系统的基本构成与基本运作原理等等。而Linux内核构建系统就是前述第三类知识中比较基础的部分。在整个Linux的开发生态中,处于不同位置的人要求掌握内核构建系统的程度也不同。作为驱动程序开发人员来讲,只要求会转载 2014-07-11 15:50:49 · 583 阅读 · 0 评论 -
patch
To revert a previously applied patch, use the -R argument to patch. 48 So, if you applied a patch like this:原创 2014-07-12 17:12:45 · 580 阅读 · 0 评论 -
借助loop device与losetup命令制作硬盘镜像
1,创建镜像文件 用如下命令创建镜像文件sdb.img,bs指定block大小,镜像文件大小为bs*count dd if=/dev/zero of=sdb.img bs=512 count=163842,用losetup命令将生成的镜像文件与loop device设备关联 用如下命令将sdb.img镜像文件与/dev/lo转载 2014-08-22 15:58:38 · 683 阅读 · 0 评论 -
git 修改commit
当你不小心,写错了提交的注视/信息,该如何处理呢。理论上,SCM是不应该修改历史的信息的,提交的注释也是。 不过在git中,其commit提供了一个--amend参数,可以修改最后一次提交的信息.但是如果你已经push过了,那么其历史最后一次,永远也不能修改了。 我使用git commit --amend已经push过的,截图如下,我那个"fixes #3"永远的在版本历史中了。转载 2014-05-27 14:55:29 · 495 阅读 · 0 评论 -
用 Addr2line 将函数地址解析为函数名
原文链接:http://www.ibm.com/developerworks/cn/linux/l-graphvis/ Addr2line 工具(它是标准的 GNU Binutils 中的一部分)是一个可以将指令的地址和可执行映像转换成文件名、函数名和源代码行数的工具。这种功能对于将跟踪地址转换成更有意义的内容来说简直是太棒了。要了解这个过程是怎样工作的,我们可以试验一个简单的转载 2014-05-27 13:24:08 · 643 阅读 · 0 评论 -
cdecl、stdcall、fastcall函数调用约定区别
在C语言中,假设我们有这样的一个函数: int function(int a,int b) 调用时只要用result = function(1,2)这样的方式就可以使用这个函数。但是,当高级语言被编译成计算机可以识别的机器码时,有一个问题就凸现出来:在CPU中,计算机没有办法知道一个函数调用需要多少个、什么样的参数,也没有硬件可以保存这些参数。也就是说,计算机不知道怎么转载 2014-05-07 11:22:32 · 490 阅读 · 0 评论 -
git
gitk 用于查看log很方便。git mergetool 用于merge conflics非常方便。原创 2014-04-22 14:11:59 · 612 阅读 · 0 评论 -
从github下载某个git库的4种方法
以gerrit-trigger-plugin为例,下面的链接都是从相应页面上直接拷贝的。法一:不用github的账号,打开这个库在github上的主页,运行下面命令即可read only运行命令$git clone https://github.com/jenkinsci/gerrit-trigger-plugin.git下面的三种方法都要先在githu转载 2014-05-08 17:08:19 · 621 阅读 · 0 评论 -
Battery Charging Specification, Revision 1.2, December 7, 2010 中文
Battery Charging SpecificationRevision 1.2December 7, 2010Li,Guanglei2014.04.03 Rev0.1转载请注明转自:http://blog.csdn.net/liglei1. Introduction 第一章 简介1.1 Scope 适用范围规范定义了设备转载 2014-05-15 11:24:22 · 1247 阅读 · 0 评论 -
BC 1.2 模式(Battery Charging Specification 1.2)
SDP: Standard Downstream Port 标准下行接口,此即可哦原创 2014-05-16 14:42:24 · 5082 阅读 · 0 评论 -
InitcallMechanism/HowItWorks
Armed with all of the above information, we're now ready to understand how the Linux kernel's initcall mechanism works. In fact, if you've understood most of what has been said up to this point, you a转载 2014-05-08 16:01:43 · 608 阅读 · 0 评论 -
垃圾,Rubbish? Garbage? Trash?
我以前学的是英式英文,知道Rubbish是垃圾的意思,后来知道Garbage也是垃圾的意思,但是不知道其二者有什么区别。前几年作为领队住进了美国当地人的家里,问Hostmother在哪里扔垃圾,才知道现在的美国人是用Trash来表达垃圾。 今天在出差回广州的飞机上,捧读张北海《天空线下》一书,无意中得知了中文中泛指所有无用之物的垃圾一词在英文中的多种表达方式。书中第17转载 2014-05-16 09:52:24 · 1929 阅读 · 0 评论 -
The basics of USB battery charging: a survival guide
Table of contentsIntroductionAn array of power sourcesDetecting the source typeUSB connection terminologyPort detecting and self-enumerating chargerAdding port detectionOther charge stra转载 2014-05-16 15:14:38 · 8719 阅读 · 0 评论 -
USB port 如何识别不同的Charger类型
基于Qualcom 8960/8921平台一,软件分析1. USB charger types & Power supply typesUSB_INVALID_CHARGER Invalid USB charger.USB_SDP_CHARGER Standard downstream port转载 2014-05-16 19:06:05 · 1531 阅读 · 0 评论 -
linux 电源管理驱动编写
执行流程驱动结构1) 内核提供的接口struct power_supply 在文件 include\linux\power_supply.h 中2) 提供给用户的接口sys/class/power_supply通过 drivers\power\power_supply_core.c 中的int po转载 2014-05-19 14:14:47 · 2591 阅读 · 0 评论 -
linux下的内核测试工具——perf使用简介
摘要:Perf是Linux kernel自带的系统性能优化工具。Perf的优势在于与Linux Kernel的紧密结合,它可以最先应用到加入Kernel的new feature。pef可以用于查看热点函数,查看cashe miss的比率,从而帮助开发者来优化程序性能。本文来源:http://blog.csdn.net/trochiluses/article/details/10转载 2014-08-27 21:06:03 · 958 阅读 · 0 评论