用embedded-lfs构建嵌入式Linux系统
By 李先静 1,410 views
embedded-lfs代表embedded linux from scratch,也就是从头构建一个嵌入式Linux系统,不过它与标准LFS没有太大关系,只是借用了LFS这个名称而已。要说构建嵌入式Linux系统,openembedded相关项目应该是最有名的,不过它做得太复杂,如果不出问题,用起来很方便,但是一旦出点问题,就不知怎么去搞了。玩了一次,总是出问题,让我很沮丧,后来在华清远见上课时,自己整了一个embedded-lfs。embedded-lfs非常简单,当然功能也要弱一些,对于只想玩玩的初学者还是有帮助的。
用内存管理器的钩子函数跟踪内存泄漏
By 李先静 1,031 views
作为Linux下的C程序员,我总是习惯在单元测试通过之后,再用valgrind把程序跑一下,看看有没有内存泄漏和内存越界等问题。可惜的是,有时valgrind并不能很好的工作,像基于DirectFB的多进程程序在valgrind下是跑不起的, 这时我们可以通过内存管理器的钩子函数来跟踪内存泄漏。
DA9034驱动程序阅读笔记(6)
By 李先静 962 views
DA9034是一个集成了电源管理、音频设备、触摸屏控制器和能用A/D|D/A转换的多功能芯片。最近读了一下相关驱动程序,这里记些笔记,不成体系,作为备忘而已。有兴趣的朋友可以一起讨论。
电源驱动主要是为用户空间提供一些接口,让用户空间可以查询相应的状态,比如是否在充电,以及电池的电量等。
DA9034驱动程序阅读笔记(5)
By 李先静 689 views
DA9034是一个集成了电源管理、音频设备、触摸屏控制器和能用A/D|D/A转换的多功能芯片。最近读了一下相关驱动程序,这里记些笔记,不成体系,作为备忘而已。有兴趣的朋友可以一起讨论。
充电驱动程序原理如下:注册中断事件PMIC_EVENT_CHARGER | PMIC_EVENT_VBUS,在有充电器和USB线插入的时候,驱动程序可以感知,然后启动或关闭充电。
DA9034驱动程序阅读笔记(4)
By 李先静 949 views
DA9034是一个集成了电源管理、音频设备、触摸屏控制器和能用A/D|D/A转换的多功能芯片。最近读了一下相关驱动程序,这里记些笔记,不成体系,作为备忘而已。有兴趣的朋友可以一起讨论。
DA9034的耳机插拔检测和线控开关检测的原理比较简单,因为不同状态电压不一样。插入耳机时,DA9034会上报中断给CPU,驱动程序在中断处理程序中查询相应的状态即可。
DA9034驱动程序阅读笔记(3)
By 李先静 805 views
DA9034是一个集成了电源管理、音频设备、触摸屏控制器和能用A/D|D/A转换的多功能芯片。最近读了一下相关驱动程序,这里记些笔记,不成体系,作为备忘而已。有兴趣的朋友可以一起讨论。
DA9034有两个输入设备,一个开关机键和触摸屏。
DA9034驱动程序阅读笔记(2)
By 李先静 1,057 views
DA9034是一个集成了电源管理、音频设备、触摸屏控制器和能用A/D|D/A转换的多功能芯片。最近读了一下相关驱动程序,这里记些笔记,不成体系,作为备忘而已。有兴趣的朋友可以一起讨论。
DA9034支持四类LED驱动:LCD背光、键盘背光、FLASH_LED和PC_LED。
Android_Debugging
By 李先静 1,362 views
不能不转的好文章:Android_Debugging
我花了很多时间去研究,结果都是走了弯路。当Thinker Li说我完全误解了的gdbserver的功能时,我即羞愧又高兴,羞愧的是犯这种低级错误还浑然不觉,高兴的是被高手及时点醒。
欢迎大家关注0xlab,里面都是些真正的hacker。
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看了一下:
虚拟键盘驱动程序
By 李先静 944 views
前段时间写一个程序,要向系统中注入按键事件,我又不想信赖于具体的GUI,就写一个虚拟键盘设备驱动程序,感觉挺好用的,不过后来发现linux其实有一个uinput驱动程序实现了类似的功能。幸好后来才发现uinput这玩意儿,否则就没有机会去写了这个程序了,有时真是宁愿知识面窄一点,这样才有机会重复发明一些轮子,从中获得一些乐趣。
Linux下的磁盘加密方法
By 李先静 1,160 views
随着智能手机的计算能力和存储能力的提高,手机中将会存放越来越多的私有数据,这些数据的泄密可能造成严重后果。手机信息安全一直是我们的重点之一,对于一些重要的功能我们要求鉴权后才能使用,但这只能挡住初级的黑客,只能防君子不能防小人,所以我们希望把重要的数据进行加密后再保存。为此,今天花了一点时间去了解Linux 磁盘加密的方法。
Linux PPP 数据收发流程
By 李先静 2,181 views
PPP(Point- to-Point)提供了一种标准的方法在点对点的连接上传输多种协议数据包,它最常见的用途可能是传统的拨号上网了(据说现在的宽带接入也有采用 PPPOE方式的)。在Linux Mobile Phone上,网络应用程序使用PPP作为与GSM模组之间的通信协议,最近遇到了一点关于PPP的麻烦,所以花了点时间去研究它。
Linux HAL (Hardware Abstraction Layer)的工作原理
By 李先静 1,068 views
HAL是Hardware Abstraction Layer的首字母缩写。我最早是在Winnt 3.5的帮助中知道这个名词的,对帮助文档中的说法我比较认同,所以一直对它抱有好感。不过Windows下的HAL和Linux下的HAL两者所指并非相同之物:
Windows下的HAL:位于操作系统的最底层,直接操作物理硬件,隔离与硬件相关的信息,为上层的操作系统和设备驱动程序提供一个统一的接口,起到对硬件的抽象作用。有了HAL,编写驱动程序就容易多了,因为HAL的接口不但使用简单,而且具有更好的可移植性(没用过)。
Linux的鉴权(Authentication)机制–PAM
By 李先静 758 views
有人说鉴权(Authentication) 不就是对用户名和密码进行验证,以确认使用者的身份吗?没错,最简单的情况就是如此。但是,让用于单机的Login方法去代替于网络环境的 Kerberos方法,用户一定会觉得有很多不便。除此之外,事情也不那简单,比如对用户有效期的检查、对使用者的时间限制、对用户组的限制和对本地用户和远程用户的区分等等,处理方法都是不同的。由此可见,不同的场境需要不同的鉴权(Authentication)方法,或者需要多种鉴权(Authentication)方法的组合。
TinyMail研究—Camel-lite的插件系统
By 李先静 421 views
邮件的收/发协议有好几种,比如SMTP、POP和IMAP等等,Tinymail并不依赖于特定的收/发协议,这些协议都是以插件的方式加入进来的,扩展和裁减都很方便。Tinymail把协议的实现称为提供者(provider)。
TinyMail研究—Stream及相关设计模式
By 李先静 617 views
Stream是对输入/输出的抽象,为使用者提供一个统一的接口,使用者使用这个接口而不必关心它的实现,这是针对接口编程的典型例子。TinyMail实现了很多Stream,它们的关系如下:
TinyMail研究—类型系统
By 李先静 483 views
TinyMail虽然是用C语言开发的,但完全采用了面向对象的设计方法,为此它实现了自己的类型系统。TinyMail的类型系统和glib的类型系统极为类似,让人奇怪的是,TinyMail本身已经使用了glib,为什么它不用gobject的类型系统,而要自己实现一套呢?抱着这个疑问,我花了一些时间去研究它的实现:
编译ARM版Prelink
By 李先静 823 views
为了加快应用程序的起动过程和降低进程之间非共享内存,花好了几天时间折腾prelink,虽然效果不太明显,还是有一定的效果。这里介绍一下编译ARM版prelink的方法:
嵌入式Linux优化
By 李先静 1,018 views
昨天代表华清远见在深圳大学讲《嵌入式Linux优化》。呵,第一次上台,不是一般的紧张,如果没有讲好,请大家原谅。讲稿可以在这里下载。谢谢。欢迎交流。
OpenOBEX代码阅读笔记
By 李先静 952 views
OBEX是Object Exchang的简称,本来是IrDA™为红外传输制定的协议,但它并不限于特定的底层传输方式,可以运行于blueteeth、usb和tcp/ip其它多种协议之上。OBEX主要是会话层协议,同时也包括应用层部分功能。它可以传输任何对象,在手机中,通常用来传输文件、图片、名片(Vcard)和日程(Vcal)等。OpenOBEX是一套开放源代码的OBEX协议实现,提供client和server两端的功能,本文简要介绍一下OBEX和OpenOBEX。
建立手机平台的产品线
By 李先静 940 views
做一个手机平台不容易,基于一个平台做产品化也不容易。为了满足高、中、低三类用户,以及每类用户不同的偏好,在同一个平台上演化出几十个项目是很常见的事。产品化的难易程度往往依赖于平台的可扩充性和可裁减性。本文介绍一些产品化的常用手法,事先了解这些手法,有助于开发出更灵活的平台。
彩信库(mmslib)设计备忘录
By 李先静 1,256 views
彩信库(mmslib) 确实有一点复杂,尽管有两位高手指点,还是花了12个工作日才完成它的设计、编码和测试,写了超过4000行的C代码(除去测试程序、注释、空行和头文件)。主要原因还是没有相关经验,有些问题不得不花时间去尝试。这里写个备忘录,供有兴趣的朋友参考,避免走弯路。



January 16th, 2010