首先进入开发板的根目录下的/etc/init.d/rcS
添加以下几行:
export TSLIB_ROOT=/usr/local/tslib
export TSLIB_TSDEVICE=/dev/event2
export TSLIB_CALIBFILE=/etc/pointercal
export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf
export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts
export TSLIB_FBDEVICE=/dev/fb0
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TSLIB_ROOT/lib
export LD_LIBRARY_PATH=/usr/local/tslib/lib:/usr/lib/:$LD_LIBRARY_PATH
export QT_QWS_FONTDIR=/usr/lib/fonts
export QWS_MOUSE_PROTO=Tslib:/dev/event2
export QWS_SIZE=480x272
再添加要加载的内核模块,如insmod ts.ko (如果没有就算了)
最后添加要启动的Qt文件:
./mplayer -qws
qt项目启动完后发现一个问题,就是关闭这个qt后,无法进入开发板的根目录。
对于一个异步的方法调用,我们需要异步的得到调用结果,通常我们会使用Listener模式,用于监听方法异步调用的结果.
但应用该方法在实际使用中其实并不灵活.
1.因为由于Service的方法很多,可能会导致Listener要监听的事件过多.
2.一般Listenner都是事先设置好监听器,不能在方法调用的过程中灵活的增加新的监听器
3.对如发送消息失败再次发送消息这种需求处理会比较别扭.
以下为应用AsyncToken的使用示例:
public void testSendEmail() { final String address = "badqiu(a)gmail.com"; final String subject = "test"; final String content = "async token test"; //返回的token,包含token.addResponder()用于监听异步方法的执行结果 AsyncToken token = sendAsyncEmail(address,subject,content); //token可以继续传递给外部,以便外面感兴趣的listener监听这个异步方法的执行结果 token.addResponder(new IResponder() { public void onFault(Exception fault) { System.out.println("email send fail,cause:"+fault); //此处可以直接引用address,subject,content,如,我们可以再次发送一次 sendAsyncEmail(address,subject,content); } public void onResult(Object result) { System.out.println("email send success,result:"+result); } }); } public AsyncToken sendAsyncEmail(String address,String subject,String content) { final AsyncToken token = new AsyncToken(); Thread thread = new Thread(new Runnable() { public void run() { try { //do send email job... token.setComplete(executeResult); //通知Responder token执行完 }catch(Exception e) { token.setFault(e); //通知Responder token发生错误 } } }); thread.start(); return token; }
如上代码,使用AsyncToken的好处:
1. token可以无限传递,只要对方法的执行结果感兴趣,都可以监听方法的执行结果.
2. 拥有上下文,还可以引用前面的参数,以执行任务email重发这种任务
3. 一个token与一个方法对应,方法调用时你即知道token对应的事件,不需要使用listener模式中的一般用EventType来区别不现的事件
3. 灵活转换,也可以将上面的token再转至listener,再由listener以事件的方式派发事件
与Listener的异同:
1.token可以无限传递
2.没有使用事件或是监听不同的方法,listener一般配合需要使用事件,然后由事件进行参数的绑定.
3.listener模式一般是先设置好listener,而AsyncToken可以得到token后再添加监听方法
Flex异步令牌AsyncToken的用法介绍
来自:http://blog.csdn.net/jiabangok/article/details/4904983
什么是AsyncToken?官方文档是这样描述的:"这个类针对异步RPC操作提供了一个用来设置额外的或者令牌级数据的地方。它也允许一个IResponder作为一个独立调用被附加。这个AsyncToken能够在ResultEvent和FaultEvent中用token属性来引用。"
如果你对Flex中远程异步调用的本质不熟悉,肯定还是有点困惑的。我碰见过大量的对这个便捷类不熟悉的人,因此我试着来让它明朗一点。
无论何时从你的flex/AIR应用中使用多个外部调用中的一个,你都不会知道这些调用是否或者何时返回结果(或者错误),你也不会知道它们返回的顺序。即使你按照"RO1","RO2","RO3"的顺序调用远程对象,它们返回的顺序还是可能不一样。你可能也希望针对这些结果能有不同的处理。
一种方式就是给每一个调用分配一个异步令牌(AsyncToken )来追踪这些调用。
不要这样来进行远程调用:
myRO.myRemoteMethod();
你应该这样:
var token:AsyncToken=myRO.myRemoteMethod();(确保导入了mx.rpc.AsyncToken)
现在就有了一个变量"token",代表这个单独的调用。像这样,你可以分配token自己的result和fault处理函数
token.addResponder(myResponderClass);
这里myResponderClass类实现了IResponder.实现Iresponder简单的意味着定义了如下两个方法签名:
* public function result(data:Object):void
* public function fault(info:Object):void
因此你可以对你的远程调用在调用时设置result和fault处理函数,而不用把硬编码放到你的远程对象,HTTPService或者WebService标签里。这也恰好就是Cairngorm和其他微体系结构的运行方式。
AsyncToken最后一点很酷的特性就是它是动态类。这意味着,当你进行远程调用时可以添加属性到token上,然后result/fault处理函数中读取这些属性。
另外,在flex sdk3.4中有CallResponder,可以用CallResponder实例的token属性引用这个异步令牌。在flex sdk3.2中式没有这个类的,如果要用的话就只能自己写了,只要这个类继承自Iresponder接口就可以了
使用H-Jtag替代sjf2440烧写2440Flash的详细说明
说明 :
使用的是OK2440-III开发板,NANDFLASH 是K9F2G08的nandflash芯片
1、下载H-Jtag软件
http://www.hjtag.com/chinese/download.html
2、配置JTAG接口
现在大家使用的基本上都是SJF JTAG小板,JTAG小板上有两个接口,一个JTAG口,一个WIGGLER口,使用H-JTAG软件连接WIGGLER口,使用sjf2440软件使用JTAG口,。连接好开发板上的JTAG接口和电脑上的并口,安装并口驱动。打开H-Jtag的 Settings->LPT JTAG Setting菜单,如下图配置即可:
3、检测CPU芯片
在配置好JTAG后,使用 Opertaions->Detect Target 来检测CPU,有时可能会弹出错误提示(当我的板子进Qopia界面后偶尔会出错),此时只需手动复位开发板,再重新检测即可,检测到CPU后软件会显示CPU架构,如下图:
4、配置对应的CPU以及Flash参数
通过Flasher->Start H-Flasher菜单打开Flash烧写程序,首先 打开Load菜单,弹出文件选择界面,定位到H-Jtag安装目录下的HFC Examples目录,该目录下包括一些常用的CPU以及flash的配置文件
针对我的开发板,选择S3C2440+K9F1208.hfc文件:
在flash Selection中选择s3c2440+k9F2G08flash ,不同的flash选择不同的型号,我用的是K9F2G08的nandflash芯片
然后选择左侧的“Programming”菜单,复位开发板,单击reset按钮,再单击reset复位下边的“Check”按钮,此时应该能正确检测到Flash与CPU,如下图:
5、烧写Flash
烧写flash前先配置下Configuration选项,把RAM START Addres 为0x30800000
选择需要烧写的文件类型,flash的block位置以及page页面,最后选择需要烧写的文件src File 框选择bootloader文件,
如上图,我的选择是针对烧写S3C2440的bootloader进行的配置,然后点右边的“Program”按钮,开始进行flash烧写
烧写速度基本上稳定在7K/S,相比sjf2440程序快多了,烧写完成后会有提示
重新开发板,会在DNW下看到bootloader启动了,以后就可以用usb下载kernel和根文件系统了。
我的操作系统是XP,win 7 上应该也可以的