烧写模块在本系统中的完整代码如下:
图3-13 烧写模块代码
为了确保烧写过程的顺利进行,首先关闭全局中断;然后利用MemCopy()函数将Flash API函数有Flash复制到SARAM中,之后调用的擦除、烧写和校验函数就是在SARAM中执行。利用Flash281x_API_Config.h中由目标DSP频率定义的时刻因数SCALE_FACTOR初始化Flash_CPUScaleFacter。由于本系统在烧写期间没有调用其他函数,所以Flash_Callback指针为NULL。接着开始烧写数据,利用循环语句执行最多三次烧写:先利用Flash_Erase()擦除FlashJ段中的数据,如果擦除成功,利用Flash_Program()将缓冲区的升级数据烧写进FlashJ段,此时需注意烧写的长度为实际的数据长度,而不是整个FlashJ段的长度,执行成功后使用Flash_Verify()检验数据是否烧写正确,如果正确就跳出循环,否则系统再次烧写升级数据,直到三次烧写都不成功,跳出烧写循环。
4 通信模块设计
4.1 通信芯片CP2200和TCP/IP协议栈简介
CP2200是美国Silicon Laboratories公司开发的一种高性能以太网控制器,集成了IEEE802.3以太网媒体访问控制器(MAC)、10Base—T物理层和实体层(PHY),片内有2 KB的发送缓存、4 KB的接收FIFO,FLASH 存储器容量为8 kB,这8kB闪存可用来存储使用者常数、网站服务器内容或作为通用的数据非易失内存,其最后6个数据单元存放工厂预编程的唯一48位MAC地址。CP2200还提供高性能的并行外部内存界面,可以为具有11个以上I/O引脚的任何微处理器增加以太网通信功能,并高效率驱动执行通讯协议或其他程序。8位并行接口支持INTEL及MOTORO—LA两种总线方式,可以工作在复用或非复用方式(由MUXEN位选择),在非复用模式下,数据传输速率最大超过30Mbps。
图4-1 CP2200芯片系统结构图
CP2200通过并行主机接口配置直接和间接寄存器。主机接口提供了一个8位大小的寻址空间。在该寻址空间内有114个可用的直接寄存器,通过直接寄存器可以访问RAM缓冲区、FLASH存储器、间接MAC配置寄存器和针对不同期间的状态和控制寄存器。
芯片初始化后,CP2200就准备好收发数据包。通过装载数据到发送缓冲区,利用“自动写”(Auto Write)寄存器并且在“TXGO”写“1”就可以发送数据,发送完成后,触发“数据包已发送”中断。当MAC允许接受数据包并且接受缓冲区未满时,CP2200芯片会自动完成数据包的接受。一旦收到一个数据包,就向主机申请“数据包已接收”中断。主机通过“自动读”接口读取该数据包。
传输控制协议/网际协议(TCP/IP协议)源于美国ARPA网,以及它的两个主要协议TCP和IP。实际上TCP/IP是多个独立定义的协议的集合。随着Internet在全世界得到广泛应用,Internet所采用的TCP/IP体系被称为一种“事实上的标准”[16]。TCP/IP参考模型包含4个层次:网络接口层、网际层、传输层和应用层。如图4-2所示。
应用层(HTTP,FTP等协议)
传输层(TCP和UDP协议)
网际层(IP、ICMP、ARP等协议)
网络接口层
图4-2 TCP/IP四层参考模型
这四层协议中网络接口层指各种通信网络,泛指任何一个能传输数据的通信系统。网际层使主机可以将IP数据报发往任何网络,并能独立地传向目的地。在该层定义了正式的IP数据报格式和协议,即IP协议,此外网际层还包含其他协议,比如网际控制报文协议ICMP、地址解析协议ARP等。传输层可提供可靠的端到端的数据传输,它确保源主机将数据报正确传送到目的主机。本层提供两个端到端的协议TCP和UDP,TCP是一个面向连接的协议,它允许一台机器发出的报文流无差错的发往网络上的其他机器。用户数据报协议UDP是一个不可靠、无连接协议,优势在于递交速度快。应用层协议包含远程登录协议(Telnet)、文件传输协议(FTP)等应用协议。 嵌入式设备的远程更新平台(7):http://www.youerw.com/zidonghua/lunwen_9473.html