LINUX内核精简
Linux自身具备一整套工具链,容易自行建立嵌入式系统的开发环境和交叉运行环境,并且可以跨越嵌入式系统开发中的仿真工具(ICE)的障碍。内核的完全开放使人们可以自己设计和开发出真正的硬实时系统,软实时系统在Linux中也容易得到实现。强大的网络支持使得可以利用Linux的网络协议栈将其开发成为嵌入式的TCP/IP网络协议栈。
Linux提供了完成嵌入功能的基本内核和所需要的所有用户界面,它是多面的。它能处理嵌入式任务和用户界面。
一个小型的嵌入式Linux系统只需要下面三个基本元素:
* 引导工具
* Linux微内核,由内存管理、进程管理和事务处理构成
* 初始化进程
如果要让它能干点什么且继续保持小型化,还得加上:
* 硬件驱动程序
* 提供所需功能的一个或更多应用程序。
再增加功能,或许需要这些:
* 一个文件系统(也许在ROM或RAM)中
* TCP/IP网络堆栈
下面我们就从精简内核、系统启动、驱动程序将、X-Window换成MicroWindows四个步骤介绍嵌入式Linux的实际开发。
精简内核
构造内核的常用命令包括:make config、dep、clean、mrproper、zImage、bzImage、modules、modules_install。命令说明略。
现在举个例子说明一下:
我使用的是 Mandrake内附的 2.2.15。我没有修改任何一行程序码,完全只靠修改组态档得到这些数据。
首先,使用 make config 把所有可以拿掉的选项都拿得。
不要 floppy;不要SMP、MTRR;不要 Networking、SCSI;把所有的 block device 移除,只留下 old IDE device;把所有的 character device 移除;把所有的 filesystem 移除,只留下 minix;不要 sound 支援。相信我,我己经把所有的选项都移除了。这样做之后,我得到了一个 188K 的核心。
还不够小吗? OK,再加上一招,请把下列两个档案中的 -O3,-O2 用 -Os 取代。
./Makefile
./arch/i386/kernel/
Makefile
这样一来,整个核心变小了 9K,成为 179K。
不过这个核心恐怕很难发挥 Linux 的功能,因此我决定把网络加回去。把General中的 network support 加回去,重新编译,核心变成 189 K。10K就加上个 TCP/IP stack,似乎是很上算的生意。
有stack没有driver也是枉然,所以我把 embedded board常用的RTL8139的driver加回去,195K。
如果你需要 DOS 档案系统,那大小成为 213K。如果 minix 用 ext2 换代,则大小成长至 222K。
相关文档:
一:前言
最近在研究android的sensor driver,主要是E-compass,其中用到了Linux input子系统.在网上也看了很多这方面的资料,感觉还是这篇分析的比较细致透彻,因此转载一下以便自己学习,同时和大家分享!
(这篇博客主要是以键盘驱动为例的,不过讲解的是Linux Input Subsystem,可以仔细的研究一下!)
键盘驱动将检 ......
USB 内核(USB驱动,USBD )处于系统的中心,对于它进行研究是能够进行USB驱动开发(包括客户驱动和主机驱动)的第一步。它为客户端驱动和主机控制器驱动提供了主要数据结构和接口函数,主要有四类功能:客户端驱动管理,USB设备的配置和管理,主机控制器的管理,协议控制命令集和数据传输的管理。具体代码主要集中在 linux ......
windows下:
1.下载用于 Windows 的 Instant Client Basic 程序包:http://download.oracle.com/otn/nt/instantclient/111070/instantclient-basic-win32-11.1.0.7.0.zip
2.解压缩
创建一个子目录(例如,d:\oci),然后从压缩文件中复制以下库:
oraociei10.dll
orannzsbb10.dll
oci.dll
到此目录下
打开PHP.ini ......
由于在windows下默认是gb编码,而我的vim默认是utf-8(gedit默认也是utf-8),所以打开会成乱码。修改了一下配置文件,使vi支持gb编码就好了。
$vi ~/.vimrc
let &termencoding=&encoding
set fileencodings=utf-8,gbk
$:wq
再次打开vi,显示就正常了。
vim中编辑不同编码的文件时需要注意的一些地方
......
“工欲善其事 必先利其器”现在将一些常见的调试工具进行一下总结.
【1】
名称:MEMWATCH
功能:
1、MEMWATCH 支持 ANSI C
2、它提供结果日志纪录
3、能检测双重释放(double-free)
4、错误释放(erroneous f ......