E语言概览

Sina WeiboBaiduLinkedInQQGoogle+RedditEvernote分享

[陈怀临注:这次是真的matrixos同学的文章。上次是他的徒弟干的。。。希望同学们大胆假设,小心求证。。。但切记不要attack。。。]

e语言是基于c语言衍生出来的一种新型面向对象语言,向下完全兼容标准c语言语法,是matrix系统的基本程序设计语言,在这里,我们将只针对扩展的面向对象语法进行描述。

e语言所用到的文件类型:

1)      对象描述文件(***.d):描述一个类、对象或多个类、对象的文本文件,类、对象的定义都在该文件中实现。

2)      头文件(***.h):c语言完全等效的文件类型,可被对象描述文件、e源代码文件、以及汇编语言文件包含引用。

3)      e源代码文件(***.e):

4)      汇编语言文件(***.s):

5)      其它资源文件:(*.*):可以为一切类型文件。

类的定义:(类实际上就是一个库,在对象设计和编译时刻引用的库文件)

class className  <类继承列表>

{

head:   这个段是对象的基本信息特征之数据结构(有待具体标准化定义)

private: 这是私有数据段

int data;

public: 这是公共段

float   abc;

int protect ba;        protect关键字表示这个变量只能被外部读。

int Function();

byte   (& Dev1)[4096];               可读可写,按字节访问,4KB大小。
dword  protect (& Dev2)[256];   只读地址,按双字访问,256双字大小

interrupt: 这是中断服务程序挂接段

INT_16    : status intUartSend(int, void *);

INT_27    : status intTimer(int void *);

message: 这是消息函数段

MX_CLICK : status onClick(int, int, int, int);

WM_DOUBLECLICK  : status onDoubleClick(int, int, int, int);

event: 这是响应事件的函数段

EV_MOVE<parameters>    : status move (int, void *);

EV_HIT <parameters>      : status Hit(int, void *);

space: 这是存储空间定义段,定义对象运行所涉及的内存空间。

heap<memory: size=4096,unit=8>;

pool <memory: size=16MB,unit=4KB>;

Dev1<remap: globalBase=0xc0001000, size=4KB>;

Dev2<remap: globalBase=0xc0002000, size=4KB>;

compose组成这个类的实体模块文件。

xxx.e;

xxx.s;

xxx.a;

xxx.bmp;

option 编译这个类、或对象的选项。

};

对象的定义:

className objName

{

格式和类定义相同,但是,对象的定义优先级高于类的定义(遵循越是后期定义的变量,优先级越高的原则),例如:需要重定义的变量,函数,直接在本对象中进行重新定义即可,如下:

public:

char string[32];        在原有类的基础上,为本对象新定义一个新的变量。

重新定义对象运行所需内存空间。

space: 这是存储空间定义段,

heap <store=memory, unit=4, total=8KB>;

pool <store=memory, unit=2KB, total=32MB>;

};

我们也可以不需要类的支持,直接定义一个全新的对象:

object objXxx

{

head

private:

int  abc;

int Function();

………..

…..

space:

};

编译的时候,以对象定义为单位进行编译,生成相应的二进制对象实体文件:object.o,可供matrix系统进行装载。

E语言源代码文件(*.e):

*.e文件是一种文本文件,兼容标准c语言。在设计e语言程序时,我们完全可以按照c语言的语法,定义变量、函数,引用.h头文件,以及跟汇编文件混合编程等等。例如:

定义3个变量:

int   a, b, c;

定义3个函数:

void Func1()

{

a = b + c;

}

int Func2()

{

b = a + c;

return b;

}

status  Func3(int,  void *p)

{

。。。。。。。

。。。

return   status;

}

我们根据实际需要,在类、或对象定义文件中,把上面的函数或变量分配到合适的对象段,例如:

object Xxx

{

。。。。。

。。。

把变量b和Func1分配到对象公共段:

public:

int   b;

void  Func1();

把Func3跟一个消息挂钩:

message

WM_XXX : status  Func3(int,  void *p);

。。。。。

。。。

};

其他剩下的变量和函数,将在编译时自动分配到对象的私有段。因此,在.e文件中,函数和变量的定义以及各种运算、逻辑语法的表达,跟传统c语言几乎没什么区别。不同之处主要表现在e语言扩充的外界对象的访问和引用上面,下面简单介绍:

1如果要在e语言中引用一个外界对象。

首先,定义一个对象别名,并为这个对象别名指定实际的对象实体,如下:

class  #objXxx  =  mx . com . uart

或,

object objType #objXxx  =  mx . com . uart

class objType 来自.d文件的对象和类的定义。)

然后在代码中,通过对象别名使用这个对象,例如:

objXxx . Buffer[0] = 0×12;          访问对象公共数据,向串口缓冲区写入一个数据。

Xxx  =  objXxx . GetBardRate();  调用对象函数,获取串口波特率。

SendMessage(objXxx, , , );            向对象发消息:

我们也可以不必定义对象别名,在代码中直接使用对象:

mx . com . uart . GetBardRate();

