宋宝华的blog

Linux Consultant

排序:
默认
按更新时间
按访问量

《Linux设备驱动开发详解(第3版)》(即《Linux设备驱动开发详解:基于最新的Linux 4.0内核》)进展同步更新

本博实时更新《Linux设备驱动开发详解(第3版)》的最新进展。 2015.4 完稿。 2015年8月9日,china-pub开始上线预售:http://product.china-pub.com/4733972

2014-06-30 20:22:54

阅读数:41601

评论数:114

经历≠经验,码农如何工作10年依然是菜鸟?

引言说实话,工作10年不等于是高手;高手也不等于要工作时间久。圣人曾经曰过:“工作经历不等于工作经验”。工作10年,只是一个“经历”,而“经历”不能得以总结、归纳和升华,就无法转化为“经验”。一个2年“工作经验”的工程师水平可能远高于一个10年“工作经历”的工程师。如果程序员在35岁的时候,“工作...

2018-05-25 23:35:21

阅读数:6458

评论数:23

Linux的page cache使用情况/命中率查看和操控

这里总结几个Linux文件缓存(page cache)使用情况、命中率查看的工具。perf-tools里面的cachestat来自于大名鼎鼎的Brendan Gregg的cachestat,已经被加到他的perf-toolshttp://www.brendangregg.com/blog/2014...

2018-05-25 23:33:20

阅读数:200

评论数:0

宋宝华:swappiness=0究竟意味着什么?

