苹果领潮,DELL追超,联想没落

   若干年前,刚知道有个东东叫笔记本电脑的时候,就被深深迷恋上了ThinkPad。它深沉,典雅、专业、精悍……那时,拥有一台IBM Thinkpad是我莫大的梦想。几年前,当我与这个梦想的距离基本可以量化的时候,去传出了Thinkpad有可能被别人领养预半夜凉初透言。索性砸锅卖铁赶在Thinkpad还没脱掉IBM帽子的时候实现这个梦想。后来历史证明了我的英明决断,Thinkpad从此一步步地开始走下昔日的颠峰。从T43开始,Thinkpad已经换了血统。到现在的T400,仅仅只是一台笔记本了。用T400不到一周,我决定将那台T42永久收藏。Thinkpad引以为豪的舒适惬意键盘已经在T系列上消失了,这一点不是我一个人的感受,网上一找一大片。其实也不用网上找,随便找一个T4x的与Txxx的比比,没用过笔记本的人都感觉得出来。从弹性,回程、声音……闭上眼睛,你一定觉得你在用两个档次的电脑。

也许这是由IBM与联想的企业文化决定得,尽管当时联想连同日本的大和实验室(主要负责ThinkPad研发)一起买过来了,不过企业文化是买不来得,或者说联想根本就没有准备要那种文化。创新是IBM不可缺少的基因,联想是制造型的大众化公司。IBM出售ThinkPad原因,我觉得很重要的一个是因为笔记本已经不是高科技,高利润的产业,对于喜欢创新IBM来说,它是一个包袱,它的高投稿科研在这里得不到高利润回报。 所以不同的企业文化与使命决定了ThinkPad的命运,从贵族沦落为草民。ThinkPad自从到了联想家,创新这词用不上了,变化无非是加了个摄相头,做成了笨重的宽屏。Apple 一直是消费电子的新潮领头人,贴牌销售起家的DELL也已经具备顶尖设计实力。

经过了对T400的失望,还好当时有两款Notebook能引让我心情有点波动,一个是ThinkPad X系列,但X系列还能年轻几天只有联想知道。另一个是Apple 的MacBook Air. 今天,看到DELL 的Adamo XPS ,眼前一亮,以后又多了一个选择。 ThinkPad X就不说了,为人所知,根据我的观察,几乎没有退化的迹象。MacBook Air 出世的时候,引起业内轰动,打造了超薄的神话,今天 Adamo XPS有过之而无不及。 先看看二位的靓照:

Apple Mac Book Air

DELL Adamo XPS

看看配置:

MacBook Air

Dell Adamo 9.99

Display

13.4" 1366 x 768 Panoramic LED

13.3" 1280 x 800 Wide Angle LED

Processor

Intel Core 2 Duo ULV 1.4GHz 800 FSB

Intel Core 2 Duo 1.86 (2.1 opt) GHz 1066

Graphics

Intel GS 45 Integrated w/ 256MB Shared

NVIDIA 9400M (Ion) 256MB Shared

Memory

4GB 800 MHz DDR3

2GB 1066MHz DDR3

Drive

128GB SSD

120GB Magnetic (128GB SSD optional)

Ports

DisplayPort, 2USB, 10/100, Audio

DisplayPort, 1 USB, Audio

Battery

20WHr - Hotswap (40WHr Optional) Li/Ion

40 WHr Integrated Lithium Polymer

Wireless

802.11 a/b/g/n, Bluetooth 2.1

802.11 a/b/g/n, Bluetooth 2.1

Thickness

.41 inches

.76 inches

Width

13.38"

12.8"

Depth

10.78"

8.94"

Weight

3.2 lb Standard Battery (1.45KG)

3.0 lb ((1.36 kg))

Price

18 k RMB

14K RMB

价格是我大概查得,有可能有出入。

值得注意得是, Adamo XPS 整体厚度9.99mm,再发展可以去切西瓜了。研究了一下,为什么DELL能做得比苹果还薄? 大家都习惯笔记本主机与键盘同侧,而 Adamo将主机与屏幕同侧,键盘单独为一边。

出于工作原因,我很想回答一个很多人选择笔记本的困扰,为什么配置相同的笔记本价格会有这样大?简单讲,CPU, 硬盘、南北桥芯片、甚至显示屏世界上也只有那几家能造,可是详细的型号可谓五花八门,有时差一个字,价格就着几百。如:CPU 二级缓存 2M 和4M 成本上就会着几十美金, 硬盘5400转与7200转也差成百。 这种无聊的知识,让大家都了解这么详细有点不太可能,如果不太了解,购买电脑时最好咨询一下你身边朋友,而不是只听那些JS告诉你主频有多快,硬盘有多大……。除了这些,还有一个更重要差别就是制造管理和服务成本。我主要想解释的是制造管理成本,就是为什么一模一样的配置(我指硬件真的一样),DELL , 联想 、与神舟价格差异会如此大,有时快成倍数关系。 最容易解释这个问题的是一个专业名词:"直通率"。所谓直通率是指笔记本制造过程中,从原料投入生产开始,到不经过任何调试、维修而产出的合格成品率。再简单点就是投入100片的原料,什么都不管,就正常的流水线生产组装,最后有多少台是没有瑕疵的。 大家猜猜看业界水平是多少?答案是90%算比较高得。 我记得当时好象DELL要求是95%, IBM是98%左右。如果有管理相关的经验会知道,越向上,品质的提高与投入的成本关系是非线性得。你花了5块钱,把品质从90%提高到了91%, 从98%提高到99%可能5K也不够。99%到100%50亿也实现不了。大家会想,产品是不是直通得合格与经过调整,维修后的合格对用户来说,反正到手上都是一个合格的产品。当然这种维修与我们经常遇到的维修是不同的,这里的维修是指在在制造的车间,更换部分元件,或者做一些调整,也可以视为制造的一部分。直通率直接反映了一个公司或者产线的制造水平。反映到用户这里就是你产品坏得概率的衰退的速度。坏得概率厂商叫返修率,可是过了质保返修也返不了。还有一个是同样一电脑,你用了一年,键盘键飞了一个,一开电脑,噼里啪啦那都响,屏幕发灰、别人的跟新得差不了多少。这就是品质、制造水平。直接从一个产品上去判断它的内在品质,其难度远远超出了辨认皮鞋是不是真皮的难度。不亚于你相亲的时候,凭一杯咖啡的功夫去判断一个人。而且,笔记本和人一样,也会伪装自己。最简单的办法就是相信名厂出名品。

Posted in Emotion History | Tagged | Leave a comment

Windows 快捷键收藏


还原恢复前窗口:用Alt+Tab切换 最小化当前窗口:Alt+Space+N 最大化当前窗口:Alt+Space+X Win+D,最小化所有窗口(包括全屏游戏)

Ctrl + C 复制。
Ctrl + X 剪切。
Ctrl + V 粘贴。
Ctrl + Z 撤消。
DELETE 删除。
Shift + Delete 永久删除所选项,而不将它放到"回收站"中。
拖动某一项时按 CTRL 复制所选项。
拖动某一项时按 CTRL + SHIFT 创建所选项目的快捷键。
F2 重新命名所选项目。
CTRL + 向右键 将插入点移动到下一个单词的起始处。
CTRL + 向左键 将插入点移动到前一个单词的起始处。
CTRL + 向下键 将插入点移动到下一段落的起始处。
CTRL + 向上键 将插入点移动到前一段落的起始处。
CTRL + SHIFT + 任何箭头键 突出显示一块文本。
SHIFT + 任何箭头键 在窗口或桌面上选择多项,或者选中文档中的文本。
Ctrl + A 选中全部内容。
F3 搜索文件或文件夹。
Alt + Enter 查看所选项目的属性。
Alt + F4 关闭当前项目或者退出当前程序。
ALT + Enter 显示所选对象的属性。
Alt + 空格键 为当前窗口打开快捷菜单。
Ctrl + F4 在允许同时打开多个文档的程序中关闭当前文档。
Alt + Tab 在打开的项目之间切换。
Alt + Esc 以项目打开的顺序循环切换。
F6 在窗口或桌面上循环切换屏幕元素。
F4 显示"我的电脑"和"Windows 资源管理器"中的"地址"栏列表。
Shift + F10 显示所选项的快捷菜单。
Alt + 空格键 显示当前窗口的"系统"菜单。
Ctrl + Esc 显示"开始"菜单。
ALT + 菜单名中带下划线的字母 显示相应的菜单。
在打开的菜单上显示的命令名称中带有下划线的字母 执行相应的命令。
F10 激活当前程序中的菜单条。
右箭头键 打开右边的下一菜单或者打开子菜单。
左箭头键 打开左边的下一菜单或者关闭子菜单。
F5 刷新当前窗口。
BackSpace 在"我的电脑"或"Windows 资源管理器"中查看上一层文件夹。
Esc 取消当前任务。
将光盘插入到 CD-ROM 驱动器时按 SHIFT 键 阻止光盘自动播放。 


对话框快捷键


请按 目的 Ctrl + Tab 在选项卡之间向前移动。 Ctrl + Shift +Tab 在选项卡之间向后移动。 Tab 在选项之间向前移动。 Shift + Tab 在选项之间向后移动。 ALT + 带下划线的字母 执行相应的命令或选中相应的选项。 Enter 执行活选项动或按钮所对应的命令。 空格键 如果活选项动是复选框,则选中或清除该复选框。 箭头键 活选项动是一组选项按钮时,请选中某个按钮。 F1 显示帮助。 F4 显示当前列表中的项目。 BackSpace 如果在"另存为"或"打开"对话框中选中了某个文件夹,则打开上一级文件夹。


自然键盘快捷键


在"Microsoft 自然键盘"或包含 Windows 徽标键() 和"应用程序"键() 的其他兼容键盘中,您可以使用以下快捷键。


请按 目的 显示或隐藏"开始"菜单。 + BREAK 显示"系统属性"对话框。 + D 显示桌面。 + M 最小化所有窗口。 + Shift + M 还原最小化的窗口。 + E 打开"我的电脑"。 + F 搜索文件或文件夹。 CTRL+ + F 搜索计算机。 + F1 显示 Windows 帮助。 + L 如果连接到网络域,则锁定您的计算机,或者如果没有连接到网络域,则切换用户。 + R 打开"运行"对话框。 显示所选项的快捷菜单。 + U 打开"工具管理器"。


辅助键盘快捷键


请按 目的 右侧 SHIFT 键八秒钟 切换"筛选键"的开和关。 左边的 ALT + 左边的 SHIFT + PRINT SCREEN 切换"高对比度"的开和关。 左边的 ALT + 左边的 SHIFT + NUM LOCK 切换"鼠标键"的开和关。 Shift 键五次 切换"粘滞键"的开和关。 Num Lock 键五秒钟 切换"切换键"的开和关。 + U 打开"工具管理器"。


"Windows 资源管理器"键盘快捷键


请按 目的 END 显示当前窗口的底端。 主页 显示当前窗口的顶端。 NUM LOCK + 数字键盘的星号 (*) 显示所选文件夹的所有子文件夹。 NUM LOCK + 数字键盘的加号 (+) 显示所选文件夹的内容。 NUM LOCK + 数字键盘的减号 (-) 折叠所选的文件夹。 左箭头键 当前所选项处于展开状态时折叠该项,或选定其父文件夹。 右箭头键 当前所选项处于折叠状态时展开该项,或选定第一个子文件夹。


参考资料:windows 帮助和支持
Posted in Computer Tech | Tagged | Leave a comment

所谓“五千年文明古国”的无稽之谈[转贴]

所谓"五千年文明古国"的无稽之谈


一直以来,中国官方在对国内的宣传中都宣称什么中国是所谓的"四大文明古国"之一,我们是一个有着五千年文明历史的古老国家,以此做为 ** 教育的重要组成部分。这些可笑的论调还流传颇广,深入人心,其实呢,只要稍有一点世界史常识的人都知道这只是个笑话。

首先让我们来看看这个所谓"四大文明古国"的说法,国际上和学术界是不会有这种幼儿园口号式的提法的,比较近似的只有"几大文明发源地"的提法,即便是这样,中国也是排不上什么"四大"的。

如果是按照"四个最古老的文明国家"的定义的话,那么,我们中国,不要说四大,连前十大恐怕都排不上,它的文明开始于公元前1500年左右的商王朝,不过三千多年的时间,而其他几大文明早于此之前已经分别存在了两千到一千年,中东两河流域文明开始于公元前3500年左右;埃及尼罗河流域文明也开始于公元前 3500年左右,希腊爱琴文明开始于公元前2500年左右,印度河流域文明开始于公元前2500年左右,这只是就大的区域来说,在各大文明区域周边,还有更多次要文明如赫梯文明,亚述文明,腓尼基文明,波斯文明,犹太文明等(这些古代文明正是今天西亚很多国家的前身,这些古代闪米特人和波斯人也正是今日犹太人,阿拉伯人,伊朗人等的祖先)。要按照前面"四大古国"的定义的话,也只能是在这些文明和国家里去排,那里轮得到中国呢。

细心的读者可能会发现:从上面列举的文明开始时间来看,排在前面的"四大文明"分别应该是中东文明,埃及文明,希腊文明,印度文明。并没有中国的位置。何以在中国官方的宣传中,希腊的位置消失了,反而变成了晚于其后1000年的中国?

这并不是什么无意的错误,实际上,这只是长期以来在官方操纵的反西方政治背景下,有系统有计划地贬低西方文明的各种宣传活动的一个组成部分而已。因为希腊文明是西方文明的源头,中国官方出于意识形态原因,不乐于见到任何表现了西方文明优越性的信息出现,对西方文明的任何方面都要尽可能贬低,再加上掌权的"民族主义者"对西方文明那种极度仇视和嫉妒的心态,所以搞了这样一个偷梁换柱的小手脚。也真够卑鄙的。

读者可能会问:中国官方宣传的不是"五千年文明"吗?何以实际上只有3500年?

那么我们需要搞清楚一些考古学和历史学上的基本常识和概念,而中国的某些"历史学家"长期以来正是靠着混淆这些基本常识和概念来误导愚弄民众。这就是关于"文化"和"文明"这两个概念的区别的问题,以及构成"文明"的几个基本特征。

考古学历史学上所说的"文化"和"文明"这两个概念是有严格区别的(虽然我们在日常生活中常常可以把它们混用)。简单说来:"文化(culture)"是一个属于石器时代范畴的概念,用于专指石器时代特别是新石器时代包括金石并用时代的原始部落人类遗迹,而"文明(civilization)"是属于青铜时代范畴的概念,专指人类进入青铜时代以后的国家阶段。

