研究了3天,今天终于可以通过web下载文件到串行flash中了,这个虽然很简单,但是首先得理解代码然后修改,其实我总共也就改了1行代码而已。毕竟基本框架已经有现成的了。但是组长还是坚持用tftp方式实现在线升级,目的是方便以后维护,添加板子测试。web难于维护,而且占地大。虽然很多道理,但是我想所有的应用都应该给予用户角度考虑,我在做EtherMux V4在线升级时,让客户使用过在线升级,操作起来很是复杂,如果没有文档很难自主完成。但是如果是web的在线升级,我想不用教谁都会应该。对于扩充功能和维护考虑,我想也应该不是很难的。如果不想添加网页可以添加telnet程序,代码多不了多少。对于备份程序我想这个功能不是很有必要,应该可以给客户两个版本,如果想用老版本,只是从新升级回老版本就可以了。
我可以这么做,在telnet在线升级的基础上添加个宏控制打开web_interface,同时使用两种在线升级方式,只有结果才能改变看法,我把两种都实现最后由组长定夺,实现web_interface也很简单。
如果是从bootrom直接启动那么可以把程序直接下载到flash2去,实现升级。
添加串行flash的目的是为了程序在flash中运行过程中是看不到another flash的,所以只能先把程序download到sf中,然后启动时从sf中copy到flash2中实现启动。
我先实现在bootrom中下载程序到sf中,然后添加个copy到flash2并启动的选项。这个功能实现后才能在线升级。
DESCRIPTION: This function is called to complete initialisation of the
TFTP state structure. Before calling this function, some
fields in the struct tftp_state must be set up as follows:
ts->state = <0 for read, 1 for write>
ts->buf_addr = <physical address of xmem buffer>
ts->buf_len = <length of physical buffer, 0-65535>
ts->my_tid = <UDP port number. Set 0 for default>
ts->sock = <address of UDP socket (udp_Socket *)>
ts->rem_ip = <IP address of TFTP server host>
ts->mode = <one of the following constants:
TFTP_MODE_NETASCII ASCII text
TFTP_MODE_OCTET 8-bit binary
TFTP_MODE_MAIL Mail>
strcpy(ts->file, <remote filename or mail address>)
rabbit编译器的命令行参数:
http://www.rabbitsemiconductor.com/documentation/docs/manuals/DC/DCUserManual/cmdlined.htm
查任何资料可以直接在rabbit网站直接搜索:
http://www.rabbitsemiconductor.com/