用embedded-lfs构建嵌入式Linux系统

By 李先静 1,410 views

embedded-lfs代表embedded linux from scratch,也就是从头构建一个嵌入式Linux系统,不过它与标准LFS没有太大关系,只是借用了LFS这个名称而已。要说构建嵌入式Linux系统,openembedded相关项目应该是最有名的,不过它做得太复杂,如果不出问题,用起来很方便,但是一旦出点问题,就不知怎么去搞了。玩了一次,总是出问题,让我很沮丧,后来在华清远见上课时,自己整了一个embedded-lfs。embedded-lfs非常简单,当然功能也要弱一些,对于只想玩玩的初学者还是有帮助的。

categoriaLinux Mobile commento2 Comments dataJanuary 16th, 2010
Read All

用内存管理器的钩子函数跟踪内存泄漏

By 李先静 1,031 views

作为Linux下的C程序员,我总是习惯在单元测试通过之后,再用valgrind把程序跑一下,看看有没有内存泄漏和内存越界等问题。可惜的是,有时valgrind并不能很好的工作,像基于DirectFB的多进程程序在valgrind下是跑不起的, 这时我们可以通过内存管理器的钩子函数来跟踪内存泄漏。

categoriaLinux Mobile commento1 Comment dataDecember 20th, 2009
Read All

DA9034驱动程序阅读笔记(6)

By 李先静 962 views

DA9034是一个集成了电源管理、音频设备、触摸屏控制器和能用A/D|D/A转换的多功能芯片。最近读了一下相关驱动程序,这里记些笔记,不成体系,作为备忘而已。有兴趣的朋友可以一起讨论。

电源驱动主要是为用户空间提供一些接口,让用户空间可以查询相应的状态,比如是否在充电,以及电池的电量等。

categoriaAndroid, Linux Mobile commentoNo Comments dataOctober 30th, 2009
Read All

DA9034驱动程序阅读笔记(5)

By 李先静 689 views

DA9034是一个集成了电源管理、音频设备、触摸屏控制器和能用A/D|D/A转换的多功能芯片。最近读了一下相关驱动程序,这里记些笔记,不成体系,作为备忘而已。有兴趣的朋友可以一起讨论。

充电驱动程序原理如下:注册中断事件PMIC_EVENT_CHARGER | PMIC_EVENT_VBUS,在有充电器和USB线插入的时候,驱动程序可以感知,然后启动或关闭充电。

categoriaAndroid, Linux Mobile commento1 Comment dataOctober 30th, 2009
Read All

DA9034驱动程序阅读笔记(4)

By 李先静 949 views

DA9034是一个集成了电源管理、音频设备、触摸屏控制器和能用A/D|D/A转换的多功能芯片。最近读了一下相关驱动程序,这里记些笔记,不成体系,作为备忘而已。有兴趣的朋友可以一起讨论。

DA9034的耳机插拔检测和线控开关检测的原理比较简单,因为不同状态电压不一样。插入耳机时,DA9034会上报中断给CPU,驱动程序在中断处理程序中查询相应的状态即可。

categoriaAndroid, Linux Mobile commentoNo Comments dataOctober 27th, 2009
Read All

DA9034驱动程序阅读笔记(3)

By 李先静 805 views

DA9034是一个集成了电源管理、音频设备、触摸屏控制器和能用A/D|D/A转换的多功能芯片。最近读了一下相关驱动程序,这里记些笔记,不成体系,作为备忘而已。有兴趣的朋友可以一起讨论。

DA9034有两个输入设备,一个开关机键和触摸屏。

categoriaAndroid, Linux Mobile commentoNo Comments dataOctober 26th, 2009
Read All

DA9034驱动程序阅读笔记(2)

By 李先静 1,057 views

DA9034是一个集成了电源管理、音频设备、触摸屏控制器和能用A/D|D/A转换的多功能芯片。最近读了一下相关驱动程序,这里记些笔记,不成体系,作为备忘而已。有兴趣的朋友可以一起讨论。

DA9034支持四类LED驱动:LCD背光、键盘背光、FLASH_LED和PC_LED。

categoriaAndroid, Linux Mobile commentoNo Comments dataOctober 24th, 2009
Read All

Android_Debugging

By 李先静 1,362 views