其实,从"文化(culture)"和"文明(civilization)"这两个英文单词的词源上我们就可以清楚地看出两者的区别。"文化(culture)"这个单词的词根"cult-"的原始意义是"耕作",这很清楚地表明了"文化"这个概念的本义是属于与"农耕"相联系的原始部落时代的范畴的;而"文明(civilization)"这个单词的词根"civ-"的原始意义是"市民",这也同样清晰的表明了"文明"这个概念的本义是属于与伴随着"市民"的出现而同时产生的"城市"及工商业相联系的青铜时代的范畴的。(城市city这个单词就是从词根"civ-"的变体"cit-"演绎而来的。)

而"文明(civilization)"的几个主要特征:文字,金属冶炼术,城市国家(城邦),宗教礼仪,等等(雅斯贝尔的定义),正是与工商业的出现密切相关的。要判定一个文明是否开始了,什么时候开始的,正是按照上述几个标准来核定的,而且是按照考古发现来核定的,而不是用什么神话传说,民间故事,野史杂书,或者是像什么《史记》之类的晚于考古年代两千年之后的所谓"历史纪录"来判定的。这是一个考古学历史学常识。

可能有人会问我这样一种问题:那么,我们为什么要用外国人的标准来判定我们自己的历史,我们不能用自己的标准来判定吗?完全可以,但是,"文明" 和"文化"这些概念本来就是西方传来的,不仅如此,整个考古学,历史学的方法体系,都是从西方输入的观念,如果要用我们自己的标准,那么我们就不能再用西方的概念来宣扬什么"我们有五千年'文明'历史",而应该用我们自己的话来说,就是"我们有五千年神话传说的历史"。

但是按照这样的标准,我们倒是有"五千年历史"了,而其他国家和地区,特别是地中海周边国家地区及中东地区,他们就不仅是"五千年历史"了,起码都是一万年以上的历史了。这样我们还是占不到什么便宜。

而中国的"历史学家"长期以来正是靠着混淆"文化"和"文明"的标准来误导愚弄民众。比如说把属于新石器时代的原始部落文化(如仰韶文化,龙山文化,良渚文化等等)偷换冒充成是所谓"文明"时代,这样中国的历史一下子就提前了一两千年,甚至两三千年。而在介绍其他国家其他文明的时候,又用另一种标准,从人家文明开始的正式起点(文字,金属冶炼术,城市国家出现)严格算起,这样无形中就缩少了中国与那些最古老文明国家间的距离,甚至给人一种错觉,似乎中国比这些实际上比中国文明历史早得多的国家和地区反倒还要早些,而实际上,如果按照中国衡量自己的那种标准,很多国家和地区,特别是地中海周边国家地区以及中东地区,起码都是一万年以上的历史了。就是诸如此类的小伎俩小把戏。

下面就让我们来详细地从头审视一下中国及世界的历史。

首先从中国文明的历史开始说起。先开门见山地阐明这个基本事实:中国最早的文明--商文明,开始于公元前1500年左右,距今3500年,地点在今河南安阳一带。考古依据:中国地区最早的文字--甲骨文;成熟的青铜冶炼术,及出土的冶炼的青铜器;国家形态已出现。

要说明的是:这可不是我的发明,随便找一本国际学术界的世界史著作或者教科书,上面讲述中国文明都是从商王朝为起点开始的。

当然,中国自己的历史教科书是从所谓的公元前2000年的"夏王朝"开始算起的。但是国际学术界是不承认这个子虚无有的"夏王朝"的,因为没有任何考古依据:既没有文字出现,也没有冶炼的青铜器发现,更没有表明国家形态存在的任何依据,以及城市遗迹,等等。

而中国的这些江湖骗子一样的"历史学家""考古学家",虽然把整个中国地区都翻遍了也没找出什么能证明所谓的"夏王朝"存在过的证据,但还是要厚着脸皮硬把这个幻想中的"夏王朝"塞到教科书和宣传资料中去贩卖给世人,又硬着头皮把在二里头等地发现的一些新石器时代文化遗迹包装一番冒充成是"夏王朝"的所谓"都城"遗迹拿出来蒙骗外行人。

我们来看看莫道不消魂中国的"考古学家""历史学家"找到了些什么?有一次我听一个《夏商周断代工程》的演讲,主讲的"考古学者"给我们展示了他们宣称是所谓的"夏王朝"的"都城遗迹"复原图,我仔细一看,原来就是几个烂草棚子,一个标准的原始村落,他们把这个叫做"伟大的""夏王朝"的"都城"?还有什么呢,考古现场的几个烂泥堆,那是什么--夯土遗迹,夯土是什么,就是把泥巴堆在一起压紧做墙基,原始部落用来建造窝棚的最原始技术,俗称"干打垒"。他们把这个叫做"伟大的""夏王朝"的"都城"?还有就是一些铜渣子,大量的石器,骨器!这问题不是很清楚了吗?只不过是新石器时代的氏族部落遗迹。所谓的 "夏王朝都城"纯属胡扯!

要是这算是"都城遗迹",那世界各地的新石器时代文化中的"都城遗迹"就太多了,瑞士汪金的湖居文化(早于公元前5000年),人们用五万根木桩作地基建在湖上的大型村寨,那就比"伟大的""夏王朝"的"都城遗迹"大到不知那里去了。看来西方人脸皮还是太薄了。

还有一些考古学家声称在中国其他地方发现了一些铜器,更是误导,那是什么?金石并用时代的用天然铜打造而成的铜器,新石器时代晚期就出现的产物,其他国家和地区的新石器时代文化遗迹中多的是,以此为标准的话,那我前面所提到的那几个古文明地区的历史更要往前提前一两千年。

而其他那些古文明地区都发现有标志文明起点的大量完整的城市遗迹,而且都是砖石结构,埃及就不用说了,希腊,西亚,印度河,特别是希腊米诺斯文明遗迹的克诺索斯王宫(公元前2000年),其宏伟华丽,在各早期文明中是首屈一指的,我们中国直到四千年之后的现存很多近代宫殿建筑都无法相比。这一点无须多说,实地参观一下就知道了。

还有印度河流域的早期文明哈拉巴文明(公元前2500年),在摩亨佐与哈拉巴等地发现了许多完整的城市遗迹,砖石结构,构造复杂。据考证当时城市人口已达到三四万人。

还有埃及的南城遗迹等(公元前3500年,涅伽达文明时期)。某些书上错误地说埃及没有城市,玛雅文明印加文明没有文字,实际上都有。比如斯塔夫里阿诺斯的《全球通史》(我早就说过他这本书在细节上是错误百出的)

说老实话,所谓"商王朝"的殷墟遗迹其实也不过就是一些夯土遗迹而已,只不过规模稍大一点,根本还不是城市遗迹。要不是发现了甲骨文,冶炼青铜器,国际上也是根本不会承认商文明的。毕竟跟其他国家地区比起来,证据太少了。

中国有些人为此找了一种借口:说中国文明的早期建筑都是砖木结构的,所以不容易保存下来,而其他国家地区特别是西方主要用石材建筑,所以保存下来多一些,甚至还厚着脸皮反吹一把:中国的砖木建筑比其他文明的石材建筑技术程度更高。其实恰恰相反,我上面提到的几大文明地区,其发掘出来的早期文明遗迹实际上都是大量使用烧制的砖块建筑的,最典型的就是那个印度河流域的哈拉巴文明遗迹,以及两河流域最早的的乌尔,巴比伦,苏萨等城市遗迹,埃及的南城遗迹,希腊的米诺斯文明遗迹,等等,实际上西方建筑的典型代表--古罗马的建筑,也不是像某些人想象的那样都是用石材建筑的,也大量采用砖块,混凝土等建筑,如现今在法莫道不消魂国西班牙等地都还保存着的高架水渠等,这些都很好地保存着。

而中国早期文明遗迹恰恰不是用砖建筑,而是夯土加木材建造,当然不容易保存,但那正是因为其技术水平低下的原因。中东,西方等地用砖石建筑比中国用泥土木材建筑所需要的生产力水平和技术水平要高得多,造价也要昂贵得多,也更坚固,当然便于保存。(希腊迈锡尼文明时期的城市遗迹,其巨石建造的城墙,厚达二十米。)

所以找不到所谓"夏王朝"的遗迹是毫不奇怪的,因为根本就不存在过,只有一些石器时代原始村落的遗迹。

而找不到更关键的两个证据--文字的出现,和金属冶炼术的出现,就更加不值一提了。

现在更需要提醒大家注意的是,问题不仅仅只是没有所谓"夏王朝"存在的任何证据那么简单,而是反倒有大量证据证明其根本不存在。典型的例子就是:在时间上紧随所谓"夏王朝"其后的商王朝,其甲骨文和青铜器铭文中竟然找不出有关这个前一代"王朝"的任何记载。这不是很荒谬吗?不是已经很清楚地说明了事情的真莫道不消魂相了吗?你能想象周王朝,秦王朝,汉王朝等在他们的政府文件和档案中不记载他们的前一代"王朝"的任何情况吗?只有商王朝这样的初始文明才会是这种情况,因为在前面什么都没有,一片空白。

而有些无聊文人绝望之余,干脆对外撒谎说商代甲骨文和青铜器铭文上已发现有关于"夏王朝"的记载了。好笑的是,考古部门的负责人马上就出来予以否认。显然他们也还不敢于拿自己的职业声誉来开国际玩笑。

中国的这些"历史学家""考古学家"对此也是无计可施,绝望之余,只有祭出"谎言重复千遍就成为真理"的法宝,在中小学教科书和宣传资料中反复宣传"夏王朝是我国第一个奴隶制国家",但是在大学历史教科书中还是遮遮掩掩吞吞吐吐地告诉大家,这还只是一个纸上的"王朝",连他们自己也觉得心虚。但这也是没有办法的事情,毕竟这些历史系学生将来是要加入"历史造假工作队伍""考古造假工作队伍"的,在教会他们如何造假之前,还是必须要让他们先了解真莫道不消魂相,不然岂不是把他们都"培养"成白痴了?

最好笑的是,中国官方在对国内的宣传中就用"五千年文明"来愚弄大家,但是在国际上,为了不闹笑话,还是老老实实地承认中国历史是从商文明开始的,如外研社出版的英文版《中国通史》,就将所谓的"夏王朝"与黄帝的传说等乖乖地归入"神话传说时代"目录下。我真是替我们中国人感到悲哀啊,原来我们本国人在官方眼中是比外国人要低贱一等的,连了解本国的历史,都没有与外国人同等的知情权。

而且我们退一万步来说,就从所谓"夏王朝"算起,公元前2000年到公元2000年,也才4000年。那来的"5000年文明历史"?难道 2000+2000=5000?所以说"5000年文明历史"只是个笑话。(这个笑话荒谬得甚至连谎言都算不上,因为基本的事实都摆在那里,一目了然,他们要撒谎造假的余地都没有,唯一的办法就是凭着垄断了宣传机器拼命宣扬,让大家习惯成自然。如果有人说1+1=3,或者是1+1=4,大家确实也不会认为他是在撒谎,而只会当作笑话看。事情就是这样的。)

还有一些"历史学家"恼羞成怒地用一种泼皮口吻断言道:"夏王朝是《史记》中记载了的,不容置疑!"。好嘛,原来隔了两千年之后的司马迁通过道听途说记述了一件从未见过的事情,这就成了"不容置疑"了?那古希腊的柏拉图还记载过一万多年前有一个大西洲国呢,人们在海底还发现了一些疑似城市的遗迹,那也是"不容置疑"的了。

司马迁的话有多少可信度?他写的《史记》与其说是历史纪录还不如说是历史小说。很多情节都不知道是怎么虚构出来的,一个人单独干的事情,或者是两个人秘密的谈话,而且都是不可告人的勾当,又没有外人在场,他是从何而知的?难道古时候的人还每天记日记,死后将日记出版,让你几百年后的人知道这些细节?自从他被皇帝阉割了以后,应该说心理就变得极为扭曲了,沉浸在虚构的远古"贤君""盛世"的幻想中就成为了支撑他活下去的重要精神支柱了(当然,这也是我的猜想),这种心态下导致了他把"三皇五帝"这种荒诞无稽的神话传说(连中国官方都不敢承认)都当作历史来记述了,是不是这也是"不容置疑的"?

至于所谓的黄帝,炎帝,尧,舜,禹,这些到了春秋战国及秦汉时代才陆陆续续由方术士根据神话传说虚构出来的人物,连中国官方都不敢承认,而是乖乖地称之为"传说中的黄帝时代"。这里也没必要多说了。(这不是一个需要在这里辩伪的问题,而是一个历史学上的常识,这方面的文章资料多的很,这些问题也不过是五四时代就已经解决了的,中国史学界的泰山北斗顾颉刚所著《古史辩》已经把这些问题阐述得很清楚了。)

好笑的是,中国官方虽然在正式的教科书中乖乖地将其称之为"传说中的黄帝时代",但是在出版的字典词典中又堂而皇之把所谓的"五帝时代"列在"历代纪元表"里面,于是搞笑的一幕发生了:从"黄帝"开始的"五帝"竟然延续时间为500年!平均每个"帝王"在位时间为100年!再加上他们"继位"之前要达到成年的年龄,以及"退位"之后的晚年,平均每个人的寿命为一百多岁!原来石器时代原始部落的人平均寿命已达到一百多岁,真是滑天下之大稽!

虽然中国的这些政客和文人骨子里很想把这个虚构的所谓"炎黄始祖"作为正式的历史来宣传,"祭奠黄帝"的闹剧也搞了好几次了,但是我相信,除非中国到了邪教横行的那一天,否则他们的企图是不会得逞的。

"尧,舜。禹"不过是后人的虚构,更不存在所谓的"炎黄始祖",顾颉刚提出的"层累地造成的中国古史"的观点,主要的两点"时代愈后,传说的古史期愈长","时代愈后,传说中的中心人物愈放愈大",是辨识伪史的指导思路,至于春秋战国时的方士文人具体是怎样伪造出上古史的,他的书中已有详细分析。可详查。