2)模糊对象引用:程序设计时,当我们不完全知道某个对象的类型或类库,但是知道这个对象的部分接口或成员,这时,我们也可以直接定义一个未知类型的对象别名:

object #objXxx  =  mx . Xxx;

然后通过这个对象别名访问该对象成员。这种模糊对象的引用,可以最大限度的不依赖类库和对象类型定义,使得e语言中对象使用更加灵活方便。

3)对象其它操作:

对象动态copy: 以一个对象为基础,可以在运行时复制出来其他很多相同对象个体。

对象动态move: 一个对象动态从一个matrix系统迁移到另一个matrix系统。

对象是matrix系统中最小的软件单位,一切复杂多样化的应用,都是由一个一个的对象组成,它们之间相互协作,达到实际的功能。

纯对象为基本的软件开发。

未完,待续。。。。。。。

(3个打分, 平均:3.67 / 5)

闲聊Kernel engineer的境界(全)

[陈怀临注:这几天在新浪微博乱喷。整理一下,弟兄们提提意见。。。许多观点不一定对。就是闲聊呀。。。]

我来瞎谈一下Kernel Engineer的几个境界。瞎谈呀,弟兄们别当真。

闲聊Kernel engineer的境界境界(一):1. 喜欢OS。别的啥也看不上。2. 读kernel代码,每天特来劲。饭桌上特牛逼:-)3. 觉得自己啥也不懂,看了就忘,特沮丧。4. 玩板子,特来劲,饭桌上具牛逼。

闲聊Kernel engineer的境界(二) 1. 开始谁也看不起,觉得做网络的其实就是大傻。 做Driver的其实就是脑残。 (2)喜欢做芯片的,特别是做CPU的。会开始补充体系结构的知识。 (3)发现bus很重要,但大多数人不懂。(4)慢慢往硬件上靠。

闲聊Kernel engineer的境界(三)(1)轻微自闭症倾向开始。会在办公室贴时序图,die图,觉得漂亮。(2)会好奇做编译后端。发现做编译的人其实都不懂编译。(3)发现绝大多数人不会调程序。(4)很奇怪身边的傻子们如何混到工作,而且一个个还不知道自己特傻。(4)很痛苦ing

闲聊Kernel engineer的境界(四)(1)价值观开始改变,Open Source里的大腕才是心目中的Hero。其他的都看不起。自己的老板,老板的老板基本上都不在眼里 (2)天天琢磨如何在Open Source做贡献,而非在自己的公司做贡献。 (3)上班就是混。自己做的东西公司的人基本上不懂。

闲聊Kernel engineer的境界(五)1. 狂喜欢写汇编,而且特意从来不加注释。(2)经常看着2,3行知道有错误的priviledge的代码但不知道哪里有错,感叹网络工程师用GDB还不会抓bug,可见智商有多低 (3)最怕的不是crash,而是板子的LED不闪了,系统死了。

闲聊Kernel engineer的境界(六)1. 当一个晚上去调 5 块板子,每个板子都是不同的CPU的时候,离崩溃已经不远。2. 世界上最难的不是调厂商开发板子+自己的kernel;也不是自己的烂板子+linux;而是自己的烂板子+自己写的烂kernel。没有技术底线就与一个女人没有道德底线一样,不是可怕;而是噩梦。

闲聊Kernel engineer的境界(七) 1. Kernel工程师在某一天突然会害怕。对不确定性(undeterministic)的无法控制(板子不稳定,dram不稳定,kernel不问题) 2. 会开始往上做,看stack。发现网络的精华:代码就是一堆callback指针;实质就是几个Queue。才突然了解为什么大傻都能做网络工程师。

闲聊Kernel engineer的境界(八)1.会发现网络最难的不是转发,而是控制。2. 会特别羡慕能把网络设备config的特溜的Testing工程师。Kernel工程师通常喜欢手快和对设备熟悉的,不喜欢大傻。 3. 总是试图建立一个完整的网络Picture,但感觉不好,很喜欢去数据中心看看。

闲聊Kernel engineer的境界(九)1. 感觉网络不难;Kernel也不难;还是集成最难。2. 似乎有一天还是觉得软件比硬件头绪多,更难处理。3.不知道想干嘛了。

闲聊Kernel engineer的境界(十)1. 会开始喜欢做总结,例如,硬件工程师最喜欢的借口是:估计电源有问题;网络工程师最喜欢的借口是:Memory coruption的问题(内存践踏?);Kernel工程师最喜欢的借口是:不知道什么问题。

闲聊Kernel engineer的境界(十一)1. 认识到简单就是最美的,原因是你永远至少留下一个严重bug。能不做的就坚决不做。把系统做复杂的人只有两种:水平差;骗公司预算。 2. 要从单机系统的kernel/os扩展到分布和并行系统 3. 会试图理解分时系统的调度单位是CPU时间片;但实时系统的调度单位是Packet。