不能不转的好文章:Android_Debugging

我花了很多时间去研究,结果都是走了弯路。当Thinker Li说我完全误解了的gdbserver的功能时,我即羞愧又高兴,羞愧的是犯这种低级错误还浑然不觉,高兴的是被高手及时点醒。

欢迎大家关注0xlab,里面都是些真正的hacker。

categoriaAndroid, Linux Mobile commento4 Comments dataOctober 21st, 2009
Read All

Fedora9/10/11 USBNET不稳定的解决办法

By 李先静 968 views

一直使用Fedora 7,用USBNET下载Broncho/Androind的文件系统没有出现过问题,这几天在Fedora 9上下载文件系统,发现刚下载一小部分数据后就不动了。开始我怀疑是内核中的USBNET有改动,把内核退出到2.6.21和2.6.23也不行。后来看了一下/var/log/message,怀疑是NetworkManager用户调用dhclient引起的,用ps看了一下:

categoriaLinux Mobile commento1 Comment dataOctober 7th, 2009
Read All

虚拟键盘驱动程序

By 李先静 944 views

前段时间写一个程序,要向系统中注入按键事件,我又不想信赖于具体的GUI,就写一个虚拟键盘设备驱动程序,感觉挺好用的,不过后来发现linux其实有一个uinput驱动程序实现了类似的功能。幸好后来才发现uinput这玩意儿,否则就没有机会去写了这个程序了,有时真是宁愿知识面窄一点,这样才有机会重复发明一些轮子,从中获得一些乐趣。

categoriaLinux Mobile commento1 Comment dataSeptember 12th, 2009
Read All

Linux下的磁盘加密方法

By 李先静 1,160 views

随着智能手机的计算能力和存储能力的提高,手机中将会存放越来越多的私有数据,这些数据的泄密可能造成严重后果。手机信息安全一直是我们的重点之一,对于一些重要的功能我们要求鉴权后才能使用,但这只能挡住初级的黑客,只能防君子不能防小人,所以我们希望把重要的数据进行加密后再保存。为此,今天花了一点时间去了解Linux 磁盘加密的方法。

categoriaLinux Mobile commentoNo Comments dataAugust 23rd, 2009
Read All

Linux PPP 数据收发流程

By 李先静 2,181 views

PPP(Point- to-Point)提供了一种标准的方法在点对点的连接上传输多种协议数据包,它最常见的用途可能是传统的拨号上网了(据说现在的宽带接入也有采用 PPPOE方式的)。在Linux Mobile Phone上,网络应用程序使用PPP作为与GSM模组之间的通信协议,最近遇到了一点关于PPP的麻烦,所以花了点时间去研究它。

categoriaLinux Mobile commento1 Comment dataAugust 23rd, 2009
Read All

Embedded Linux From Scratch

By 李先静 879 views

Cross Compile:

categoriaLinux Mobile commentoNo Comments dataJuly 25th, 2009
Read All

Linux HAL (Hardware Abstraction Layer)的工作原理

By 李先静 1,068 views

HAL是Hardware Abstraction Layer的首字母缩写。我最早是在Winnt 3.5的帮助中知道这个名词的,对帮助文档中的说法我比较认同,所以一直对它抱有好感。不过Windows下的HAL和Linux下的HAL两者所指并非相同之物:

Windows下的HAL:位于操作系统的最底层,直接操作物理硬件,隔离与硬件相关的信息,为上层的操作系统和设备驱动程序提供一个统一的接口,起到对硬件的抽象作用。有了HAL,编写驱动程序就容易多了,因为HAL的接口不但使用简单,而且具有更好的可移植性(没用过)。

categoriaLinux Mobile commentoNo Comments dataJune 27th, 2009
Read All

udev的实现原理

By 李先静 819 views

udev的实现原理

categoriaLinux Mobile commentoNo Comments dataJune 27th, 2009
Read All

Linux的鉴权(Authentication)机制–PAM

By 李先静 758 views

有人说鉴权(Authentication) 不就是对用户名和密码进行验证,以确认使用者的身份吗?没错,最简单的情况就是如此。但是,让用于单机的Login方法去代替于网络环境的 Kerberos方法,用户一定会觉得有很多不便。除此之外,事情也不那简单,比如对用户有效期的检查、对使用者的时间限制、对用户组的限制和对本地用户和远程用户的区分等等,处理方法都是不同的。由此可见,不同的场境需要不同的鉴权(Authentication)方法,或者需要多种鉴权(Authentication)方法的组合。