顺便说一句,顾颉刚是中国历史学家中几个稍有良知的人之一,但是受时代条件限制,他也曾错误地把当时发掘出的"北京猿人"认为是中国地区各民族的人种起源,而我们今天已经知道了,科学家通过对不同种族人群的线粒体DNA测定,发现所有人种都是起源于20万年前的非洲智人,"北京猿人"等其他地区的早期原人早已灭绝,并不是中国地区的人种的起源。而我们中国现在的人种是冰川期结束以后才陆续从中亚迁移过来的,这不过是个常识而已。

而某些中国人津津乐道的所谓"中国文明是唯一延续下来的古文明,其他文明都已经消失了,种族已经灭绝了"的可笑说法,也是颇能迷惑人的一种荒谬论调。这种荒谬可笑的调子现在该是彻底澄清的时候了。

那么我们来看看其他文明是否已经消失了,种族是否已经灭绝了。

首先说希腊,希腊最早的文明--米诺斯文明,开始于公元前2500年,距今四千多年。最初见于《荷马史诗》的记载。十九世纪末在希腊克里特等地发现了它的大量遗迹。考古依据:早期的象形文字,以及中期的线形文字A;成熟的青铜冶炼术,及出土的大量冶炼的青铜器;早期的城堡,中期的克诺索斯等地的王宫,尤其是后者,其优美华丽,在各早期文明中可以说达到了一个登峰造极的地步。

(注意:中国的历史书上是把米诺斯文明从公元前2000年开始算起的,但是国外的历史书上都是从公元前2500年算起的,谁是谁非自己判断吧。)

紧随其后的是希腊南部的迈锡尼文明,开始于公元前1600年,距今3600年,《荷马史诗》记叙的主要就是这一时期的历史。十九世纪在希腊迈锡尼,泰林斯等地发现了它的很多城市遗迹,大量青铜器,还有线形文字B。

然后是两百年的荷马时代,这时候希腊开始进入铁器时代,武器和工具都普遍使用铁制,而中国直到将近一千年后的汉代才开始正式进入铁器时代(我并没有夸张,其他诸文明地区比我们中国地区早一千年左右进入铁器时代是个历史常识,原因也很简单,因为冶铁术起源于地中海一带的赫梯文明,然后陆续传入远近各个文明,中国地区距离最远,所以传入最晚)。

再接下来就是我们熟知的以雅典为代表的古典文明时代了。

创造米诺斯文明的皮拉斯基人,不是希腊语族,中国某些流氓文人抓住这一点大做文章,刻意强调米诺斯文明的创造者跟创造迈锡尼文明的希腊人不是同一民族,想要贬低希腊文明的原创性。实际上,皮拉斯基人只是非希腊语族而已,但是与希腊人同为印欧种族,或者称之为雅利安语族。而且他们从米诺斯文明早期开始就逐渐与创造迈锡尼文明的希腊族阿开亚人融合了,其文明是一脉相承的。在阿提卡等地的皮拉斯基人也早就与当地的阿开亚人融合而共同创造出了后来的古典文明,其文化艺术的世俗主义,自然主义特征,在几个古代文明中是绝无仅有的。跟后来希腊古典文明同出一源。

就算从正宗的希腊人,阿开亚人的迈锡尼文明时代算起,也早于中国最早的商文明。不知道"四大文明古国"怎么会算到中国头上去的?

更何况,中国的两个早期文明:商,周,都是西方迁来的游牧民族创造的,周灭商之后,商民族即已消亡,今天有谁敢说自己是"商人"的后裔?要说"正宗"的"中国人"--汉人,那是到了秦汉才形成的,是否也应该说"中国的早期文明都已经消失了,种族已经灭绝了"?

公元前1000年以后的希腊古典文明则是南下的与阿开亚人同族的多利安人与前两者共同创造的;而再后来统一希腊并建立了亚历山大帝国的马其顿人也是希腊族人,并开创了希腊化文明时代;罗马兼并了希腊之后更是成为希腊文明的直接继承者;而西罗马帝国灭亡后,东罗马帝国(拜占庭帝国)继续延续了一千年之久,其核心民族仍然是希腊人,使用希腊语。直到十五世纪东罗马帝国被奥斯曼土耳其帝国灭亡,希腊人经历了四百年亡国时期,到十九世纪初又重新独立。今希腊共和国的版图,即是古代希腊的主要区域,其人口绝大多数仍然是希腊族,希腊语为国语。这个地区自古以来民族成分就没有大的改变过,何来的"种族消失了"?

而且,说人家"文明消失"了,更是笑话。今天的整个现代文明完全是西方文明的内容,而西方文明又是以希腊罗马文明为基础的,希腊罗马文明在今天社会的科学,哲学,文学,艺术,政治,法律等等方面仍然发挥着巨大的影响。我们身边处处可见希腊罗马文明的影子,何来的"消失"了?

希腊罗马文明只不过中途又接受了基薄雾浓云愁永昼督教的成分,而且是希腊化的基薄雾浓云愁永昼督教。基薄雾浓云愁永昼督教从一开始产生就可以说是希腊文明与犹太文明的混合产物,基薄雾浓云愁永昼督教经典《新约》从一开始就是用希腊语创造出来的,主要的传播者也是罗马帝国中的希腊人,只奉《旧约》的犹太教是严禁偶像崇拜的,而基薄雾浓云愁永昼督教各流派都可以绘画雕刻圣像,这就是其希腊化的典型特征。

对于希腊文明,怎么评价都不过分。可以说:如果没有希腊文明,就几乎没有我们今天现代社会的一切。现代的许多科学学科,技术发明,以及民瑞脑消金兽主制度,早在古希腊时代就已经产生出了其雏形。古希腊文明更是直接催生了中世纪欧洲的文艺复兴,导致近代科学的产生,民瑞脑消金兽主制度的萌芽。这是对今天整个人类世界作出了最重要最关键的贡献的一个文明。这一点,我们以前是认识得太不够深入了。

我们又反过来看看莫道不消魂中国的民族构成,前面说了,商,周,本是外来民族,周灭商后,商民族即已消亡。秦汉时第一次民族大融合才形成所谓"汉人",这一点跟其他国家地区的民族演化并无什么不同。汉代时人口最多时达到五千多万,但是经过汉末动帘卷西风乱,到了三国时人口仅剩下七百万,其中蜀国人口最多时仅有九十多万(所以不难理解蜀国的基本战略非联吴抗魏无以自保)。而曹操诗中"白骨露于野,千里无鸡鸣"的描写并不是文学夸张,而是对当时十室九空的人口灭绝情况的真实记录。这样巨大的人口真空靠什么来填补?靠的是北方蛮族的大量南迁来填补的。而紧接其后短暂的西晋(不到一代人的时间),北方汉人又大量南迁至长江以南,然后就是长达两百多年的"五胡乱华"时期,黄河流域一带已经基本被换了血了。

隋唐时又是一次全国范围的大混血,而这个所谓"最辉煌"的唐朝,本身就是一个部分汉化的鲜卑人政权(李世民与其家族是汉化的鲜卑人并不是什么秘密),并保留着大量蛮族陋习,如兄死父死子弟续娶其妻,这就是所谓一脉相承的"华夏文明"吗?

至于辽,金,蒙元,满清时期,那就更不用说了,被混血不说,而且整个就是亡国奴时期。胡人汉化,汉人也胡化,留起鞭子,穿起旗装,这就是所谓一脉相承的"华夏文明"吗?

还不得不说的是,今天生活在中国地区的南方人和北方人,不仅在构成"民族"这个概念的基本特征--共同心理素质上差异甚大,而且在种族的生理特征上都是有很大差异的。总的来说,北方人是比较纯粹的蒙古人种,而南方人则比较复杂,混有大量马来人种的成份。这种情况有两方面的原因:一是当初中国地区的人种从中亚,南亚等地迁移而来时就形成了这种格局,即黄河流域一带以中亚迁徙来的蒙古人种为主,而长江以南则是南亚迁居来的马来人种,二是在后来几千年的历史演变,民族迁徙中,北方的蒙古人种又大量南下与长江以南的百越等民族融和混血而成。(这也是一个人种学上的常识问题,读者可以向你身边这方面的专家咨询一下,就知道我说的没有夸张。)

种族都是如此,文化就更不用说了。说"中华文明是唯一延续下来的文明",那到底延续下来了些什么呢?举个例子:其他国家民族往往都有自己的民族服装,中国人(汉族)有自己的民族服装吗?(不要告诉我中山装是民族服装,那是用日本人的学生装改制的)。经过一千多年特别是最近几百年以来历史车轮的无情碾压,所谓的"华夏文明"剩下的也不过就是一些碎片而已,而且是些四不象的碎片。日本人的文化都比现在中国的本土文化更近汉唐文化。

很多国人喜欢自以为是地吹嘘什么"世界上唯一延续下来的文字就是汉字,其他语言文字都断绝了",实际上那是很可笑的说法。以英语为例,学英语专业的应该知道,英语虽然词汇数量巨大多达数百万,但是除了一小部分基础词汇以外,绝大多数的词汇都是由数量有限的希腊词根和拉丁词根以及前后缀组合而成的(而拉丁词根又源于希腊词根),特别是数量巨大的科技词汇基本上都是由希腊词根构成的。很多人觉得英语词汇的构成好像就是胡乱把一些字母拚接在一起,毫无规律,其实那只是不了解英语的希腊词根构词法而已。(有些网络混混喜欢宣扬什么"汉语词汇的组成是规律的,英语词汇的组成没有规律,汉语优于英语"这种谬论,简直无知得可笑。)

你会发现在西方国家的各种语言中,很多词汇都是很相近的,就是因为它们都是用同样的拉丁词根和希腊词根构成的原因。例如"地理"这个词,英语是"geography",德语是"geo",因为都是由表示"土地"意思的希腊词根"geo-"构成的原因。

从语言上来说,西方国家各语言间的差别并不比中国各地区方言之间的差别更大,在西方国家一个人同时会说几种西方语言的情况是很平常的事情,就像在中国一个做生意的人同时会说普通话,四川话,广东话一样。

从文字上来说,英语的字母是拉丁字母,拉丁字母源于希腊字母,希腊字母又源于腓尼基字母,而腓尼基字母最早的源头又可以追溯到埃及文字。同样的,汉字也可以追溯到苏美尔文明的楔形文字。

不仅在印欧语系(或者又称雅利安语)内部是这样,印欧语系与中东一带的闪米特语系也是渊源很深,腓尼基字母产生的另一个分支--阿拉米亚字母,又发展出今天的阿拉伯字母,维吾尔字母等。

我们又来看看汉字。不错,甲骨文是今天汉字的直接起源,但是如果是一个没有受过古文训练的人,根本看不懂古代的甲骨文字,也分不清甲骨文,金文,小篆,大篆等的区别。从文字上来说是这样,从语言上来说,今天使用欧化语法的现代汉语的人如果没有经过古文训练也根本看不懂先秦时代的文献。

然后我们又来看看埃及文明,埃及文明正式开始于公元前3500年(涅伽达文明时期),这时期出现了象形文字,数十个城市国家,冶炼铜器。(实际上在公元前4500年已进入铜器时代)。并发明了纸草纸。

然后在公元前3100年时,美尼斯统一了上下埃及各城邦,进入早王朝时期。第三王朝时开始大规模修建金字塔。埃及大大小小的金字塔建立起来一千多年后,中国才开始进入文明时代。

再来看埃及的种族:埃及最初的居民是含米特人,然后与西亚进入的闪米特人逐渐融合,创造埃及文明的就是这种闪含混和民族。而闪米特人都起源于阿拉伯半岛,阿拉伯人,犹太人都是闪米特人。今天生活在中东北非的大部分居民,不过就是阿拉伯化的古代闪米特人的后裔。古埃及虽然在其本土政权延续了三千年之久后又陆续经历了亚述人,波斯人,希腊人,罗马人,阿拉伯人的统治,但是其种族本身从法老时期一直到今天并没有大的改变,今天生活在尼罗河两岸的居民其体貌特征跟古埃及时期的雕刻和绘画上的形象仍然非常相似。

埃及人只不过中途又接受了伊斯兰教的成分,这种情况跟古希腊罗马接受了基薄雾浓云愁永昼督教的情况非常类似,也类似于中国人接受了佛教文化一样。只不过伊斯兰教基薄雾浓云愁永昼督教这种一神教的同化作用更为彻底一点,而伊斯兰教本来就是中东闪米特人土生的宗教。

再来看印度文明。印度文明开始于公元前2500年(哈拉巴文明时期),地点在今印度河流域一带,以哈拉巴和摩亨佐两地发掘出来的完整的砖砌城市遗迹为代表,以及象形文字,青铜器。

创造最早的哈拉巴文明的是达罗毗荼人,他们与后来进入印度的雅利安人逐渐融合构成了今天印度的主要居民,今天印度的人种混杂局面就是这种历史原因造成的。而雅利安人在公元前1500年进入印度后,就继承了达罗毗荼人的文化,其宗教,哲学都深受前者影响。

至于印度后来受到蒙古莫卧尔王朝的统治,本质上跟中国地区被蒙元满清统治时期一样,而且在殖民化程度和奴役程度上要轻得多。

今天印度人口的绝大多数都仍然是古代达罗毗荼人和雅利安人等民族的后裔,其信奉的印度教也是从古代就一脉相承下来的,其创造的佛教也深刻影响了整个东亚地区,何来的"文明消失"了?

实际上,通过对比上述几个文明,我们可以发现,恰恰消亡得最多的就是中国地区的文明,除了仍然在使用汉字这一点以外,我没有看出今天的中国还从古代继承下来了些什么。

其实,在学界有一种不便于启齿的看法就是:真正的古华夏文明,从宋代以后就已经消亡了。今天的中国不是昨天的中国。

我们又来看看中东的两河流域文明,它正式开始于公元前3500年的苏美尔文明时期(实际上在公元前4300年已经进入铜器时代,出现了城市,国家的萌芽),这时候出现了象形文字,及稍后的楔形文字,冶炼铜器,以及乌尔,乌鲁克,尼普尔等数十个城邦。

创造最早的苏美尔文明的苏美尔人,可能是含米特人,他们很快就与后来进入的闪米特人融合了。而后继承苏美尔文明而起的阿卡德文明(公元前2371 年),巴比伦文明(公元前1894年),都是闪米特人创造的;创造亚述文明,腓尼基文明,犹太文明的也是古代闪米特人;创造伊斯兰文明的阿拉伯人也是闪米特人。今天生活在中东地区的大部分居民仍然是这些古代闪米特的后裔。信奉的宗教仍然是从古代闪米特人原始宗教发展而来的伊斯兰教,使用的文字仍然是从楔形文字和埃及象形文字中提取元素而产生的腓尼基字母文字发展而来的阿拉伯文字。