闲聊Kernel engineer的境界(十二)1. 跳出三界外,不在五行中。任何一个技术本身就是为了解决问题。就像一个男人喜欢一个女人。如果爱她,一定希望上床缠绵的。2. kernel engineer最大的忌讳不是不懂复杂和充满细节的细节,而是概念不清,脑袋不好使。3. 写胶片是kernel engineer最厌恶的,傻逼流程。

闲聊Kernel engineer的境界(十三)1. Divide and Conquer,分而治之kernel engineer或者任何engineer唯一需要的工作方法,除了了Brutal Search。但偏偏许多人不会。2. The separation of mechanism and policy,机制与策略的分离就是OS的所有形而上学。但就是老师讲不清;学生听不懂;工程师不会用。

闲聊Kernel engineer的境界(十四)1. 做网络的,99%是为了一个工作;做Kernel的,99%是为了一个爱好。2. Kernel engineer不来钱,但工作的保险系数高。 3. kernel的工作类似与你不爱一个女人,一定无法赤裸相对。

闲聊Kernel engineer的境界(结束语)1.形而下的最高境界就是“得意忘形”-得其意忘其形。2.能down做芯片;就能up做APP。是一个表达逻辑的过程而已。3. 人在江湖飘,焉能不带刀。要做tip of the sword,要的是忍受寂寞。钱是个WBD,多点最好;少点也无所谓。4. 牛逼的人从来是留下文字,而非铜臭。

(22个打分, 平均:4.64 / 5)

万维网操作系统初论

【去年思考道指令应用时,突然有一个把道指令扩展到互联网的想法,不是很成熟,但基本原理可行,陆陆续续写了几段,以后有时间再完善一下】

万维网操作系统初论 起源

最初的互联网只是科学家用来传输数据的工具,开始的应用也都与数据传输有关,如最早的FTP、EMAIL等,现在最流行的应用WWW也一样。万维网最初是物理学家为了查找资料方便而开发出来的一种网络应用,所以它的的本质都是为查阅文本资料而设计的,虽然后来衍生了很多基于web的应用,但这些应用没有一个不是基于页面阅读而设计的,如BBS、blog、Twitter、facebook等。那么基于Web页面的设计有什么显著的特性呢? 基于web页面设计的应用无非就是都是把网络服务器的数据用网页在客户浏览器中呈现出来,并允许用户再次对数据操作,用户的各种操作都必须经浏览器、web服务器、数据服务器再原路返回,每次的操作都可能启动各种计算设备上无数的程序来完成。这样基于web的应用与普通计算机程序就会有显著不同:基于web的应用已经没有普通计算机程序的相关功能,如进程、线程、堆栈、地址等。缺少普通计算机程序功能的web应用因此没有像计算机程序一样发展出各种管理程序的功能出来,简单地说,它本质上不能有操作系统的概念。可能有的人会有异议,说分布式操作系统、网格操作系统就是web的操作系统,分布式操作系统、网格操作系统本质上都是对计算机硬件资源的综合管理,它没有对web的应用这种更上层的应用没有提供有效的管理手段,如在分布式操作系统、网格操作系统建立web应用,那么也必须有浏览器、web服务器、数据服务器的处理步骤,与普通计算机一样。这些问题就给我们提出一个相当重要的历史任务,既如何建立web操作系统。

基本原理

由于web的弊端,基于web的应用没有本地计算机程序的相应概念,如进程、线程、堆栈、地址等,造成用户浏览器仅仅是呈现服务器数据及简单把用户数据发送工具,不能像本地程序一样,有数据空间、进程空间来包容各种用户数据。现在的脚本程序也可以在本地处理一些简单数据,但对于复杂数据处理起来非常繁琐,使用像ajax、xml等其他辅助技术来处理复杂数据。由于这些因素的存在,现在基于web应用对初学者来与学习本地编程语言不可比较。因此,本文尝试用一种结合本地技术与远程数据的技术,使得客户端程序处理远程数据时可像本地一样方便。为此,提出如下的基本解决方案。 1、 进程空间定义 Www协议的定义只是为了呈现用户文档数据,完全没有程序的概念,在web上建立应用时,就必须建立各种虚拟的数据空间,如cooke技术。任何人访问统一网站时,浏览器就会偷偷建立cooke文件,以便识别用户的访问,这是一种非常不和谐的技术。如果像本地程序一样,当用户打开应用程序时,操作系统便建立了一个程序运行的内存空间—进程,除非程序设计需要原因以外,进程不会在本地上再建立多余的文件,程序的运行只是对内存数据的处理,而web应用因为没有进程空间概念,浏览器也仅仅只是呈现数据样式,没有办法再进一步处理。为了让web应用像本地程序一样,本文提出可以像本地进程一样,定义一个进程空间。为方便,这里简单用xml来表示web进程的定义: <进程 ID=“8888”程序名=“facebook”> < … > < … > 如上所示,当用户访问各种网站应用时,web服务器返回的只是该应用服务的进程数据给浏览器,用户浏览器再根据进程数据位用户在本地建立进程空间。 2、 函数空间定义只有进程空间定义,web应用是没有办法运行起来的。操作系统出了会建立进程空间,为了并行计算方便,他还会建立诸如线程、纤程、对象等概念的相对独立的空间,这些空间的相对简单,且都是平等的概念,每个线程空间都是分布的进程空间线性范围内,不会交叉在一起,因此,web应用模仿操作系统也定义相似的概念—函数空间。函数空间用来包含用户数据,把用户数据相对分割开来,并提供函数内安全保护。简单表示如下: <进程 ID=“8888”程序名=“facebook”> <好友> <乔布斯ID=“1”/> <….> <粉丝> <…> <…> 这种表示方法与XHTML非常相似,但是这是有本质区别的,本文是为了web应用而定义的,而XHTML是为文档服务的。上述的表示方法基本上与本地进程一样,只是对空间进行简单的线性分割,采取这样的模型主要是为web应用设计方便。

