2009年3月31日星期二

嵌入式开发的新途径

嵌入式开发的传统过程是:
  • 编程
  • 交叉编译
  • 下载到板子或模拟器
  • 运行和交叉调试

如此往复循环。在此之前,需要购买或自己构建交叉工具链。

这一过程,如果使用一个足够强大的模拟器,可以简化为以下步骤:
  • 编程
  • 直接编译
  • 直接执行
  • 运行+直接调试或交叉调调试
可见最大的改动在于变交叉开发为直接开发,就像是在开发传统的非嵌入式软件(PC软件或服务器软件)。在此过程中,不再使用交叉编译,而是直接编译!

如同虚拟化工具能够给服务器软件或网络编程带来便利,模拟器能给嵌入式软件开发带来同样的便利,甚至更多——因为嵌入式开发与传统开发相比,更受限于可以使用的资源,如果能让嵌入式开发人员享受主机资源,那相对的开发效率提升是非常可观的。

对于模拟器的功能需求,至少有以下几点:
  • 必须是足够精确的全系统模拟器;
  • 必须具有远程(源码级)调试能力;
  • 必须具有虚拟化功能,即能让开发人员自由使用宿主机的资源,包括网络资源、存储资源能等;
  • 必须能够灵活配置,以使用户能够按需分配资源,如内存大小,处理器个数等;
也就是说,模拟器不仅仅只作为简单的模拟执行目标机指令的软件,而是能够行使嵌入式软件开发环境的功能。我正在开发的quark模拟器正是以此为目标的。

(quark模拟器正在最后测试,不久将发布第一个版本,该版本将支持ARM体系结构)

2009年3月30日星期一

s3c2410的时钟电源模块的初始值

在我的quark模拟器上,如果按照s3c2410手册上的默认值初始化时钟电源模块,Linux会panic:

setup_timer: HZ is too small, cannot configure timer!

经过交叉gdb进行源码级追踪,这条打印信息来自arch/arm/plat-s3c24xx/time.c文件的
s3c2410_timer_setup()函数。

正确的初始值应该是:

Reg_locktime = 0x00ffffff;
Reg_mpllconf = 0x0005c040;
Reg_upllconf = 0x00048032;
Reg_clkctrl = 0x00007de0;
Reg_sclkctrl = 0x00000004;
Reg_cdivctrl = 0x00000003;

u-boot也要这样修改,才可正常启动Linux。当然,本文应该也适用于真实的板子。

看好IBM收购SUN的技术理由

IBM之收购SUN,无论最后结果怎样,从技术层面分析,IBM会受益匪浅。以下详析之:

表面看来,IBM和SUN的技术大不相同:IBM的服务器基于Powerpc架构,而SUN基于SPARC架构,这也是二公司技术最不兼容之处。其实,技 术收购根本有利之处在于引入创新的思想,而非现成的产品。SUN的SPARC最新成果吞吐量计算架构(多核多线程),即使IBM也能借鉴许多,在处理器领 域,IBM收购SUN的最大收益不是SPARC本身,而是SPARC的最新思想,未开源的知识产权,以及优秀的体系结构人才。

SPARC产业链本身也并不是一无是处。SPARC服务器至今仍然是给SUN带来利润最多的产品。SUN的最新产品——基于16核CMT(片上多线 程)UltraSPARC和交易内存(transactional memory)的ROCK服务器,应该在今年(秋季)就能面市。所以,这个时候IBM收购SUN,相当于买了一只怀着金蛋的母鸡。即使ROCK不能创造奇 迹,SUN的数据中心产品,存储系统也是IBM此方面产品的有力补充——别忘了,SUN在2005年花费40忆美元购买了StorageTek。

其他的硬件技术和产品,包括SUN的万兆级以太网芯片、基于PCIE的AdvancedTCA工控平台,平板电脑(SunRay)等等,都是可以现成部署 的技术,IBM可以拿来就用,或者拿来就卖。比如万兆级以太网控制器Neptune,已经有现成的买家Marvell。这些技术或产品在SUN都属于小兵 种,但实际上每一个拿出来都可以玩转一个产业。所以SUN是名副其实的技术驱动公司。

软件方面,收购可使IBM彻底拥有Java,考虑到Java在服务器和嵌入式领域的主导地位,IBM不仅获得了知识产权,也获得了绝对的技术话语权和产业 主导权。Java没有给SUN带来应得的利润,但IBM则绝对有本事让Java更上层楼。Java作为编程语言,也许没什么太闪光的地方,但Java的价 值在于它所蕴含的巨大应用前景。SUN在Java的积累不言而喻,此外SUN还吸收一些业界的最新成果,这包括去年收购的开发出Java嵌入式操作系统的 Savaje公司。

IBM有自己的UNIX操作系统AIX,但SUN的Solaris近几年创出许多伟大的新技术,这就包括著名的Dtrace和ZFS,前者是内核级追踪工 具,后者则是号称最后的(Z!)文件管理系统。拥有了Solaris技术队伍,IBM可以轻松地把这些前沿的技术移植到AIX。虽然是不同的操作系统,但 UNIX本身具有的标准化程度使这项任务不象表面上那样困难——实际上,应该非常轻松!此外,Solaris本身也值得作为单独的产品继续得到支持——不 应该忽视现有的Solaris用户群。

SUN花10忆美元巨资购买的MySQL也是IBM的DB2的完美补充:MySQL能探触到DB2够不到的应用领域,比如企业级应用,拥有了MySQL,IBM在数据库方面则可以和Oracle一较高下了。

以上任何一项技术都绝非泛泛,没有人可以小看这些技术。IBM接管这些技术,应该是非常乐意的。而另一方面,似乎也只有IBM能消化这些技术——你不能想象DELL能吞下SPARC或Solaris,而HP,鉴于其丢弃Alpha处理器、PA-RISC和HP-UX的前科,也决无胆量重做冯妇。

SUN有无数闪光的技术,SUN之所以走到今天,不是技术落后,恰恰相反,正是因为技术的先进,反而使得SUN产品的营销和支持成本太高,SUN的客户开 玩笑说,玩转SUN的产品需要PhD才行!其实并不是SUN的用户界面不够友好,而是掌握那些技术需要有一个学习过程,没有用户喜欢频繁的技术更新。有时 保守的技术反而能阻止客户的退出。

IBM和SUN,技术上貌似差别很大,但实际上异曲同工,IBM收购SUN,实是亲者快,仇者痛之举!