至于中国官方宣传的"四大文明古国"中的那个巴比伦,不过是两河地区最早的文明出现近两千年之后才出现的一个晚期文明,中国官方把这个拿来列在所谓的"四大文明古国"中,给人一种错觉,似乎中国地区的文明跟早于自己两千多年的两河文明是在同一个时间层面上似的。

闪米特人的另外一个文明:亚述文明,大约开始于公元前2000年左右,发源地在两河上游一带。这个文明最突出的特点在于他的军事技术上的成就,它建立了当时世界上兵种最为齐全,战斗力最为强悍的一个军事体系,后来其军事技术体制被波斯所继承。

闪米特人在地中海沿岸一带的另一个文明:腓尼基文明,也大约开始于公元前2000年左右,著名的城邦有推罗等。范围就相当于今天黎巴嫩的版图(另外,著名的迦太基古国,也是腓尼基的殖民地)。这个文明最突出的特点,就是其航海及商业上的成就。早在埃及尼科二世时期(公元前611年),腓尼基人已经实现了环航非洲,这是人类航海史上与麦哲伦环球航行,哥伦布发现美洲并列的航海壮举。

腓尼基文明的另一个伟大贡献就是字母文字的发明。它虽然从楔形文字和埃及象形文字得到启发,但是却是真正成形的拼音字母文字,从腓尼基文字又发展出希腊文字,拉丁文字;以及阿拉伯文字等。从腓尼基文字发展而来的这种字母文字,是除了东亚之外全世界都在使用的文字。韩国日本等国都曾经进行过文字拼音化的尝试,现在也还在朝这个方向努力。中国要想实现现代化,将来也不可避免地要向这个方面发展。

犹太文明,如果从公元前1000年扫罗建国算起的话,是三千年历史。但实际上,作为一个民族,犹太人的历史还更为悠久。早在公元前2000年以前,居住在这里的迦南人(闪米特语族),已经进入铜器时代,建立了城市,后来与进入这里的犹太人融合。

至于犹太文明及其民族独一无二的延续性,以及他们对人类的贡献,我想不需要我多说了。

赫梯文明,这可能是一个雅利安语族的文明,也大致开始于公元前2000年左右。地点在小亚细亚一带。这个文明最大的成就就是发明了冶铁术(有可能更早在这之前的米坦尼王国已出现),并在公元前1400年左右率先进入铁器时代。而今天高加索一带的亚美尼亚,据称其居民就是古代赫梯人的后裔。

今天叙利亚的居民,则是建立以大马士革为中心的古代叙利亚文明的阿拉米人的后裔。

波斯文明,就是今天伊朗的前身,这是一个雅利安人的文明。如果从其最早的居民--埃兰人建立的文明开始,是在公元前2500年左右,他们创造了伊朗最早的文字,国家。埃兰人与后来的米底人,波斯人同出一源。波斯帝国则建立于公元前550年,是第一个横跨欧亚非空前庞大的帝国。今天伊朗人的绝大多数,就是古代波斯人的后裔。

顺便提一下罗马文明,如果从公元前754年罗马建国开始(另一说公元前575年),是两千多年历史,而实际上,早在公元前1800年特拉马拉文化时期意大利已进入青铜时代;公元前1000年维兰诺瓦文化时期已进入铁器时代。今天意大利的绝大部分居民,仍然是建立罗马文明的古代拉丁人的后裔。

至于美洲的玛雅,印加诸文明,由于出现时间稍晚,这里就不赘述了。

所谓"创造某个古代文明的民族已经灭绝了"这种说法纯属误导。没有任何一个民族能够被彻底地灭绝。不管是在战乱中遗存下来的人民,还是后来迁居而来逐渐融合了的外来成份,他们都会自然地依照共同的地域意识和文化心态,重新恢复古代的文明版图。读者如果把今天的世界地图与早期文明的分布图对比一下,就会发现,各早期古代文明所在的大致范围与今天建立在这些地区的现代国家版图基本上是相吻合的。以色列人流浪千年之后仍然要顽强地回到故土上去,并恢复了希伯莱语言文字;伊朗人(波斯人)近代独立以后马上就将阿拉伯文字从自己的文化体系中清除出去,并全力恢复古代波斯的文化传统,这已经很能说明问题了。

还有很多国人喜欢夸夸其谈的一种荒谬可笑的论调"唐朝时中国是世界的中心"。事实上,中国从来就不是什么"世界的中心",唐朝时世界上有阿拉伯帝国,拜占庭帝国,查理曼帝国。那时候世界的中心在君士坦丁堡,在巴格达;汉朝时有罗马帝国,安息帝国(波斯的继承者),贵霜帝国。那时候世界的中心在罗马,在亚历山大里亚,在巴比伦尼亚。这一点看看世界历史地图就很明了,中国地区一直都是远离文明的中心,在欧亚大陆最偏僻的角落里。

某些人津津乐道什么唐朝多么多么开放,有很多外国人来中国做官。只是自己少见多怪而已,其他文明地区的这种开放的程度普遍的很,各个种族的人来来往往经商做官是家常便饭的事,例如罗马帝国时期,甚至有好几个皇帝都是阿拉伯人,腓尼基人,日尔曼人等外族人,而且是依照正常程序继承的皇位,而非象蒙元满清时代那种异族征服得来的皇位。

地中海周边地区和中东地区,才是在整个人类历史的绝大部分时间里一直是世界的中心,文明的源头。

中东文明可以说是整个人类文明的源泉,楔形文字与埃及象形文字是后来的西方字母文字的最早源头,中国地区的文字实际上也起源于楔形文字。青铜冶炼术,冶铁术,制陶术,车轮,驯养牛马,都是从中东最早发源并传播到世界其他地区的(也包括中国),这是国际学术界普遍的看法。当然中国的"历史学家"对很多事实是一概否认的。这个问题,就我个人来说,我当然是相信国际学术界也绝不会相信中国的这些所谓"历史学家"的,读者们则可以根据自己对中国"历史学家"德性的了解自行作出判断。

最近几年,中国的某些无赖似的"历史学家""考古学家",据说对国际上不予承认中国有商前文明感到很恼火,干脆一不做二不休,声称要单方面宣布中国为"六千年文明历史",有人甚至提出要更进一步修改为"一万年文明史",据说还是什么"考古学会"的"会长"。我并不相信这些白痴"学者"真有这种滑天下之大稽的胆量和脸皮去实施这个搞笑计划,我倒是担心他们虚张声势一场最后又不了了之,让我们失去了一个看国际笑话的机会。

其实对付这些"历史学家"这种流氓手段的最好办法就是以其人之道还治其人之身。西方人是太厚道了,要像韩国朝鲜人那样。比如说,我在朝鲜的官方宣传资料上就看到:朝鲜人说他们是"六千年历史的文明古国",好嘛,比我们中国还多吹出了一千年,现在中国的"历史学家""考古学家"不是要修改中国的历史为"六千年文明"嘛,那么朝鲜就会把自己又改称为"七千年历史的文明古国",反正始终保持比中国领先一千年,反正只需要改动一个字的功夫而已,何乐而不为呢?日本人就更离谱了,干脆把文物自己埋到地下又自己挖出来做"证据"证明自己的"历史"(跟中国的"考古学家"有得一拚)。

顺便说一句,如果要像中国官方那样将新石器时代的原始部落文化遗迹混淆为"文明时代"的话,那么日本根据其最早的新石器时代文化遗迹--绳纹式文化,也可以把自己说成是"一万年文明历史"。

中国要想把自己打扮成是"最古老的文明国家"这可不容易啊,首先连日本韩国朝鲜这一关都过不了,大家都在比赛谁修改教科书的功夫更厉害。中国,日本,韩国,朝鲜,如果要比谁是最无耻的国家的话,倒是有得一比。

中国的某些"历史学家",他们"做学问"的态度,就像是妓女对待嫖客一样的态度,随时可以为了政治的需要改换自己的态度和立场,换一个主子就又炮制出一种新的"理论"出来。

这些娼妓一样的"历史学家",不客气地说,应该称之为"历史篡改学家""历史伪造学家"或者"历史文学家"更为合适。相信看够了他们是怎样篡改伪造近现代历史的种种表演的世人,都不会不同意我的这种说法。更何况是虚无飘渺的古代历史?

最近这些年来,人们对中国越演越烈的学术腐佳节又重阳败学术造假现象都很关注,但主要都集中在一些造假者有丰厚利润可图的学科领域,对历史学界,考古学界这些好像没有什么油水的圈子都不太注意,其实这两个看似不重要不起眼的学科领域倒是最有学术腐佳节又重阳败学术造假的可能性的,因为这两个学科是直接为政治服务的。比如说那个在国际学术界臭名远扬的所谓《夏商周断代工程》伪学术项目,就存在着大量学术腐佳节又重阳败学术造假情况,例如在用碳14测年法测算文物年代的问题上,主事者在数种测年法中故意选用最不准确但是却能够有利于将文物年代往前提早的那一种,他们就是这样搞"学术研究"的,不知道骗取了多少国家科研经费。此类事例,举不胜举,很多资料都有披露。

我在商务印书馆三十年代出版的一本《考古学》上看到那时的考古学前辈是这样阐述研究考古学的意义的:"考古学的目的一不是为了夸耀古国的辉煌,二不是为了粉饰现实的政治。而是为了了解历史的真实,知道我们以前的路是怎样走过来的,以为参考,对我们将来应该走什么样的路有一个更清醒的认识。"

中国的某些"考古学家",把前辈们的教诲全都扔到茅坑里去了。将来到地下碰见这些先辈,肯定是要被打屁股的。

还有某些瘪三一样的中国人,常常喜欢放这样一种屁:"我们中国人辉煌灿烂的时候,你们(西方人)还在树上呢",说这话的人不一定就是对起码的人类进化史常识无知,虽然大家都知道人类早在一两百万年前就已经从古猿逐渐过渡到直立人了,也就是说早就不"在树上"。可能他们的意思只是以此比喻谁开化得早一些。不过我们前面已经说明得很清楚了:中国进入文明时代远远晚于其他文明地区而且也晚于欧洲。

而现在我们需要更进一步来比较一下石器时代的情况:在欧洲发现的不管是从旧石器时代早期的舍利文化,阿舍利文化,克拉克当文化,还是中期的穆斯特文化,晚期的奥瑞拉文化,索鲁特文化,马格德林文化,以及中石器时代的阿齐尔文化,塔登鲁尔文化,阿斯度尼亚文化,马莱姆斯文化,一直到新石器时代诸多文化,在谱系上都非常完整,不象中国地区有一个很大的断层。时间上也早得多。

就连日尔曼这种相对来说在欧洲算较为野蛮的地区,公元前一千年左右就已经进入了铁器时代了(武器和工具普遍使用铁制),比中国地区早了近一千年;英国地区早在五千年前其最早的居民皮克特人也已经开始建筑石头城殿;西班牙和法莫道不消魂国尼奥岩洞等地,考古发现了数万年前的绘画作品(是世界上最早的绘画和艺术品。奥瑞拉文化时期)以及最早发明弓箭的考古证据。

而中国,即使是公元前1500年才开始的商王朝,也还是青铜器时代,夯土建筑,其主要覆盖范围也只不过就是河南的一小部分地区(注意我说的是主要),而古中国其他广大地区,基本上都还处在野蛮原始的部落文化状态。这到底是谁"还在树上"呢?这不是很明显的事情吗?

其实当很多中国人得意洋洋地吹嘘"我们的祖先比你们西方人辉煌灿烂"的时候,用心思考的人会发现,这句话所包含的潜台词其实就是"我爸爸比你有钱"。且不说这只是颠倒的事实,就这句话的潜意识来说,这样吹嘘本来是件可耻的事情,而不是什么光彩的事情。我们在日常生活中,如果有人用"我爸爸比你有钱"来炫耀自己,毫无疑问地都会遭到那怕是最势利最无廉耻的人的鄙视。可偏偏有一些中国人不以为耻,反倒以此为荣。也真是一大奇观阿。

每次看到这些恶心的小丑恬不知耻地吹嘘什么"我们的祖先比你们西方人辉煌灿烂(我爸爸比你有钱)"或者是"我们中国人辉煌灿烂的时候,你们(西方人)还在树上呢"的时候,每次看到这种肮脏丑陋的嘴脸的时候,都让人忍俊不禁。

我真不知道咱们中国人怎么脸皮就这么厚,也真不明白中国到底有什么可以吹嘘的,有什么可以得意的。讲政治,中国三千年来一直都是最专人比黄花瘦制,最腐佳节又重阳败,最黑暗的,一直到现在都还是类似于中世纪般的半封建专人比黄花瘦制体制;讲文化,中国文化其实质根本就是最腐朽最堕落的奴才文化,太监文化,官半夜凉初透场文化,伪君子文化,一点可取之处都没有,这个问题也是自五四以来鲁迅等仁人志士早就已经多次阐明了的;讲经济,中国老百姓在封建帝王,贪官污吏,地主豪强等多重压迫下一直都是最穷困的,所谓"唐朝时一个马车夫都比欧洲贵族富有"之类的蠢话恐怕也只有白痴才说得出来;讲历史,中国不要说跟中东,埃及,欧洲,印度这些文明悠久的国家和地区相比,就连跟自己的邻居日本和朝鲜韩国等比,都没有多少可骄傲的资本;讲科学,我们对科学毫无贡献,唯一能够拿来吹嘘一下的就只有个子虚乌有的 "四大发明",还是李约瑟这个洋人帮着编造的(连编谎都得靠着外国人来编!李约瑟炮制的《中国科学技术史》里面那些胡编乱造的"中国古代科学发现"连稍有良知的中国人自己都不好意思拿到正式场合来炫耀,这里也就不多说了,具体可参考《从头审视所谓四大发明等说法的种种谬误》等文章。)

我觉得我们中国人这德性很不好:刚吃了几天饱饭,就得意得不知道自己几斤几两了。任何事情都要撒谎吹嘘成是自己"世界第一"(虽然昨天还在挨饿),其他国家民族在中国人眼里好像根本不存在似的(其实心里面一门心思琢磨着怎么移民到外国去)。这样自欺欺人下去,没准明天又要挨饿。这就叫做"器小易盈"。