万维网操作系统—空间意义

计算机被发明出来时,仅仅只是用来处理数字计算的工具,计算是第一功能,数据管理处于次要位置,特别为计算方便,设计的指令大部分都是计算型指令。后来由于多任务,程序开发、操作系统设计需要才加入各种管理程序任务(指令片段)的指令,但对数据的管理还是不太重视。如为管理动态数据的程序堆栈空间,与管理程序函数调用的功能混在一起,造成很多不便,大量病毒、木马就是利用管理程序函数调用的栈空间把伪装指令地址的数据加载到栈空间上,程序函数返回又不得不利用栈空间取回返回地址。这种涉及机制只能是对数据空间、指令空间不太重视的后果,管理程序调用的重要数据为何不能另外涉及一个空间来容纳?为何要与函数动态数据混杂在一起?一切都是为程序指令运行而不顾数据的重要性采取的措施,这个错误设计产生的不良后果已经大大超出他带来的微小效益。堆栈空间的设计不止带来空间溢出这种弊端外,影响了程序设计。栈空间是为容纳函数运行时的动态数据设计的,只有函数运行时才存在,当函数不运行时,所有的栈空间数据就消失了,因此为保存一些有用的动态数据,就必须采用申请其他内存空间的做法。一般都是在程序堆空间上申请,那么这种做法就会造成各种函数申请的堆空间都是同一个空间,程序没有办法为函数分配不同的堆空间,函数没有能力保护其动态数据的能力,随时都可能被其他函数破坏,这对可重入而设计的函数是一个灾难。但人类不会因为一个蹩脚的设计而去重新设计的,只好用一个更蹩脚的设计来代替,为了应付多任务运行,不得不在函数调用的基础上发展出诸如像线程的机制。但是线程虽然可以暂时解决多任务运行时的一些弊端,如保护私有数据,但对于一些小的多任务来说,线程太庞大了,如对象。按道理各种对象应独立运行在自己的对象空间中,但是因为指令设计的原因,各种对象也只是一堆积聚在一起的函数和数据,本质上都没有真正分开。这种设计的后果就是,对象不能真正单独存在,它必须在程序在精巧设计下,一步一步运行才能起作用。如要同时对大量对象发送消息,也必须通过循环才能做到。

万维网操作系统—空间意义之二

既然传统的计算机空间存在问题,那么如何设计新的计算空间形式?这里有几个必须考虑的因素:运行效率,支持进程、线程、对象,存储结构等,基于这几个因素,采用简单的进程空间内的函数分段模式。以前的x86设计有任务段,这个任务段可以支持当任务切换时,自动保存任务的寄存器等数据,在一个任务内,他不能保存函数切换时的栈地址、堆地址,对函数调用的栈溢出也不能防范,而且在开发操作系统时段模式也没有得到很好的使用,如windows操作系统的程序进程各段都一样,没有分出各种内存空间段,这样用户程序事实上可以存储任何数据包括指令部分。因为这种不明确的分段模式,造成程序员在编程时不认真规划数据结构,指令与数据混在在一起,内存经常违规存取、超界、溢出。如果当初设计函数调用功能时,设计出可以让函数自身方便管理的函数段模式就不会出现这种弊端了。另外由于计算机内存事实上是一种线性结构,他的内存单元是按照地址存取的,相邻内存单元的地址相差一个固定值,这种内存结构可以方便存取,但必须为各种数据精心安排内存单元数量,并让指令按内存单元地址存取数值。这样的设计对于机器运行效率很高,但对于编程人员来说是一种负担,必须时刻保证数据内容地址的正确性,否则计算出来的数据可能是错误的。为了方便程序员编程方便,web应用程序的函数空间数据不用地址存取,直接用数据的标号存取,这样程序员不用在费神去计算数据地址,也不用去动态安排数据空间。如乔布斯=“伟人” QQ=“山寨集成” … 乔布斯 与 QQ 两个数据在函数空间直接用数据标示就可以存取了,不存在数据地址,程序员也根本没有办法找到数据的地址。Java语言号称消灭指针,但语言中还再用 new 来分配数据空间,他只能是一个表面没有地址而内部有地址的语言设计,而javascript 语言在数据空间设计中比java更加超前,也直接用符号来存取数据,程序员再设计javascript脚本时,就完全不用考虑数据空间的问题(不过,现代的编译器非常厉害,在动态编译javascript脚本时,可能会用真实的地址去代替符号的访问方式)。总结上述,为web应用程序及操作系统设计的空间为开发效率、多任务运行的需要,简化了日常程序语言开发中的各种数据结构,采用分段式的函数空间组成进程空间可以满足web应用程序开发设计的需要,后面将论述web应用模型。

