在PC系统结构中,线性地址0xA0000以上,即640K以上用于图形接口卡和BIOS自身,640K以下为系统的基本内存。如果配置更多的内存,则0x100000,即1MB处开始称为高内存。当BIOS引导一个系统时,总是把引导扇区读入到基本内存地址为0x7c00的地方,然后跳转到此执行引导扇区的代码。这段代码将自身搬运到0x90000处,并跳转到那继续执行,然后通过BIOS提供的读磁盘调用“int 0x13”从磁盘上读入setup和内核映像。其中setup的映像读入到0x90200处,然后跳转到setup的代码中。
阅读全文>
发表于 @ 2008年06月30日 11:08:00|评论(loading...)|编辑|收藏
1、开机;
2、 BIOS加电自检(POST——Power On Self Test),包括检查RAM,keyboard,显示器,软硬磁盘等等。Intel系列的CPU首先进入的是实模式,并开始执行位于地址0xFFFF0处的代码,也就是ROM-BIOS起始位置的代码;
3、搜索启动的操作系统,根据BIOS设置,可能会依次访问每个软盘的第一个扇区、硬盘、CD-ROW等;一旦找到有效的启动设备,将第一个扇区(0头0道1扇区,也就是Boot Sector)的内容读入内存地址0x7c00处;
阅读全文>
发表于 @ 2008年06月30日 11:02:00|评论(loading...)|编辑|收藏
1.2 Ramdisk与硬盘分区的不同
RAM disk不适合作为长期保存文件的介质,掉电后Ramdisk的内容会随内存内容的消失而消失。
RAM disk的其中一个优势是它的读写速度高,内存盘的存取速度要远快于目前的物理硬盘,可以被用作需要高速读写的文件。
阅读全文>
发表于 @ 2008年06月12日 14:48:00|评论(loading...)|编辑|收藏
一直用着vi,有朋友劝我用vim,那么它们有什么区别呢?简单点来说,它们都是多模式编辑器,不同的是vim 是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面。 阅读全文>
发表于 @ 2008年05月09日 10:14:00|评论(loading...)|编辑|收藏
Emacs 的命令通常包括控制键(就是上面标有 Ctrl或Ctl的那个)或者是META键(上面标有EDIT或ALT)。为了方便起见我们将用下面的缩写来代替这些键的全称:
C- 意思是当敲入字符时同时按住控制键,因此,C-f表 示:按住控制键并且按 f 。 M- 表示当键入时按住META或ALT或EDIT键。如果没有META 或ALT或EDIT键,则用ESC键代替。表示ESC键
阅读全文>
发表于 @ 2008年05月08日 22:51:00|评论(loading...)|编辑|收藏
分析linux内核源代码,最好安装阅读源代码的工具,可以用来帮助阅读源代码的工具有lxr,SourceInsight,global,这里介绍lxr的用法。
lxr是linux下查看源码的软件,要使用lxr首先需要安装HTTP服务器apache
阅读全文>
发表于 @ 2008年05月04日 21:09:00|评论(loading...)|编辑|收藏
Windows下的源码阅读工具Souce Insight凭借着其易用性和多种编程语言的支持,无疑是这个领域的“带头大哥”。Linux/UNIX环境下呢?似乎仍然是处于百花齐放,各有千秋的春秋战国时代,实际上,似乎其环境下的任何软件都是处于一种逐鹿中原的态势,也许这就是“集市”之于“大教堂”的优势所在吧!主要的交叉索引工具有:ctags、cscope、global、lxr等。下面将就各软件的优劣作一简单介绍,但无意再次引起此类工具之争,萝卜白菜,你仍可选择你之所爱,所以本文仅供参考!阅读全文>
发表于 @ 2008年05月04日 21:03:00|评论(loading...)|编辑|收藏
如果以为到了c代码可以松一口气的话,就大错特措了,linux的c也不比汇编好懂多少,相反到掩盖了汇编的一些和机器相关的部分,有时候更难懂。其实作为编写操作系统的c代码,只不过是汇编的另一种写法,和机器代码的联系是很紧密的。 阅读全文>
发表于 @ 2008年04月17日 12:05:00|评论(loading...)|编辑|收藏
首先,porting linux的时候要规划内存影像,如小弟的系统有64m SDRAM,
地址从0x 0800 0000 -0x0bff ffff,32m flash,地址从0x0c00 0000-0x0dff ffff.
规划如下:bootloader, linux kernel, rootdisk放在flash里。
具体从 0x0c00 0000开始的第一个1M放bootloader,
0x0c10 0000开始的2m放linux kernel,从 0x0c30 0000开始都给rootdisk。阅读全文>
发表于 @ 2008年04月17日 12:04:00|评论(loading...)|编辑|收藏
内核在启动时可以传递一个字符串命令行,来控制内核启动的过程,例如:
"console=ttyS2,115200 mem=64M@0xA0000000"
这里指定了控制台是串口2,波特率是115200,内存大小是64M,物理基地址是0xA0000000。
另外我们可以在内核中定义一些全局变量,使用这些全局变量控制内核的配置,例如usb驱动中定义了
阅读全文>
发表于 @ 2008年04月17日 12:02:00|评论(loading...)|编辑|收藏
计算机在启动时都是先加电,然后进行硬件检测并引导操作系统的初始化程序,然后操作系统的初始化程序程负责读入系统内核并建产系统的运行环境.一这过程相对来说比较复而且与CPU体系结构相关,这里我们通过linux并以i386的体系结构对这一过程进行较为详细的说明.
阅读全文>
发表于 @ 2008年04月17日 11:20:00|评论(loading...)|编辑|收藏
汇编语言的优点是速度快,可以直接对硬件进行操作,这对诸如图形处理等关键应用是非常重要的。Linux 是一个用 C 语言开发的操作系统,这使得很多程序员开始忘记在 Linux 中还可以直接使用汇编这一底层语言来优化程序的性能。本文为那些在Linux 平台上编写汇编代码的程序员提供指南,介绍 Linux 汇编语言的语法格式和开发工具,并辅以具体的例子讲述如何开发实用的Linux 汇编程序。
阅读全文>
发表于 @ 2008年04月17日 10:54:00|评论(loading...)|编辑|收藏
• RomFS:只读文件系统,可以放在ROM空间,也
可以在系统的RAM中,嵌入式linux中常用来作
根文件系统
• RamFS:利用VFS自身结构而形成的内存文件系
统,使用系统的RAM空间
阅读全文>
发表于 @ 2008年04月09日 16:21:00|评论(loading...)|编辑|收藏
一共5种USB的 Linux 制作。 我只根据 SLAX 的教程制作的, 又兴趣的朋友可以去试试其他的几个版本。下面就介绍SLAX的安装步骤:阅读全文>
发表于 @ 2008年04月08日 14:35:00|评论(loading...)|编辑|收藏
Network device support
网络设备支持,当然要选啦
Intermediate Functional Block support
这是一个中间层驱动,可以用来灵活的配置资源共享,看不懂的可以不选
Dummy net driver support
哑接口网络,使用SLIP或PPP传输协议(如ADSL用户)的需要它
Bonding driver support
将多个以太网通道绑定为一个,也就是两块网卡具有相同的IP地址并且聚合成一个逻辑链路工作,可以用来实现负载均衡或硬件冗余
阅读全文>
发表于 @ 2008年04月02日 22:17:00|评论(loading...)|编辑|收藏