摘要: 前言 : 文件系统的制作其实并没有想像中那么难。一个基本的文件系统应该包括: busybox (提供 shell 命令集)、配置文件(用来初始化和布局你的文件系统)、设备文件(如果是用 devfs 的话这个就免了)、必要的库文件系统(如果 busybox 是静态编译的话,那根本不用为 busybox 阅读全文
posted @ 2011-06-09 17:32 hnrainll 阅读(1094) 评论(0) 推荐(1) 编辑
摘要: 1. 根文件系统 文件系统是包括在一个磁盘(包括光盘、软盘、闪盘及其它存储设备)或分区的目录结构;一个可应用的磁盘设备可以包含一个或多个文件系统;如果您想进入一个文件系统,首先您要做的是挂载(mount)文件系统;为了挂载(mount)文件系统,您必须指定一个挂载点。 注:对于我们应用开发来说,购买 阅读全文
posted @ 2011-06-09 17:23 hnrainll 阅读(1878) 评论(1) 推荐(0) 编辑
摘要: 构建基本的嵌入式Linux根文件系统 其实在去年8月份我做系统移植时就构建好了一个可以用的根文件系统,但是那时是跟着别人的《Linux全线移植文档》做的。有些东西我也不清楚,只是跟着做,做出来能用就了事了,没有深究其中的规范,以及文件系统中哪些要,哪些不要。 趁着今年过年的几天假期,我移植重新移植了 阅读全文
posted @ 2011-06-09 17:22 hnrainll 阅读(1671) 评论(0) 推荐(0) 编辑
摘要: 要不我们就统一简称为FS和RFS:文件系统:File System => FS;根文件系统:Root File System => RFS。 首先你考虑一点描述语句:根文件系统也是一种“文件系统”,可以认为是一种“特殊的”“文件系统”,为什么是叫“特殊的”呢?因为这种“根文件系统”承载着某些“特殊的功能”(其实“文件系统”相同的话,所具备的功能都是一样的),那就是“操作系统”可能需要通过某种“布局”来管理相关设备的,诸如软盘设备、硬盘设备、虚拟磁盘设备等等,这里可能就是用了一种已被定义好了“数据结构”的“布局”,即“文件系统”,而出现的“根文件系统”,可能是用来担当主要或重要角色。 阅读全文
posted @ 2011-06-09 16:59 hnrainll 阅读(4474) 评论(0) 推荐(1) 编辑
摘要: C++语言的创建初衷是“a better C”,但是这并不意味着C++中类似C语言的全局变量和函数所采用的编译和连接方式与C语言完全相同。作为一种欲与C兼容的语言,C++保留了一部分过程式语言的特点(被世人称为“不彻底地面向对象”),因而它可以定义不属于任何类的全局变量和函数。但是,C++毕竟是一种面向对象的程序设计语言,为了支持函数的重载,C++对全局函数的处理方式与C有明显的不同。 从标准头文件说起 某企业曾经给出如下的一道面试题: 为什么标准头文件都有类似以下的结构? #ifndef __INCvxWorksh#define __INCvxWorksh #ifdef __cplusplu 阅读全文
posted @ 2011-06-09 16:33 hnrainll 阅读(403) 评论(0) 推荐(0) 编辑
摘要: 下面是从Undertanding the linux kernel 3rd摘录的 12.4. Filesystem Handling Like every traditional Unix system, Linux makes use of a system 's root filesystem 阅读全文
posted @ 2011-06-09 16:33 hnrainll 阅读(6172) 评论(0) 推荐(1) 编辑
摘要: ARM-LINUX-GCC版本4.3.2.以安装在/usr/local/arm/4.3.2下.第一步:修改linux-2.6.34/Makefile文件,在makefile中找到以下两条信息并做修改ARCH ? =arm CROSS_COMPILE ?=/usr/local/arm/4.3.2/bi 阅读全文
posted @ 2011-06-09 16:16 hnrainll 阅读(3002) 评论(0) 推荐(0) 编辑
摘要: 一、devfs linux下有专门的文件系统用来对设备进行管理,devfs和sysfs就是其中两种。 在2.6内核以前一直使用的是devfs,devfs挂载于/dev目录下,提供了一种类似于文件的方法来管理位于/dev目录下的所有设备,我们知道/dev目录下的每一个文件都对应的是一个设备,至于当前该设备存在与否先且不论,而且这些特殊文件是位于根文件系统上的,在制作文件系统的时候我们就已经建立了这些设备文件,因此通过操作这些特殊文件,可以实现与内核进行交互。但是devfs文件系统有一些缺点,例如:不确定的设备映射,有时一个设备映射的设备文件可能不同,例如我的U盘可能对应sda有可能对应sdb;没 阅读全文
posted @ 2011-06-09 12:13 hnrainll 阅读(2449) 评论(0) 推荐(0) 编辑
摘要: 一、编译内核 1. make distclean 或者 make mrproper 如果你是新下载的内核,那这一步就不用了。但如果你用的是别人移植好的内核,那最好在编译内核之前先清除一下中间文件,因为你们用来编译内核的交叉编译工具可能不同。 2.修改 Makefile 主要是以下两项: 1 ) AR 阅读全文
posted @ 2011-06-09 12:00 hnrainll 阅读(1952) 评论(3) 推荐(0) 编辑
摘要: 1.1 Linux内核基础知识 在动手进行Linux内核移植之前,非常有必要对Linux内核进行一定的了解,下面从Linux内核的版本和分类说起。 1.1.1 Linux版本 Linux内核的版本号可以从源代码的顶层目录下的Makefile中看到,比如2.6.29.1内核的Makefile中: VE 阅读全文
posted @ 2011-06-09 11:43 hnrainll 阅读(34233) 评论(0) 推荐(5) 编辑
摘要: mknod - make block or character special filesmknod [OPTION]... NAME TYPE [MAJOR MINOR] option 有用的就是 -m 了 name 自定义 type 有 b 和 c 还有 p 主设备号 次设备号主设备号是由linux/major.h定义的,如下定义了一个DOC设备: #define IGEL_FLASH_MAJOR 62 假如有一个命令mknod doc b 62 0 : 其中的doc为定义的名字,b指块设备,0指的是整个DOC。如果把0换为1,则1指的是DOC的第一个分区。2是第2个,对于块设备次设备号就 阅读全文
posted @ 2011-06-09 11:09 hnrainll 阅读(43614) 评论(0) 推荐(3) 编辑
摘要: 1.下载linux-2.6.36.1.tar.bz2 问题:tar -zxvf 解压压缩文件出现问题,无法识别. 解决:1.通过file linux-2.6.36.1.tar.bz2 查看压缩格式 2.通过命令 bzip2 -d linux-2.6.36.1.tar.bz2解压 3.再通过tar x 阅读全文
posted @ 2011-06-09 11:03 hnrainll 阅读(12650) 评论(0) 推荐(0) 编辑
摘要: 安装交叉编译工具Ø 下载交叉编译工具(本文默认所有软件均下载在用户主目录下)arm-linux-gcc-3.4.1 —— 编译内核URL: ftp://ftp.handhelds.org/projects/toolchain/arm-linux-gcc-3.4.1.tar.bz2Ø 安装 //将压缩 阅读全文
posted @ 2011-06-09 10:47 hnrainll 阅读(1666) 评论(0) 推荐(0) 编辑
摘要: MTD(memory technology device内存技术设备)是用于访问memory设备(ROM、flash)的Linux的子系统。MTD的主要目的是为了使新的memory设备的驱动更加简单,为此它在硬件和上层之间提供了一个抽象的接口。MTD的所有源代码在/drivers/mtd子目录下。我将CFI接口的MTD设备分为四层(从设备节点直到底层硬件驱动),这四层从上到下依次是:设备节点、MTD设备层、MTD原始设备层和硬件驱动层。MTD字符驱动程序允许直接访问flash器件,通常用来在flash上创建文件系统,也可以用来直接访问不频繁修改的数据。MTD块设备驱动程序可以让flash器件伪 阅读全文
posted @ 2011-06-09 10:07 hnrainll 阅读(49033) 评论(0) 推荐(2) 编辑
摘要: 本文是原创,转载请注明出处本文链接:http://blog.sina.com.cn/s/blog_574d08530100hzie.html1.符号定义伪操作操作符 语法格式 说明.equ .equsymbol,expr 将symbol定义为expr.set .setsymbol,expr 和equ相同(.set=.equ).equiv .equiv symbol将symbol定义为expr,若symbol已定义则出错.global .global symbol 将symbol定义为全局标号.globl .globl symbol 和.global相同(.globl=.global).exte 阅读全文
posted @ 2011-06-09 08:47 hnrainll 阅读(2759) 评论(0) 推荐(0) 编辑