伟良's profile天堂难寻PhotosBlogListsMore ![]() | Help |
|
天堂难寻用心品味,生活本来有滋有味。 October 08 国庆,真好又是国庆节了,一年了,真的该写点东西了。大学的时候还有一个本子,记录了自己感情的点点滴滴。最近这一年,居然没写,真是悲哀。现在补上还来得及,我想回忆会带我重游这幸福温馨的一年,值得我去珍藏的一年光景。
物是人非事事也休了。回到了那个叫做中国海洋大学的地方,走在熟悉的海大校园里,难免会有惆怅,以前手拉手的走过,现在只有一个人掏着裤兜走,好像在刻意隐藏着什么。有人对我说:你怎么回来了,真惊了。有人对我说:你彪啦。有人对我说:你不应该回来。同学的问候各种各样,总而言之,我回国的确太快,快得我自己都来不及反应。太武断?太潇洒?还是不负责任! 从国庆那天开始到现在,7天了吧。我一直在反思自己的所作所为,一年以来的所作所为,想了好多。老姑告诉我说:爱情里没有谁对谁错。这七天我也在想,真是这个样子吗?我现在想,觉得有道理而已,要说对,谈不上,错的话,其实找自己的错误算是找对了。一年以来,我在忙些什么?出国。她也在忙着出国,而且也在帮我忙着。忙着,就忽略了我们之间最起码的感情,那种可以相互交流彼此内心世界的机会。是啊,一年多了,没有一次静下心来与她畅谈,谈论最近发生的事情,谈论最近哪里做的不好,有什么地方需要改正,谈论将来有什么打算,谈论一些有趣的事情。没有一次,对于两个谈了一年的恋人来说,真的好可悲。我们少了心灵上的交流,可以说是交心吧。一起做过的事情的确不少,赏明月,散步,看电影,学习,赏樱花...太多太多,在这些故事之后再多一点交流,多一点呵护就好了,然而,晚点了。人总是这样,在想以前如果怎样会有多好,我自嘲一下,挫折会让我慢慢长大吧,再忙再累,不要忘了替对方想一下,好好照顾她,呵护她,自己生活的也会很幸福快乐。 在英国的日子里,虽然时间很短,我也想了许多,最后我决定离开。我想我留在这里,作为好朋友,我们可以一起做饭,互相照顾,这也是一种幸福,彼此都可以安然的去生活。学习当中遇到问题,也可以互相帮助解决。毕竟两个人共同去解决一个问题总比一个人解决问题来的容易一些。更何况,为了今天,我们共同准备了一年,不光是我们,是我们两家人,我一走未免太不值得了,太轻率了。我留在这里,可以感受英国的生活,文化,我也可以跟同学一起学习,可以用心去做一些事情去感动她。但是我在这里不会快乐,我为我这一年来的所做所为而感到内疚,感到惭愧。扪心自问,真的,这样好的女孩子,我却没有去全心全意疼爱她。可以给自己找理由,太忙,有事情,不需要疼爱。现在想想,有些东西其实是没有原因的,她可以为了维护我的尊严去跟父母辩论,她可以为了我去把他爸爸的新手机要来...她为了我做的实在是太多太多。不管做了什么,我根本就没有理由去找她的错误,是自己忽略了她的内心感受,没有跟她保持心灵的沟通。我们在英国住的很近,应该说是一年来住的最近的时候,我们的心也走到了最远。 我是个好孩子,但不是一个好的男朋友。男朋友应该时时刻刻替女朋友想的,就像女朋友总是在替自己想一样。男朋友应该想的更多一些,多一些问候,关怀,也要让女朋友多一些成就感,感受到在自己内心的价值和地位,没有她真的世界太冷了,我要做的,痛定思痛,好好对待未来。 我回国了,我带着对自己的遗憾回国了。我这一年的准备没有白费,但是我这一年的心白费了,因为这一年以来我一直在忽略另一颗一直在操劳着的心,我让她失望了,对不起,所以我不要在英国,我在英国感到自己内心在受责备。回来彻底反省一下自己吧,不要在迷途陷得太深。爱到最后是宽容,我没有宽容,有的是对未来的渴望,渴望自己会成长起来,懂得去爱一个人,懂得去珍惜一个人,懂得去追求一个人,全靠自己的力量去拼搏。 爱一个人是幸福的,想念一个人也是幸福的。从校园到实验室,从被子到杯子,从手机到电脑,从短信到录音到照片,从中国到英国。 自觉是一个不善于表达的人,还是用微笑来面对这一切吧,内心的感受写出来会好一些,对自己的过去,现在和未来也有一个交代。2008国庆,我们在一起了,2009国庆我们也在一起,只是很快分开了。2010国庆我想明白了怎样去爱一个人,我会长大的,我们会在哪里?国庆,我很期待,国庆,国家长大一岁,我也会,要成长一岁。国庆,真好。 今天的歌曲是:爱的代价 May 04 有时候 有时候,我应该写点,或是在博客里,让我们一同品味,或是在周记本上,留给自己的回忆。
今天五四,青年节,魏导组织爬山。山不在高,有仙则名;水不在深,有龙则灵,二者结合,曰二龙山。以前我并没有听说过世间还有此山,google之,在哈尔滨,加青岛限制之,原来就在海边。 出发吧,说浩浩荡荡一点都不过分,八辆轿车30多人一起上路,真是出乎小人的意料,原来在车队里的感觉就是这样的嘛。20分钟的车程,来到龙山脚下。下车,落地,请换鞋,我们要走山路了。哦,原来还有路可以走的,想起一句话:车到山前必有路。 原来已经封山,无奈地很。没关系,人到山下必有道,不到山顶,谁说罢休。自然,我们要自己给自己开路上山了,开道之难,难于hello world,怎堪一个勇字了得(想起了王学勇,老同学好)。我们就是从树林当中,在没有路的情况下,在无人指引的条件下,翻越了一颗又一颗的小石头,才来到山顶的。山高,风不大,可见度很好,海很蓝,天很灰 (想到s.h.e)。现在感觉还好,有山,二龙山周围都是山,我很纳闷,山顶上的那么一块大石头,跟刻有中国海洋大学的那块石头差不多大是怎么就自己在山顶上的呢,有人说是风化的,顿时我明白了,原来金字塔也是风化而来的;有水,昨天刚下过雨,山上还有小溪流下,纯真的崂山泉水,有人打了一瓶,结果这么纯的一瓶水,就因为不知道是什么原因,所以大家都没人喝,无奈,当洗脚水吧。听着潺潺的溪水,听到了姬神;有草,新绿,比较适合放牛,我当时就是这样想的,她的奶水肯定比伊利纯牛奶还伊,比蒙牛奶还蒙;有木,这片树林大都是松树,高的很,可见护林防火护防的很不错,郁郁葱葱,雨雨风风,花花夜夜,年年暮暮朝朝,这是生命力的象征;还有仙,在哪里,就在这儿。这个时候我很快乐,高山流水遇知音,在哪里?高山流水觅知音。偶尔有清脆的鸟叫,想起了bandari音乐的清纯。站在山顶的感觉,爽! 快12点了,下山吃饭。喝酒的时候我就觉得现在市场上缺一种饮料:跟啤酒一个颜色,有泡泡的饮料。有机会可以一试。喝酒还是老规矩,敬来敬去,现在的我还有点接受不了,为什么。真罗嗦。 下午,打牌,不好意思,我跟魏导干起来了,还好,没有重伤,因为我火力不够猛。 现在,我在写,听着梁咏琪的《有时候》(点击下载),让我想起了许多的有时候,不过不是那么清晰了都,有照片可参照的,我也都看了。还是那句话,用心品味,生活本来有滋有味。所以我想把今天的经历写下,用有时候来品味我的太多的有时候。 有时候交谈变得空洞,沉默却像沟通; 有时候孤独可以寂寞,也可以是自由; 能安慰自己的人比较容易快乐。 April 15 [转]一个计算机高手的成长2008-01-29 22:58
April 07 linuxrckernel启动后,执行/root_china/linuxrc脚本文件,接下来执行/root_china/usr/etc/rc.local脚本文件。这两个文
件我以前没去管是什么意思,起到什么作用,直到今天。
/root_china/linuxrc: #!/bin/sh echo "mount /etc as ramfs"
/bin/mont -n -t ramfs ramfs /etc //将/etc目录mount成可写的ramfs文件系统 /bin/cp -a /mnt/etc/* /etc //将/mnt/etc目录下的文件拷贝到/etc目录下 echo "re-create the /etc/mtab entries"
#re-create the /etc/mtab entries /bin/mount -f -t cramfs -o remount,ro /dev/mtdblock/2 / //将/dev/mtdblock/2 mount成根文件系统 /bin/mount -f -t ramfs ramfs /etc exec /sbin/init //执行脚本档 /usr/etc/rc.local
1. /bin/mount -n -t ramfs ramfs /etc
这句话的作用加载一个ramfs作为/etc目录。这样/etc就是一个可写目录。看这个脚本,得出根文件系统是一个 cramfs(只读可压缩文件系统),而/etc作为系统运行配置文件的存放地点,可能会写一些运行状态在这里,linuxrc第一件事情就是将一个ramfs mount到/etc只读目录中,使得/etc/目录可写,指定参数-n的目的是告诉mount不要写/etc/mtab(这个文件存放当前系统mount了的所有文件系统)。因为现在/etc/目录还是只读,所以这次mount不要写这个文件,否则会失败。ramfs在哪里?在 /etc/fstab文件中应该有ramfs一项,mount会去找这项,如果没有,mount会失败。后面就执行不下去。 2. /bin/cp -a /mnt/etc/* /etc /etc成为可写目录后,将所有/mnt/etc中的配置文件拷贝到/etc/中,这说明ramfs可能是一个空的ramfs,没有配置文件,或者配置文件比较老。 同时也说明这个系统是一个只读系统,每次系统运行中写入的配置不会保留。 将以前mount的那些信息重新写到/etc/mtab中,命令就是下面这些。 3. /bin/mount -f -t cramfs -o remount,ro /dev/bon/2 / /bin/mount -f -t ramfs ramfs /etc 这些命令只是将这些mount信息写到/etc/mtab中,不会实际去mount这些block device,说明你的根文件系统依然是以前的那个/dev/bon/2 4. exec /sbin/init 执行根文件系统中的init执行程序,使其成为1号进程。shell正式运行。 <转>Nor Flash上建立一个uClinux的Cramfs根文件系统的一般步骤文件系统是操作系统中用来管理用户文件的内核软件层。文件可能存在于磁盘、网络或者是一些虚拟的文件。文件系统包括根文件系统和建立于内存设备之上文件系统。根文件系统是uClinux系统的核心部分,包含系统使用的软件和库,以及所有用来为用户提供支持架构和用户使用的应用软件,并作为存储数据读写结果的区域。由于嵌入式设备中Flash资源很紧张,如何有效地使用有限的存储空间是嵌入式开发者必须考虑的,合适的文件系统格式是解决这一问题的关键所在。本文讨论了只读压缩CramFS文件系统的特点,并详细的说明了Nor Flash上建立一个uClinux的Cramfs根文件系统的一般步骤。
采用的是宿主机+目标板的开发模式。在开发的时候,将Boot Loader烧入AM29LV160DB的1-5扇区;将Linux内核映象文件zImage烧入6-17扇区;将CramFS文件系统映象文件烧入18 -35扇区。 CramFS(Compressed Rom File System)是Linux Torvalds在Transmeta任职时,所参与开发的文件系统。它是针对Linux内核2.4之后的版本所设计的一种新型只读文件系统,采用了 zlib 压缩,压缩比一般可以达到1:2,但仍可以作到高效的随机读取,Linux系统中,通常把不需要经常修改的目录压缩存放,并在系统引导的时候再将压缩文件解开。因为Cramfs不会影响系统的读取文件的速度,而且是一个高度压缩的文件系统。因此非常广泛应用于嵌入式系统中。 在嵌入式的环境之下,内存和外存资源都需要节约使用。如果使用RAMDISK方式来使用文件系统,那么在系统运行之后,首先要把Flash上的映像文件解压缩到内存中,构造起RAMDISK环境,才可以开始运行程序。但是它也有很致命的弱点。在正常情况下,同样的代码不仅在Flash中占据了空间(以压缩后的形式存在),而且还在内存中占用了更大的空间(以解压缩之后的形式存在),这违背了嵌入式环境下尽量节省资源的要求。 使用CramFS文件系统就是一种解决这个问题的方式。CramFS是一个压缩格式的文件系统,它并不需要一次性地将文件系统中的所有内容都解压缩到内存之中,而只是在系统需要访问某个位置的数据的时候,马上计算出该数据在CramFS中的位置,将它实时地解压缩到内存之中,然后通过对内存的访问来获取文件系统中需要读取的数据。CramFS中的解压缩以及解压缩之后的内存中数据存放位置都是由CramFS文件系统本身进行维护的,用户并不需要了解具体的实现过程,因此这种方式增强了透明度,对开发人员来说,既方便,又节省了存储空间。 一个完整的cramfs文件系统通常包含以下几个目录: /linuxrc 启动脚本文件,由Boot Loader核心命令行确定init=/linuxrc,加载/etc目录为ramfs,(cramfs为只读文件系统),拷贝/mnt/etc到 /etc,配置文件目录重新加载根文件系统和/etc文件系统,执行init进程。 /bin 引导启动所需的命令或用户可能用的命令。 /sbin 系统管理员服务程序,其中最重要的是供内核初始化之后执行的/sbin/init进程,系统启动时由init解释并运行/etc/inittab, inittab将指导int去调用一个系统初始化程序/etc/init.d/rcS。 /etc 特定机器的配置文件以及用户数据存放目录,其中的所有内容是在内核运行后,由linuxrc 从/mnt/etc拷贝得到的。 /lib 文件系统上的程序所需的动态库。 /dev 驱动程序存放目录,可以在这里存放自己编写的驱动程序。 /usr 用于存放用户程序和配置文件的目录,可以根据需要进行设置。目录下的/usr/etc/rc.local执行本地所需要的初始化,如安装核心模块,进行网络,运行应用程序,启动图形界面等。/etc/modules.conf在系统运行期间自动加载模块。 /mnt 用于设备安装的目录。/mnt/etc/init.d/rcS完成各个文件系统的Mount,执行/usr/etc/rc.local;通过rcS可以调动dhcp程序配置网络。rcS执行完以后,就会打开Shell。 /proc 系统状态文件目录, 目录中的文件可以用于访问有关内核的状态、计算机的属性、正在运行的进程的状态等信息。尽管 /proc 中的文件是虚拟的,但它们仍可以使用任何文件编辑器或像'more', 'less'或 'cat'这样的程序来查看。 Cramfs文件系统的移植过程 文件系统是紧跟uCLinux内核放置,由内核加载,主要存放用户应用程序和配置信息。CramFS文件系统的基本组成:初始化程序、Shell程序以及其他Linux常用工具、配置文件、链接库、图形界面程序和用户应用程序等。本节将介绍移植CramFS文件系统的具体操作方法。 想要在系统中提供CramFS的能力,我们必须要在编辑uCliunx内核时把支持CramFS的选项加入。尽管uCLinux可以以模块的形式加载各种类型的设备驱动上,但我们选择直接把设备驱动及CramFS文件系统静态地编译进内核中。 在Memory Technology Devices (MTD)选项中进行配置:
Memory Technology Device (MTD) support[Y/m/n/?] Y 内存技术设备支持
MTD partitioning support [Y/m/n/?] Y 支持MTD分区
Direct char device access to MTD devices[Y/m/n/?] Y MTD字符设备直接访问
Caching block device access to MTD devices[Y/m/n/?] Y MTD块设备缓冲访问
在File Systems选项中进行配置:
Compressed ROM file system support [Y/m/n/?] Y ROM文件系统的支持
完成上述修改并编译后,完成uCliunx内核对CramFS文件系统的支持。
4.2、 拷贝需要加入的其他文件和链接库
(1)、Busybox 是 Debian GNU/Linux 的大名鼎鼎的 Bruce Perens 首先开发的。Busybox 编译出一个单个的独立执行程序,就叫做 busybox。但是它可以根据配置,执行 ash shell的功能,以及几十个各种小应用程序的功能。这其中包括有一个迷你的vi编辑器,系统不可或缺的/sbin/init程序,以及其他诸如 ifconfig, halt, reboot, mkdir, mount, ln, ls, echo, cat等等。而所有这一切功能却只有区区1M左右的大小,Busybox已经成为构建嵌入式Linux文件系统的必备软件。 首先我们从官方网站(http://www.busybox.org/)上下载BusyBox 的版本1.0.0。 #tar xvfz busybox-1.00.tar.gz #cd busybox-1.00 #make menuconfig 下面是需要编译进busybox的功能选项,其他的可以根据需要自选。 Build Options [*] Build BusyBox as a static binary (no shared libs) 这个选项是一定要选择的,这样才能把busybox编译成静态链接的可执行文件,运行时才独立于其他函数库,否则必需要其他库文件才能运行,在单个linux内核不能使他正常工作。 [*] Do you want to build BusyBox with a Cross Compiler 选择你自己定义的交叉编译环境。 Installation Options [*] don’t use /usr 这个选项也一定要选,否则make install 后busybox将安装在原系统的/usr下,这将覆盖系统原有的命令。选择这个选项后,make install后会在busybox目录下生成一个叫_install的目录,里面有busybox和指向他的链接。 其他选项都是一些linux基本命令选项,自己需要哪些命令就编译进去,一般用默认的就可以了,配置好后退出并保存。编译BusyBox,如果能成功编译 BusyBox,就将编译好的busybox 复制到CramFS文件系统的/bin 目录下,然后创建常用命令的建立快捷方式。建立快捷方式很简单,只要建一个符号链接,比方ln -s /bin/busybox /bin/ls,那么,执行/bin/ls的时候,busybox 就会执行ls的功能,也会按照ls的方式处理命令行参数。 (2)、拷贝一些管理员控制程序到/sbin目录下,最重要的就是要包含一个init命令,可以使用busybox提供的系统工具。比如 ln -s /bin/busybox /sbin/init,这样我们就有了系统运行不可或缺的 /sbin/init 程序了。 (3)、拷贝应用程序运行时所需要的库到/lib,库文件可以从PC机上的交叉编译工具安装目录下拷贝,如libc-2.2.2.so、libcryt- 2.2.2.so、libm-2.2.2.so、libutil-2.2.2.so等,为部分相应库建立快捷方式,提供一些应用程序按快捷方式名称调用。值得注意的是C库要采用C库的版本glibc, glibc位于/lib/libc.so.6。 利用mkcramfs工具生成cramfs压缩文件系统 一般情况下都要把已经规划好的目录结构转换成一个映象文件,创建Cramfs文件系统需要mkcramfs工具,mkcramfs能把相应的Cramfs 目录树压缩成为单一的映象文件,这个映象文件就是我们需要移植的文件系统。Mkcramfs的命令格式为: Mkcramfs [-h] [--e edition] [-I file] [-n name] DirName OutFile #mkcramfs root cramfs.Img 用以上的命令就可以生成我们需要的cramfs文件系统映象文件,我们可以发现原本为2.36Mbytes大小的目录内容,被压缩成一个 1.08Mbytes的CramFS文件系统映象文件, 通过vivi或测试程序将其写入Flash中就可以验证是否移植成功。 嵌入式Linux文件系统及其存储机制分析 嵌入式系统与通用PC机不同,一般没有硬盘这样的存储设备而是使用Flash闪存芯片、小型闪存卡等专为嵌入式系统设计的存储装置,本文重点:嵌入式系统中常用的存储设备及其管理机制及常用的基于FLASH的文件系统类型。
1.嵌入式系统存储设备及其管理机制分析
构建适用于嵌入式系统的Linux文件系统,必然会涉及到两个关键点,一是文件系统类型的选择,它关系到文件系统的读写性能、尺寸大小;另一个就是根文件系统内容的选择,它关系到根文件系统所能提供的功能及尺寸大小。嵌入式设备中使用的存储器是像Flash闪存芯片、小型闪存卡等专为嵌入式系统设计的存储装置。Flash是目前嵌入式系统中广泛采用的主流存储器,它的主要特点是按整体/扇区擦除和按字节编程,具有低功耗、高密度、小体积等优点。目前,Flash分为NOR, NAND两种类型。NOR型闪存可以直接读取芯片内储存的数据,因而速度比较快,但是价格较高。NOR型芯片,地址线与数据线分开,所以 NOR型芯片可以像SRAM一样连在数据线上,对NOR芯片可以“字”为基本单位操作,因此传输效率很高,应用程序可以直接在Flash内运行,不必再把代码读到系统RAM中运行。它与SRAM的最大不同在于写操作需要经过擦除和写入两个过程。NAND型闪存芯片共用地址线与数据线,内部数据以块为单位进行存储,直接将NAND芯片做启动芯片比较难。NAND闪存是连续存储介质,适合放大文件。擦除NOR器件时是以64-128KB的块进行的,执行一个写入/擦除操作的时间为5s;擦除NAND器件是以8- 32KB的块进行的,执行相同的操作最多只需要4ms。NAND Rash的单元尺寸几乎是NOR器件的一半,由于生产过程更为简单,NAND结构可以在给定的模具尺寸内提供更高的容量,也就相应地降低了价格。NOR flash占据了容量为1—16MB闪存市场的大部分,而NAND flash只是用在8—128MB的产品当中,这也说明NOR主要应用在代码存储介质中,NAND适合于数据存储。寿命(耐用性),在NAND闪存中每个块的最大擦写次数是一百万次,而NOR的擦写次数是十万次。NAND存储器除了具有10比1的块擦除周期优势,典型的NAND块尺寸要比NOR器件小8 倍,每个NAND存储器块在给定的时间内的删除次数要少一些。所有嵌入式系统的启动都至少需要使用某种形式的永久性存储设备,它们需要合适的驱动程序,当前在嵌入式Linux中有三种常用的块驱动程序可以选择。
● Blkmem驱动层:Blkmem驱动是为uclinux专门设计的,也是最早的一种块驱动程序之一,现在仍然有很多嵌入式Linux操作系统选用它作为块驱动程,尤其是在uClinux中。它相对来说是最简单的,而且只支持建立在NOR型Flash和RAM中的根文件系统。使用Blkmem 驱动,建立Flash分区配置比较困难,这种驱动程序为Flash提供了一些基本擦除/写操作。
● RAMdisk驱动层:RAMdisk驱动层通常应用在标准Linux中无盘工作站的启动,对Flash存储器并不提供任何的直接支持, RAM disk就是在开机时,把一部分的内存虚拟成块设备,并且把之前所准备好的档案系统映像解压缩到该RAM disk环境中。当在Flash中放置一个压缩的文件系统,可以将文件系统解压到RAM,使用RAM disk驱动层支持一个保持在RAM中的文件系统。
● MTD驱动层:为了尽可能避免针对不同的技术使用不同的工具,以及为不同的的技术提供共同的能力,Linux内核纳入了MTD子系统 (memory Technology Device)。它提供了一致且统一的接口,让底层的MTD芯片驱动程序无缝地与较高层接口组合在一起。JFFS2, Cramfs, YAFFS等文件系统都可以被安装成MTD块设备。MTD驱动也可以为那些支持CFI接口的NOR型Flash提供支持。虽然MTD可以建立在RAM上,但它是专为基于Flash的设备而设计的。MTD包含特定Flash芯片的驱动程序,开发者要选择适合自己系统的Flash芯片驱动。Flash芯片驱动向上层提供读、写、擦除等基本的操作,MTD对这些操作进行封装后向用户层提供MTD char和MTD block类型的设备。MTD char类型的设备包括/dev/mtd0, /dev/mtdl等,它们提供对Flash原始字符的访问。MTD block类型的设备包括/dev/mtdblock0,/dev/mtdblock1等,MTD block设备是将Flash模拟成块设备,这样可以在这些模拟的块设备上创建像Cramfs, JFFS2等格式的文件系统。MTD驱动层也支持在一块Flash上建立多个Flash分区,每一个分区作为了一个MTD block设备,可以把系统软件和数据等分配到不同的分区上,同时可以在不同的分区采用不用的文件系统格式。这一点非常重要,正是由于这一点才为嵌入式系统多文件系统的建立提供了灵活性。 2. 基于Flash的文件系统 鉴于Flash存储介质的读写特点,传统的Linux文件系统己经不适合应用在嵌入式系统中,像Ext2fs文件系统是为像IDE那样的块设备设计的,这些设备的逻辑块是512字节、1024字节等大小,没有提供很好的扇区擦写支持,不支持损耗平衡,没有掉电保护,也没有特别完美的扇区管理,这不太适合于扇区大小因设备类型而划分的闪存设备。基于这样的原因,产生了很多专为Flash设备而设计的文件系统,常见的专用于闪存设备的文件系统如下: ● Romfs 传统型的Romfs文件系统是最常使用的一种文件系统,它是一种简单的、紧凑的、只读的文件系统,不支持动态擦写保存; 它按顺序存放所有的文件数据,所以这种文件系统格式支持应用程序以XIP方式运行,在系统运行时,可以获得可观的RAM节省空间。uClinux系统通常采用Romfs文件系统。 ● Cramfs Cramfs是Linux的创始人Linus Torvalds开发的一种可压缩只读文件系统在Cramfs文件系统中,每一页被单独压缩,可以随机页访问,其压缩比高达2:1,为嵌入式系统节省大量的Flash存储空间。Cramfs文件系统以压缩方式存储,在运行时解压缩,所以不支持应用程序以XIP方式运行,所有的应用程序要求被拷到RAM里去运行,但这并不代表比Ramfs需求的RAM 空间要大一点,因为Cramfs是采用分页压缩的方式存放档案,在读取档案时,不会一下子就耗用过多的内存空间,只针对目前实际读取的部分分配内存,尚没有读取的部分不分配内存空间,当我们读取的档案不在内存时, Cramfs文件系统自动计算压缩后的资料所存的位置,再即时解压缩到RAM中。另外,它的速度快,效率高,其只读的特点有利于保护文件系统免受破坏,提高了系统的可靠性;但是它的只读属性同时又是它的一大缺陷,使得用户无法对其内容对进扩充。Cramfs映像通常是放在Flash中,但是也能放在别的文件系统里,使用loopback设备可以把它安装别的文件系统里。使用mkcramfs工具可以创建Cramfs映像。 ● Ramfs/Tmpfs Ramfs也是Linus Torvalds开发的,Ramfs文件系统把所有的文件都放在RAM里运行,通常是Flash系统用来存储一些临时性或经常要修改的数据,相对于 ramdisk来说,Ramfs的大小可以随着所含文件内容大小变化,不像ramdisk的大小是固定的。Tmpfs是基于内存的文件系统,因为 tmpfs驻留在RAM 中,所以写/读操作发生在RAM 中。tmpfs文件系统大小可随所含文件内容大小变化,使得能够最理想地使用内存;tmpfs驻留在RAM,所以读和写几乎都是瞬时的。tmpfs的一个缺点是当系统重新引导时会丢失所有数据。 ● JFFS2 JFFS2是RedHat公司基于JFFS开发的闪存文件系统,最初是针对RedHat公司的嵌入式产品eCos开发的嵌入式文件系统,所以JFFS2也可以用在Linux,uCLinux中。JFFS文件系统最早是由瑞典Axis Communications公司基于Linux2.0的内核为嵌入式系统开发的文件系统。JFFS2是一个可读写的、压缩的、日志型文件系统,并提供了崩溃/掉电安全保护,克服了JFFS的一些缺点:使用了基于哈希表的日志节点结构,大大加快了对节点的操作速度;支持数据压缩;提供了“写平衡”支持;支持多种节点类型;提高了对闪存的利用率,降低了内存的消耗。这些特点使JFFS2文件系统成为目前Flash设备上最流行的文件系统格式,它的缺点就是当文件系统已满或接近满时,JFFS2运行会变慢,这主要是因为碎片收集的问题。 ● YAFFS YAFFS/YAFFS2是一种和JFFSx类似的闪存文件系统,它是专为嵌入式系统使用NAND型闪存而设计的一种日志型文件系统。和JFFS2相比它减少了一些功能,所以速度更快,而且对内存的占用比较小。此外,YAFFS自带NAND芯片的驱动,并且为嵌入式系统提供了直接访问文件系统的API,用户可以不使用Linux中的MTD与VFS,直接对文件系统操作。YAFFS2支持大页面的NAND设备,并且对大页面的NAND设备做了优化。JFFS2在NAND闪存上表现并不稳定,更适合于NOR闪存,所以相对大容量的NAND闪存,YAFFS是更好的选择。 December 31 Talking about 最美的太阳
Quote 最美的太阳 最美的太阳 2007年的最后那么一点点,我该留下些什么,虽然又是寒冬中平凡的一天。今天的落日,伴着天空中那片片久违的浮云;落日的余辉,在这被风主宰的冬季尽显他的光芒,没有了中午所感受到的特有的温暖,剩下的只有为2007画上一个火红的句号,最美的太阳。 仅仅是在这一天的这个时刻,一种高亢的心情在荡漾。从图书馆里走出来,北风挡住了我的去路,来青岛4年多了,从来没有感受到被风吹的滋味是如此的爽快,爽的我更想在这短暂的路上再多呆一会,多希望这风吹走我一切的烦恼,吹走我一切的怨恨和悲伤,带来我的快乐,我的希望,吹奏起我独有的旋律,这样想,显得这所谓的寒风是多么的脆弱,如果它这能办到,那时的我心里只有你了,当然,这多半取决于我自己。 就在3天之前,一个不是很熟悉的人对我说,生活里应该充满阳光。交往不是很多,对我说这样的话,当时的我不知道如何去应答。过后细想,充满阳光的日子会很灿烂,更重要的会更快乐! 看过smallville。clark作为一个外星人,有着非凡的能力,速度和力量,当然更多的还在成长当中。这些能力所需要的能量居然是来自于太阳。导演这样安排不知道是否还有其他的意思,我感觉他在向我们传递一些信息:首先,地球上的所有的一切能源归根结底来源于太阳;其次,生活中不应该没有阳光,没了阳光就没了能量,失去了前进的动力,那样便会腐朽。 我的世界,因为有你才会美,我的天空,因为有你不会黑,给我快乐,给我宽容,我能展翅高飞。 November 29 Job Description:Job Description:
Candidate Requirements:
November 23 a trained animal ,an educated personThere is an expression in the English language:"Jumping through hoops." In the circus,the animal trainer hold out a hoop,and the animal jump through it.Why does the animal jump through it?To get a reward.An animal that does this trick is called "a trained animal." For many students,education means jumping through hoops like a trained animal.The hoops are the assignments.The rewards are the grades and credits.For such students,the assignment has no meaning.It is just something they must to do to get a grade.They will be educated.But they are wrong.There is a difference between education and training. An educated person can think for himself.He can analyze,adapt to new situations,develop new ideas,make judgements,lay plan,and have a vision of the future.But a person who is merely trainedcan only follow his training,like a circus animal,doing exactly what he was taught to do. Who am I?I am an animal.But I want to go into the future with an independent mind,with the ability to think deeply,analyze,innovate,plan and create. |
|||||||
|
|