■ 热门评测more

发新话题
打印

[软件] dstftp_v0.1 alpha

dstftp_v0.1 alpha

dstftp是我在rt-thread for NDS的开发过程中临时制作的。
由于在开发NDS homebrew程序时候,每次调试都要频繁拔出烧录卡-PC上写入文件-重新插回NDS,非常麻烦,于是萌发了制作一个可以基于NDS Wif的程序,可以直接通过网络把文件从PC传输到NDS上。

DSTFTP简要使用说明(烧录卡-R4):
dstftp_r4
1、在烧录卡根目录下创建名为dstftp的文件夹,将解压缩出来的dstftp.ini和dstftp_0_1.nds后放到dstftp目录下;
2、编辑dstftp.ini文件,如果你的NDS可以通过wifi游戏中的WIFI设置进行网络连接的话,那就把WFC设置为Yes,否则设置为No,并且根据你的AP或者无线路由器里相关的WEP设置填写WEPkeyLen和WEPkeys;
3、运行dstftp_0_1.nds后,在PC端执行tftp命令上传文件,这样就可以通过wifi上传文件到你的NDS中了


3、也可以通过3CDaemon这款软件来上传



Notes:
1、dstftp在R4和G6L上面测试通过(本人只有这两款烧录卡 ),不过G6L下面由于文件写入速度慢,所以传输同样的文件所花费的时间比R4要多;
2、实际测试过程中发现每次上传的文件如果超过15M左右就会停止上传,初步猜测是dswifi lib中UDP支持有点问题(原本还希望通过dstftp上传ROM,现目前的话只能通过dstftp上传些小的ROM或MP3到NDS上了:tu003: );
3、出于尽量简单的制作一个上传工具,没有制作图形界面,所有设置都依赖于dstftp.ini文件,使用过程中会显得有些麻烦。

声明:
如果担心会对您的NDS爱机造成伤害的话,请不要下载使用dstftp,呵呵


dstftp_v0.1源代码 (License: GPL)
dstftp binary(without dldi) 此文件要使用的话需要自行打相应的DLDI补丁
dstftp_v0.1_r4 打过R4 DLDI补丁的binary


本地下载:
源代码
For R4 version
需自行打DLDI补丁的文件

[ 本帖最后由 samguns 于 2007-6-18 06:29 PM 编辑 ]
附件: 您所在的用户组无法下载或查看附件
本帖最近评分记录
  • pfiy 金币 +50 原创美!! 2007-6-17 10:21 PM
  • pfiy 人气 +50 原创美!! 2007-6-17 10:21 PM

TOP

LZ实在是强!

这个与DSFTP v2.4.1有何区别?

TOP

TFTP和FTP的区别

TFTP =Trivial FTP 一个简单的文件传输协议,使用UDP传输
FTP相对tftp复杂些,使用TCP传输

所以TFTP不如FTP可靠些,不过简单嘛,速度要快点~

之前也想使用DSFTP的,但是只能通过WFC进行连接,我的IDSL用不了,而且它的作者比较不厚道(不开源),我没法修改,所以只能稍微动动手自己制作一个了。

TOP

这个MS很少有人用。

即使是我,有时自制软件更新,须频繁插拔烧录卡,也懒得用啊!

TOP

呵呵,我就是嫌频繁插拔烧录卡太烦琐了~
现在有了这个东西,我调试代码起来就很舒服了,等以后慢慢的更新吧,希望简化一下设置操作方法以及提高上传文件容量,到时候DPG和游戏ROM都不用拔插烧录卡了:yoci3:

TOP

回复 #5 samguns 的帖子

期待你的更新!
期待你更多的软件发布!

TOP

谢谢:)
欢迎大家试用,也欢迎提出使用过程中的任何问题或者其他建议~

[ 本帖最后由 samguns 于 2007-6-18 12:26 AM 编辑 ]

TOP

支持!

TOP

"实际测试过程中发现每次上传的文件如果超过15M左右就会停止上传,初步猜测是dswifi lib中UDP支持有点问题(原本还希望通过dstftp上传ROM,现目前的话只能通过dstftp上传些小的ROM或MP3到NDS上了"……

这应该不是楼主所说情况。这是TFTP协议的性能所限。

偶因为工作的原因看过TFTP协议,应该是这样的:
TFTP是俗称普通(小)文件传输协议。TFTP协议规定TFTP DATA 帧的block data字段的长度为0~512字节;block number为2字节(2^16=65536)。
所以,文件读写时最多能被拆分为65535个块,也就时说:
理论上最大能够传输的文件大小是65535×512=33 553 920字节;实际应用中传输的文件大小不应超过16 776 704(65535/2*512)字节(当块编号被表示成有符号的16位整数时)。

所以,楼主所遇到的“超过15M左右就会停止上传”的原因就在于此……

TOP

好强.......:tu024:

TOP

强人就是不一样的啊!期待作品的完美啊!

TOP

回复 #9 aliwado 的帖子

非常感谢aliwado~
的确如你所说,TFTP因为那个block number的容量决定了所能传输文件有所限制。谢谢提醒!
不过这个传输过程中会停止还有别的原因,因为我实际使用时候不一定是最终到达限制时发生,有时候几MB,有时候几十MB~
另外关于dstftp,还有一个可以说说的:
根据RFC2348 ,tftp的blocksize可以作为read/write request的一个option,从而突破最大512的限制,而这里的DSTFTP是支持RFC2348的 (试想,如果blocksize设置到32000,那可以传输的文件就可以完全通吃1024Mbits的游戏ROM或者DPG了,哈哈)。
顶楼那个3CDaemon的上传图片上我有个注释,blocksize = 1024,主要是dswifi lib不支持IP报文分片重组,不能设置太大。

也许今后可以考虑剥离掉dswifi lib中的TCP/IP协议栈,换个更全面一点的,比如lwIP,最终可以实现用tftp往NDS中传输上G的文件。

TOP

嗯,楼主的想法不错,把blocksize设置到32000,如果能突破的话是最好了。

但是,据我所知,普通的以太帧最长也就1536字节了吧(而且包含ip包头和udp包头的开销)。
所以,blocksize是不可能大于这个数字吧!?

不过无线的我没做过,但是,如果是over Ethernet的话,我想原理应该是一样的,只是物理通道不一样而已。

楼主可以在tftp的基础上把block number给定义大一点,然后对tftp的服务端口69进行修改,应该就可以传输大文件吧,只不过这样改了之后就不符合tftp标准协议了 。注意服务器和客户端都得改。(呵呵,以上是个人看法哈)。

到时候我也去买个神卡来烧游戏和电影了,呵呵。

TOP

谢谢了!

TOP

回复 #13 aliwado 的帖子

是的,ethernet的帧有限制,所以在TCP/IP协议中,IP层就会对上层(TCP/UDP)数据包分片以及重组

TOP

进来看看!

TOP

进来看看!谢谢了!

TOP

回帖美德!

TOP

开始还行,后来就天书鸟
想支持……可是wifi卡好贵 我是不会买的拉

TOP

太强了!!!!!!!!!!!!

TOP

发新话题