UBI Filesystem

嵌入式的文件系统有很多,比如JFFS2、YAFFS、UBIFS。下面来介绍下他们之间的区别: JFFS2一般用于NOR FLASH。具有在线压缩/解压缩功能,适合小容量的FLASH。 YAFFS要快于JFFS2并且消耗更少的RAM。YAFFS也可用于NAND FLASH UBIFS提供类似JFFS2的压缩功能,但是它通常作为一种用于大容量NAND FLASH的更好选择 UBI文件系统使用 使能UBIFS 在内核中打开UBI file system support,建议编入内核。 挂载UBIFS 通常挂载UBIFS的方式是挂载UBI字符设备,例如: [crayon-68243be76986f721394620/] 将会挂载UBIFS到UBI设备0的UBI卷标0上。 UBI卷标语法为ubiX_Y或者ubiX:NAME,其中 X - UBI设备号 Y - UBI卷标号 NAME - UBI卷标名字 挂载空的UBI卷 我们可以挂载空的UBI卷,比如:此卷只包含0xFF的数据。 例如这里有一个mtd0的MTD设备,我们这样做(假如UBIFS已经编入内核):…

鸟笼效应

无处不在的“鸟笼效应” 无论男女,没结婚之前有男女朋友之后。朋友们就会问你:“啥时候结婚呀”。 真结婚之后,他们又会问你:“啥时候生个宝宝哇”。 怀上之后,他们接着又会问到:”喜欢男孩 还是女孩呀“。 终于等到宝宝出生了。 他们仍要问:“打算去那个地方给孩子上学呀”。。 一个事情问来又问去的。 本来, 他们只是在谈朋友的,莫名其妙的就结婚了。结完婚等条件好一点的时候再要个宝宝的。莫名其妙的就生了个出来。 宝宝出生之后,本想 去国外留学的,后来 还是留在了天朝。。。 “淡定、本应无处不在的” …… 1907年,詹姆斯从哈佛大学退休,同时退休的还有他的好友物理学家卡尔森。一天,两人打赌。詹姆斯说:“我一定会让你不久就养上一只鸟的。”卡尔森不以为然:“我不信!因为我从来就没有想过要养一只鸟。”没过几天,恰逢卡尔森生日,詹姆斯送上了礼物——一只精致的鸟笼。卡尔森笑了:“我只当它是一件漂亮的工艺品。你就别费劲了。”从此以后,只要客人来访,看见书桌旁那只空荡荡的鸟笼,他们几乎都会无一例外地问:“教授,你养的鸟什么时候死了?”卡尔森只好一次次地向客人解释:“我从来就没有养过鸟。”然而,这种回答每每换来的却是客人困惑而有些不信任的目光。无奈之下,卡尔森教授只好买了一只鸟,詹姆斯的“鸟笼效应”奏效了。实际上,在我们的身边,包括我们自己,很多时候不是先在自己的心里挂上一只笼子,然后再不由自主地朝其中填满一些什么东西吗? 理论根源原因是这样的:即使这个主人长期对着空鸟笼并不别扭,每次来访的客人都会很惊讶地问他这个空鸟笼是怎么回事情,或者把怪异的目光投向空鸟笼,每次如此。终于他不愿意忍受每次都要进行解释的麻烦,丢掉鸟笼或者买只鸟回来相配。经济学家解释说,这是因为买一只鸟比解释为什么有一只空鸟笼要简便得多。即使没有人来问,或者不需要加以解释,“鸟笼效应”也会造成人的一种心理上的压力,使其主动去买来一只鸟与笼子相配套。

Shell IF

语法 #!/bin/sh if [ condition ]; then else fi 字符串判断 str1 = str2                        当两个串有相同内容、长度时为真 str1 != str2      当串str1和str2不等时为真 -n str1        当串的长度大于0时为真(串非空) -z str1         当串的长度为0时为真(空串) str1             当串str1为非空时为真 数字的判断 int1…

Freescale MPC8241 with USB controller

客户想在我们一款很老的设备上(MPC8241)上扩展一个USB控制器。让我很是头疼。因为现在主流的CPU,包括MCU基本都带有USB host/device。 于是各种google,查内核代码,发现NEC/CYPRESS/NXP/VIA均有USB控制器。打电话了解了如下: CYPRESS的USB控制器是本地总线接口,但是没有很好的linux驱动支持,可能需要用户自己调试。PS:我们之前有用过PCIE接FPGA挂载CY7C67200,虽然linux-2.6带有驱动,但是调试中发现各种问题,最后也不清楚是FPGA逻辑还是驱动问题,最后不了了之。 NXP的USB控制器也是本地总线接口,这就需要我们改版,但是代理说NXP现在不是主推这个芯片,并且这个芯片已经很久了,不一定什么时候就停产了。 NEC的USB控制器是PCI接口,这个非常好,因为我可以不用改版。但是代理很久都没有给我找到做好的USB扩展卡。 VIA就更悲剧了,我们连代理都没搞到。 测试1: 研究了一下NEC/VIA的手册和linux的USB控制器驱动。NEC和VIA都是OHCI,通过pci_register_driver注册,理论上来说插上就可以用。于是买了几款USB扩展卡,插上。系统检测到PCI设备,bingo,上个厕所先。结果回来以后发现CPU烧到了。 原来买的USB扩展卡做的有BUG,VIO居然直接直接和5V短在一起。而我们板子的VIO接的是3V3,结果导致3V3和5V短路,把CPU烧掉了。 测试2: 向我们在郑州的同事了解了一下,原来那边已经在MPC8247上扩展了USB控制器。于是原理图和驱动要来。画图、生产。 加载驱动可以找到芯片ID,但是向scratch寄存器写入后在读发现读回来的永远是0x00,放慢写时序也没有效果。这个是很奇怪的,因为读芯片ID之前也要做一个写操作。 想起来很早前用的一款CONEXANT的CS86500。当时调试这个芯片的时候所有寄存器都正常,只有读IIR的时候清不掉中断。后来发现需要在CS有效到RE有效之间有一定延时。MPC8241的LB没有地址建立时间这个概念,当时是通过调整CPLD解决的。 于是修改CPLD在CS有效和WE有效之间增加的一个延时。向scratch寄存器写入0x55AA读回来正确了。插入U盘,提示如下信息: hub.c: new USB device ISP116x_HCD-1, assigned address 2 usb_control/bulk_msg: timeout usb.c: USB device not accepting…

准备入手IP4或者IP4S

手机翻盖用了好久了。最近不知道怎么回事,内放又出了问题,老是嗞啦嗞啦的。听不清楚。只能外放。 苹果商城终于有了8G版的。什么时候能出32G的啊。IP4S估计无望了。到时候又是抢个厉害