某些中国人就是想通过种种方式来抬高自己贬低其他国家民族(特别是让他们嫉恨不已的西方国家),来满足他们那种面对西方文明时极度自卑心理背后的意淫需要,并迎合官方的 ** 需要。是一种极其无耻可笑的行为。

喜欢吹嘘"我爸爸比你有钱"的某些中国人,就是这样一副令人发笑的肮脏丑陋的嘴脸,就是这样一群令人恶心的小丑。

最后要说明的是,本文所引用有关世界史的大部分数据和资料都可以在中国高等教育出版社出版的《世界史》教材中找到出处,相信不会再有任何理由指责我"歪曲,捏造,不客观"了。当然,关于中国史的部分,那你得看国外学者的著作才能知道真实的情况,基于中国"历史学家"一贯的德行表现,我相信这一点大家也不会有什么异议的。
Posted in My Favorite | Tagged | Leave a comment

用 GTest 来测试MFC 程序 TDD开发

无意间发现GOOGLE发布了一个开源的C++单元测试框架 Google Test,称GTest。很多兄弟夸奖,对GOOGLE的东东还是很有兴趣。一时试了一下。 发现测试MFC没有那样方便,不过总是能用。

下载

http://code.google.com/p/googletest/

我下载的时候,版本为1.4

编译gtest库文件

首先我们需要为MFC编译GTest库。 gtest默认的工程配置中,动态库选项使用得是MT, 而我们一般使用的MFC程序是MD,关于这两个选项的详细区别大家参考 各种 C 运行时库的区别 。 这里我大概提一下,多的那个D代表动态。 特别注意的一点是,gtest生成库的这个选项 "Runtime Library"必须相同,否则会链接的时候出错。

所以我会生成两个库,一个是MD, 另一个是MT。详细的操作:
是VS下面打开gtest工程文件,打开Configuration Manager,从Debug配置复制两份新配置,分别起名为 Debug-MDd 和 Debug-MTd. 然后到项目管理器里面重设所有项目的属性,如图分别设置相应的 Runtime Library。

编译两次Solution,生成gtest-1.3.0\msvc\Debug-MDd 和gtest-1.3.0\msvc\Debug-MTd

在工程中使用GTEST

假设你已经有一个MFC工程了。现在需要加入测试代码。

1.设置头文件, 让工程可以找到GTEST中定义的宏和类

在这里我多设置了一个宏,以便实现测试代码和正常调度代码的分离,作用后面再说

2.设置gtest.lib路径

其实这里有两种办法,一是 在本工程是同时插入GTEST工程,这样让工程依赖GTEST工程即可。

二是让现有工程包含gtest库。

作用基本一相,区别是依赖的时候,经常会重新编译gtest, 但可以源代码级的跟踪。 包含刚好相反。我倒还没到分析GTEST源代码的时候,所以用第二种。

设置测试代码入口

CPPUNIT中,测试代码是一个单独的工程,按道理,GTEST也是如此,可是我发现在另一个工程中测试MFC工程中的程序时,需要添加很多头文件,而且还经常出错。也可能是那里我没有搞定。所以现在在同一个工程中进行。 这样唯一的好处是不需要处理那些麻烦的头文件,但从软件工程角度是没有好处的。

MFC程序都是GUI的,这时需要取消系统本有的GUI,而用GTEST的concle代替 入口地有两种,如果是Dialog 则是

×××::OnInitDialog()

如果是 D/VIEW则

xxxxApp::InitInstance()

在其中做如下修改:

//test project
#ifdef _GTEST

CConsole cc;

int argc = 0;
TCHAR* argv = _T("");
testing::InitGoogleTest(&argc, &argv);
RUN_ALL_TESTS();

HWND hwnd = GetConsoleWindow();
::SetWindowPos(hwnd, HWND_TOP, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE);
AfxMessageBox(_T("about to exit!"));

return false;
#else
..... //这里是原有的程序
#endif

加入测试代码

//test code
TEST(DlgTest, simpleTest1)
{
CmyDlg myDlg;
int nCnt = 5;
myDlg.SetCnt(nCnt);
EXPECT_EQ(nCnt, myDlg.GetCnt()) ;

}

CConsole 是一个类,来实现控制台的输出

因为MFC GUI程序默认是没有控制台的,所以我们就看不到GTest的输出。CConsole 就是用来创建一个控制台对象并注册为默认控制台。代码如下:

  1. class CConsole
  2. {
  3. public:
  4. CConsole(void);
  5. virtual ~CConsole(void);
  6. private:
  7. };
  8. #include "StdAfx.h"
  9. #include "Console.h"
  10. #include <conio.h>
  11. #include <fcntl.h>
  12. #include <io.h>
  13. CConsole::CConsole(void)
  14. {
  15. AllocConsole();
  16. int hCrun;
  17. hCrun = _open_osfhandle((long)GetStdHandle(STD_OUTPUT_HANDLE), _O_TEXT);
  18. FILE* hFile = _fdopen(hCrun, "w");
  19. // use default stream buffer
  20. setvbuf(hFile, NULL, _IONBF, 0);
  21. *stdout = *hFile;
  22. //test
  23. //_cprintf("test console by _cprintf\n", 0);
  24. //std::cout << "test console by std: :o ut\n";
  25. }
  26. CConsole::~CConsole(void)
  27. {
  28. FreeConsole();
  29. }

测试执行完成以后,把Console窗口移到前台,并通过MessageBox阻止程序退出,便于查看控制台的输出。

运行结果

总结:

就本人的肤浅认识,与CPPUnit做个简单的对比

  • 优点:

使用方便,CPPUNIT需要添加好几个包含文件,需要手工声明测试套,这一点继承的GOOGLE的简洁作风测试用例。

  • 据点:

目前还没有发现GOOGLE GTEST有GUI的显示,也没有灵活的方式可以让用户选择部分测试用例执行。这一点没有CppUnit灵活。

所以,我还是暂时继续使用CPPUnit吧。

参考文献:

  1. Google C++ Testing Framework http://code.google.com/p/googletest/

  2. CoderZh 玩转Google开源C++单元测试框架Google Test系列 http://www.cnblogs.com/coderzh/archive/2009/04/06/1426755.html

  3. eyeblue 图解MFC程序中使用Google单元测试工具GTest进行TDD开发 http://blog.csdn.net/eyeblue/archive/2009/07/08/4332270.aspx

Posted in Computer Tech | Tagged | Leave a comment

[转]十年经验教你如何学习嵌入式系统(基于ARM平台)

电子系统设计网站上看到一篇嵌入式的文章,觉得很指导性。收藏转载。

作者: 工程师好几天了

原贴地址:http://forum.edc-cn.com/FORUM_POST_76_47246_0.HTM?click_from=1000005105,8106459344,2009-12-11,EDCOL,FORUM_ALERT&click_from=fnp

一、嵌入式系统的概念

着重理解"嵌入"的概念

主要从三个方面上来理解。
1、从硬件上,将基于CPU的处围器件,整合到CPU芯片内部,比如早期基于X86体系结构下的计算机,CPU只是有运算器和累加器的功能,一切芯片要造外部桥路来扩展实现,象串口之类的都是靠外部的16C550/2的串口控制器芯片实现,而目前的这种串口控制器芯片早已集成到CPU内部,还有PC机有显卡,而多数嵌入式处理器都带有LCD控制器,但其种意义上就相当于显卡。比较高端的ARM类Intel Xscale架构下的IXP网络处理器CPU内部集成PCI控制器(可配成支持4个PCI从设备或配成自身为CPI从设备);还集成3个NPE网络处理器引擎,其中两个对应于两个MAC地址, 可用于网关交换用,而另外一个NPE网络处理器引擎支持DSL,只要外面再加个PHY芯片即可以实现DSL上网功能。IXP系列最高主频可以达到 1.8G,支持2G内存,1G×10或10G×1的以太网口或Febre channel的光通道。IXP系列应该是目标基于ARM体系统结构下由 intel进行整合后成Xscale内核的最高的处理器了。
2、从软件上前,就是在定制操作系统内核里将应用一并选入,编译后将内核下载到ROM中。而在定制操作系统内核时所选择的应用程序组 件就是完成了软件的"嵌入",比如WinCE在内核定制时,会有相应选择,其中就是wordpad,PDF,MediaPlay等等选择,如果我们选择 了,在CE启动后,就可以在界面中找到这些东西,如果是以前PC上将的windows操作系统,多半的东西都需要我们得新再装。
3、把软件内核或应用文件系统等东西烧到嵌入式系统硬件平台中的ROM中就实现了一个真正的"嵌入"。

以上的定义是我在6、7年前给嵌入式系统下自话侧重于理解型的定义,书上的定义也有很多,但在这个领域范围内,谁都不敢说自己的定义是十分确切的,包括那些专家学者们,历为毕竟嵌入式系统是计算机范畴下的一门综合性学科


二、嵌入式系统的分层与专业的分类。

嵌入式系统分为4层,硬件层、驱动层、操作系统层和应用层。

1、硬件层,是整个嵌入式系统的根本,如果现在单片机接口这块很熟悉,并且能用C和汇编语言来编程的话,从嵌入式系统的硬件层走起来相对容易,硬件层也是驱动层的基础,一个优秀的驱动工程师是要能够看懂硬件的电路图和自行完成CPLD的逻辑设计的,同时还要对操作系统内核及其调度性相当的熟悉的。但硬件平台是基础,增值还要靠软件。
硬件层比较适合于,电子通信、自动化、机电一体、信息工程类专业的人来搞,需要掌握的专业基础知识有,单片机原理及接口技术、微机原理及接口玉枕纱厨技术、C语言。
2、 驱动层,这部分比较难,驱动工程师不仅要能看懂电路图还要能对操作系统内核十分的精通,以便其所写的驱动程序在系统调用时,不会独占操作系统时间片,而导 至其它任务不能动行,不懂操作系统内核架构和实时调度性,没有良好的驱动编写风格,按大多数书上所说添加的驱动的方式,很多人都能做到,但可能连个初级的 驱动工程师的水平都达不到,这样所写的驱动在应用调用时就如同windows下我们打开一个程序运行后,再打开一个程序时,要不就是中断以前的程序,要不 就是等上一会才能运行后来打开的程序。想做个好的驱动人员没有三、四年功底,操作系统内核不研究上几编,不是太容易成功的,但其工资在嵌入式系统四层中可 是最高的。
驱动层比较适合于电子、通信、自动化、机电一体、信息工程类专业尤其是计算机偏体系结构类专业的人来搞,除硬件层所具备的基础学科外,还要对数据结构与算法、操作系统原理、编译原理都要十分精通了解。

3、操作系统层,对于操作系统层目前可能只能说是简单的移植,而很少有人来自已写操作系统,或者写出缺胳膊少腿的操作系统来,这部分工作大都由驱动工程师来完成。操作系统是负责系统任务的调试、磁盘和文件的管理,而嵌入式系统的实时性十分重要。据说,XP操作系统是微软投入300人用两年时间才搞定的,总时工时是600人年,中科院软件所自己的女娲Hopen操作系统估计也得花遇几百人年才能搞定。因此这部分工作相对来讲没有太大意义。

4、应用层,相对来讲较为容易的,如果会在windows下如何进行编程接口函数调用,到操作系统下只是编译和开发环 境有相应的变化而已。如果涉及Jave方面的编程也是如此的。嵌入式系统中涉及算法的由专业算法的人来处理的,不必归结到嵌入式系统范畴内。但如果涉及嵌 入式系统下面嵌入式数据库、基于嵌入式系统的网络编程和基于某此应用层面的协议应用开发(比如基于SIP、H.323、Astrisk)方面又较为复杂, 并且有难度了。



三、目标与定位。

先有目标,再去定位。

学 ARM,从硬件上讲,一方面就是学习接口电路设计,另一方面就是学习汇编和C语言的板级编程。如果从软件上讲,就是要学习基于ARM处理器的操作系统层面 的驱动、移植了。这些对于初学都来说必须明确,要么从硬件着手开始学,要么从操作系统的熟悉到应用开始学,但不管学什么,只要不是纯的操作系统级以上基于 API的应用层的编程,硬件的寄存器类的东西还是要能看懂的,基于板级的汇编和C编程还是要会的。因此针对于嵌入式系统的硬件层和驱动程的人,ARM的接 口电路设计、ARM的C语言和汇编语言编程及调试开发环境还是需要掌握的。
因此对于初学者必然要把握住方向,自己的目标是什么,自己要在那一层面上走。然后再着手学习较好,与ARM相关的嵌入式系统的较为实际的两个层面硬件层和驱动层,不管学好了那一层都会很有前途的。
如果想从嵌入式系统的应用层面的走的话,可能与ARM及其它体系相去较远,要着重研究基嵌入式操作系统的环境应用与相应开发工具链,比如WinCe操作系统下的EVC应用开发(与windows下的VC相类似),如果想再有突破就往某些音视频类的协议上靠,比如VOIP领域的基于SIP或H.323协议的应用层开发,或是基于嵌入式网络数据库的开发等等。

对 于初学者来讲,要量力而行,不要认为驱动层工资高就把它当成方向了,要结合自身特点,嵌入式系统四个层面上那个层面上来讲都是有高人存在,当然高人也对应 的高工资,我是做硬件层的,以前每月工资中个人所得税要被扣上近3千大元,当然我一方面充当工程师的角色,一方面充当主管及人物的角色,两个职位我一个人 干,但上班时间就那些。硬件这方面上可能与我PK的人很少了,才让我拿到那么多的工资。

四、开发系统选择。

很 多ARM初学者都希望有一套自己能用的系统,但他们住住会产生一种错误认识就是认为处理器版本越高、性能越高越好,就象很多人认为ARM9与ARM7好, 我想对于初学者在此方面以此入门还应该理智,开发系统的选择最终要看自己往嵌入式系统的那个方向上走,是做驱动开发还是应用,还是做嵌入式系统硬件层设计 与板级测试。如果想从操作系统层面或应用层面上走,不管是驱动还是应用,那当然处理器性能越高越好了,但这个东西自学,有十分大的困难,不是几个月或半年 或是一年二年能搞定的事。

 在某种意义上请,ARM7与9的差别就是在某些功能指令集上丰富了些,主频提高一些而已,就比如286和386。对于用户来讲可能觉查不到什么,只能是感觉速度有些快而已。