万维网操作系统–应用模型

普通应用程序虽软件需求不一样,但开发出来的程序却有千篇一律的模式可以遵循,基本上都遵循这样的规律:程序大部分分为数据处理段、数据段,其中数据处理段部分必定包含在程序当中,而数据部分可放在程序中,也可放在独立的文件中,当程序运行时,才由程序调入数据。由于数据与指令的这样存放位置不同的差别,造成今天各种各样的程序,最初程序数据处理与数据都放在一起,如一些简单的小游戏,后来,程序数据处理部分开始与数据分开,数据独立存放同一机器的单独文件里,如编辑器,这是单机时代,再后来,程序数据处理部分开始与数据不但分开,而且数据独立存放在不同机器里,这是网络时代,再后来,程序数据处理部分开始与数据不但分开,而且数据独立存放在很多不同机器里,这是云计算时代。程序数据处理部分与数据部分分开这是由于数据处理部分一般较小、经常要修改,又与机器的指令相关,不同指令类型的机器,必须有不同的数据处理部分,而数据对处理算法来说,不会因机器指令不同而不同,数据是他们共同的部分。在Web时代应用程序本质也没有发生改变,都是数据处理与数据分开的模型,但web应用程序与前面介绍的程序又有不同。在web应用程序里,数据处理部分已经被统一化,即浏览器、web服务器作为web应用程序共同的数据处理部分。浏览器负责处理数据的呈现,web服务负责提供、存储、处理数据,而程序员只要编写一些文本数据就可以了,当然一些高级web程序,还是必须编写脚本程序。应用程序从以前按照机器指令运行进化到按照数据运行,其中浏览器起着非常重要的作用,浏览器相当于web时代的程序机器,是一个非常大的进步。但这个进步随着技术的发展,目前出现的应用让浏览器编程越来越困难,如html、xml、css、script、sql、cloud等,这些都是要一大堆高级的技术来支持,非常不利于程序员的编程学习,要解决这个问题必须用比浏览器更为上层的技术来代替,所以本文尝试提出一个新的web应用程序模型。操作系统的主要功能是管理计算机运行的任务、内存、IO等,广义的web操作系统也相应定义了任务、内存。用户打开一个页面时,不再是简单的返回html页面,而是虚拟为这个应用分配应用进程空间、进程号、函数空间。因为Web应用永远在线的特点,广义操作系统分配的进程空间、进程号、函数空间都是永远存在的,不会因为用户下线了,相应的进程空间、进程号、函数空间被消除了。这样用户的进程就要被赋予特别的意义,如打开facebook时,广义操作系统为我打开一个已经存在的进程(也可以重新创建),但重新创建一个用户函数空间,每个用户端产生的其他数据也都是用函数空间来表示。当广义操作系统用这种方式管理数据时,其数据保存就不需要特定的存储设备,如数据库服务器、云存储等,我们可以自定义函数空间的存储方式,只要方便用户就可以。比如,sns应用中的粉丝应用,函数空间简单定义如下: <粉丝关系函数空间 ID=456346> <用户=“道指令创始人”/> <粉丝=“爱因斯坦”/> <粉丝关系函数空间ID=3215> <用户=“道指令创始人”/> <粉丝=“牛顿”/> <粉丝关系函数空间ID=5322> <用户=“道指令创始人”/> <粉丝=“猿人”/> 当各种不同用途的函数空间被定义及创建后,整个进程空间就会会有大量的函数空间数据片段,广义操作系统的任务就是负责对这些空间数据的创建、保存、处理、销毁。实现这种空间定义非常简单,如用数据库实现时,最简单的方式,只要一个数据库表格就可以,程序员只要利用这个表格就可以开发出各种各样的web应用(这个本人已经开发出了模型),把这个简单的表格转化为其他的存储方式也很简单。广义操作系统的应用模型经过简化后就与最原始的程序一样,所有数据都在机器中运行,终于程序发展从单机、网络、web又回到单机时代。《未完待续》

(8个打分, 平均:1.63 / 5)

平台化设计方法–集成电路设计发展的重要方向

