一、序

  飞利浦968的Qnes模拟器,不能在夏新E600上运行,这是众所周知的。自
从有了Shell这个入口,自然也清楚不能运行的具体原因!经过一段时间,的
确可以完美运行!


二、重要提示

    为了方便更好的理解本文,提供下面链结。
    全系列的文章地址,手机应用开发专栏:http://blog.csdn.net/liwei_cmg
    相关的重要成果的下载地址:http://play.younet.com/view.php?tid=24045

三、方法

  飞利浦968和夏新E600的系统是十分接近的,连可执行程序,库文件的版本
都是一致,全部是ARM 1.0指令集而且是基于Linux 2.0.0内核。移植软件无非是
处理可执行程序和相关库文件。好了我们实际操作下!
  
  按http://play.younet.com/view.php?tid=24045里说明,安装_setup.prg
和E600.rar。

  研究里面的内容就可以知道,是如何进行移植的。
  
  A.E600/tmp下的一些install脚本,是用“软件安装”调用执行。所做的操作
仅仅是复制文件。

  B.E600/exe下的qnes.txt文件,直接被“模拟器”调用运行,十分关键,内容
如下:

  #!/bin/sh
  export CECHOME=/mnt/cellon
  export QTDIR=$CECHOME/qt
  #export QWS_KEYBOARD=TTY
  export CECDIR=$CECHOME/cec
  export LD_LIBRARY_PATH=/mnt/sd/e600/lib:$CECHOME/lib:$CECDIR/lib:$QTDIR/lib:/mnt/doc/ibm/jvm/bin:$LD_LIBRARY_PATH
  #export QWS_DISPLAY=:1:/dev/fb0
  /mnt/doc/cec_local/bin/qnes 2>/mnt/sd/e600/log/qnesrunerror.txt
  
  可见LD_LIBRARY_PATH加入了/mnt/sd/e600/lib的搜索路径,这里的lib内容
就是从夏新968里复制出来的libipm.so文件。另外在install脚本中也把qnes相关
文件qnes.png,qm文件复制到指定目录,缺少这些文件也能运行,不过显示会有些
异常。
  在刚开始移植中,使用了下面的运行脚本:
  
  export CECHOME=/mnt/cellon
  export QTDIR=$CECHOME/qt
  export QWS_KEYBOARD=TTY
  export CECDIR=$CECHOME/cec
  export LD_LIBRARY_PATH=/mnt/sd/e600/lib:$CECHOME/lib:$CECDIR/lib:$QTDIR/lib:/mnt/doc/ibm/jvm/bin:$LD_LIBRARY_PATH
  export QWS_DISPLAY=:1:/dev/fb1
  /mnt/doc/cec_local/bin/qnes -qws 2>/mnt/sd/e600/log/qnesrunerror.txt
  
  没有 -qws 运行参数时,会提示错误,加上 -qws ,运行倒是可以,不过画面
按键皆与系统冲突。后来我考虑/dev/fb1并非直接的显示设备,换成/dev/fb0,略
有好转。其间也尝试使用968的QT库,不过反而按键会更乱。TTY也试过不少次,不
过皆不奏效,甚至想到kill winmgr的方法,不过很糟糕,造成手机会不断重启,这
点让我十分遗憾,在E680如此平常的操作,在E600居然会频繁重启!

  /dev/fb0,也能正常进行游戏,不过偶然间经过搞搞震测试,发现将qws的环境
变量全部去掉,正常运行qnes,发现模拟器居然十分完美,什么冲突也不见了,原
因我没有工夫去细细查看,有兴趣的话可以google搜索研究下。

  另外在移植过程中,出现一次Segmentaion Fault,原因不详,我考虑可能是
fontdir的问题。


四.总结

  想不到,本来认为十分简单的模拟器移植,居然也耗了这么多的工夫,可谓:
纸上得来终觉浅,绝知此事要躬行!
  少说话,多做事,如此而已。

 
Logo

更多推荐