本文解释swappiness的作用,以及swappiness=0究竟意味着什么。内存回收我们都知道,Linux一个进程使用的内存分为2种:file-backed pages(有文件背景的页面,比如代码段、比如read/write方法读写的文件、比如mmap读写的文件;他们有对应的硬盘文件,因此如果...

2018-01-30 19:20:16

阅读数:1094

评论数:0

宋宝华:关于Ftrace的一个完整案例

Ftrace简介Ftrace是Linux进行代码级实践分析最有效的工具之一,比如我们进行一个系统调用,出来的时间过长,我们想知道时间花哪里去了,利用Ftrace就可以追踪到一级级的时间分布。Ftrace案例写一个proc模块,包含一个proc的读和写的入口。test_proc_show()故意调用...

2018-01-24 23:49:39

阅读数:2388

评论数:0

宋宝华:关于DMA ZONE和dma_alloc_coherent若干误解的澄清

本文已首先在Linuxer公众号(ID: LinuxDev)发表,先转回我的blog也发表。转载请注明出处。1.DMA ZONE的大小是16MB?这个答案在32位X86计算机的条件下是成立的,但是在其他的绝大多数情况下都不成立。首先我们要理解DMA ZONE产生的历史原因是什么。DMA可以直接在内...

2018-01-22 21:23:49

阅读数:1471

评论数:1

宋宝华:火焰图:全局视野的Linux性能剖析

火焰图(Flame Graph)是由Linux性能优化大师Brendan Gregg发明的,本文用最简单的实例讲解什么是火焰图,怎么画出来火焰图,火焰图的优点是什么。本文首发于Linuxer微信公众号,转发回blog。

2017-11-14 10:43:49

阅读数:11105

评论数:1

Linux的任督二脉:进程调度和内存管理

比如进程的调度延时是多少?Linux能否硬实时?多核下多线程如何执行?系统的内存究竟耗到哪里去了?我写的应用程序究竟耗了多少内存?什么是内存泄漏,如何判定内存是否真的泄漏?CPU速度、内存大小和系统性能的关联究竟是什么?内存和I/O存在着怎样的千丝万缕的联系?

2017-08-23 14:45:09

阅读数:28439

评论数:20

《总线设备驱动模型》《深入探究Linux的设备树》讲座ppt分享和录播地址发布

本课程的录播视频已经放在了(已经报名直播的看录播无需重新报名): http://edu.csdn.net/course/detail/5627 《Linux总线、设备、驱动模型》的录播视频放在了(已经报名直播的看录播无需重新报名): http://edu.csdn.net/course/detai...

2017-08-18 17:03:01

阅读数:5450

评论数:2

让天堂的归天堂,让尘土的归尘土——谈Linux的总线、设备、驱动模型

写代码,适用于同样的原则,那就是把正确的代码放到正确的位置而不是相反。同样的一个代码,可以出现在多个可能的位置,它究竟应该出现在哪里,是软件架构设计的结果,说白了一切都是为了高内核和低耦合。

2017-06-28 22:56:44

阅读数:11008

评论数:15

宋宝华:论程序员的时代焦虑与焦虑的缓解

生活在2017年的程序员,不焦虑的确实没有几个。经历了2016年的房价暴涨以及此前房价的数次狂飙猛进,能心静如水的人那内心的强大恐怕不是一般人可以企及。本人一介码农兼教书匠,时常走街串巷,曾经在好多公司讲过同样的一句话,“在中国,一个程序员的成功不取决于你的代码是否写的好,而取决于你是否在正确的时...

2017-05-25 18:02:50

阅读数:18749

评论数:56

宋宝华:关于罪与欲望的深渊 - 《人民的名义》观后感

《人民的名义》无疑是继《潜伏》后最佳的国产电视剧,没有之一。我们抛开它的反腐败政治目的不谈,电视剧本身关于罪与欲望,关于最深层次人性的揭秘,也深深地震撼每一个人。

2017-04-26 20:46:14

阅读数:7017

评论数:5

宋宝华- Linux namespace - Docker 背后的故事

名称空间是在OS之上实现容器与主机隔离,以及容器之间互相隔离的Linux内核核心技术。根据《Docker 最初的2小时(Docker从入门到入门)》一文,名称空间本质上就是在不同的工作组里面封官许愿。本文接下来从细节做一些讨论。

2017-03-04 15:33:11

阅读数:8904

评论数:1

宋宝华- KVM最初的2小时(KVM从入门到入不了门)

接着《Docker最初的2小时(Docker从入门到入门)》继续聊,再花10个小时写出《KVM最初的2小时(KVM从入门到入不了门)》。坦白讲,由于KVM远远比Docker要复杂,还是要2小时爱上KVM,这绝非难事,所以很可能入不了门。原则上,我们继续迭代学习,这篇文章建立你对KVM的最好初印象,...

2017-02-23 04:39:44

阅读数:14897

评论数:4

宋宝华:Docker 最初的2小时(Docker从入门到入门)

最初的2小时,你会爱上Docker,对原理和使用流程有个最基本的理解,避免满世界无头苍蝇式找资料。本人反对暴风骤雨式多管齐下狂轰滥炸的学习方式,提倡迭代学习法,就是先知道怎么玩,有个感性认识,再深入学习高级用法,深层原理,一轮轮迭代。坚决反对一上来就搞几百页厚的东西把人脑子弄乱。Docker是什么...

2017-02-21 09:42:31

阅读数:48738

评论数:29

在ARM Linux内核中增加一个新的系统调用

实验平台内核版本为4.0-rc1,增加的系统调用仅仅是简单打印一个Hello World,最后我们在用户空间用swi验证。

2016-05-02 12:55:45

阅读数:8226

评论数:1

Network write system call latency

Linux ftrace案例

2016-01-17 17:41:19

阅读数:4886

评论数:0

《Linux设备驱动开发详解(第3版)》(即《Linux设备驱动开发详解:基于最新的Linux 4.0内核》)网购链接

《Linux设备驱动开发详解:基于最新的Linux 4.0内核》

2015-08-10 14:42:59

阅读数:13709

评论数:9

《Linux设备驱动开发详解(第3版)》(即《Linux设备驱动开发详解:基于最新的Linux 4.0内核》)前言

Linux从未停歇脚步。Linus Torvalds,世界上最伟大的程序员之一,Linux内核的创始人,Git的缔造者,仍然在没日没夜的合并补丁,升级内核。做技术,从来没有终南捷径,拼的就是坐冷板凳的傻劲。

2015-04-28 00:15:12

阅读数:35906

评论数:50

Linux电源管理系统架构和驱动(1)-Linux电源管理全局架构

1.   Linux电源管理全局架构Linux电源管理非常复杂,牵扯到系统级的待机、频率电压变换、系统空闲时的处理以及每个设备驱动对于系统待机的支持和每个设备的运行时电源管理,可以说和系统中的每个设备驱动都息息相关。对于消费电子产品来说,电源管理相当重要。因此,这部分工作往往在开发周期中占据相当大...

2015-02-21 12:21:12

阅读数:12176

评论数:1

覆盖率测试工具gcov的前端工具_LCOV_简介

1、Gcov是进行代码运行的覆盖率统计的工具,它随着gcc的发布一起发布的,它的使用也很简单,需要在编译和链接的时候加上-fprofile-arcs -ftest-coverage生成二进制文件,gcov主要使用.gcno和.gcda两个文件,.gcno是由-ftest-coverage产生的,它...

2014-10-19 20:48:38

阅读数:8917

评论数:0

mbed OS - ARM关于物联网(IoT)的战略布局

关于IoT在刚刚过去的ARMTECHCON2014(Santa Clara Convention Center)第1天会议,首要的keynote就是ARM针对建立物联网(InternetOf Things,IoT)推出的mbed OS。其实这个mbed OS要跑起来,依赖于三方的联合互动,设备、设...

2014-10-03 15:24:37

阅读数:18179

评论数:3

Linux内核模块编程与内核模块LICENSE -《详解(第3版)》预读

Linux内核模块编程与内核模块LICENSE——《Linux设备驱动开发详解(第3版)》预读

2014-07-02 11:38:33

阅读数:13356

评论数:3

关于Linux线程的线程栈以及TLS

说明: a.本文描述Linux NPTL的线程栈简要实现以及线程本地存储的原理,实验环境中Linux内核版本为2.6.32,glibc版本是2.12.1,Linux发行版为ubuntu,硬件平台为x86的32位系统。 b.对于Linux NPTL线程,有很多话题。本文挑选了原则上是每线程私有的...

2014-03-23 22:52:22

阅读数:9159

评论数:0

Android adb setuid提权漏洞的分析

作 者: Claud 时 间: 2011-07-07,13:03:41 链 接: http://bbs.pediy.com/showthread.php?t=136707 去年的Android adb setuid提权漏洞被用于各类root刷机,漏洞发现人Sebastian ...

2014-02-10 15:57:02

阅读数:11235

评论数:0

分享《Essential Linux Device Drivers》中文版高清电子版

新浪微博 @宋宝华Barry 在@微盘 分享了 Prentice.Hall出版社《Essential.Linux.Device.Drivers》中文版高清电子版 "宋宝华_精通LINUX设备驱动开发.pdf"http://t.cn/zYjS7sh 目  录 第1...

2013-02-28 22:45:26

阅读数:20036

评论数:4

Linux芯片级移植与底层驱动(基于3.7.4内核)

宋宝华 BarrySong 21cnbao@gmail.com> 新浪微博: @宋宝华Barry   1.   SoC Linux底层驱动的组成和现状 为了让Linux在一个全新的ARM SoC上运行,需要提供大量的底层支撑,如定时器节拍、中断控制器、SMP启动、CPU hotplu...

2013-01-26 18:40:18

阅读数:46291

评论数:4

ARM Linux 3.x的设备树(Device Tree)

宋宝华 Barry Song 1.    ARM Device Tree起源 Linus Torvalds在2011年3月17日的ARM Linux邮件列表宣称“this whole ARM thing is a f*cking pain in the ass”,引发ARM Linux社区的地...

2013-01-01 17:32:36

阅读数:211913

评论数:54

炼狱与逐光——我的十杰博客获奖感言

如果锤炼是一种炼狱,那么炼狱即是追逐光芒。没有一篇技术博文的创作不是艰辛的,看似轻松的文字背后,凝聚着博主无数个日夜的苦心。笔耕不辍,真正的炼狱,将技术不断重构,并痛快地分享,炼狱中的逐光。 十年之前,你不认识我,我不属于你。在186单片机上,我用汇编和C编写了全套的人机界面、驱动、通信模块软件...

2012-12-31 11:04:11

阅读数:11642

评论数:17

Service与Android系统设计(7)--- Binder驱动

Service与Android系统实现(1)-- 应用程序里的Service Service与Android系统设计(2)-- Parcel Service与Android系统设计(3)--

2012-10-30 18:11:04

阅读数:13163

评论数:5

Service与Android系统设计(6)--- Native Service

Native Service Native Service,这是Android系统里的一种特色,就是通过C++或是C代码写出来的,供Java进行远程调用的Remote Service,因为C/C++代码生成的是N

2012-10-19 20:38:25

阅读数:17680

评论数:0

Service与Android系统设计(5)-- libbinder

libbinder – Binder的Native实现 出于性能和代码统一性的角度考虑,Binder IPC并不Java和Native环境里各实现一次,而只是分别在不同的执行环境里提供使用的接口。使用

2012-10-19 20:37:47

阅读数:12278

评论数:1

Service与Android系统设计(4)-- ServiceManager

System Service的驱动形式 --- ServiceManager 对于ServiceManager的使用,我们在应用程序编程时也会经常使用到,比如我们需要使用Sensor时,我们一般会做如下的调用:

2012-10-19 20:36:59

阅读数:18996

评论数:3

Linux RT(2)-硬实时Linux(RT-Preempt Patch)的中断线程化

底半部:线程化IRQ 线程化中断的支持在2009年已经进入Linux官方内核,详见Thomas Gleixner的patch: http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=3aa5

2012-10-19 17:00:11

阅读数:9675

评论数:5

Service与Android系统设计(3)-- ActivityManager的实现

通过Remote Service实现Android系统 对于应用程序编程来说,aidl只是一种可选项,绝大部分的应用程序,其实只是关注于图形界面与交互,所以大部分情况下只是在写Activity,用到S

2012-10-18 22:55:08

阅读数:14278

评论数:4

Service与Android系统设计(2)-- Parcel

Parcel与Parcelable 当我们在调用远程方法时,需要在进程间传递参数以及返回结果。这种类似的处理方式,

2012-10-18 22:50:17

阅读数:12059

评论数:2

Service与Android系统实现(1)-- 应用程序里的Service

讲述Android Service(JAVA Service、Native Service等)背后的实现原理,透析基于Binder的RPC以及Linux Binder驱动。 Service与Android

2012-10-18 22:44:51

阅读数:40831

评论数:11

分享《Linux设备驱动开发详解》第2版高清电子版

新浪微博:@宋宝华Barry 在@微盘 分享了《linux设备驱动开发详解》第2版1080P电子版,拟升级为第3版,3.6内核,Cortex-A9 SMP,Device tree, DVFS, suspend/hibernation, big.LITTLE, CMA,分层/分离思想,Linux移植...

2012-10-18 00:10:59

阅读数:19499

评论数:19

Android应用程序开发以及背后的设计思想深度剖析(5)

特别声明:本系列文章LiAnLab.org著作权所有,转载请注明出处。作者系LiAnLab.org资深Android技术顾问吴赫老师。本系列文章交流与讨论:@宋宝华Barry 紧接连载四,我们接下从功耗控制、功能接口和可移植性的角度分别分析Android系统为应用程序提供的支撑,本次连载为本...

2012-10-14 09:08:06

阅读数:12442

评论数:9

Linux RT(1)-硬实时Linux(RT-Preempt Patch)在PC上的编译、使用和测试

特别声明:本系列文章LiAnLab.org著作权所有,转载请注明出处。by  @宋宝华Barry  Vanilla kernel的问题 Linux kernel在spinlock、irq上下文方面无法抢占,因此高优先级任务被唤醒到得以执行的时间并不能完全确定。同时,Linux kern...

2012-10-03 19:02:40

阅读数:18273

评论数:2

Android应用程序开发以及背后的设计思想深度剖析(4)

特别声明:本系列文章LiAnLab.org著作权所有,转载请注明出处。作者系LiAnLab.org资深Android技术顾问吴赫老师。本系列文章交流与讨论:@宋宝华Barry 紧接连载三,我们接下从性能的角度分别分析Android系统为应用程序提供的支撑。 前情回顾: Android应用程序...

2012-09-25 21:56:38

阅读数:8390

评论数:4

Essential Linux Device Driver附录A . Linux汇编

By 宋宝华 / 本系列文章交流与讨论:@宋宝华Barry 设备驱动程序有时需要用汇编实现一些代码片断,因此让我们看看Linux上汇编编程的不同特性。 图A.1显示了Linux在PC兼容系统上的引导顺序,是第2章“内核一瞥”中图2.1的缩减版。图中的固件组件是用不同的汇编语法实现的: ·...

2012-09-17 22:44:29

阅读数:3913

评论数:0

Android应用程序开发以及背后的设计思想深度剖析(3)

特别声明:本系列文章LiAnLab.org著作权所有,转载请注明出处。作者系LiAnLab.org资深Android技术顾问吴赫老师。本系列文章交流与讨论:@宋宝华Barry 我们接下来从安全性,性能,功能,可移植性的角度分别分析Android系统为应用程序提供的支撑。 回顾前情: ...

2012-09-14 21:07:44

阅读数:15207

评论数:16

在Android源码树中添加userspace I2C读写工具(i2c-util)

by @宋宝华Barry 通过/dev/i2c-n节点,用户可以在userspace直接访问板上的i2c外设寄存器,主要是透过I2C_RDWR这个IO控制命令将i2c_msg数组传递给kernel去执行。下面的代码可以完成这个功能: [cpp] view plaincopy ...

2012-08-29 10:41:46

阅读数:7812

评论数:11

Android应用程序开发以及背后的设计思想深度剖析(2)

特别声明:本系列文章LiAnLab.org著作权所有,转载请注明出处。作者系LiAnLab.org资深Android技术顾问吴赫老师。本系列文章交流与讨论:@宋宝华Barry Android的系统设计,与别的智能手机操作系统有很大区别,甚至在以往的任何操作系统里,很难找到像Android这样进行...

2012-08-28 20:35:22

阅读数:10247

评论数:5

Android应用程序开发以及背后的设计思想深度剖析(1)

本文内容,主题是透过应用程序来分析Android系统的设计原理与构架。我们先会简单介绍一下Android里的应用程序编程,然后以这些应用程序在运行环境上的需求来分析出,为什么我们的Android系统需要今天这样的设计方案,这样的设计会有怎样的意义, Android究竟是基于怎样的考虑才变成今天的这...

2012-08-06 15:00:05

阅读数:28013

评论数:9

Android架构纵横谈之二——基于性能的考虑(1)

特别声明:本系列文章LiAnLab.org著作权所有,转载请注明出处。by  @宋宝华Barry 《Android架构纵横谈之一——软件自愈能力》已经谈地告了一个段落。接下来这个系列二我们谈Android性能方面的考虑。Android系统组件繁杂,盘根错节,若非在性能上进行充分的考虑,恐怕会...

2012-07-26 22:36:26

阅读数:12864

评论数:7

Android架构纵横谈之——软件自愈能力 (3)

特别声明:本系列文章LiAnLab.org著作权所有,转载请注明出处。by  @宋宝华Barry 最近马不停蹄往返进行Linux技术讲座,所以本回delay了一周。上回书说到Android中生死与共的Zygote和SystemServer,今回书我们讲SystemServer的watch...

2012-07-15 15:12:23

阅读数:10800

评论数:10

Android架构纵横谈之——软件自愈能力 (2)

特别声明:本系列文章LiAnLab.org著作权所有,转载请注明出处。by  @宋宝华Barry 上回书我们说到Android里的init会监测init.rc中启动的service并根据情况重启之。今回书我们说Android中生死与共的Zygote和SystemServer。 第二...

2012-07-01 15:46:48

阅读数:11724

评论数:13

Android架构纵横谈之——软件自愈能力 (1)

特别声明:本系列文章LiAnLab.org著作权所有,转载请注明出处。by  @宋宝华Barry            笔者决定,从今天开始,连载Android架构纵横谈系列。之所以叫纵横谈而不是叫别的题目,是因为整个系列是横着竖着乱弹琴,可以说是阴阳不分,黑白颠倒,望湘园里望湘园。我不...

2012-06-24 01:15:43

阅读数:18210

评论数:18

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