ARM7比较适合于那些想从硬件层面上走的人,因为ARM7系列处理器内部带MMU的很少,而且比较好控制,就比如S3C44B0来讲,可以很容易将 Cache关了,而且内部接口寄存器很容易看明白,各种接口对于用硬件程序控制或AXD单步命令行指令都可以控制起来,基于51单片机的思想很容易能把他 搞懂,就当成个32位的单片机,从而消除很多51工程师想转为嵌入式系统硬件ARM开发工程师的困惑,从而不会被业界某此不是真正懂嵌入式烂公司带到操作 系统层面上去,让他们望而失畏,让业界更加缺少这方面的人才。

而嵌入式系统不管硬件设计还是软件驱动方面都是十分注重接口这部分的,选择平台还要考察一个处理器的外部资源,你接触外部资源越多,越熟悉他们那你以后就业成功的机率就越高,这就是招聘时 所说的有无"相关技能",因为一个人不可能在短短几年内把所有的处理器都接触一遍,而招聘单位所用的处理器就可能是我们完全没有见过的,就拿台湾数十家小 公司(市价几千万)的公司生产的ARM类处理器,也很好用,但这些东西通用性太差,用这些处理器的公司就只能招有相关工作经验的人了,那什么是相关工作经 验,在硬件上讲的是外围接口设计,在软件上讲是操作系统方面相关接口驱动及应用开发经验。我从业近十年,2000年ARM出现,我一天始做ARM7,然后 直接跑到了Xscale(这个板本在ARM10-11之间),一做就是五年,招人面试都不下数百人,在这些方面还是深有体会的。

我个人认为三星的S3C44b0对初学者来说比较合适,为什么这么说哪?因为接口资源比较丰富,技术成熟,资料较多,应该十分适合于初学者,有问题可能很容易找人帮且解决,因为大多数人都很熟悉,就如同51类的单片机,有N多位专家级的人物可以给你帮忙,相关问题得以很快解答,所然业界认为这款ARM都做用得烂了,但对于初学者来,就却是件好事。
因此开发系统的选择,要看自己的未来从来目标方向、要看开发板接口资源、还要看业界的通用性。

五、如何看待培训。

首先说说我自己,我目前从业近十年,与国内嵌入式系统行业共同起步,一直站在嵌入式系统行业前沿,设计过多款高端嵌入式系统平台产品并为众多公司提供过解决方案,离职前为从事VOIP的美资公司设计IP-PBX,历任项目经理、项目主管、技术总监、部门经理,积累众多人脉,并集多年经验所得,考虑到学生就业与公司招人的不相匹配,公司想招人招不到,而学生和刚毕业的工程师想找份工作也不太容易,于此力创知天行科技有限公司,开展嵌入式系统教育培训。
因 一线的科研人员和一线的教师不相接触,导至国内嵌入式人才缺乏,国外高校的技术超前于业界公司,而国内情况是业界公司方面的嵌入式系统技术要远远领先于高 校。为架构业界与高校沟通的桥梁,把先进技能带给高校学子,为学生在就业竞争中打造一张王牌,并为业界工程师快速提升实现自我创造机遇,我就这样辞去了外 企年薪20多万的职位,做嵌入式系统方面的培训了。
对于培训来讲,是花钱来买时间,很多工程师都喜欢自己学,认为培训不值,这也是有 可能的,纯为赚钱的培训当然不会太有价值,但对于实力型的培训他们可能就亏大了,有这样一笔帐不知他们算过没有,如果一个一周的培训,能带给他们自学两年 后才能掌握的知识,在培训完后他们用三个月到半年时间消化培训内容,这样他会省约至少一年半的时间来学其它的或重新站在另一个高度上工作,那么他将最迟一 年后会拿到他两年后水平所对应的工资,就是在工资与水平对应的关系上比同批人缩短一年,每月按最少1千计,再减去培训费用至少多1.0万,同时也省了一年 时间,不管是休闲也好,再继续提高也好,总之是跑到了队伍的前面了。
另一层面上讲,对于新人的培训相当于他们为自己提前买了份失业保险,有师傅会带领他们入道,我今年暑假时班里最年轻的一个学生是大二的,今年才上大三,这学期才刚学单片机,但现在ARM方面的编程工作已经搞得有声有色了,再过一年多毕业,他还会失业吗?
再 者通过培训,你可以知道很多业界不为常人所知的事,同时也为自己找了个师傅,就比如说,两个工程师分别用S3C2410和PXA255来做手持设备,同样 两人都工作四年,再出去找工作,两人工资可能最多可相差一倍,为什么?这就是业界不为常人所知的规则,2410属于民品,被业界用烂了,做产品时成本特敏 感,当然也对人才成本敏感了,PXA255是intel的东西,一个255 CPU能买三个2410,一直被业界定义为贵族产品,用的公司都是大公司或为 军方服务的公司,不会在乎成本,只要把东西做好,一切都好说,但这方面做的人也少啊,因为开发系统贵啊。
对于说为自已找了个好师傅, 我想是这样的,因为同级工程师间存在着某此潜在的竞争关系,有很多人不愿意把自己知道的东西教给别人,这意味着他将要失业,就是所说的教会徒弟,饿死师 傅,但对于我们这些人就不存在这样的关系了,我是在嵌入式系统平台设计上走到了一定程序,目前在国内这块的技术上已经是自己很难再突破自己,因此很多东西 我对大家都是OPEN的,就比如说下面那部分关于接口设计中所提到的时序接口东西,我要是不讲,却使是高级硬件工程师我想也几乎只有10%的人能知道 吧。



六、成为高级嵌入式系统硬件工程师要具备的技能。


对于硬件来讲有几个方向,就单纯信号来分为数字模拟,模拟比较难搞,一般需要很长的经验积累,单单一个阻值或容值的精度不够就可能使信号偏差很大。因此年轻人搞的较少,随着技术的发展,出现了模拟电路数字化,比如手机的Modem射频模块,都采用成熟的套片,而当年国际上只有两家公司有此技术,自我感觉模拟功能不太强的人,不太适合搞这个,如果真能搞定到手机的射频模块,只要达到一般程度可能月薪都在15K以上。
另一类就是数字部分了,在大方向上又可分为51/ARM的单片机类,DSP类,FPGA类, 国内FPGA的工程师大多是在IC设计公司从事IP核的前端验证,这部分不搞到门级,前途不太明朗,即使做个IC前端验证工程师,也要搞上几年才能胜任。 DSP硬件接口比较定型,如果不向驱动或是算法上靠拢,前途也不会太大。而ARM单片机类的内容就较多,业界产品占用量大,应用人群广,因此就业空间极 大,而硬件设计最体现水平和水准的就是接口设计这块,这是各个高级硬件工程师相互PK,判定水平高低的依据。而接口设计这块最关键的是看时序,而不是简单 的连接,比如PXA255处理器I2C要求速度在100Kbps,如果把一个I2C外围器件,最高还达不到100kbps的与它相接,必然要导致设计的失 败。这样的情况有很多,比如51单片机可以在总线接 LCD,但为什么这种LCD就不能挂在ARM的总线上,还有ARM7总线上可以外接个Winband的SD卡控制器,但为什么这种控制器接不到ARM9或 是Xscale处理器上,这些都是问题。因此接口并不是一种简单的连接,要看时序,要看参数。 一个优秀的硬件工程师应该能够在没有参考方案的前提下设计 出一个在成本和性能上更加优秀的产品,靠现有的方案,也要进行适当的可行性裁剪,但不是胡乱的来,我遇到一个工程师把方案中的5V变1.8V的DC芯片, 直接更换成LDO,有时就会把CPU烧上几个。前几天还有人希望我帮忙把他们以前基于PXA255平台的手持GPS设备做下程序优化,我问了一下情况,地 图是存在SD卡中的,而SD卡与PXA255的MMC控制器间采用的SPI接口,因此导致地图读取速度十分的慢,这种情况是设计中严重的缺陷,而不是程序 的问题,因此我提了几条建议,让他们更新试下再说。因此想成为一个优秀的工程师,需要对系统整体性的把握和对已有电路的理解,换句话说,给你一套电路图你 终究能看明白多少,看不明白80%以上的话,说明你离优秀的工程师还差得远哪。其次是电路的调试能力和审图能力,但最最基本的能力还是原理图设计PCB绘 制,逻辑设计这块。这是指的硬件设计工程师,从上面的硬件设计工程师中还可以分出ECAD工程师,就是专业的画PCB板的工程师,和EMC设计工程师,帮 人家解决EMC的问题。硬件工程师再往上就是板级测试工程师,就是C语功底很好的硬件工程师,在电路板调试过程中能通过自已编写的测试程序对硬件功能进行 验证。然后再交给基于操作系统级的驱动开发人员。

总之,硬件的内容很多很杂,硬件那方面练成了都会成为一个高手,我时常会给人家做下方案评估,很多高级硬件工程师设计的东西,经常被我一句话否定,因此工程师做到我这种地步,也会得罪些人,但硬件的确会有很多不为人知的东西,让很多高级硬件工程师也摸不到头脑。

那 么高级硬件件工程师技术技能都要具备那些东西哪,首先要掌握EDA设计的辅助工具类如ProtelORCADPowperPCBMaplux2ISE、 VDHL语言,要能用到这些工具画图画板做逻辑设计,再有就是接口设计审图能力,再者就是调试能力,如果能走到总体方案设计这块,那就基本上快成为资深工 程师了。

硬件是要靠经验,也要靠积累的,十年磨一剑,百年磨一针。

把一个月前想写的东西,今天终于用一上午的进间整理完了,希望对喜爱嵌入式系统开发的工程师和学生们有所帮助。

Posted in Computer Tech | Tagged , | Leave a comment

[转]十年经验教你如何学习嵌入式系统(基于ARM平台)

电子系统设计网站上看到一篇嵌入式的文章,觉得很指导性。收藏转载。

作者: 工程师好几天了

原贴地址:http://forum.edc-cn.com/FORUM_POST_76_47246_0.HTM?click_from=1000005105,8106459344,2009-12-11,EDCOL,FORUM_ALERT&click_from=fnp

一、嵌入式系统的概念

着重理解"嵌入"的概念

主要从三个方面上来理解。
1、从硬件上,将基于CPU的处围器件,整合到CPU芯片内部,比如早期基于X86体系结构下的计算机,CPU只是有运算器和累加器的功能,一切芯片要造外部桥路来扩展实现,象串口之类的都是靠外部的16C550/2的串口控制器芯片实现,而目前的这种串口控制器芯片早已集成到CPU内部,还有PC机有显卡,而多数嵌入式处理器都带有LCD控制器,但其种意义上就相当于显卡。比较高端的ARM类Intel Xscale架构下的IXP网络处理器CPU内部集成PCI控制器(可配成支持4个PCI从设备或配成自身为CPI从设备);还集成3个NPE网络处理器引擎,其中两个对应于两个MAC地址, 可用于网关交换用,而另外一个NPE网络处理器引擎支持DSL,只要外面再加个PHY芯片即可以实现DSL上网功能。IXP系列最高主频可以达到 1.8G,支持2G内存,1G×10或10G×1的以太网口或Febre channel的光通道。IXP系列应该是目标基于ARM体系统结构下由 intel进行整合后成Xscale内核的最高的处理器了。
2、从软件上前,就是在定制操作系统内核里将应用一并选入,编译后将内核下载到ROM中。而在定制操作系统内核时所选择的应用程序组 件就是完成了软件的"嵌入",比如WinCE在内核定制时,会有相应选择,其中就是wordpad,PDF,MediaPlay等等选择,如果我们选择 了,在CE启动后,就可以在界面中找到这些东西,如果是以前PC上将的windows操作系统,多半的东西都需要我们得新再装。
3、把软件内核或应用文件系统等东西烧到嵌入式系统硬件平台中的ROM中就实现了一个真正的"嵌入"。

以上的定义是我在6、7年前给嵌入式系统下自话侧重于理解型的定义,书上的定义也有很多,但在这个领域范围内,谁都不敢说自己的定义是十分确切的,包括那些专家学者们,历为毕竟嵌入式系统是计算机范畴下的一门综合性学科


二、嵌入式系统的分层与专业的分类。

嵌入式系统分为4层,硬件层、驱动层、操作系统层和应用层。

1、硬件层,是整个嵌入式系统的根本,如果现在单片机接口这块很熟悉,并且能用C和汇编语言来编程的话,从嵌入式系统的硬件层走起来相对容易,硬件层也是驱动层的基础,一个优秀的驱动工程师是要能够看懂硬件的电路图和自行完成CPLD的逻辑设计的,同时还要对操作系统内核及其调度性相当的熟悉的。但硬件平台是基础,增值还要靠软件。
硬件层比较适合于,电子通信、自动化、机电一体、信息工程类专业的人来搞,需要掌握的专业基础知识有,单片机原理及接口技术、微机原理及接口玉枕纱厨技术、C语言。
2、 驱动层,这部分比较难,驱动工程师不仅要能看懂电路图还要能对操作系统内核十分的精通,以便其所写的驱动程序在系统调用时,不会独占操作系统时间片,而导 至其它任务不能动行,不懂操作系统内核架构和实时调度性,没有良好的驱动编写风格,按大多数书上所说添加的驱动的方式,很多人都能做到,但可能连个初级的 驱动工程师的水平都达不到,这样所写的驱动在应用调用时就如同windows下我们打开一个程序运行后,再打开一个程序时,要不就是中断以前的程序,要不 就是等上一会才能运行后来打开的程序。想做个好的驱动人员没有三、四年功底,操作系统内核不研究上几编,不是太容易成功的,但其工资在嵌入式系统四层中可 是最高的。
驱动层比较适合于电子、通信、自动化、机电一体、信息工程类专业尤其是计算机偏体系结构类专业的人来搞,除硬件层所具备的基础学科外,还要对数据结构与算法、操作系统原理、编译原理都要十分精通了解。

3、操作系统层,对于操作系统层目前可能只能说是简单的移植,而很少有人来自已写操作系统,或者写出缺胳膊少腿的操作系统来,这部分工作大都由驱动工程师来完成。操作系统是负责系统任务的调试、磁盘和文件的管理,而嵌入式系统的实时性十分重要。据说,XP操作系统是微软投入300人用两年时间才搞定的,总时工时是600人年,中科院软件所自己的女娲Hopen操作系统估计也得花遇几百人年才能搞定。因此这部分工作相对来讲没有太大意义。