SoC系统设计中主要有基于模块的设计方法和基于平台的设计方法。基于模块的方法强调IP核重用,它通过IP核的集成技术构造SoC系统。基于平台的设计 是一种IP核复用策略,它为芯片产业提供了最好的条件去解决SoC设计中固有的生产率和验证问题。使设计人员可以快速选择期望的配置以自动设置IP。基于 平台的设计是一种可以达到最大程度系统重用的设计方法。SoC设计平台至少包括一个处理器核以及保证处理器有效工作的必要外设模块。通过重用方法使用验证 的IP核、和设计平台,显著地减小设计开发风险,提高产品性价比和快速上市的可能。
平台可划分为硬件平台、软件平台。其中,硬件平台是支持软件重用的微体系结构系列,软件平台通过API 使用硬件平台的资源,硬件平台与软件平台共同组成系统平台。在软件平台中,实时操作系统(RTOS) 封装了可编程IP 核与存储子系统,设备驱动程序封装了I/O子系统,网络通信子系统封装了网络连接。
国外各大公司都在建立基于自身IP核的参考平台,为下游用户提供平台化的解决方案,如MIPS SOC-it平台架构采用了MIPS科技和其合作伙伴的IP。平台经过了公司新的MIPS-Verified程序全面的测试和验证。MIPS科技公司将利 用其广泛的生态系统,包括软件工具、RTOS厂商、IP和电子系统级(ESL)公司,以确保整个软件支持新的SoC-it平台。
基于平台和基于IP核的层次化设计加大了设计重用的规模,提高了设计的生产效率。目前它已经成为系统级设计研究的重点,平台化设计方法是今后集成电路设计 发展的重要方向。一般来说,平台化设计需要使用的是标准的SoC片上总口,这样就使得采用相同标准接口的辅助IP模块的集成变得很容易。目前业内实际采用 的总线接口(如AMBA或OCP)正在被越来越多地使用到很多不同的IP中,同时提供了相配套的驱动软件。
平台化设计方法将帮助设计企业能够利用平台的优势,简单、快速地开发出定制化的SoC。凭借基于平台的架构,设计师只要增加或更换一些IP核,就能迅速开 发出派生产品。此外,预先集成的架构有利于减少显著增加开发团队难度和导致项目失败风险的验证不确定性。平台方法有利于设计团队将自己的资源集中于其核心 竞争力上,进而增加与竞争者产品的差异化。
基于平台的SoC设计方法,能孵化出数目众多的自主IP核开发技术公司,以此为基础营造自己的IP设计平台,从而以更低的成本逐步占领世界高端系统芯片产品的设计市场,为国产电子设备提供更多的具有自有知识产权模块的SoC芯片。

(1个打分, 平均:3.00 / 5)

初创公司的规律曲线--The startup curve

[陈怀临注:这是中文http://www.iheima.com/网上的一篇非常重要的文章。希望统同学们能引起思考。。。任何一个产品必须从所定位的服务人群开始长,壮大。。。绝对不能上来就是一个大目标。。。否则会死的很难看。。。原文可参阅:The Startup Curve

全球著名的VC博主Fred Wilson今日发表文章,就“创业曲线”发表了自己的看法。其核心观点是:创业要经历苦痛,与其逃避不如坦然面对。说到容易做到难,Fred建议大家新产品完成后,顺其自然的推向市场就可以了,不用考虑太多。他的观点是你总要经历创业“过山车”的,与其之后出现更大的损失,不如现在就先经历一把试试。您能接受他的观点吗?欢迎在文章后留言评论,或和@i黑马在微博上交流。

我正在和多个创业公司一起工作。这些公司处于Paul Graham所描绘的创业曲线的各个阶段。

很多人认为创业公司总是处于上升期以及方向正确。但更多的服务其实都遵循着这个创业曲线。当然了,这并不是说所有的公司都是这样,的确一些公司发展的一帆风顺,跳出了这个曲线所呈现的各个糟糕的阶段。

我昨天中午和一个创业者吃饭,我们已经在一起工作了两年。他最近的项目经过了很多年才算步入正轨。产品功能正在不断完善,客户正在不断增加,业务上也开始利润为正。我对他的成就也很引以为豪。但作为外人,谁能对他之前的创业苦痛记忆犹新呢?

他的秘诀是什么?答案是简化服务和功能。仅仅保留那些体现专业价值的功能,让用户使用上变得简单而清晰。这不是让你在做一个没用的产品(Vacuum)。他的做法是把一个不百分之百完美的产品推向市场,然后找到少数的需要这些尚不完美产品的客户,然后用心的倾听他们的意见,然后根据他们的反馈去制作出顾客们“理想”中的产品。

这就是你为什么你必须要经过痛苦的创业“过山车”这个阶段了。业务下滑阶段是可怕的,而在低估徘徊往往让很多人受不了。接近崩溃是一个濒死的经历。但是没有经历过这种磨难,你不会知道什么才是炒作,什么才是现实。

所以,当我和这些初次创业者在聊他们什么时候把他们的产品推向市场是最佳时机时,我都会说“你自己决定就可以。”作为创业者,你总要在一个点上遭遇创业“过山车”的。那不妨从现在就开始。

本文由@i黑马作者吾初编译自AVC,点此查看原文

(6个打分, 平均:4.83 / 5)

New iPad3与Kindle Fire对比

(1个打分, 平均:4.00 / 5)

全新iPad评测

(没有打分)

望门投止,一个弯曲评论读者的求职信

[陈怀临:这样的同学是好同学!你们看看,非常懂事。一定是个人才。弯曲评论就是希望给大家一个平台,不仅仅长知识,长教训:-),也长工资:-)昨天,我与大宋的EEFOCUS的苏总在辽国的咖啡店胜利会师。畅谈胜欢。我们就是希望你们年轻人的空间越来越大。。。]

