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-68448a92dbc96313596189/] 将会挂载UBIFS到UBI设备0的UBI卷标0上。 UBI卷标语法为ubiX_Y或者ubiX:NAME,其中 X - UBI设备号 Y - UBI卷标号 NAME - UBI卷标名字 挂载空的UBI卷 我们可以挂载空的UBI卷,比如:此卷只包含0xFF的数据。 例如这里有一个mtd0的MTD设备,我们这样做(假如UBIFS已经编入内核):…

鸟笼效应

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

准备入手IP4或者IP4S

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

Cross-compile tcpdump

tcpdump是用来debug网络的无上利器,虽然我不怎么会用。但是嵌入式板子上面还是带一个好。 看了busybox好像没有移植过去。看来只能自己编译了。 第一步当然要去下载最新版本。点击进入官网 tcpdump分为2块,一块是libpcap,一块是tcpdump。 编译libpcap 解压。我们不需要can,不需要bluetooth,指定linux版本为2.6。执行: [crayon-68448a92dbfee132818799/] 编译tcpdump 解压。运行: [crayon-68448a92dbff0963021061/] 编译出来的tcpdump是不需要libpcap的。 That's all.

uC/TCP-IP NetSock_Conn返回超时

由于项目要求需要使用uC/TCP-IP做一个TCP Client端连接服务器。 出现了以下问题,烧写完程序后可以连接服务器,但是MCU复位后执行到NetSock_Conn会返回超时。 交叉编译了tcpdump,查看网络信息后发现出现超时的时候3次握手不完整。 使用netstat -a发现握手截至在FIN_WAIT1。当系统终止掉这次握手或者复位后,MCU总是可以连接到服务器,但是重连总是失败,错误码为超时。 google了基本没有人提到这个错误。初步结论可能是配置有误。但是增加了任务堆栈、调整任务优先级也没有效果。 之前有做过RM9200,于是打开代码发现都是使用的Server端。没有Client端。没办法,分别找了我们使用的MCU和RM9200的官方代码。终于在RM9200的code里面的Conn之前发现这样一条命令: [crayon-68448a92dc158398322750/] 看名字就知道是设置连接超时,grep TTCP_CFG_MAX_CONN_TIMEOUT_MS发现为30000。依葫芦画瓢,问题解决。 原因就是系统默认的超时时间太短造成的。