categoriaLinux Mobile commento1 Comment dataJune 27th, 2009
Read All

TinyMail研究—Camel-lite的插件系统

By 李先静 421 views

邮件的收/发协议有好几种,比如SMTP、POP和IMAP等等,Tinymail并不依赖于特定的收/发协议,这些协议都是以插件的方式加入进来的,扩展和裁减都很方便。Tinymail把协议的实现称为提供者(provider)。

categoriaLinux Mobile commentoNo Comments dataJune 27th, 2009
Read All

TinyMail研究—邮件的表示与解析

By 李先静 440 views

在TinyMail中,表示邮件的类以及它们之间的关系如下图所示:

categoriaLinux Mobile commentoNo Comments dataJune 27th, 2009
Read All

TinyMail研究—Stream及相关设计模式

By 李先静 617 views

Stream是对输入/输出的抽象,为使用者提供一个统一的接口,使用者使用这个接口而不必关心它的实现,这是针对接口编程的典型例子。TinyMail实现了很多Stream,它们的关系如下:

categoriaLinux Mobile commentoNo Comments dataJune 27th, 2009
Read All

TinyMail研究—类型系统

By 李先静 483 views

TinyMail虽然是用C语言开发的,但完全采用了面向对象的设计方法,为此它实现了自己的类型系统。TinyMail的类型系统和glib的类型系统极为类似,让人奇怪的是,TinyMail本身已经使用了glib,为什么它不用gobject的类型系统,而要自己实现一套呢?抱着这个疑问,我花了一些时间去研究它的实现:

categoriaLinux Mobile commentoNo Comments dataJune 27th, 2009
Read All

编译ARM版Prelink

By 李先静 823 views

为了加快应用程序的起动过程和降低进程之间非共享内存,花好了几天时间折腾prelink,虽然效果不太明显,还是有一定的效果。这里介绍一下编译ARM版prelink的方法:

categoriaLinux Mobile commentoNo Comments dataJune 27th, 2009
Read All

嵌入式Linux优化

By 李先静 1,018 views

昨天代表华清远见在深圳大学讲《嵌入式Linux优化》。呵,第一次上台,不是一般的紧张,如果没有讲好,请大家原谅。讲稿可以在这里下载。谢谢。欢迎交流。
null

categoriaLinux Mobile commento5 Comments dataJune 21st, 2009
Read All

OpenOBEX代码阅读笔记

By 李先静 952 views

OBEX是Object Exchang的简称,本来是IrDA™为红外传输制定的协议,但它并不限于特定的底层传输方式,可以运行于blueteeth、usb和tcp/ip其它多种协议之上。OBEX主要是会话层协议,同时也包括应用层部分功能。它可以传输任何对象,在手机中,通常用来传输文件、图片、名片(Vcard)和日程(Vcal)等。OpenOBEX是一套开放源代码的OBEX协议实现,提供client和server两端的功能,本文简要介绍一下OBEX和OpenOBEX。

categoriaLinux Mobile commentoNo Comments dataMarch 25th, 2009
Read All

建立手机平台的产品线

By 李先静 940 views

做一个手机平台不容易,基于一个平台做产品化也不容易。为了满足高、中、低三类用户,以及每类用户不同的偏好,在同一个平台上演化出几十个项目是很常见的事。产品化的难易程度往往依赖于平台的可扩充性和可裁减性。本文介绍一些产品化的常用手法,事先了解这些手法,有助于开发出更灵活的平台。

categoriaLinux Mobile commento1 Comment dataMarch 4th, 2009
Read All

彩信库(mmslib)设计备忘录

By 李先静 1,256 views

彩信库(mmslib) 确实有一点复杂,尽管有两位高手指点,还是花了12个工作日才完成它的设计、编码和测试,写了超过4000行的C代码(除去测试程序、注释、空行和头文件)。主要原因还是没有相关经验,有些问题不得不花时间去尝试。这里写个备忘录,供有兴趣的朋友参考,避免走弯路。

categoriaLinux Mobile commento3 Comments dataMarch 4th, 2009
Read All