首席您好!从搜索“盛科网络”知道弯曲评论开始,已经关注弯曲2年多了。从“要知松高洁,待到雪化时”的邓稼先传,到计算的美丽,已删了的华为 文,IPv9,Netscreen,山石,熊立,重写TCP/IP,后来的王前辈的ARM与Intel,以及新开的“工作机会”的category,等 等,弯曲的新旧文差不多都翻看,不过好多视频都没看……

然而,(自结识tektalk)“今未闻弯曲有自荐求职者,有之,请自Hubert始”。

以下简要说明个人信息,想求一份IC设计或验证相关的工作,地点在京、沪、苏、杭,无锡、成都等均可。盼有橄榄枝抛向 IC.job.hu@gmail.com 。弯曲上可能也有一些待业的“曲友”(弯友),大宋石孝友有词如下,算是共勉吧。愿Tektalk更好。

男儿四方志,岂久困泥沙。
束书匣剑,依旧旅食在京华。
蹭蹬青云未遂,奔走红尘何计,敛袂且还家。
草木渐黄落,风月正清嘉。

友猿鹤,宅丘壑,乐生涯。
几时雷雨,轰磕平地起龙蛇。
尺可鞭夷狄,寸舌可盂社稷,无路踏云车。
今古万千事,洒泪向黄花。

2010年本科毕业,专业是集成电路设计。熟悉verilog HDL,Modelsim工具,熟悉linux环境(RHEL5),初步掌握System verilog、VMM方法及VCS工具。毕业后之后在北京一公司的分部工作,职位是ASIC设计工程师,主要做USB 3.0 PHY的验证。因此,对USB 3.0,PCI Express specific PHY layer较熟悉。后来由于公司分部的解散,所以离职了。毕业之前在北京一公司找了实习,当时要求做的是基于AMBA总线的DDR控制器,不过那时候功力 不够,只熟悉了AHB规范,简单了解DDR读写的时序。毕业设计做的是I2C控制器,完成功能仿真。

详细请Mail to IC.job.hu@gmail.com ,谢谢。

(3个打分, 平均:5.00 / 5)

大辽苹果“iPad3”为何输给大宋华为MediaPad?