4、应用层,相对来讲较为容易的,如果会在windows下如何进行编程接口函数调用,到操作系统下只是编译和开发环 境有相应的变化而已。如果涉及Jave方面的编程也是如此的。嵌入式系统中涉及算法的由专业算法的人来处理的,不必归结到嵌入式系统范畴内。但如果涉及嵌 入式系统下面嵌入式数据库、基于嵌入式系统的网络编程和基于某此应用层面的协议应用开发(比如基于SIP、H.323、Astrisk)方面又较为复杂, 并且有难度了。



三、目标与定位。

先有目标,再去定位。

学 ARM,从硬件上讲,一方面就是学习接口电路设计,另一方面就是学习汇编和C语言的板级编程。如果从软件上讲,就是要学习基于ARM处理器的操作系统层面 的驱动、移植了。这些对于初学都来说必须明确,要么从硬件着手开始学,要么从操作系统的熟悉到应用开始学,但不管学什么,只要不是纯的操作系统级以上基于 API的应用层的编程,硬件的寄存器类的东西还是要能看懂的,基于板级的汇编和C编程还是要会的。因此针对于嵌入式系统的硬件层和驱动程的人,ARM的接 口电路设计、ARM的C语言和汇编语言编程及调试开发环境还是需要掌握的。
因此对于初学者必然要把握住方向,自己的目标是什么,自己要在那一层面上走。然后再着手学习较好,与ARM相关的嵌入式系统的较为实际的两个层面硬件层和驱动层,不管学好了那一层都会很有前途的。
如果想从嵌入式系统的应用层面的走的话,可能与ARM及其它体系相去较远,要着重研究基嵌入式操作系统的环境应用与相应开发工具链,比如WinCe操作系统下的EVC应用开发(与windows下的VC相类似),如果想再有突破就往某些音视频类的协议上靠,比如VOIP领域的基于SIP或H.323协议的应用层开发,或是基于嵌入式网络数据库的开发等等。

对 于初学者来讲,要量力而行,不要认为驱动层工资高就把它当成方向了,要结合自身特点,嵌入式系统四个层面上那个层面上来讲都是有高人存在,当然高人也对应 的高工资,我是做硬件层的,以前每月工资中个人所得税要被扣上近3千大元,当然我一方面充当工程师的角色,一方面充当主管及人物的角色,两个职位我一个人 干,但上班时间就那些。硬件这方面上可能与我PK的人很少了,才让我拿到那么多的工资。

四、开发系统选择。

很 多ARM初学者都希望有一套自己能用的系统,但他们住住会产生一种错误认识就是认为处理器版本越高、性能越高越好,就象很多人认为ARM9与ARM7好, 我想对于初学者在此方面以此入门还应该理智,开发系统的选择最终要看自己往嵌入式系统的那个方向上走,是做驱动开发还是应用,还是做嵌入式系统硬件层设计 与板级测试。如果想从操作系统层面或应用层面上走,不管是驱动还是应用,那当然处理器性能越高越好了,但这个东西自学,有十分大的困难,不是几个月或半年 或是一年二年能搞定的事。

 在某种意义上请,ARM7与9的差别就是在某些功能指令集上丰富了些,主频提高一些而已,就比如286和386。对于用户来讲可能觉查不到什么,只能是感觉速度有些快而已。
ARM7比较适合于那些想从硬件层面上走的人,因为ARM7系列处理器内部带MMU的很少,而且比较好控制,就比如S3C44B0来讲,可以很容易将 Cache关了,而且内部接口寄存器很容易看明白,各种接口对于用硬件程序控制或AXD单步命令行指令都可以控制起来,基于51单片机的思想很容易能把他 搞懂,就当成个32位的单片机,从而消除很多51工程师想转为嵌入式系统硬件ARM开发工程师的困惑,从而不会被业界某此不是真正懂嵌入式烂公司带到操作 系统层面上去,让他们望而失畏,让业界更加缺少这方面的人才。

而嵌入式系统不管硬件设计还是软件驱动方面都是十分注重接口这部分的,选择平台还要考察一个处理器的外部资源,你接触外部资源越多,越熟悉他们那你以后就业成功的机率就越高,这就是招聘时 所说的有无"相关技能",因为一个人不可能在短短几年内把所有的处理器都接触一遍,而招聘单位所用的处理器就可能是我们完全没有见过的,就拿台湾数十家小 公司(市价几千万)的公司生产的ARM类处理器,也很好用,但这些东西通用性太差,用这些处理器的公司就只能招有相关工作经验的人了,那什么是相关工作经 验,在硬件上讲的是外围接口设计,在软件上讲是操作系统方面相关接口驱动及应用开发经验。我从业近十年,2000年ARM出现,我一天始做ARM7,然后 直接跑到了Xscale(这个板本在ARM10-11之间),一做就是五年,招人面试都不下数百人,在这些方面还是深有体会的。

我个人认为三星的S3C44b0对初学者来说比较合适,为什么这么说哪?因为接口资源比较丰富,技术成熟,资料较多,应该十分适合于初学者,有问题可能很容易找人帮且解决,因为大多数人都很熟悉,就如同51类的单片机,有N多位专家级的人物可以给你帮忙,相关问题得以很快解答,所然业界认为这款ARM都做用得烂了,但对于初学者来,就却是件好事。
因此开发系统的选择,要看自己的未来从来目标方向、要看开发板接口资源、还要看业界的通用性。

五、如何看待培训。

首先说说我自己,我目前从业近十年,与国内嵌入式系统行业共同起步,一直站在嵌入式系统行业前沿,设计过多款高端嵌入式系统平台产品并为众多公司提供过解决方案,离职前为从事VOIP的美资公司设计IP-PBX,历任项目经理、项目主管、技术总监、部门经理,积累众多人脉,并集多年经验所得,考虑到学生就业与公司招人的不相匹配,公司想招人招不到,而学生和刚毕业的工程师想找份工作也不太容易,于此力创知天行科技有限公司,开展嵌入式系统教育培训。
因 一线的科研人员和一线的教师不相接触,导至国内嵌入式人才缺乏,国外高校的技术超前于业界公司,而国内情况是业界公司方面的嵌入式系统技术要远远领先于高 校。为架构业界与高校沟通的桥梁,把先进技能带给高校学子,为学生在就业竞争中打造一张王牌,并为业界工程师快速提升实现自我创造机遇,我就这样辞去了外 企年薪20多万的职位,做嵌入式系统方面的培训了。
对于培训来讲,是花钱来买时间,很多工程师都喜欢自己学,认为培训不值,这也是有 可能的,纯为赚钱的培训当然不会太有价值,但对于实力型的培训他们可能就亏大了,有这样一笔帐不知他们算过没有,如果一个一周的培训,能带给他们自学两年 后才能掌握的知识,在培训完后他们用三个月到半年时间消化培训内容,这样他会省约至少一年半的时间来学其它的或重新站在另一个高度上工作,那么他将最迟一 年后会拿到他两年后水平所对应的工资,就是在工资与水平对应的关系上比同批人缩短一年,每月按最少1千计,再减去培训费用至少多1.0万,同时也省了一年 时间,不管是休闲也好,再继续提高也好,总之是跑到了队伍的前面了。
另一层面上讲,对于新人的培训相当于他们为自己提前买了份失业保险,有师傅会带领他们入道,我今年暑假时班里最年轻的一个学生是大二的,今年才上大三,这学期才刚学单片机,但现在ARM方面的编程工作已经搞得有声有色了,再过一年多毕业,他还会失业吗?
再 者通过培训,你可以知道很多业界不为常人所知的事,同时也为自己找了个师傅,就比如说,两个工程师分别用S3C2410和PXA255来做手持设备,同样 两人都工作四年,再出去找工作,两人工资可能最多可相差一倍,为什么?这就是业界不为常人所知的规则,2410属于民品,被业界用烂了,做产品时成本特敏 感,当然也对人才成本敏感了,PXA255是intel的东西,一个255 CPU能买三个2410,一直被业界定义为贵族产品,用的公司都是大公司或为 军方服务的公司,不会在乎成本,只要把东西做好,一切都好说,但这方面做的人也少啊,因为开发系统贵啊。
对于说为自已找了个好师傅, 我想是这样的,因为同级工程师间存在着某此潜在的竞争关系,有很多人不愿意把自己知道的东西教给别人,这意味着他将要失业,就是所说的教会徒弟,饿死师 傅,但对于我们这些人就不存在这样的关系了,我是在嵌入式系统平台设计上走到了一定程序,目前在国内这块的技术上已经是自己很难再突破自己,因此很多东西 我对大家都是OPEN的,就比如说下面那部分关于接口设计中所提到的时序接口东西,我要是不讲,却使是高级硬件工程师我想也几乎只有10%的人能知道 吧。



六、成为高级嵌入式系统硬件工程师要具备的技能。


对于硬件来讲有几个方向,就单纯信号来分为数字模拟,模拟比较难搞,一般需要很长的经验积累,单单一个阻值或容值的精度不够就可能使信号偏差很大。因此年轻人搞的较少,随着技术的发展,出现了模拟电路数字化,比如手机的Modem射频模块,都采用成熟的套片,而当年国际上只有两家公司有此技术,自我感觉模拟功能不太强的人,不太适合搞这个,如果真能搞定到手机的射频模块,只要达到一般程度可能月薪都在15K以上。
另一类就是数字部分了,在大方向上又可分为51/ARM的单片机类,DSP类,FPGA类, 国内FPGA的工程师大多是在IC设计公司从事IP核的前端验证,这部分不搞到门级,前途不太明朗,即使做个IC前端验证工程师,也要搞上几年才能胜任。 DSP硬件接口比较定型,如果不向驱动或是算法上靠拢,前途也不会太大。而ARM单片机类的内容就较多,业界产品占用量大,应用人群广,因此就业空间极 大,而硬件设计最体现水平和水准的就是接口设计这块,这是各个高级硬件工程师相互PK,判定水平高低的依据。而接口设计这块最关键的是看时序,而不是简单 的连接,比如PXA255处理器I2C要求速度在100Kbps,如果把一个I2C外围器件,最高还达不到100kbps的与它相接,必然要导致设计的失 败。这样的情况有很多,比如51单片机可以在总线接 LCD,但为什么这种LCD就不能挂在ARM的总线上,还有ARM7总线上可以外接个Winband的SD卡控制器,但为什么这种控制器接不到ARM9或 是Xscale处理器上,这些都是问题。因此接口并不是一种简单的连接,要看时序,要看参数。 一个优秀的硬件工程师应该能够在没有参考方案的前提下设计 出一个在成本和性能上更加优秀的产品,靠现有的方案,也要进行适当的可行性裁剪,但不是胡乱的来,我遇到一个工程师把方案中的5V变1.8V的DC芯片, 直接更换成LDO,有时就会把CPU烧上几个。前几天还有人希望我帮忙把他们以前基于PXA255平台的手持GPS设备做下程序优化,我问了一下情况,地 图是存在SD卡中的,而SD卡与PXA255的MMC控制器间采用的SPI接口,因此导致地图读取速度十分的慢,这种情况是设计中严重的缺陷,而不是程序 的问题,因此我提了几条建议,让他们更新试下再说。因此想成为一个优秀的工程师,需要对系统整体性的把握和对已有电路的理解,换句话说,给你一套电路图你 终究能看明白多少,看不明白80%以上的话,说明你离优秀的工程师还差得远哪。其次是电路的调试能力和审图能力,但最最基本的能力还是原理图设计PCB绘 制,逻辑设计这块。这是指的硬件设计工程师,从上面的硬件设计工程师中还可以分出ECAD工程师,就是专业的画PCB板的工程师,和EMC设计工程师,帮 人家解决EMC的问题。硬件工程师再往上就是板级测试工程师,就是C语功底很好的硬件工程师,在电路板调试过程中能通过自已编写的测试程序对硬件功能进行 验证。然后再交给基于操作系统级的驱动开发人员。

总之,硬件的内容很多很杂,硬件那方面练成了都会成为一个高手,我时常会给人家做下方案评估,很多高级硬件工程师设计的东西,经常被我一句话否定,因此工程师做到我这种地步,也会得罪些人,但硬件的确会有很多不为人知的东西,让很多高级硬件工程师也摸不到头脑。

那 么高级硬件件工程师技术技能都要具备那些东西哪,首先要掌握EDA设计的辅助工具类如ProtelORCADPowperPCBMaplux2ISE、 VDHL语言,要能用到这些工具画图画板做逻辑设计,再有就是接口设计审图能力,再者就是调试能力,如果能走到总体方案设计这块,那就基本上快成为资深工 程师了。

硬件是要靠经验,也要靠积累的,十年磨一剑,百年磨一针。

把一个月前想写的东西,今天终于用一上午的进间整理完了,希望对喜爱嵌入式系统开发的工程师和学生们有所帮助。

Posted in Computer Tech | Tagged , | Leave a comment

雪后 校园

在西安看到积雪有两种情况,一是正在下雪的时候,二是暴雪过后。显然这是一场暴雪,而且是非常暴的那种。

1.看到它我不由得想起了大象,只是没有睁开眼睛

DSC_0072 copy.jpg

2. 也许是被快门的声音惊醒了,睁开的大眼睛

DSC_0073_2 copy.jpg

3.单薄的片叶,也要承担如此的重负

DSC_0078_2 copy.jpg

4.仿佛回到了童年,雪仗,留影,大家忘却这是甲流的日子


DSC_0163.jpg

5.单车和我一样坚强


DSC_0165 副本.jpg

5.大雪图书馆已被尘封

DSC_0050 副本.jpg

终于知道有个名词叫作曲线,还是不太懂。




Posted in Photography | Tagged | Leave a comment

定制自己的Windows CE 5.0 ARM模拟器 及在 VS2008中使用[WINCE 学习笔记]

开发WINCE的应用程序,在开发板中联调的确有点麻烦,一些不涉及硬件的,或者是UI方面的程序可以先在模拟器中调试或者看一下效果。通过学习及尝试,本文实现了在VS2008下使用自已定制的模拟器。

生成OS

1. 安装Windows CE 5.0(记得CPU类型里把ARMV4I选上)装完之后装DeviceEmulatorBSP.msi,这是ARMV4I模拟器的BSP。

2. 运行Platform Builder,新建一个Platform,给你的新Platform取一个名字,我这里取为MyArmemulator。BSP选择Microsoft DeviceEmulator:ARMV4I,Design Template选择Mobile Handheld,Application & Media随你选,Networking & Communications只选择Local Area Network(LAN)->Wired Local Area Network,其余都去掉。最后完成向导。

