Waiting For You
so long time
this make me mad
路漫漫其修远兮,吾将上下而求索。
老外的中文课
Year Tim,
shall by too dull doll by too jack won,
dolphin long can Jim shall by too low,
shall by too when dull low, doll car low,
dolphin long doll Ham Eason
“more power!”
老外上中文课的笔记。下面是中文课文。
一天
小白兔到大白兔家去玩
大灰狼看见小白兔了
小白兔闻到了,躲开了
大灰狼大喊一声
莫跑!
我早上醒来,先用二甘醇超标的田七牙膏刷牙,再用发臭的蓝藻水洗脸,给儿子兑一瓶添加三聚氰胺的三鹿奶粉,自己喝杯黑作坊的豆浆,吃几个硫磺熏白了的馒头, 或者是废纸箱当肉馅的包子,就点儿废旧油漆桶里腌的榨菜,饭盒里放几个安徽人05年包的粽子(上班饿了吃),吃饱喝足,出门,深吸一口富含CO的空气,到 断成两截的九江大桥上溜溜腿儿,找找白蛇仙子和许相公在断桥的感觉。 中午跟同事一起到肯德基吃顿苏丹红炸鸡,喝了杯苯超标的可乐。下午用山寨手机给朋友打电话,听见她哭哭啼啼,大约是炒股亏大了,约她出来到新开的菜馆吃顿 饭开开心,点了几个地沟油炒的菜: 一盘避孕药催大的铁板鳝鱼,一盘臭水沟捞来的麻辣龙虾,一盘农药高残留的清炒菠菜,一盘亚硝酸盐超标的卤菜拼盘,一盘饱含瘦肉精的熘肉片,一盘福尔马林泡 过的火爆毛肚,两小碗硫磺熏过的银耳枸杞羹,老板免费送了一杯重金属超标百多倍的碧螺春茶,再喝了点甲醛勾兑的啤酒 ,算帐的时候318元,吉利,老板又找回了一张假币。 回家的时候被宝马撞倒,太幸运! 得让丫出点血,所以躺着不动,一睁眼,看宝马调回头来碾压……以史无前例的速度爬起来跑掉。 回家。要睡觉的时候,被刚装修完的甲醛呛得眼泪直流,只好把脑袋蒙到黑心棉被子里。想起房子还有好几十万贷款加利息,辗转反侧到天半亮都没眯着。找安眠药 吃了半瓶也没用,含在嘴里,哦,是糯米粉! 想想喝点农药死了算了,咕咕咕大半瓶下去一点动静没有,原来这农药是用酱油勾兑的!
一天,某地移动老总加完夜班后想找个地方按摩放松放松,于是驾车去到一家桑拿按摩中心。
进到按摩中心,移动老总选了一个最漂亮的按摩小姐,然后就跟着她往里走。
“老板,请问你是在大厅按摩还是到VIP包间按?是要普通服务还是移动贵宾服务?”按摩小姐声音甜甜的问道。
“到VIP包间吧;要移动贵宾服务。”
于是按摩小姐把移动老总带进一间VIP包间里。
“老板,VIP包间要加收200块小费,按我们的规定,请你先付小费我才能为你提供服务。”
“别的地方小费都没有这么高噢?”移动老总问道。
“不好意思,你从别的地方消费转过来到我们这里消费,这200块小费就相当于移动公司的“漫游费”,一点都不高的。”
移动老总一听,虽然觉得这规矩有点特别,但心想这里的小姐不但非常懂礼貌而且比别的地方的小姐长得漂亮多了,规矩特别点也是当然的,于是痛快的掏出两张“红牛”交给按摩小姐。
收下钱后,按摩小姐又问:“老板,请问你是要做普通按摩还是全套按摩?”
“全套的吧。”移动老总答。
“全套按摩要先交500块基本消费费,麻烦你先把钱交了。”按摩小姐又说。
“这也太离谱了吧?”移动老总有点不痛快了;不过既然来了最后还是把钱交了。
收了钱后按摩小姐又问:“老板,请问你要不要先个洗澡?”
移动老总心想“钱都交了怎不洗呢?”于是说道“要洗。”
“老板,请问你洗热水还是冷水?”
“热水。”
“请你加付100块热水费。”按摩小姐又说道。
“妈的,还有没有王法了?”可气归气,衣服都脱了能总不能不洗吧?移动老总无奈的交了钱。
“小姐,卫生间里怎么黑糊糊的什么也看不见?你到是把灯开开呀。”
“好的,马上就为你开;不过请你先交100块来电显示费。”按摩小姐礼貌的回答。
“你们宰猪啊?”移动老总这下被气坏了。
“你是我们尊敬的顾客,怎么能说是猪呢?老板你真幽默!”按摩小姐彬彬有礼道。
洗了一会儿,移动老总对按摩小姐说“有没有沐浴露?”
“不好意思,沐浴露要另外收费的;不过我们在搞活动,香皂是免费的。”
“那就拿块香皂来吧。”
两分钟后按摩小姐拿来一块用去了好多的香皂。移动老总一看,生气道:“你怎么能把别人用过的香皂拿来给我用?”
“不好意思,我们这里的香皂是随意拿的,拿到那块你就要用那块。”
“这样我不要用了。”
“那请你先付清这个月的香皂使用费共300块。”按摩小姐和气的说道。
“不是说免费的?怎么又要收费?”移动老总瞪大了眼睛。
“今晚是免费让你使用,但下次的都是收费的。”
“可我下次不会再来你们这里了,根本用不着你们的狗屁香皂,凭什么收我的钱?”
“我们这里规定使用香皂必须至少使用一个月,不按天计算。”
“我靠!比孙二娘的店还黑!”移动老总无奈的又交了300块钱说“这回总该给我换快没用过的香皂了吧?”
“抱歉,就用这块吧;你见过移动用户使用彩铃业务的时候可以自己选择使用哪一首彩铃的吗?”
没办法,虽然感觉别人用过了很恶心,可恶心也要用了——不然300块钱就白花了。移动老总极度不爽地三两下洗完了澡。
“现在开始服务吧。”移动老总想快点完事离开这里了。
“好的,请你先交500块服务费。”按摩小姐回答。
“刚才不上交了500块了吗?”移动老总怒问。
“那500块是基本消费——相当移动的月租费,你现在再交500块才能得到服务。”按摩小姐又答。
移动老总心想这地方没法玩了还是快点走吧,于是就说:“算了、算了,我不要服务了;你把刚才的500块退给我,我要走了。”
“你真的不要服务了吗、真的要走吗?”按摩小姐问。
“不走还留在这里让你们当猪宰啊?快退钱给我。”移动老总已经气得两眼冒火了。
“是这样的,因为刚才前台已经开始记钟了,所以那500块不能再退给你;就象移动的卡一开通,月租费就不退了。”按摩小姐耐心的解释。
“去他吗的......”用了块别人用过的香皂洗了个澡就花了1000多块,这一刀被宰得也太狠、太窝囊了......移动老总彻底抓狂了,忿忿的穿上衣服头也不抬就往外走。
谁知还没走出门口,按摩小姐又说话了:“老板,请你先交了3000块取消服务押金再走;三个月后可凭收据来这里我们给你退回。”
“我要走了,永远不来你们这里了;还要什么服务押金?”移动老总脑门直冒烟。
“不是‘服务押金’是‘取消服务押金’;你虽然说要走,但我们怎么知道你不会不会跑到其它包间去做按摩、又怎知道你改天会不会再来?所以我们要先收你 3000块‘取消服务押金’,要是三个月后发现你确实不在我们这里接受过服务,我们就会把押金退还你——这跟你到移动公司去销号是一样的。”
“老子就是不交,看你们还敢抢了老子不成?”移动老总是火冒三丈了。
“我们当然不会抢你,不过你要是不办理取消服务手续的话,以后每个月我们都要收取你500块的按摩基本消费费。”按摩小姐礼貌的回答。
“你们有本事找到我就去要吧。”堂堂移动老总什么场面没见过,还能被你一个按摩小姐给吓住了?于是移动老总头也不回就走了出去。
刚刚走出按摩中心大门,刚才的那个按摩小姐又跟上来说道:“老板,前面你在我们这里开VIP包间的时候用身份证做了登记,现在你的资料以保存在我们的 电脑里,如果你现在不办理取消服务手续,那么以后每个月我们都会通过法院给你的公司寄去按摩欠费单;同时,我们的客服人员也将会不定期打电话到你家催交欠 费的!”
移动老总听完按摩小姐这话,顿时感到嗓眼一腥“哇”的一口鲜血喷口而出,接着两眼一黑,扑通一声倒在了按摩中心的大门外!
# Copyright 1999-2007 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/x11-misc/bmpanel/bmpanel-9999.ebuild,v 1.10 2008/05/21 22:43:41 uberlord Exp $
inherit git
EGIT_REPO_URI="git://github.com/nsf/bmpanel.git"
DESCRIPTION="A themeable reincarnation of fspanel"
HOMEPAGE="http://nsf.110mb.com/bmpanel/"
SRC_URI=""
LICENSE="GPL-2"
SLOT="0"
KEYWORDS="amd64 ppc sparc x86 ~x86-fbsd"
IUSE=""
RESTRICT="strip mirror"
RDEPEND="media-libs/imlib2
>=media-libs/freetype-2.1.10-r3"
DEPEND="${RDEPEND}
dev-util/pkgconfig
x11-proto/xproto
media-libs/fontconfig"
src_unpack() {
git_src_unpack
}
src_compile() {
# econf || die "configure failed"
./configure || die "configure failed"
# emake || die "compile failed"
emake || die "compile failed"
}
src_install () {
make DESTDIR="${D}" install || die "make install failed"
dodoc AUTHORS README
}
# Copyright 1999-2007 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/kde-misc/qtm/qtm-0.6.3.ebuild,v 1.10 2008/04/14 22:43:41 uberlord Exp $
DESCRIPTION="A blogging client which is presently capable of composing, formatting and submitting blog entries to a weblog"
HOMEPAGE="http://qtm.blogistan.co.uk"
SRC_URI="http://prdownloads.sourceforge.net/catkin/${P}.tar.bz2"
LICENSE="GPL-2"
SLOT="0"
KEYWORDS="amd64 ppc sparc x86 ~x86-fbsd"
IUSE=""
RESTRICT="strip mirror"
RDEPEND=">=x11-libs/qt-4.2
>=dev-util/cmake-2.4.3"
DEPEND="${RDEPEND}
dev-util/pkgconfig
dev-util/scons
x11-proto/xproto"
src_unpack() {
unpack ${A}
}
src_compile() {
cmake -D USE_STI:BOOL=TRUE .
emake || die "compile failed"
}
src_install () {
make DESTDIR="${D}" install || die "Installation failed"
dodoc README
}
馆训:
1.现在睡觉的话会做梦而现在学习的话会让梦实现
This moment will nap, you will have a dream; But this moment study,you will interpret a dream.
2.我无所事事地度过的今天是昨天死去的人们所奢望的明天
I leave uncultivated today, was precisely yesterday
perishes tomorrow which person of the body implored.
3.感到晚了的时候其实是最快的时候
Thought is already is late, exactly is the earliest time.
4.不要把今天的事拖到明天
Not matter of the today will drag tomorrow.
5.学习的痛苦是一时的而没有学习的痛苦是一辈子的
Time the study pain is temporary, has not learned the pain islife-long.
6.学习不是人生的全部但连学习都征服不了你还能做什么?
The study certainly is not the life complete. But, sincecontinually life part of - studies also is unable to conquer, what butalso can make?
7.学习不是因为缺少时间而是缺少努力
Studies this matter, lacks the time, but is lacks diligently.
8.所有人的成功都不是偶然的
Nobody can casually succeed, it comes from the thoroughself-control and the will.郭澧葱
9.无法避免的痛苦就去享受吧!
Please enjoy the pain which is unable to avoid.
10.早起的鸟儿有虫吃
Only has compared to the others early, diligently diligently, canfeel the successful taste.
11.成功并不属于每个人
Nobody can casually succeed
12.时间在流逝
HOW time flies
13.今天流下的口水将变成明天流下的泪水
Now drips the saliva, will become tomorrow the tear
以动手实践为荣,以只看不练为耻。
以打印日志为荣,以出错不报为耻。
以局部变量为荣,以全局变量为耻。
以单元测试为荣,以手工测试为耻。
以代码重用为荣,以复制粘贴为耻。
以多态应用为荣,以分支判断为耻。
以定义常量为荣,以魔法数字为耻。
以总结思考为荣,以不求甚解为耻。
30年前的6月8号,Intel发布了其第一款16位的微处理器--8086,还有一句著名的广告语“开启了一个时代”。有点夸大其词?那是,不过也的确说的比较准。当8086的光环退去之后,其支撑架构--后来我们所熟知的x86也成为了最成功的业界技术标准。
“X86”是Intel和其他几家公司处理器所支持的一组机器指令集,它大致确定了芯片的使用规范。从8086到80186、80286、80386、80486,再到后来的奔腾系列以及现在的多核技术,都是使用一脉相承的x86指令集,既不断扩展又向后兼容。
在8086之后的30年间,x86家族横跨了桌面、服务器、便携式电脑,超级计算机等等。无数对手败倒在了其脚下,甚至是一些看似已成定局的领域。例如近年来被x86所吞掉的苹果电脑,原来一直使用的是PowerPC。
那么Intel的架构是怎么统治了电脑世界这么多年?让我们一起来看看。
最初
在 1971年,Intel为一家日本计算器厂制造了Intel历史上的第一块处理器——4位的4004。很快,在1975年,Intel又推出了8位的处理器8008和8080。8080处理器为Altair8800 PC所采用。顺便说一句,Altair8800 PC是一台邮件订单处理计算机。比尔·盖茨和保罗·艾伦建立微软公司的时候,就曾把Basic卖给Altair8800 PC。
3年以后,16位的8086初次登场。在80年代初,IBM公司选择了8086的衍生产品8088作为IBM PC的处理器。IBM的这一行为给X86带来了巨大发展,并且帮助它成为了行业标准——一直到今天。
Intel 执行副总裁Patrick Gelsinger说:“PC行业发展的革命性转折点是1985年32位处理器80386的推出,它推动了整个行业的发展。当时,X86需要从早期的16 位寻址空间进行升级。”人们问我们:“32位是什么?”我们说:“它是给微型计算机和中型计算机用的。”那时人们总会嘲笑们说这太浪费了,这些是没必要的事情。
当时IBM抛弃了386,因为当时没有32位的软件发挥出它的性能。IBM自己也开发了16位的操作系统叫做OS/2。
当时担任386设计小组成员的Patrick Gelsinger说:“IBM当时拥有自己的整个架构。它们有它们自己的应用程序,操作系统和硬件设计。当IBM开发下一代产品时,他们将是唯一能够给提供全套解决方案的,只是并不能保证下一代过渡的兼容性。”
“当386到来时候,所以的一切变了,”Gelsinger说,:“我们从一个垂直的行业到一个水平的行业,而且我们真的打开了新世界之门。”
386 之后,1989年486诞生了。由于当时数字不能作为商标,Intel从1993年开始改变了产品命名方法。第五代处理器被命名为Pentium而不是 586。数字命名产品转变为Pentium命名(比如Pentium Pro, Pentium II and Pentium D)。从那时开始,Intel在X86体系中,增加了低端的赛扬系列和高端的双核系列产品。
所有的基于X86架构的芯片,开始于8086,一直延续到今天。当然他们的命名发生了变化,运算速度也有了惊人的提升。
成功的秘方
为什么X86能一直成功,击退甚至完全打败其他的处理器架构?从一开始来说,X86的诞生就是在一个很恰当的时间点。1978年的时候,计算从巨大、昂贵的中型计算机转变为小型、便宜的微型计算机已经有几年了。台式电脑成为变革的前沿。
更重要的是,X86证明了戈登·摩尔在1965年提出的一个定律。戈登.摩尔在后来成为Intel的主席和CEO。摩尔说,在成本不变的前提下,微处理每过 2年其运算速度会翻一番。他的预言,后来被成为摩尔定律,被证实是正确的。X86的发展道路越走越宽。X86处理器也从数据处理中心走向办公室和千家万户。
并且8086以及它的后续产品一直与电脑行业两个大名鼎鼎的名字紧紧联系在一起。在1972年,比尔·盖茨和保罗·艾伦就尝试用性能很弱的8008开发Basic编程语言,虽然后来失败了。但是他们最终在性能强劲一些的8080处理器上开发出了Basic语言,并在1975年把 Basic语言应用到Altair8800 PC。
这成为Intel和微软亲密关系的开始。微软从那开始,创造了一个巨大的软件帝国,并推动了整个行业的发展。在X86架构成功的过程中,可能没有比RISC 处理器的影响更巨大的了。
RISC的风险
在 20世纪80年代晚期和90年代早期,X86的一个巨大威胁产生了——RISC(精简指令集计算机)。采用RISC架构的处理器有Sun Sparc、IBM/苹果/摩托罗拉的PowerPC,以及MIPS处理器。RISC架构的核心思想是:处理器的指令集如果十分简单,一个时钟周期运行一个指令,那么处理器的速度会十分快。RISC的核心思想有别于以X86为代表的CISC(复杂指令集计算机),CISC的核心思想是采用复杂的多时钟周期指令。
计算机专家们和Intel的竞争对手们曾经预言CISC会最终消亡。“那确实是一个十分艰难的时期”,Gelsinger承认。确实,Intel很快开始开发自己的RISC工作站处理器i860。但是860或者其他RISC处理器最终都没能改变X86的地位。
根据领导了80486开发的Gelsinger的说法,原因是这样的:在486发布以前(1989年4月10日),已经有价值数百万美元的软件打算在486 平台上运行。虽然和RISC相比,x86(CISC)架构是有一点慢,但是当你花时间开发出适合RISC的软件的时候,我们已经开始出更快的x86处理器。我们有巨大的经济优势,因为我们已经有了一个良好的基础,并且我们有庞大的开发团队。RISC电脑不可能赶上我们。
具有讽刺意味的是,比80486和Pentium处理器性能更强的RISC处理器电脑由于缺少软件,最终消亡了,包括Intel自己的i860处理器和其他的RISC处理器。打算推出RISC架构是一个错误,Intel后来承认。
RISC 发明人之一,加州大学伯克利分校的计算机教授David Patterson说:“但是RISC激发了许多创新”。例如,电子设备集团的VAX架构能够也是随着RISC发展起来的,虽然最后也消亡了。但是 Intel能够吸收RISC的各种优秀想法,依靠他们雄厚的软件基础,改进旧有的架构。同时,Intel的成功的另外一个原因是它的先进的制造技术。
浮点错误的灾难
像 RISC一样让人痛彻心脾的危机,发生于1994年夏天的夏天,当时Intel的测试工程师发现了在新Pentium处理器的浮点电路中存在微小的错误。错误发生的几率很低,所以对于这些错误的影响,Intel仅仅对芯片修正后就重新进行生产,并且没有召回有瑕疵的芯片。
但是几个月后,弗吉尼亚州林奇堡学院的一位数学教授,就发现了这个缺陷。他无法找到Intel的任何人听他申诉,因为Intel当时并不承认。所以他把他的发现公布在互联网上。没过多久,Intel就陷入了舆论风暴之中,并导致了巨大的公共关系危机,最终花费了4亿7500万美元召回这批芯片。
“这是一次痛苦的经历,但是我们最终学会从消费者的角度出发”, 前Intel资深副总裁Albert Yu在他的著作《创造数字未来》中回忆说。
兼容并包
另外一个x86历史上的标志性的事件发生在1995年。卡内基梅隆大学计算机教授、Intel问题研究专家Todd Mowry这样说。当时Intel推出了革命性的Pentium Pro微处理器,能够预先考虑一串指令,并猜测那些需要不按照规则处理的指令。Pentium Pro还拥有一个全新的高速缓存,这一切保证了处理器能够获得大部分时间,并且在一些应用程序中表现出色。
“事情完全出乎意料”,Mowry说,:“他们使用了RISC的优点,但并没有改变指令集。他们把X86指令翻译成更像RISC指令的微操作。所以你拥有的是x86电脑中的RISC电脑。并且这样的做法弥补了X86原有的性能差距。
Mowry说Pentium Pro源于一个自上而下的设计处理。“他们先打算设计出一款高性能的电脑,再计算出怎样使得X86满足设计要求”,他说。
寻找非x86架构的优点和缺点,这是x86取得进步的方法。Gelsinger说:“Pentium是一个巨大的架构进步,我们从微型机和中型机中寻找优秀的想法,并且把这些想法在实践中做得更好,因为我们有一个巨大画布让这些美丽的想法尽情挥洒——这个画布的名字叫做硅。”
“中型机是把要处理的不同部分在机柜中的一个很广阔的空间内传递。与中型机不同,微处理器设计者们则把所有的信息单元放在在单独的、微小的、紧密集成的芯片上,这样设计会更加有弹性,设计的产品更出色。”他说。确实,这些年来,当由多种配件组成的电脑系统发展并不很快时,硅芯片取得了与摩尔定律所预测完全一致的惊人发展速度。
竞争愈演愈烈
Intel并没能够有避免竞争,哪怕是在自家的x86架构领域。例如,1987年创建于硅谷的台湾威盛公司采用了x86的技术,销售主板芯片组。威盛目前生产很广的一系列产品,并且打算生产自己的x86架构低能耗移动处理器。
AMD 公司,世界第二大芯片制造商,自从2000年以来,它已经成为了Intel的强有力的竞争对手。在整个20世纪80年代和90年代,AMD已经成为一个 x86芯片的模仿者,并且几乎对Intel产生重大影响。(Mercury咨询:AMD仍然有占有15%的x86兼容台式机和移动电脑市场份额)。
但是AMD出人意料的在2000年推出了64位的基于x86扩展指令集的处理器,并取得了良好的技术声誉和市场效果。作为一个扩展集,它意味着新的x86架构的64位处理器能够运行旧的32位软件。
在那时,Intel的64位产品是安腾,由于Intel和HP开发,主要用于超标量执行。该处理器在一个大铁箱中,并且它不与x86架构的32位软件兼容。 Intel面对AMD的威胁,在2004年,推出了自己的64位x86指令扩展集,EM64T。事实表明,AMD已经在最重要的64位产品市场打败了 Intel。
“这是一个用x86指令集的灵活性对抗Intel的例子”,Patterson说,“所以尽管Intel统治着这个市场,其他公司也能够改变x86的发展方向。”
挑战极限
今天,Intel的x86在计算的极限领域微不足道。在4月28日,Intel宣布它将与Cray电脑公司一起,发展基于x86架构的超级计算机芯片。(Cray已经使用了AMD的基于x86的64位皓龙处理器。)
在 4月2日,上海举行的Intel全球发展论坛上,Intel宣布基于x86架构的Atom处理器,这是Intel目前的最小的处理器。它的能耗小于2.5 瓦,而一款典型的桌面处理器的能耗为35瓦。就在这周,Intel将为小型台式机和台式机发布两款新的Atom处理器。
所以,x86 能够再生存并繁荣30年么?在竞争的格局中,将有许多力量从根本上改变微处理器的设计,甚至就会发生就在近期发生。但是几乎没有人预测令人尊敬的x86架构会消亡。卡内基梅隆大学的Mowry说道:“我们恐怕很难看到其他的指令集取代x86,因为有太多的有价值的软件运行在x86架构上。”
6.你想给某人发悄悄话可以用:
/msg nickname这里的nickname为你好友的昵称。
7)修改自己的密码:
/msg nickserv set password新密码
注意:如果密码忘了,请联系管理员。
8)删除自己(如果你不满意这个昵称或不想在IRC聊天了):
/msg nickserv drop希望只是不满意这个昵称,而不是不再来了。:)
9)注册频道:
/msg chanserv register #频道名密码简短说明
注册频道之前,你必须已经在这个频道里,并且你是有帽子(@符号)的。
# Copyright 1999-2007 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/x11-misc/bmpanel/bmpanel-0.9.14.ebuild,v 1.10 2008/04/14 22:43:41 uberlord Exp $
DESCRIPTION="A themeable reincarnation of fspanel"
HOMEPAGE="http://nsf.110mb.com/bmpanel/"
SRC_URI="http://nsf.110mb.com/bmpanel/${P}.tar.gz"
LICENSE="GPL-2"
SLOT="0"
KEYWORDS="amd64 ppc sparc x86 ~x86-fbsd"
IUSE=""
RESTRICT="strip mirror"
RDEPEND="dev-libs/libev
media-libs/imlib2
>=media-libs/freetype-2.1.10-r3"
DEPEND="${RDEPEND}
dev-util/pkgconfig
dev-util/scons
x11-proto/xproto"
src_unpack() {
unpack ${A}
}
src_compile() {
scons || die "scons failed"
}
src_install () {
dodir /usr/bin
scons prefix="${D}/usr" install || die "scons install died"
}
# Copyright 1999-2007 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/dev-libs/libev/libev-3.2.ebuild,v 1.3 2008/04/14 22:44:38 uberlord Exp $
inherit multilib eutils
DESCRIPTION="A full-featured and high-performance event loop"
HOMEPAGE="http://software.schmorp.de/pkg/libev.html"
SRC_URI="http://dist.schmorp.de/libev/${P}.tar.gz"
LICENSE="LGPL-2"
SLOT="0"
KEYWORDS="~alpha ~amd64 ~hppa ~ppc ~sparc ~x86 ~x86-fbsd"
DEPEND=""
RDEPEND="${DEPEND}"
src_unpack() {
unpack ${A}
cd "${S}"
}
src_compile() {
econf \
--prefix=/usr || die "configure failed"
emake || die "emake failed"
}
src_install() {
emake DESTDIR="${D}" install || die "make install failed"
dodoc ChangeLog VERSION README
}
ACCESS DENIED unlink: /usr/bin/bmpanel
scons: *** [/usr/bin/bmpanel] /usr/bin/bmpanel: Permission denied
想说的太多了,可是我又什么都不想说
这是为什么呢?
自己反复想可就是想不通,what happens to me?
anything i can do ,and what could i do ?
that is nothing
let it proved by times!
主要是参靠http://www.oceanboo.cn/index.php的配置修改的,美观还有待提高,呵呵,不过的确很快,资源占用很小
没有用rox主要是pcmanfm用习惯了,还有就是习惯了tilda的嵌入桌面了,rxvt和tilda换着用感觉很爽
经常遇到这些东西,每次都拿计算器计算太麻烦,在网上看见了一个列表,转过来:
0x40000000是1GB处;
0x00040000是256K处,
0x00020000是128K处,
0x90000000是2GB多的地方。
1M->0x00100000,
2M->0x00200000,
8M->0x00800000
16M->0x01000000,
32M->0x02000000
256M->0x10000000
64K->0x00010000
4K->0x00001000
kernel (hd0,4)/boot/CDlinux/autoboot/bzImage vga=791
initrd (hd0,4)/boot/CDlinux/autoboot/CDlinux
#pppoe-setup
#pppoe-start
# mkreiserfs /dev/sda4 (正常应该是hda4,但是这里cdlinux识别成了sda4,无所谓,待会写fstab的时候改回来就好了)
# mkfs.ext3 /dev/sda3
# mkswap /dev/sda6
# swapon /dev/sda6
# mkdir /home/gentoo/ (本想在/mnt下创建目录的,但是/mnt貌似是只读的 ,无所谓哪里都行)
# mount /dev/sda4 /home/gentoo/
# mkdir /home/gentoo/boot
# mount /dev/sda3 /home/gentoo/boot/
#tar xvjpf stage3-i686-2007.0.tar.bz2
#tar xvjf /home/gentoo/portage-latest.tar.bz2 -C /home/gentoo/usr
# These settings were set by the catalyst build script that automatically built this stage
# Please consult /etc/make.conf.example for a more detailed example
#CFLAGS="-O2 -march=i686 -pipe"
CFLAGS="-mtune=pentium-m -march=pentium-m -O2 -pipe -fomit-frame-pointer -msse2 -msse -mmmx -mfpmath=sse"
CHOST="i686-pc-linux-gnu"
CXXFLAGS="${CFLAGS}"
LDFLAGSHASHSTYLE=" -Wl,-O1 -Wl,--hash-style=both"
GENTOO_MIRRORS="http://61.135.158.199 \
http://mirror.qubenet.net/mirror/gentoo \
http://gentoo.chem.wisc.edu/gentoo \
http://mirror.averse.net/pub/gentoo \
http://mirror.lupaworld.com/gentoo"
#ftp://ftp3.tsinghua.edu.cn/mirror/gentoo \
#http://ftp.belnet.be/packages/gentoo \
#http://mirror.espri.arizona.edu/gentoo/ \
#http://ftp.gentoo.or.kr/ \
#http://mirror.espri.arizona.edu/gentoo/ \
#http://mirror.gentoo.gr.jp/ \
#http://ftp.swin.edu.au/gentoo/ \
#ftp://ftp.sjtu.edu.cn/gentoo/ \
#http://gentoo.chem.wisc.edu/gentoo/ \
#http://gentoo.inode.at/ \
#http://mirror.gentoo.gr.jp/ \
#http://gentoo.gg3.net/ \
#http://www.ibiblio.org/gentoo/"
#SYNC="rsync://rsync.au.gentoo.org/gentoo-portage"
#SYNC="rsync://mirror.averse.net/gentoo-portage"
SYNC="rsync://rsync.qubenet.net/gentoo-portage/"
#SYNC="rsync://61.135.158.199/gentoo-portage"
#SYNC="rsync://rsync.namerica.gentoo.org/gentoo-portage/"
#SYNC="rsync://mirror.espri.arizona.edu/gentoo/"
#SYNC="rsync://gentoo.139pay.com/gentoo-portage"
#SYNC="rsync://linux.ntcu.net/gentoo-portage"
#SYNC="rsync://rsync.gentoo.org/gentoo-portage"
#SYNC="rsync://gentoo.chem.wisc.edu/gentoo/gentoo-portage"
#SYNC="rsync://acm.cs.rpi.edu/gentoo-portage"
#SYNC="rsync://61.135.158.199/gentoo-portage"
#SYNC="rsync://38.99.64.200/gentoo-portage"
#SYNC="rsync://rsync.asia.gentoo.org/gentoo-portage"
#SYNC="rsync://219.111.13.142/gentoo-portage"
#SYNC="rsync://61.135.158.199/gentoo-portage"
#SYNC="rsync://gentoo.kems.net/gentoo-portage"
#SYNC="rsync://202.1.117.1/gentoo-portage"
#SYNC="rsync://ftp.swin.edu.au"
#SYNC="rsync://rsync.gg3.net/portage"
#SYNC="rsync://rsync.de.gentoo.org/gentoo-portage"
#SYNC="rsync://mirror.lupaworld.com/gentoo/gentoo-x86-portage"
#SYNC="rsync://http://mirror.lupaworld.com/gentoo/gentoo-x86-portage/"
#SYNC="rsync://ftp3.tsinghua.edu.cn/gentoo/gentoo-portage"
PORTDIR_OVERLAY="/usr/local/portage/overlay /usr/local/portage/compiz-overlay /usr/local/portage/gfxboot_overlay"
MAKEOPTS="-j2"
ACCEPT_KEYWORDS="~x86"
USE="X aac accessibility alsa -apm -arts avi avahi bash-completion branding bitmap-fonts cairo -cdr clucene cjk crypt loop-aes -cups curl dbus -doc dri dvd -dvdr -eds emboss encode esd fbcon fbcondecor fbsplash festival firefox gdbm gdm gif gnome gpm gstreamer gtk gtk2 hal -ipv6 java jpeg -kde -kde4 -kdeenablefinal ldap libwww lyrics mad -mozilla mpd mikmod mmx mng mono moznopango mp3 mpeg msn -mysql ncurses nls nptl nptlonly newspr ogg opengl oss pam pcre pdf perl png python qq -qt3 -qt4 quicktime rar real readline rtc sdl session spell srt sse sse2 ssl svg symlink taglib tcpd truetype truetype-fonts type1-fonts unicode vim vim-syntax vorbis win32codecs xml xorg xosd xv zlib"
FEATURES="sandbox parallel-fetch ccache "
LINGUAS="zh_CN"
CCACHE_SIZE="1G"
CCACHE_DIR="/var/tmp/ccache/"
VIDEO_CARDS="radeon fbdev"
ALSA_CARDS="atiixp"
INPUT_DEVICES="keyboard mouse evdev synaptics"
PORTAGE_ECLASS_WARNING_ENABLE="0"
FETCHCOMMAND="/usr/bin/axel -a -n2 \${URI} -o \${DISTDIR}" #
RESUMECOMMAND="/usr/bin/axel -a -n2 \${URI} -o \${DISTDIR}"
source /usr/local/portage/layman/make.conf
2007年10月15日
版本:0.1
整 个中国,相互连接的计算机构成了一个超大的局域网,但是在这个局域网面向海外的出口那里有一堵墙,它的名字叫做“The Great Fire Wall of China”,它的简称就是传说中的GFW,目前对其比较时髦的称谓是“和谐”。就是因为这堵墙,我们才不会被国外那些反华、反共、淫秽的信息所荼毒;也 是因为这堵墙,我们经常难以访问许多优秀的网络站点,譬如维基百科全书、Google Blogger、Google Page等。
对于GFW这种“宁肯错杀一千,也不放过一万”的做法,我的个人态度是非常痛恨但不打算指责,只好努力通过一些技术手段来获取访问那些被GFW了的好网站,来满足自己获取知识的需求。
目 前,我所衷爱并正在使用的操作系统是Gentoo Linux,因此在这篇并不太长的文档中,我要讲述在Gentoo下如何使用Tor、Firefox+Foxyproxy扩展来访问这些被“和谐”了的健 康网站。当然,本文的大部分内容也适合其他Linux发行版。对于Windows用户而言,本文内容除了有关Tor的安装与配置方法有区别外,其他有关 Firefox+FoxyProxy配置的内容是可以作为参考的。
战争年代,难民们要从一座城市到另一座城市,他们要是走大路,很容易被敌军设置的路卡拦截,所以他们会选择一些只有乡下人才知道的田间小路,以隐藏自己的踪迹。
现在,我们身处信息时代,虽然不像战争年代那样残酷,但是从我们计算机发出或接受的信息都有可能被居心叵测的网络“路卡”(包括GFW)所拦截。所以我们要寻找一些可以隐藏自己踪迹的“田间小路”,它就是Tor。
有关Tor的详细描述请参考 这里,本文主要专注于Tor的具体应用。
对于Gentoo用户,安装Tor是一件非常容易的事情,只需要:
# emerge -avt tor
下一步是配置Tor,首先将其一个配置文件示例中的内容作为其默认配置:
# cp /etc/tor/torrc.sample /etc/tor/torrc
然后启动Tor服务,以监听所有来访Tor端口的信息:
# /etc/init.d/tor start
如果不想每次都手动启动Tor服务,可以将其添加到系统启动过程中,这样每次启动Gentoo时,都会自动为你开启Tor服务。设置如下:
# rc-update add tor default
Firefox有一个扩展,唤作FoxyProxy,是用来为一些站点配置专门的代理服务访问的,它可以从 这里 下载安装。如果你对Firefox的扩展安装还处于懵懂无知的境地,可以参考 这里。我在这里只说一下安装完FoxyProxy扩展并重启Firefox之后的故事。
首先,重启Firefox后,会弹出这样的对话框:
对于这个对话框,嘛也别说了,点击 “是” 按钮,让FoxyProxy可以与Tor协同工作。
紧接着会弹出 :
Privoxy是Tor的黄金搭档,专门用于实现Tor的Web代理访问的一个工具,由于FoxyProxy无需要Privoxy的支持即可调动Tor为其工作,所以这里选择“不使用”,而且我们也没必要去安装Privoxy。
下面弹出的对话框是让你选择Tor的监听端口的,默认值为“9050”,我们使用这个默认值就好。
说实在的,我很不太满意FoxyProxy的安装过程,一个一个对话框的向外跳,很烦人呃。为啥就不能把这些设置放在一个对话框面板中让用户进行设定呢?无论你是否愿意,如果像我这样决定使用FoxyProxy了,还是耐心一些了。喏,下面又是一个对话框:
对于这个对话框所提出的问题,我也不知道如何选择,那么就按照它的提示,选择 “是”。听人劝,吃饱饭。
下 面跳出的这个对话框,不需要你选择什么,直接点击 “确定” 按钮即可。这个对话框实际上是FoxyProxy的配置面板,目前已经为你配置了使用Tor来访问你的 GMail 帐户,实际上在此你可以谢绝这个好意,将这项配置选中并删除。这个面板的用法,在下文中我们还要碰到,在此就略表即可。
下面弹出一个欢迎信息的对话框,祝贺你完成了FoxyProxy有关Tor的配置,点击 “确定” 即可。
下面会弹出最后一个对话框,提示你现在重新启动一下Firefox,请点击 “是”按钮。
埃,傻瓜式的配置过程终于结束了。这个过程让我心里有好多恶心的感觉,感觉那熟悉的Windows风格又回来了。
FoxyProxy安装完后,会在Firefox的任务栏上显示出任务图标:
本节主要介绍如何配置FoxyProxy,以便让Firefox畅通无阻地访问经常被和谐的Google Page、Google Blogger站点。
在Firefox任务栏上左键单击FoxyProxy图标,即可弹出FoxyProxy配置对话框,在该对话框中你可以新建、删除特定站点的代理服务器配置。
点击FoxyProxy配置对话框上的“新建代理服务器”按钮,打开下面的代理配置对话框,并在其“常规”页面上填写一些可以让自己明白所设置代理服务器意义的信息:
在FoxyProxy代理配置对话框的“代理服务器细节”页面上作以下设置,给出代理服务器地址、端口等信息:
在FoxyProxy 代理配置对话框的“模板”页面上设定使用这一代理服务器访问的站点模板。所谓的站点模板实际上就是所访问网站的域名匹配字串,该字串有两种形式:通配符与 正则表达式。这样,Firefox将会根据此处设置的字串去匹配地址栏中你所输入的网址,如果匹配成功,那么就自动使用前面所设定的代理服务器访问相应站 点。
在“模板”配置页面上,点击“添加新模板”按钮,即可打开用于配置新模板的对话框。下图在该对话框中配置了匹配Google Page Creator的模板:
照 葫芦画瓢,我们可以再建立两个模板:1)用于匹配“*googlepages.com/*”域名的模板,可用于访问Google Page Creator创建的页面;2)用于匹配"*blogspot.com/*"域名的模板,用于访问Google Blogger。新模板配置完毕后,点击配置新模板对话框的“确定”按钮,回转到FoxyProxy代理配置对话框的“模板”页面,在模板列表栏里可以看 到刚才所设定的模板了:
最后点击确认按钮,可以回转到在FoxyProxy代理配置对话框,在代理服务器列表栏里可以看到相应的代理服务器信息。
最 后,点击FoxyProxy代理配置对话框中的确认按钮结束配置任务。现在,Firefox应该可以访问Google Page Creator、Google Blogger等站点了。如果不放心,可以重新启动一下Firefox。要确认所设定的代理是否可用,可以访问一些Google Page或Google Blogger站点测试一下,比如访问我的 Google Page。
这 一节的内容至此已经结束,但是你也许会奇怪,为什么这一节的标题叫做“狐假狐威”的FoxyProxy呢?这是因为Firefox本身就具备这种专用的代 理服务器配置功能,这一功能是通过代理服务器自动配置脚本来实现的,也就是“.pac”文件,譬如上面FoxyProxy中的Google Servers代理配置过程可以写成一个“google-servers.pac”文件,其内容如下:
function FindProxyForURL(url,host){
if(dnsDomainIs(host, ".blogspot.com")){
return "PROXY 72.14.219.190:80";
}
if(dnsDomainIs(host, ".googlepages.com")){
return "PROXY 72.14.219.190:80";
}
if(dnsDomainIs(host, "pages.google.com")){
return "PROXY 72.14.219.190:80";
}
return "DIRECT";
}
这种自动代理配置脚本代码是javascript代码,Firefox与IE中都可以使用它来控制某一网站的代理服务访问模式。有关它的具体用法,可以google到更为详细的资料,此处略表不提。
上一节讲了FoxyProxy怎样狐假狐威地作为Google Servers代理服务器的,其实FoxyProxy还是有一些真才实学的,譬如它与Tor的配合使用。
前文已经提到过将Tor用户网络代理访问工具的黄金搭档是Privoxy,但是对于我们仅仅使用Tor来访问一些被GFW的网站而言,使用FoxyProxy即可。下面通过在FoxyProxy中配置一个Tor代理来访问 http://zh.wikipedia.org
作为示例,演示一下FoxyProxy与Tor的配合使用方法。
首先,点击Firefox任务栏上FoxyProxy的图标,打开配置对话框。在“代理服务器”配置页面上的列表栏中显示已配置的代理服务器,如下图所示。
由 于前文在安装FoxyProxy时,已经配置了一个默认的Tor代理服务器,现在用鼠标左键双击列表栏中的Tor服务器条目,即可打开该代理服务器配置页 面,并作出如下图所示的设定。注意,此处对于代理服务器地址与端口的设定,必须与Tor配置文件中的代理服务器地址与端口信息相一致。Tor的配置文件即/etc/tor/torrc
(见前文安装Tor的内容)。对于本文而言,/etc/tor/torrc
文件中Tor的代理服务器地址与端口是与此处FoxyProxy中的设定是一致的。
完成Tor代理服务器配置之后,就可以访问 维基中国网站了。
你也可以使用Tor来访问其他一些被GFW的内容健康的网站,但是你一定会抱怨访问速度怎么这么慢。这时,你应当好好了解一下Tor的工作原理,只有如此,你才能心里上略加安慰,并积极地使用Tor,甚至把自己的网络也融为Tor的一部分。
quickpkg portage 备份当前的portage包,以便出现问题恢复
quickpkg bash 备份当前的bash包,以便出现问题恢复
emerge -uO portage O就是不考虑依赖关系
emerge -uDNpv world D=--deep N=--newuse
最为重要的是,这些精彩的扩展几乎都不是我们所熟知的著名产品,它可以有效地提升您的浏览体验.
PicLens可以立即将你的浏览器变成全屏3D视角,形成一个3D浏览墙,可以通过拖放,点击,缩放等操作来加强浏览体验.
通过拖动快速收集超级链接
类似于Windows Vista的任务栏预览.
FireFox的提醒软件,贵人从此少忘事
显示下载的进度,再也不用点菜单来浏览下载情况
将FireFox变成专业级的文字处理工具,挺酷吧!
将书签同步到网上,就算到了另一台机器也可以轻松获取到
3D Cube功能
快速预览一个站点,并且通过图形的方式直接引导访问.
对网上的内容进行评分,这样你可以参考大家的意见做出自己的选择.
最近研究了s3c2410下LCD控制器的相关知识,主要的参考资料就是 三星s3c2410数据手册(arm920T),英文版,看的不是非常明白,后来参考了WinCE下的部分代码,似有所领悟。于是写了此程序,用以在LCD上显示图片。
本程序可以在LCD上居中显示小于800×480的任意大小的图片。用到的辅助工具就是上篇文章中的RGB分量提取器.
关键模块如下:
0、全局变量的定义:
#define DMA_BUFFER_BASE 0xAC000000
#define DMA_PHYSICAL_BASE 0x35000000 // S3C2410X01 0x30000000
#define FRAMEBUF_BASE (DMA_BUFFER_BASE + 0x00100000)
#define FRAMEBUF_DMA_BASE (DMA_PHYSICAL_BASE + 0x00000000)//0x00100000
#define IOP_BASE 0x56000000 // 0x56000000
typedef struct {
unsigned int GPACON; // 00
unsigned int GPADAT;
unsigned int PAD1[2];
...................
}IOPreg;
// Define LCD type of S3C2400X01
#define TFT24BPP 3
#define LCDTYPE TFT24BPP // define LCD type as upper definition.
//
// Registers : LCD Controller
//
#define LCD_BASE 0x4D000000 // 0x4D000000
typedef struct {
unsigned int LCDCON1; // 00
unsigned int LCDCON2; // 04
unsigned int LCDCON3; // 08
.....................
}LCDreg ;
// LCD register value
#define MODE_TFT_24BIT (224)
#define LCD_XSIZE_TFT (800)
#define LCD_YSIZE_TFT (480)
#define ARRAY_SIZE_TFT_24BIT (SCR_XSIZE*4*SCR_YSIZE)
#define HOZVAL_TFT (LCD_XSIZE_TFT-1)
#define LINEVAL_TFT (LCD_YSIZE_TFT-1)
#define MVAL (13)
#define MVAL_USED (0)
#define VBPD ((32-1)&0xff)
#define VFPD ((11-1)&0xff)
#define VSPW ((2-1) &0x3f)
#define HBPD ((88-1)&0x7f)
#define HFPD ((40-1)&0xff)
#define HSPW ((128-1)&0xff)
#define CLKVAL_TFT (1)
#define M5D(n) ((n) & 0x1fffff)
U32* pLCDBuffer24=(U32*)FRAMEBUF_DMA_BASE;
U32* picData;
volatile LCDreg *s2410LCD = (LCDreg *)LCD_BASE;
volatile IOPreg *s2410IOP= (IOPreg *)IOP_BASE;
int nCol = 800;//象素列数
int nRow = 480;//象素行数
U32* picDataT=NULL;
1、入口函数,其中包括了相应端口、寄存器初始化的入口,aa,bb,cc,dd,ee是可选择的5幅预定义图片的GRB码数组,具体代码如下
void lcd_Main(void)
{
char sel;
Uart_Printf("Lcd_Driver ");
lcd_port_init();
lcd_regs_init();
Uart_Printf("select one Picture to show(1 2 3 4 5 0) ");
while((sel = Uart_Getch()) != 'e')
{
Uart_Printf("%c ",sel);
switch(sel)
{
case '1':
picData = (U32*)aa;break;
case '2':
picData =(U32*)bb;break;
case '3':
picData = (U32*)cc;break;
case '4':
picData = (U32*)dd; break;
case '5':
picData = (U32*)ee;break;
default:
Uart_Printf("Input 1 2 3 4 5 0 ");
}
lcd_display();
Uart_Printf("select one Picture to show(1 2 3 4 5 0) ");
}
Uart_Printf("Exit");
//lcd_close();
}
2、相应端口设置,包括GPC,GPD,GPG的相应位的设置:
void lcd_port_init(void)
{
// LCD port initialize.
s2410IOP->GPCUP = 0xFFFFFFFF;
s2410IOP->GPCCON = 0xAAAAAAAA;
s2410IOP->GPDUP = 0xFFFFFFFF;
s2410IOP->GPDCON = 0xAAAAAAAA;
s2410IOP->GPGCON &= ~(3 <<>GPGCON |= (1 <<>GPGDAT |= (1 <<>LCDCON1 = (1 << vclk =" HCLK"> About 7 Mhz
(MVAL_USED <<>LCDCON2 = (VBPD <<>LCDCON3 = (HBPD <<>LCDCON4 = (MVAL <<>LCDCON5 = 0x00000000;
/**//*
s2410LCD->LCDCON5 = (0 <<>LCDSADDR1 = ((FRAMEBUF_DMA_BASE >> 22) <<>> 1)) << lcdbank =" ((FRAMEBUF_DMA_BASE">> 22) << lcdbaseu =" ((M5D(FRAMEBUF_DMA_BASE)">> 1) <<>LCDSADDR2 = (M5D(FRAMEBUF_DMA_BASE) >> 1) + ( (LCD_XSIZE_TFT*2) + 0 )*(LINEVAL_TFT+1);
//LCDBASEL = s2410LCD->LCDSADDR2
s2410LCD->LCDSADDR3 = (((LCD_XSIZE_TFT - LCD_XSIZE_TFT) / 1) << offsize =" (((LCD_XSIZE_TFT" pagewidth =" (LCD_XSIZE_TFT)">TPAL = 0x0;
s2410LCD->LCDCON1 |= 1;
#endif
}
4、居中显示图片:
void lcd_display(void)
{
int y;
int pw, ph;
int sw=800, sh=480;
U32* pdata;
U32* pBt=NULL;
lcd_clear();
get_XY();//获得图片的宽与高,以保存在RGB数组的头两个字节。
pw = nCol, ph = nRow;
pBt = pLCDBuffer24 + sw*(sh/2-ph/2) + (sw/2-pw/2);//定位图片显示的起始位置
pdata = (U32*)picDataT;
for(y=0; y
}
5、每次显示都要获得图片的宽度和高度,并且清除前面的屏幕,所谓清屏就是显示背景图片(蓝色):
void lcd_clear()
{
int y=0;
U32* pdata = (U32*)(bgData+2);
for(y=0; y<480; ++y)
{
memcpy((pLCDBuffer24+800*y),(char*)pdata,800*4);
pdata = (U32*)(pdata+800);
}
}
void get_XY(void)
{
nCol = picData[0];
nRow = picData[1];
picDataT =(U32*) (picData + 2);
}
开机的程序是这样的:
1. 加载 BIOS 的硬件信息,并取得第一个开机装置的代号;
2. 读取第一个开机装置的 MBR 的 boot Loader (亦即是 lilo, grub, spfdisk 等
等) 的开机信息;
3. 加载 Kernel 操作系统核心信息, Kernel 开始解压缩,并且尝试驱动所有硬件装
置;
4. Kernel 执行 init 程序并取得 run-level 信息;
5. init 执行 /etc/rc.d/rc.sysinit 档案;
6. 启动核心的外挂模块 (/etc/modprobe.conf);
7. init 执行 run-level 的各个批次档( Scripts )
Playing My Game Lene Marlin
静谧的空气里,却不能忽略这样一副好嗓音,一份迷茫,一缕落寞
曲目推荐:Sitting Down Here
Konvicted Akon
至终都充满了节奏音感,精炼的blues接踵而至,涌入耳膜。如果你喜欢蓝调 嘻哈,怎能错过这位饶舌天才的音乐呢。
曲目推荐:Dont Let Up
Metamorphosis Hilary Duff
初次听她的歌完全是冲于专辑封面,略带轻摇滚的音乐风格,自然,甜美却不失张力
曲目推荐:Where Did I Go Right
Back To Basics Christina Aguilera
爵士不是我喜欢的音乐 但是在这张专辑里,我听出了不同的味道。珠,玉,野心 迸裂,如果你想跳
曲目推荐:save me from myself
Trust Me CRAIG DAVID
太多的优点 太多的惊艳 太多的……归于兀自。07,我庆幸听到了他的音乐,trust me。你,还想说什么
曲目推荐:Hot Stuff-Let’s Dance
we are one Kelly Sweet
清新 空灵 脱俗 如同精灵一般,用天使的嗓音吟唱着凡间的音乐,用娓约的声音诉说着那股抛不开的淡淡悲伤
曲目推荐:we are one
Music for Tourists Chris Garneau
游离在中音区的情感诉说,辅以钢琴与大提琴作为旋律表达。用心去听,或许,你会有种想哭的感觉。
曲目推荐:black and blue
breakaway Kelly Clarkson
可爱的封面包装确实不同味道的风格。发酵的音乐旋律,搭配着摇滚味儿的唱腔,破茧而出。
曲目推荐:BeautifulDisaster
Not Going Anywhere Keren Ann
一个人呼吸 低调 飘渺的雾气充斥在生活之中 适合于清静的环境 一个人慢慢得思绪 回味 享受
曲目推荐:End Of May
Naughty But Nice Sarah Connor
独有质感的嗓音 磅礴 大气 听她的歌,总能将情感空间提升到一个思绪澎湃的境界 投入 亦无法平静 欲罢不能。
曲目推荐:Living To Love You
make[2]: Entering directory `/var/tmp/portage/sys-apps/which-2.19/work/which-2.19/tilde'
source='tilde.c' object='tilde.o' libtool=no \
DEPDIR=.deps depmode=none /bin/sh ../depcomp \
i686-pc-linux-gnu-gcc -DHAVE_CONFIG_H -I. -I. -I.. -mtune=pentium-m -march=pentium-m -O2 -pipe -fomit-frame-pointer -msse2 -msse -mmmx -mfpmath=sse -c tilde.c
source='shell.c' object='shell.o' libtool=no \
DEPDIR=.deps depmode=none /bin/sh ../depcomp \
i686-pc-linux-gnu-gcc -DHAVE_CONFIG_H -I. -I. -I.. -mtune=pentium-m -march=pentium-m -O2 -pipe -fomit-frame-pointer -msse2 -msse -mmmx -mfpmath=sse -c shell.c
Unknown depmode none
make[2]: *** [tilde.o] Error 1
make[2]: *** Waiting for unfinished jobs....
Unknown depmode none
make[2]: *** [shell.o] Error 1
make[2]: Leaving directory `/var/tmp/portage/sys-apps/which-2.19/work/which-2.19/tilde'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/var/tmp/portage/sys-apps/which-2.19/work/which-2.19'
make: *** [all] Error 2
*
* ERROR: sys-apps/which-2.19 failed.
* Call stack:
* ebuild.sh, line 49: Called src_compile
* environment, line 2050: Called die
* The specific snippet of code:
* emake || die "emake failed";
* The die message:
* emake failed
其一
[界面]
候选词个数=10
主窗口使用3D界面=0
输入条使用3D界面=0
主窗口隐藏模式=1
是否自动隐藏输入条=1
显示虚拟键盘=0
输入条居中=1
首次显示输入条=1
# 输入条固定宽度(仅适用于码表输入法),0表示不固定宽度
输入条固定宽度=0
输入条偏移量X=0
输入条偏移量Y=67108880
序号后加点=1
显示打字速度=0
显示版本=0
光标色=92 210 131
主窗口背景色=255 255 255
主窗口线条色=229 229 229
主窗口输入法名称色=191 191 191 80 220 150 30 160 250
输入窗背景色=255 255 255
输入窗提示色=250 40 200
输入窗用户输入色=250 40 200
输入窗序号色=250 40 200
输入窗第一个候选字色=30 160 250
# 该颜色值只用于拼音中的用户自造词
输入窗用户词组色=250 40 200
输入窗提示编码色=100 100 255
# 五笔、拼音的单字/系统词组均使用该颜色
输入窗其它文本色=30 160 250
输入窗线条色=229 229 229
输入窗箭头色=30 240 170
虚拟键盘窗背景色=255 255 255
虚拟键盘窗字母色=250 40 200
虚拟键盘窗符号色=30 160 250
其二
粉色
光标色=102 159 66
主窗口背景色=255 255 255
主窗口线条色=203 202 186
主窗口输入法名称色=153 153 153 102 159 66 56 134 230
输入窗背景色=255 255 255
输入窗提示色=2 89 196
输入窗用户输入色=255 0 132
输入窗序号色=0 66 200
输入窗第一个候选字色=0 99 200
#该颜色值只用于拼音中的用户自造词
输入窗用户词组色=0 99 200
输入窗提示编码色=255 0 132
#五笔、拼音的单字/系统词组均使用该颜色
输入窗其它文本色=56 134 230
输入窗线条色=203 202 186
输入窗箭头色=193 227 151
虚拟键盘窗背景色=220 220 220
虚拟键盘窗字母色=80 0 0
虚拟键盘窗符号色=0 0 0
其三
ubuntu主题
[界面]
候选词个数=10
主窗口是否使用3D界面=1 #
输入条使用3D界面=1
主窗口隐藏模式=1 #0-->一直显示在顶层;1-->只有在中文输入状态下才显示;2--> 不显示
显示虚拟键盘=0
是否自动隐藏输入条=1
输入条是否居中=0
首次显示输入条=0
#输入条固定宽度(仅适用于码表输入法),0表示不固定宽度
输入条固定宽度=0
输入条偏移量X=0
输入条偏移量Y=12
序号后加点=1
显示打字速度=0
显示版本=0
光标色=160 446 46
主窗口背景色=240 240 240
主窗口输入法名称色=153 153 153 200 200 200 240 153 50
主窗口线条色=245 154 49
输入窗背景色=240 240 240
输入窗提示色=48 132 240
输入窗用户输入色=255 0 255
输入窗序号色=239 104 49
输入窗第一个候选字色=238 103 48
#该颜色值只用于拼音中的用户自造词
输入窗用户词组色=241 154 49
输入窗提示编码色=255 0 255
#五笔、拼音的单字/系统词组均使用该颜色
输入窗其它文本色=245 154 49
输入窗线条色=237 104 48
输入窗箭头色=193 227 151
虚拟键盘窗背景色=219 211 188
虚拟键盘窗字母色=245 154 49
虚拟键盘窗符号色=238 103 48
其四
黑色主题
[界面]
候选词个数=10
主窗口是否使用3D界面=1 #
输入条使用3D界面=1
主窗口隐藏模式=1 #0-->一直显示在顶层;1-->只有在中文输入状态下才显示;2--> 不显示
显示虚拟键盘=0
是否自动隐藏输入条=1
输入条是否居中=0
首次显示输入条=0
#输入条固定宽度(仅适用于码表输入法),0表示不固定宽度
输入条固定宽度=0
输入条偏移量X=0
输入条偏移量Y=12
序号后加点=1
显示打字速度=0
显示版本=0
光标色=160 446 46
主窗口背景色=30 34 35
主窗口线条色=29 123 213
主窗口输入法名称色=153 153 153 170 170 170 255 255 0
输入窗背景色=30 34 35
输入窗提示色=1 154 232
输入窗用户输入色=255 0 255
输入窗序号色=255 255 255
输入窗第一个候选字色= 85 255 85
#该颜色值只用于拼音中的用户自造词
输入窗用户词组色=255 255 0
输入窗提示编码色=255 0 255
#五笔、拼音的单字/系统词组均使用该颜色
输入窗其它文本色=255 255 0
输入窗线条色=1 183 255
输入窗箭头色=193 227 151
虚拟键盘窗背景色=30 34 35
虚拟键盘窗字母色=255 255 255
虚拟键盘窗符号色=255 255 255
其五
白玉色主题
候选词个数=10
主窗口使用3D界面=0
输入条使用3D界面=0
主窗口隐藏模式=1
是否自动隐藏输入条=1
显示虚拟键盘=0
输入条居中=1
首次显示输入条=1
# 输入条固定宽度(仅适用于码表输入法),0表示不固定宽度
输入条固定宽度=0
输入条偏移量X=0
输入条偏移量Y=67108880
序号后加点=1
显示打字速度=0
显示版本=0
光标色=92 210 131
主窗口背景色=255 255 255
主窗口线条色=229 229 229
主窗口输入法名称色=191 191 191 80 220 150 30 160 250
输入窗背景色=255 255 255
输入窗提示色=250 40 200
输入窗用户输入色=250 40 200
输入窗序号色=250 40 200
输入窗第一个候选字色=30 160 250
# 该颜色值只用于拼音中的用户自造词
输入窗用户词组色=250 40 200
输入窗提示编码色=100 100 255
# 五笔、拼音的单字/系统词组均使用该颜色
输入窗其它文本色=30 160 250
输入窗线条色=229 229 229
输入窗箭头色=30 240 170
虚拟键盘窗背景色=255 255 255
虚拟键盘窗字母色=250 40 200
虚拟键盘窗符号色=30 160 250
节妇吟
【唐】张籍
君知妾有夫,赠妾双明珠;
感君缠绵意,系在红罗襦。
妾家高楼连苑起,良人执戟明光里。
知君用心如日月,事夫誓拟同生死。
还君明珠双泪垂,恨不相逢未嫁时!
今天重读这首诗,心里又有别样的感觉,最近发生了很多事,自己也需要静下来
淡泊以明志,宁静而致远。
摘 要:U-BOOT是一种开放源码的、用于多种嵌入式微处理器的引导加载程序,目前U-BOOT仅支持10M/100M网络功能。本文介绍了一种让U- BOOT支持千兆网络功能的方法及所需的硬件平台结构,重点介绍了此千兆网络驱动程序的结构及设计方法,并给出了驱动程序在U-BOOT中的移植过程。该 设计可以使U-BOOT功能更加强大,使用更加方便,同时也能使嵌入式系统网络接口设计更加灵活。
关键词: U-BOOT;千兆网;AX88180;驱动
引言
U-BOOT是德国DENX小组开发的用于多种嵌入式微处理器的引导加载程序,它是系统上电后运行的第一段程序代码,用于初始化目标板 硬件,为嵌入式操作系统提供目标板硬件配置信息,并装载、引导和运行嵌入式操作系统等。U-BOOT支持网络功能,在下载操作系统内核和大的文件系统时, 比其它不支持网络的引导加载程序速度更快、更方便。目前U-BOOT仅支持10M/100M的网络功能,随着科学技术发展,千兆网络功能必将大量应用在嵌 入式系统中。本文介绍了一种让U-BOOT支持千兆网络功能的方法,可以使U-BOOT功能更加强大,使用更加方便。
U-BOOT简介
U-Boot的全称是Universal Boot Loader,它遵循GPL条款的开放源码项目,支持多种处理器,如ARM、PowerPC、MIPS等,也支持Linux、VxWorks、QNX、RTEMS、ARTOS、LynxOS等嵌入式操作系统。
U- BOOT包含两种不同的工作模式:启动加载模式和下载模式。启动加载模式也称为自主模式,即U-BOOT从目标机上的某个固态存储设备上将操作系统加载到 RAM 中运行,这种模式是U-BOOT的正常工作模式。下载模式就是在开发或生产过程中,U-BOOT通过网络连接等通信手段从主机下载操作系统内核和文件系统 等到目标机的 RAM 中,然后再写到目标机上的FLASH 类固态存储设备中。U-BOOT允许用户在这两种工作模式间进行切换,系统启动时会延时等待一段时间,如果这时用户没有按键,U-Boot就默认进入启动 加载模式。
U-BOOT代码采用一种高度模块化的编程方式,可以很方便地在不同的硬件平台上进行移植。U-BOOT下包含多个目录,如图1所示。 其中BOARD目录下存放了所有其支持的目标板子目录,比如BOARD/SMDK2440/就是本文将要用到的目标板;COMMON目录是与体系结构无关 的文件,实现各种命令的C文件;CPU目录存放了其支持的CPU类型, 比如arm920t、mips、mpc8260和nios等,每个特定的子目录中都包括cpu.c和interrupt.c、start.S; DRIVERS目录存放了各种外设接口的驱动程序,其中就包含本文用到的千兆网络的驱动程序;FS目录存放了一些文件系统,U-BOOT现在支持 cramfs、fat、fdos、jffs2和registerfs;net目录存放的是与网络有关的代码,BOOTP协议、TFTP协议、RARP协议 和NFS文件系统的实现;INCLUDE目录存放了一些相关头文件,还有对各种硬件平台支持的汇编文件、系统的配置文件和对文件系统支持的文件。
图1? U-BOOT目录
硬件平台
本文使用的硬件平台是基于S3C2440A的开发板和基于非PCI千兆以太网控制芯片AX88180的嵌入式网卡,如图2所示。 S3C2440A是ARM920T 核的16/32 位RISC嵌入式微处理器,运行频率高达500MHz,开发板上有64M NAND闪存、64M SDRAM;网卡由MAC芯片AX88180、PHY芯片88E1111、RJ45等电路组成;S3C2440A目标板与网卡之间采用目标板32位扩展总 线相连接,在产品设计时也可以将这两部分设计在同一块板上。
驱动程序
在U-BOOT中嵌入千兆网络功能需要设计千兆网卡驱动程序,并在U-BOOT中进行移植,在相应的硬件平台上实现通过千兆网口下 载等功能。网卡驱动程序主要由初始化程序eth_init(bd_t*bd)、关闭网络设备程序eth_halt(void)、发送数据包程序 eth_send(volatilevoid* packet,intlength)、接收数据包程序inteth_rx(void)等组成。初始化程序的工作主要是配置和初始化硬件,在初始化程序里可 以完成对网络控制芯片AX88180和PHY芯片的配置,比如将接口设置为1000Mbps、全双工模式等。数据发送就是将上层协议打包好的数据放在发送 数据缓冲区,然后由网卡发送到网络上;数据接收就是在网卡接收到网络传来的数据包产生中断后,从缓冲区将数据取出交给上层协议程序进行解包处理。中断服务 程序处理网卡发送数据包后、接收到数据包后产生的中断以及PHY产生的中断等。
图2 硬件平台结构框图
网卡初始化程序如下:
int eth_init (bd_t * bd)
{
...
memset (&axlocal, 0, sizeof(AX88180_PRIVATE));
RESET_MAC;
DISABLE_INTERRUPT;
WRITE_MACREG(CMD, WAKEMOD);
tmp16 = bd->bi_enetaddr[1];
macid0_val = (tmp16 << 8) | bd->bi_enetaddr[0];
tmp16 = bd->bi_enetaddr[3];
macid1_val = (tmp16 << 8) | bd->bi_enetaddr[2];
tmp16 = bd->bi_enetaddr[5];
macid2_val = (tmp16 << 8) | bd->bi_enetaddr[4];
WRITE_MACREG(MACID0, macid0_val);
WRITE_MACREG(MACID1, macid1_val);
WRITE_MACREG(MACID2, macid2_val);
ax88180_PHY_initial();
ax88180_meida_config();
WRITE_MACREG(RXFILTER, DEFAULT_RXFILTER);
INIT_TXRX_VARIABLES;
READ_MACREG(ISR, tmp_regval);
PRINTK(INIT_MSG, "ax88180: The interrupt status = 0x%08lx\n", tmp_regval);
if (tmp_regval)?WRITE_MACREG(ISR, tmp_regval);
WRITE_MACREG(CMD, RXEN | TXEN | WAKEMOD);
return 0;}
驱动移植
驱动移植是在基于S3C2440A硬件平台的U-BOOT中添加驱动程序代码和相关配置,具体如下:
1. 在drivers/目录中添加网口设备驱动程序ax88180.c和ax88180.h。
2. 在lib_arm/board.c中相应位置(参考CS8900)添加如下代码:
#ifdef CONFIG_DRIVER_AX88180
extern void ax88180_get_ enetaddr (uchar * addr);
#endif
#ifdef CONFIG_DRIVER_AX88180
ax88180_get_enetaddr (gd->bd->bi_enetaddr);
#endif
3. 在include/configs/smdk2440.h中相应位置(参考CS8900)添加如下代码:
#define CONFIG_DRIVER_AX88180?1
#define AX88180_BASE???0x08000000
4. 最后在drivers/Makefile中加入ax88180.o,重新编译生成U-BOOT即可。
结语
U-BOOT广泛应用在嵌入式系统中,本文阐述的方法可以使U-BOOT功能更强大、使用更方便,文中介绍的硬件平台给嵌入式系统千兆 网络功能的设计提供了一定的指导。本设计虽然基于S3C2440A平台,对其它类似的系统也有很好的借鉴作用,本文介绍的方法已经在产品中得到应用,效果 良好。 ■
参考文献
1. 钱峰. U-Boot在S3C44B0上的移植[J].微计算机信息.2006年第9-2期:P119-121
2. 聂强,孙贺. linux_mig_ release.pdf. http://www.hhcn.com/chinese/files
3. Allan Chou. ax88180.c.ASIX Electronics Corporation.2006
RAM Configuration:
Bank #0: 30000000 64 MB
Flash: 1 MB
*** Warning - bad CRC, using default environment
Out: serial
Err: serial
RAM Configuration:
Bank #0: 30000000 64 MB
Flash: 1 MB
NAND: 64 MB
*** Warning - bad CRC, using default environment
Out: serial
Err: serial
* Command definition
***********************************************************/
#define CONFIG_COMMANDS \
(CONFIG_CMD_DFL | \
CFG_CMD_CACHE | \
CFG_CMD_NAND | \
/*CFG_CMD_EEPROM |*/ \
/*CFG_CMD_I2C |*/ \
/*CFG_CMD_USB |*/ \
CFG_CMD_REGINFO | \
CFG_CMD_DATE | \
CFG_CMD_ELF)
NAND_WAIT_READY(nand); /* do the worst case 25us wait */
else
udelay(10);
{
S3C2410_NAND * const nand = S3C2410_GetBase_NAND();
}
* NAND flash basic functions
* Added by Lu Xianzi 2006.5.27
* Copied from board/mpl/vcma9/vcma9.h & vcma9.c
*/
typedef enum {
NFCE_LOW,
NFCE_HIGH
} NFCE_STATE;
{
S3C2410_NAND * const nand = S3C2410_GetBase_NAND();
}
{
S3C2410_NAND * const nand = S3C2410_GetBase_NAND();
}
{
NF_Cmd(cmd);
udelay(1);
}
{
S3C2410_NAND * const nand = S3C2410_GetBase_NAND();
}
{
S3C2410_NAND * const nand = S3C2410_GetBase_NAND();
case NFCE_LOW:
nand->NFCONF &= ~(1<<11);
break;
nand->NFCONF |= (1<<11);
break;
}
}
{
S3C2410_NAND * const nand = S3C2410_GetBase_NAND();
}
{
S3C2410_NAND * const nand = S3C2410_GetBase_NAND();
}
{
S3C2410_NAND * const nand = S3C2410_GetBase_NAND();
}
{
S3C2410_NAND * const nand = S3C2410_GetBase_NAND();
}
{
S3C2410_NAND * const nand = S3C2410_GetBase_NAND();
}
{
int i;
NF_Cmd(0xFF); /* reset command */
for(i = 0; i < 10; i++); /* tWB = 100ns. */
NF_WaitRB(); /* wait 200~500us; */
NF_SetCE(NFCE_HIGH);
}
{
#if 0 /* a little bit too optimistic */
#define TACLS 0
#define TWRPH0 3
#define TWRPH1 0
#else
#define TACLS 0
#define TWRPH0 4
#define TWRPH1 2
#endif
/*nand->NFCONF = (1<<15)|(1<<14)|(1<<13)|(1<<12)|(1<<11)|(TACLS<<8)|(TWRPH0<<4)|(TWRPH1<<0); */
/* 1 1 1 1, 1 xxx, r xxx, r xxx */
/* En 512B 4step ECCR nFCE=H tACLS tWRPH0 tWRPH1 */
}
{
S3C2410_NAND * const nand = S3C2410_GetBase_NAND();
#ifdef DEBUG
printf("NAND flash probing at 0x%.8lX\n", (ulong)nand);
#endif
printf ("%4lu MB\n", nand_probe((ulong)nand) >> 20);
}
* NAND flash settings
* Added by Lu Xianzi 2006.5.27
* Copied from include/conifgs/vcma9.h
*/
#if (CONFIG_COMMANDS & CFG_CMD_NAND)
#define SECTORSIZE 512
#define ADDR_PAGE 2
#define ADDR_COLUMN_PAGE 3
#define NAND_MAX_FLOORS 1
#define NAND_MAX_CHIPS 1
#define NAND_ENABLE_CE(nand) NF_SetCE(NFCE_LOW)
#define WRITE_NAND_COMMAND(d, adr) NF_Cmd(d)
#define WRITE_NAND_COMMANDW(d, adr) NF_CmdW(d)
#define WRITE_NAND_ADDRESS(d, adr) NF_Addr(d)
#define WRITE_NAND(d, adr) NF_Write(d)
#define READ_NAND(adr) NF_Read()
/* the following functions are NOP's because S3C24X0 handles this in hardware */
#define NAND_CTL_CLRALE(nandptr)
#define NAND_CTL_SETALE(nandptr)
#define NAND_CTL_CLRCLE(nandptr)
#define NAND_CTL_SETCLE(nandptr)
Because there's no definition of a macro called __mem_pci,
there will be a link error.
*/
#define CONFIG_MTD_NAND_ECC_JFFS2 1
RAM Configuration:
Bank #0: 30000000 64 MB
Flash: 1 MB
*** Warning - bad CRC, using default environment
Out: serial
Err: serial
## Start Addr = 0x33000000
## Starting application at 0x33000000 ...
U-Boot 1.1.2 (May 28 2006 - 08:36:42)
RAM Configuration:
Bank #0: 30000000 64 MB
Flash: 1 MB
NAND: 64 MB
*** Warning - bad CRC, using default environment
Out: serial
Err: serial
LXZROB #
nand info - show available NAND devices
nand device [dev] - show or set current device
nand read[.jffs2[s]] addr off size
nand write[.jffs2] addr off size - read/write `size' bytes starting
at offset `off' to/from memory address `addr'
nand erase [clean] [off size] - erase `size' bytes from
offset `off' (entire device if not specified)
nand bad - show bad blocks
nand read.oob addr off size - read out-of-band data
nand write.oob addr off size - read out-of-band data
Size: 1 MB in 19 Sectors
Sector Start Addresses:
00000000 (RO) 00004000 (RO) 00006000 (RO) 00008000 (RO) 00010000 (RO)
00020000 00030000 00040000 00050000 00060000
00070000 00080000 00090000 000A0000 000B0000
000C0000 000D0000 000E0000 000F0000 (RO)
Un-Protected 5 sectors
LXZROB # flinfo
Size: 1 MB in 19 Sectors
Sector Start Addresses:
00000000 00004000 00006000 00008000 00010000
00020000 00030000 00040000 00050000 00060000
00070000 00080000 00090000 000A0000 000B0000
000C0000 000D0000 000E0000 000F0000 (RO)
Erasing sector 0 ... ok.
Erasing sector 1 ... ok.
Erasing sector 2 ... ok.
Erasing sector 3 ... ok.
Erasing sector 4 ... ok.
Erased 5 sectors
Copy to Flash... done