[陈怀临注:原文请参阅:http://weibo.com/sfw 。华为余总在新浪微博上也发帖宣传,华为MediaPad已经全面超过Apple的iPad3。希望华为把思科,Apple,然后是Oracle,最后是IBM都灭了。大汉威武!!:-)]

最近漫天飞舞的一则新闻,不是The new iPad发布如何如何?而是MediaPad 10 FHD和它的横向对比。究竟谁更牛逼?苹果The new iPad为何要和它对比?MediaPad 10 FHD是何方圣物,又有何能耐?不妨咱们来一次详细的对比。

实际上,通常来说这些配置不可能出现在一个非PC的“手持娱乐型”设备之上,但这一次它们却居然同时出现在了两款不同品牌不同国际的设备之上。从四核急速运算到超高清屏幕,甚至对速度高到咂舌的150Mbit/s LTE网络支持,它们正在挑战你对传统数码产品的认知极限。它们不是别人,正是你所熟悉但却不曾想过拿来对比的刚出炉的The New iPad(俗称iPad3),和一个通信行业巨人——华为所新催生的MediaPad 10 FHD平板。

关键参数之“核心”PK

要揭开这两种“神器”谁最牛?其肚子里那块芯片,绝对是首要对比的重要部件。笔者窥看了两款平板的“芯”,它们一个来自韩国三星,另一个来自国内最牛、全球第二大通信厂商——华为之手。“芯”上的较劲,更是芯片阵营之上的较劲。

在The new iPad中,苹果选用了集成双核CPU和四核GPU的A5X芯片组,而非传言中的A6芯片。相对于A6来说,这款A5X芯片组采用的是32纳米转移工艺而非28纳米。从某个角度来说,可以看作是高速&微缩制程版的A5双核处理器。由于并非是下一代A6四核处理器,在处理性能上并非有太大质变。不过这款芯片组也有很大的亮点,这就是其GPU单元部分。

从核心上看,A5X芯片组中携带的GPU是从前代PowerVR SGX543MP2升级而来的。新的GPU编号为PowerVR SGX543MP4,单从名字上我们就知道这是一颗4核的GPU。核心数多了一倍,自然处理性能上更为迅猛。苹果官方称,The new iPad中携带的A5X芯片效能是Tegra3的4倍,但其真正的优势在于省电之上。正是这种优势,使得The new iPad在提升各种周边硬件性能之时,也未破坏其原有的续航能力。

在笔者看来,相对于The new iPad才处理器上的疲软,作为芯片厂商新阵营的华为海思,其推出的海思K3v2四核处理器反而更有看点。华为MediaPad 10 FHD采用的是内存总线为Tegra 3两倍的海思K3v2四核处理器。这款自行研发的重量级芯片,帮助多款华为数码产品在最近举办的多个国际会展中受到追捧。MediaPad 10 FHD采用了1.5GHz主频版本的海思K3v2四核处理器。

这款处理器最大的亮点之一,在于其内置了令人惊叹的16核图形芯片。这意味着MediaPad 10 FHD在处理视频之时,能达到35fps的处理能力。这相当于拥有在视频处理方面3倍于Tegra 3的处理能力,4倍多的双核的高通处理能力。单从参数上看,MediaPad 10 FHD的海思K3v2四核处理器拥有了超越The new iPad A5X芯片组的超强性能。

屏幕“面子”之争

平板的屏幕,一直在其区别与其他数码产品的重要的产品特性之一。它的每一刻尺寸变化,每一点亮度提升,每一个性能转变都成为了牵动人们关注的焦点。而对于这两款平板来说,他们具有“超高解析度”更让其成为倍受关注的话题。

从屏幕品质上看,无论是苹果的The new iPad还是华为的MediaPad 10 FHD,其都是属于拥有超高解析度顶级屏幕。其画质效果,远远超过现今市面上普通平板,甚至iPad2和它们也非在同一级别。

其中华为MediaPad 10 FHD的IPS屏幕能支持1920×1200超高解析度显示,而在这一点上苹果The new iPad要略胜一筹,能支持2048×1536 264ppi的极致解析。从显示效果上,它们两款屏幕都远远超越1080p(1920×1080)的解析能力。实际上,就算是我们常用的笔记本电脑、PC电脑屏幕,大多也仅仅停留在1080p而已。而在这种尺寸仅为10寸左右的屏幕中实现如此高的解析能力,不能不说为后来者开创了一个先河。

在尺寸上,华为的MediaPad 10 FHD拥有10.1寸大小。能完美实现16:9的显示比例,这使得其更适合用于观看电影,享受到“毫无缝隙”观影感受。而苹果The new iPad则采用的是9.7寸屏幕,虽然看电影时会有一定“黑边”,不过这个尺寸看苹果的各种电子读物时也显得很爽。

谁更厚?

更薄的体积,将会使得平板拥有更佳的手感。而在厚度上,苹果The new iPad为9.4mm,而华为MediaPad 10 FHD为8.8mm。尺寸上MediaPad 10 FHD要薄0.6mm,相当于十多张A4纸的厚度。理所当然在这个环节上,前者更有“手感”。

而正是The new iPad的这个厚度,让其倍受果粉争议。因为即使与“前辈”iPad2来说,它也实在是厚了不少。在便携度上,也将给用户带来一些尴尬。原本收纳iPad2刚好的皮套,当套上The new iPad时,会变得像穿了紧身衣一样紧绷。

面对未来“G速”,谁更有优势?

有人说,苹果选择在新推出的The new iPad中采用超高解析度屏幕,很大程度上是为未来3G网络提升、4G网络时代到来所促使的高清应用爆发做准备。所以HSPA+的支持效能,绝对是一项判断产品未来存活周期的重要标准之一。

要保证自己平板产品,能对未来“G速”拥有“更远”的支持能力,就要拥有足够快的HSPA+、LTE支持。在苹果的官网上,The new iPad能支持HSPA+最高可达21.1 Mbps 的下行速度、LTE 73Mbps。

但归属于当今最大的通信设备制造商华为的MediaPad 10 FHD,在这方面拥有更多的先天优势。其所支持的HSPA+更是可以达到惊人的84Mbps,是苹果的4倍。而在对于LTE的支持上,甚至突破至150Mbps“超级速度”。可以这么说,在合适的网络环境下,The new iPad可以让你下载电影的时间缩短至十多分中,而MediaPad 10 FHD则更是可以将这个时间再缩短至几分钟。

其他周边配置PK

在其他重要配置上,MediaPad 10 FHD仍然比The new iPad略高一筹。比如MediaPad 10 FHD拥有800万像素的背照式主摄像头,而The new iPad则是500万像素无闪光摄像头。在前置摄像头方面,MediaPad 10 FHD为130万像素,而The new iPad则仍然为30万像素。自带扬声器配置上,MediaPad 10 FHD是用的双声道扬声器,而The new iPad还是沿用的老一代的单孔扬声器。不仅如此,MediaPad 10 FHD还用了Dolby环绕立体声音效技术。

最后需要说明的是,虽然两款平板在性能上存在差异,但他们都毫无疑问的代表着下一代平板的走势。The new iPad为我们带来全新高度的屏幕解析度,以及这种解析度将会对高清行业带来的改变,都成为其影响未来的重要因素。而MediaPad 10 FHD为世人展示出“国产芯”超强的性能,更是让人们见识了中国厂商的顶级研发能力。而它们共同拥有的多核强劲处理能力,配备超解析度高清屏幕,对于HSPA+、LTE网络的超流畅支持等等“下一代平板”特性,都无疑将会再度改写人们对于平板的定义。

(11个打分, 平均:3.82 / 5)

Google Search小组的算法讨论会。。。

(2个打分, 平均:5.00 / 5)