存档在 2007年12月

窥道

至汉武帝实行“罢黜百家,独尊儒术”之前,中国的主流思想乃是道家思想。对道家的思想并没有很深刻的接触过,但一直对它一直有很好的感觉。

描述道家思想的书看过一些,但都是皮毛,也从未系统的看过。也曾翻阅(真正地“翻阅”而已)老子的《道德经》,虽然不懂,但是对里头的一些词句很喜欢,很喜欢他的道法自然。刘洋的那本道德经并没有翻阅完,看不懂是一部分,更多的可能是不喜欢那本书的注释。那本书有很详细的注释,可是他的内容和我所感觉出来的却很多地方不一致,老子的研究在中国并不会亚于红楼梦,我也不想这么早就束缚于这本书的一家之言。古人早已有云:书读百遍,其义自见。还是自己慢慢来理解吧。

今天看了很多的关于老子的言论,颇有感触。但不解之处也是很多,总觉得很多地方读起来自我矛盾,大概是我不能理解这些词句的原因吧。有机会一定要好好学习一下,窥之以查一二。

摘录一些今天看的词句吧:

人者,生于父母之身,立于天地之间,自然之物也。贵己贱物则背自然,贵人贱己则违本性,等物齐观,物我一体,顺势而行,借势而止,言行不自然,则合于道矣!

当今之世,聪明而深察者,其所以遇难而几至於死,在於好讥人之非也;善辩而通达者,其所以招祸而屡至於身,在於好扬人之恶也。为人之子,勿以己为高;为人之臣,勿以己为上,望汝切记。(老子赠孔子言)

(2) 条评论

好堕落

最近的日子真的好堕落,整天睡得high的,连老刘的课都敢逃了,越来越无所谓了。
整天都觉得好多事都没做,好象很忙,可是几天下来,什么都没干。到现在为止,好像好有好几件重要的事还没去做,而月底正是截止日期,我看我还能托几天。
最近身边大家的状态也不怎样。周围好多人整天都没什么好心情的样子,而我也好久没有看过书了,自从被ldd2打击到今。这几天天天在宿舍玩游戏,玩的头都晕了,可是还玩,今天算是告一段落吧,接下来的日子不知又是怎么个堕落法,也没指望会好到哪儿去.

仿佛又回到了以前的盲目的时候,事情问题很多,可是却什么都不想干,整天过的浑浑噩噩的。

(3) 条评论

受了点挫折

最近在看Linux Device Drivers,Editon 2,很受打击,ldd2带的例子老编译通不过。
总总原因之后,得出结论,好像是他自带的Makefile版本和我使用的redhat9的kernel版本不匹配,我用的kernel是2.4.20-8,红帽子的。
N次努力之后,在TW版的翻译者的一个网站上得知,有修改过的在2.4.20之后可以用的例子,不过是针对标准的kernel(不经任何产商修改的kernle),建议自己重新编译一个内核。我编译完(跑了几局卡丁车的时间)之后,用新的kernel运行,结果进不去,出现kernel panic,主要有这两种:
can’t mount root ……要不就是try init=……。网上查了之后,说是ext3的支持没有built in,于是我又重新编译了一次(又跑了几局卡丁车),继续,还是不行,郁闷啊。郁闷的不行了,就先放弃了,过几天再说,给公司发了邮件,问了一个关于校外毕设和生产实习的事。

回想最近,从vbox开始(老崩溃,无奈了),到vmware(好占资源啊),然后NAT,继续ldd的阅读,实验,很耗时间,可是一点进展都没,实在挺郁闷的。我也许该放放,干点别的,可是又不知道干什么,琐事还很多,都是为了下学期不过来所做的准备。

(4) 条评论

关于测试

现在终于搞定了这个测试了。
在这个班上了快一学期了,其实没学什么东西,就uc/os-II看了点东西,其他的基本没看。
上课的环境太好了,于是乎,上课的时候,老师在前头讲课,我就在后头看电子书,shell啊,Expert C啊,也翻翻LDD啊,C99啊,总之基本还是看的原本自己感兴趣的东西,偶尔也看看uc/os-II的源代码。
就这样一学期就下来了,然后老刘出了个考题:

1.实现uC/GUI在SmartARM2200上的移植,使用TFT4267真彩液晶模块;
2.基于uC/GUI在TFT4267真彩液晶模块上界面设计(2个命令按钮——开始和停止、1个标签、1个文本框),界面设计友好;
3.使用SmartARM2200开发板上的ZLG 7290键盘模块;
4.当开始按钮被按下时,一个任务采集键盘模块上按键1(自定义任何一个)并控制控制灯LED1亮,再次按下按键1时,LED1灭。 同时,另一个任务负责刷新文本框1更新当前按钮次数;当按下停止按钮时所有任务停止。

说实话,这个东西如果上课好好学了,下课有自己动手的话,挺简单的一个东西,不过都没做就……
在同学的帮助(说白了就是我向人家要了已经移植好的uc/GUI的模板)下,我自己终于把这个程序给完成了,庆贺一下。

(3) 条评论

kernel/time.c中的mktime算法(下)

好,现在我们已经得到一个公式来计算mon月之前已经过去的日子了:
X=year/4-year/100+year/400+(year-1)*365+30*mon-30+(mon+mon/7)/2+day-1
现在我们来计算一下公元1年1月1日:
经过下面这段代码的转换之后,year=0,mon=11,day=1.。

  1. if (0 >= (int) (mon -= 2)) {
  2.         mon += 12;    /* Puts Feb last since it has leap day */
  3.         year -= 1;
  4. }

代入表达式:0-0+0+(0-1)*365 + 30 *11 -30 + (11+11/7)/2 + 1-1=365-306=-59.
这个59显而易见的是由我们将1,2月置后造成的,所以这个公式需要加上一个修正值:59.
再减去1970年离公元1年的日子719162,那么我们的mktime就完成了。
改正后的公式为:
X=year/4-year/100+year/400+(year-1)*365+30*mon-30+(mon+mon/7)/2+day-1 + 59 - 719162
让我们对这个公式进行整理吧,整理后得到:
X=year/4-year/100+year/400+year*365 + 214*mon/7 + day - 719499
和linux源码中的mktime公式并不一样!!不是原来的367*mon/12!

为什么会有这样的区别呢?让我们来回忆一样推导g(mon)的第三步:
g(mon)=30*mon -30 + (mon + mon/7)/2;
事实上,大家会发现,在这儿,这个表达式并不是唯一的!下面这个表达式也是正确的:
g(mon)=30*mon -30 + (mon + mon/6)/2;
让我们用新的g(mon)代入最后的式子,你会惊喜的发现得到的是下面的式子:
year/4-year/100+year/400+year*365 + 367*mon/12 + day - 719499
正是kernel/time.c中的mktime表达式!
阅读这篇文章的剩余部分 »

(14) 条评论

« 下一页