图表1

图表2

图表3

3. 添加网卡。在Catalog View的Device Drivers->Networking->Local Area Networking (LAN) devices目录下,把NE2000-compatible(PCMCIA car)添加进来。

图表4

4. 如果要开发托管程序,添加Catalog View的Core OS->Windows CE Devices->Applications - End User->CAB File Installer/Uninstaller。

5. 添加ActiveSync(可选),在Catalog View的Core OS->Windows CE Devices->Applications - End User目录下。

6. 添加闪存支持。有三个部件:SMFlash,Partition Driver和FAT。

先转到Catalog View:

SMFlash在BSP->Microsoft Device Emulator->Storage Drivers->MSFlash Drivers->SmartMedia NAND Flash Driver (SMFLASH),

Partition Driver在Core OS->>Windows CE Devices->File Systems and Data Store-> Storage Manager->Partition Driver

FAT在Core OS->Windows CE Devices->File Systems and Data Store->Storage Manager->FAT File System。

7. 打开菜单Platform->Setting,这里有三个地方要设置:

SMFlash在BSP->Microsoft Device Emulator->Storage Drivers->MSFlash Drivers->SmartMedia NAND Flash Driver (SMFLASH),

Partition Driver在Core OS->>Windows CE Devices->File Systems and Data Store-> Storage Manager->Partition Driver

FAT在Core OS->Windows CE Devices->File Systems and Data Store->Storage Manager->FAT File System。

8. BuildOS->Sysgen。

图表5

生成SDK

1. 运行SDK Wizard(Platform->SDK->New SDK),填写必要的信息之后,把支持的开发工具都勾上,完成。下面是配置SDK(选择Platform->SDK->Configure SDK),要是觉得没有什么好配置的也可以跳过。

图表6

2. 打开ExportSdk.sdkcfg文件(先做好备份,这个文件一般在项目根目录下,就是在New Platform Wizard的第2步中所指定的目录,默认是%_WINCEROOT%\PBWorkspaces下)。这是一个XML格式的文本文件,找到这两行:

<PropertyBag NAME="DeviceEmulation">

</PropertyBag>

把这两行替换为如下的片断:

<PropertyBag NAME="DeviceEmulation">

<Property NAME="Default Image">1</Property>

<PropertyBag NAME="1">

<Property NAME="ImageName">MyArmEmulator</Property>

<Property NAME="VMID">{634FDF56-33B0-4a7a-9020-BF6D22F788ED}</Property>

<Property NAME="Default Skin"/>

<Property NAME="Height">240</Property>

<Property NAME="Width">320</Property>

<Property NAME="BitDepth">16</Property>

<Property NAME="Memory">128</Property>

<Property NAME="Bin Dest">Emulation\nk.bin</Property>

<Property NAME="Fixed Screen">1</Property>

<Property NAME="CpuName">ARMV4I</Property>

<Property NAME="DPIX">96</Property>

<Property NAME="DPIY">96</Property>

<Property NAME="SupportRotation">0</Property>

<Property NAME="Enabled">1</Property>

<Property NAME="Bin Path"></Property>

<Property NAME="Ethernet">1</Property>

<Property NAME="Ports">1</Property>

<Property NAME="AdditionalParameters"></Property>

<PropertyBag NAME="Skins"/></PropertyBag>

</PropertyBag>

<PropertyBag NAME="Added Files">

<PropertyBag NAME="{3B388597-0924-4102-ADFA-2519D2C3E11B}">

<Property NAME="Source">C:\WINCE500\MyArmEmulator\ReleaseImage</Property>

<Property NAME="Destination">Emulation</Property>

<Property NAME="Subfolders">0</Property>

</PropertyBag>

</PropertyBag>

3. 设定变量。上面替换的代码中有几个变量需要设定,分别是:

1) ImageName:这是程序员在Visual Studio IDE里所看到的名字;

2) VMID:一个GUID,可以用GuidGen.exe来生成一个;

3) Height/Width:模拟器屏幕的宽高;

4) BitDepth:颜色深度;

5) Memory:分配给模拟器的RAM大小;

6) DPIX/DPIY:屏幕DPI;

7) Source:这是一个目录,包含编译生成的NK.bin。建议最好在%_WINCEROOT%下新建一个目录,专门用于存放NK.bin。

这里我设为E:\WINCE500\MyArmEmulator\ReleaseImage。

修改完成后保存。

4. 生成SDK。Platform->SDK->Build SDK。一切顺利的话应该可以在当前工程目录的SDK目录下找到打包成msi文件的SDK安装包。

图表7

配置Visual Studio 2008

1. 先安装生成好的SDK。运行Visual Studio 2009,选择菜单"工具->选项",打开选项设置对话框,从左边的树型列表中选择"设备工具->设备",右边的下拉列表框拉到底可以看到 "MyArmEmulator",这就是我们刚刚生成的那个Platform。下面的设备列表里有两项,双击MyArmEmulator,设定传输为DMA传输,再点击"仿真器选 项",在"显示"选项卡里设定好模拟器屏幕尺寸,颜色深度等,全部保存。

图表8

图表9

2. 新建一个智能设备项目,向导第2步选择平台的时候用我们的MyArmEmulator替换Pocket PC 2003,完成。然后按F5运行程序,不出意外的话模拟器应该就出来了。

图表10

Oh ,it's what we want.

问题:

默认我安装后 OS镜像(nk.bin)路径为 C:\Program Files\Windows CE Tools\wce500\MyArmEmulator\Emulation  但我发现SDK安装后并没有在这里拷贝镜像,后来我手动拷贝过去的。当然也可以修改路径到你编译的目录。  到底是需要手动拷贝还是制作过程中有问题, 还需要进一步学习。

参考文献:

《Windows CE.net 内核寚及应用开发》 周毓林等 电子工业出版社

定制自己的Windows CE 5.0 ARM中文模拟器

http://blog.csdn.net/tianwaizhou/archive/2008/04/02/2243592.aspx

Posted in Computer Tech | Tagged | Leave a comment

WinCE5.0 Platform builder 中实现中文手写 [WINCE 学习笔记]

经过几天的折腾,终于给WINCE 5.0上装上了手写输入法,总结一下。过程其实比较简单,可以是因为刚开始接触 PB,遇到任何困难都要费点时间去解决。

概述

WINCE上手写可以有两种方法实现,一是使用IME的输入法,另一种是单独开发一应用程序,来完成按键到字符的转换。两个工作原理如下:

IME

图表1

绿色输入法

图表2

至于利弊就不分析了,各有所好,我觉得如果你提供系统给别人用,最好选后者。所心就尝试如何把它做到系统中去。

开始添加之前,先要有一个能生成NK.BIN的工程,可以是开发板商提供的,也可以是你自己创建的,总之要保证能正常编译,而且运行正常。

集成输入法

选择你要集成的输入法,现在能作用的应该比较多,但是我试了好几个没成功,最先试成功的是捷通手写输入法, 其它的成功了再说, 可以在此下载:

先下载吧:http://www.fs2you.com/files/735ef26b-1046-11dd-b2bd-0014221f3995/

接下来需要完成两个步骤

1. 设置将输入法的文件拷到要生成的IMAGE中

2. 将注册表需要修改的文件导入进去

打开PB工程,ParameterView->下面会有两个选项,一个是Common Files , 另一个是你的工程设置。两个中有部分文件是重名的,但作用域不一样。确切地说是作用范围不同。Common Files会作用所有的PB工程,下面的作用域小一点。 我用得是2440的板子,工程名为"mini2440", 打开后还会有两个,一个 Hardware specific Files 和 Project Specific Files , 这里文件名不重名,但后缀名相同,也是同理,作用域不同,前者作用同一硬件工程的设置,后者是特写该工程的设置。 所以,我认识,只是单独你一个工程的设置,尽量放在这里修改。但是需要明白的是,如果你在project 设置中能完成的工作,如果你修改了前面两个,也一定能实现同样的功能,只是你再新建工程的时候也生效了。所以根据你的需要选择你要修改的文件。

手写输入法我目前只想在这个版本上实现,所以选择在project中去修改。

将下载后得到的文件拷贝到 Release对应的目录下 *_* _Release 对应的release目录。

放在那位置倒没有明显规定,但至少要是一个环境变量指向的目录中。 我使用用的是 _FLATRELEASEDIR,对应目录为

X:\WINCE500\PBWorkspaces\mini2440\RelDir\mini2440_ARMV4I_Release

如果你还不确认自己应该在那个目录里, 使用以下步骤确认:

打开 CMD窗口,

图表3

输入 echo % _FLATRELEASEDIR%

图表4

看到的就是你的路径了。

把下载的文件拷贝进去(包含JT.reg文件), 注,这里拷贝并不会直接生成在IMAGE中,需要设置

图表5

打开porject.bib 输入右边红色圈里的东西

porject.bib中记录格式为

表格1

目标文件名

源文件路径+文件名

存储位置

存储类型

详细的介绍大家可以查阅 Files 文件设置格式

图表6

到此,编译系统的时候,会把这四个文件拷贝到目标系统的 /windows下

下来再导入注册表:

同样,打开 project.reg 文件, 在最后一行添加以下语句

图表7

好了,设置完成, 然后 ->Sysgen。

将生成后的nk.bin下载到目标系统中,享受全屏输入法吧

图表8

图表9

问题

最后,有个问题是: 生成系统的时候,报警告:

regcomp: Overwriting existing value [HKEY_CURRENT_USER\Keyboard Layout\Preload\1] "Default" in system registry

regcomp: WARNING, syntax error on or near line 6515 of reginit.ini; line skipped.

我查了一下,这是最后生成的 reginit.ini 文件中的错误,reginit.ini文件资料上说是由 common.reg, project.reg, platform.reg 合并后生成的。其错误源为:

# Hot Key Alt + F1 For direct switch

# IME_HOTKEY_DSWITCH_FIRST

[HKEY_CURRENT_USER\Control Panel\Input Method\Hot Keys\00000100]

"VK"=dword:70

"KM"=dword:C001

"Ime"=dword:e0010804

我想是不是"#" 在这里格式不对,本来应该是注释用得,可是找了半天也不知道这项是从那生成的。最后我猜想应该是选择WINCE组件时的内容,可是如何消除这 Warning, 有知道的前辈请指点。

声明: 因为也是刚开始接触WINCE 和Platform builder ,总结中有不妥的地方,欢迎大家指正,另,有误导的地方,大家见谅。

Email skysailor@126.com

Posted in Computer Tech | Tagged | Leave a comment

Windows CE应用程序概览[WinCE学习笔记]

Windows CE应用程序概览

摘要

为了实现WINCE下中文输入,分析了WINCE平台下的应用程序架构,人机交互方式。着重分析了WINCE输入法的实现原理。最后,对在现有平台(友善之帮开发板)下实现输入法提出了解决方案。

一.WINCE应用程序结构

Windows CE 操作系统继承了WINDOWS系列的很多优点,应用程序的结构也与WINDOWS下非常类似。 其结构如下图(图一):

图表1

二.人机交互

WINDOWS CE目前主要用于手机,PDA,汽车产品及工业控制中。在使用中不可避免地要与用户进行交互,常用的交互方式目前有两种,一种是键盘操作和触摸屏控制。 其工作机制如下图(图):

图表 2

三.中文输入法

在用户交互中,输入是一项非常重要的工作,输入法负责将用户的按键,软键盘等命令,翻译为对应的字符。

3.1. 输入法工作原理

微软Windows9x系统中汉字输入法的名称是"Input Method Editor" ,简称IME,输入法的程序名称为:*.ime,数据文件名称为*.MB,即通常说的输入法编码表(字典).

实际上IME文件是一个动态连接库程序(DLL),它与dll文件没有区别,只是名称不同而已。

系统的键盘事件有windows的user.exe软件接收后,user.exe在将键盘事件传导输入法管理器(Input Method Manager,简称IMM)中,管理器 再将键盘事件传到输入法中,输入法根据用户编码字典,翻译键盘事件为对应的汉字(或汉字串),然后再反传到user.exe中,user.exe再将翻译后的键盘事件传给当前正运行的应用程序,从而完成汉字的输入。

s

图表3

一般汉字输入法都由三个窗口组成:

状态窗口(Status Windows)-显示当前的输入法状态(中文还是英文等站环信息);

编码输入窗口(Composition Windows)-显示当前击键情况;

汉字选择窗口(Candidates Windows)-列出当前编码的全部汉字(串),供用户选择或查询。

上述三个窗口由基本的用户接口(User Interface )函数管理着。

图表4

 输入法系统的工作机制如下:

当输入法系统启动后,用户按键盘,键盘消息被IMM发送到IME。IME处理消息内容,根据键盘消息的内容或者产生用于写作的字符,或者产生命令。当IME处理键盘消息后,它发送通知消息到当前获得焦点的窗口,如果这个窗口不能处理IME通知消息,那么通知消息被发送到IME控制窗口,控制窗口将消息返回到IME,IME做默认的处理工作(IME提供了完整的用户接口)。对于能够处理IME通知消息的窗口,被称之为IME-aware窗口,相反不能处理IME通知消息的窗口,被成为IME-unaware窗口。能够处理IME通知消息的窗口通过IMM 函数能够实现自定义的输入法编辑器。

3.2. 软键盘的输入法工作机制

嵌入式设备的输入经常涉及到软键盘,其工作机会如下图:

图表5

SIP:Software Input Panel。

3.3. 输入法的实现:

明白了输入法的工作原理,就可以实现输入法。但仅靠这些原来实现的简单输入法只能完成最简单的字符输入,一个成熟,实用的输入法又涉及很多具体的工作,尤其是现在的嵌入式设备多配备触摸屏,使用到手写输入。 手写输入的识别问题非常复杂,有专门的公司在这些方面已经做了大量的研究工作,并有可靠的产品提供。因此,一个具体项目的输入法实现有以下两种方案:

l 自行开发输入法

l 在自有系统中集成现有输入法

自行开发含手写功能的输入法工作量与难度都非常大,因此一般产品都是系统了第二种方案。

目前WINCE系统最常用的两种手写输入法有:

l 汉王手写输入法

l Ce-star http://www.mobem.com/

l 蒙恬筆 for WinCE

以上手写系统需要授权,费用约为 200RMB

四.参考文献

Win32 Multilingual IME Overview for IME Development

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/appendix/hh/appendix/imeimes_0h2s.asp

Posted in Computer Tech | Tagged | Leave a comment