基于usb和nandflash的数据打包和传输的方法

文档序号:7750039阅读:233来源:国知局
专利名称:基于usb和nand flash的数据打包和传输的方法
技术领域
本发明涉及一种基于USB和NAND FLASH的数据打包和传输的方法。
背景技术
在嵌入式系统的开发中,通常采用交叉编译的方法,首先在PC机上编辑、编译代 码,然后将生成的可执行文件及相应的系统配置文件通过某种接口(如JTAG、UART或USB 等)下载到目标平台上去运行、调试。USB是一种简单高速的传输接口,目前几乎所有的嵌 入式产品,如手机、媒体播放器等都支持USB传输。而NAND FLASH存储器具有容量大、读写 速度快且廉价的特点,在嵌入式产品中亦得到越来越广泛的应用。目前基于USB和NAND FLASH的数据传输多采用“流”的方式。现有的嵌入式系统 的开发中,首先在PC机上编辑、编译代码,然后将生成的可执行文件及相应的系统配置文 件通过USB接口以“流”的方式传输到目标平台上,待上述文件完全传至目标平台上时,再 进行分包处理存储于NAND FLASH,由于NAND FLASH处理相对PC机速度慢,且在传输过程中 若出现传输错误,则需要重传,因此传输时长较长,处理数据效率较低。

发明内容
本发明的目的在于提供一种基于USB和NAND FLASH的数据打包和传输的方法,具 高效、快速、便利的特点,可广泛应用于软件开发、工业生产及售后服务等领域。本发明一种基于USB和NAND FLASH的数据打包和传输的方法,包括以下具体步 骤步骤1、在主机上对原始数据按照NAND FLASH块的大小,以块的形式进行数据打 包,形成输出文件;步骤2、将输出文件从主机传输至目标平台;输出文件从主机传输到目标平台的过程中,先从文件头开始传输,文件头用于在 数据存储阶段计算当前文件存储的起始位置,目标平台收到一个文件头,表示一个新文件 传输的开始,并回传给主机“可以开始数据包传输”的指令;开始数据包传输时,主机先给目标平台发送一个包头,告诉目标平台当前数据包 的大小和校验和;目标平台接收到包头后,告诉主机可以传输数据,并开始从主机接收由包 头指定大小的数据量;然后开始采用和数据打包过程中相同的算法计算校验和,如果计算 出的校验和与包头中的校验和一致,则表示当前传输成功;若结果不一致,则表示当前传输 失败;当每个数据包传完之后,目标平台会回传给主机一个“传输成功与否”的指令,只有 在上一个数据包成功传输后,才开始传输下一个数据包,这样一个一个地依次传输数据包; 若平台回传给主机的指令为传输出错,则只需将传输出错的数据包重传,直至传输成功为 止;步骤3、所述的传输至目标平台的输出文件在NAND FLASH中采用分区存放的方式, 分区表存放在NAND FLASH的一个位置固定的特殊分区中,通过输出文件中文件头中的文件名,可以在分区表中查找对应的分区,决定其存储的起始地址.包头中的地址即是所属分区 中的偏移地址,由分区的起始地址和当前数据包的偏移地址计算出在NAND FLASH中的存储 地址,通过NAND FLASH驱动接口,将输出文件中的数据写入NAND FLASH中的正确地址。所述的在主机上对原始数据按照NAND FLASH块的大小,以块的形式进行数据打 包,形成输出文件,包括以下具体步骤(1)打开存储有原始数据的输入文件,将输入文件按照NANDFLASH块的大小进行 分包,获得数据包的个数以便进行计数控制;(2)创建完输出文件的文件头后,开始依次创建数据包;(3)依次从输入文件中读取一个NAND FLASH块大小的数据量,进行校验和计算, 填充包头和数据内容形成一个数据包写入输出文件中;(4)当开始创建最后一个数据包时,先从输入文件中读取剩余的数据量,进行校验 和计算,填充包头和数据内容形成数据包写入输出文件;(5)形成对应上述输入文件的输出文件,该输出文件的数据结构表示为文件头+ 包头1和数据内容+包头2和数据内容……+包头N和数据内容。当输入文件为多个时,对应该输入文件创建多个输出文件,将多个输出文件依次 拷贝在一起,形成如下所示的数据结构,则可进行批量的文件传输,该多个输出文件的数据 结构表示为文件头1+包头1和数据内容+包头2和数据内容……+包头N和数据内容+文 件头2+包头1和数据内容+包头2和数据内容……+包头N和数据内容……+文件头N+ 包头1和数据内容+包头2和数据内容……+包头N和数据内容。所述批量的文件传输,在一个大输出文件中包含有多个子输出文件,根据文件头 数据结构的定义,主机可以清楚地知道每个子输出文件在大输出文件中的起始位置和结束 位置,主机依次传输每个子输出文件至目标平台。本发明一种基于USB和NAND FLASH的数据打包和传输的方法,首先在主机上将输 入文件按照NAND FLASH块存储的特点处理并形成与NAND FLASH块存储相对应的输出文 件,然后将输出文件从主机传输至目标平台,传输过程中依次确认数据包传输是否成功,一 旦传输出错,则从传输出错处开始重传,使数据能快速、安全地传输,并且能实现多文件批 量传输;并且,由于该输出文件的数据结构和数据包与NANDFLASH块存储是一致且对应的, 所以该输出文件传输至目标平台后存储入NAND FLASH的数据处理过程会相对简单而快速, 不容易出错。


图1为本发明中基本文件的数据结构示意图;图2为本发明中多个基本文件依次拷贝在一起的数据结构示意图;图3为本发明中数据打包的流程图。以下结合附图和具体实施例对本发明作进一步详述。
具体实施例本发明一种基于USB和NAND FLASH的数据打包和传输的方法,主要包括以下几个步骤步骤1、在主机上对原始数据按照NAND FLASH块的大小,以块的形式进行数据打 包,形成输出文件;首先,在主机(PC)上对编缉好的程序(即原始数据)以块的形式进行分包,如图 3所示的数据打包流程如下(1)打开存储有原始数据的输入文件,将输入文件按照NANDFLASH块的大小进行 分包,获得数据包的个数以便进行计数控制;(2)创建完输出文件的文件头后,开始依次创建数据包;(3)依次从输入文件中读取一个NAND FLASH块大小的数据量,进行ECC校验和计 算,填充包头和数据内容形成一个数据包写入输出文件中;(4)当开始创建最后一个数据包时,先从输入文件中读取剩余的数据量,进行ECC 校验和计算,填充包头和数据内容形成数据包写入输出文件;(5)形成对应上述输入文件的输出文件,该输出文件的数据结构如图1所示,表示 为文件头+包头1和数据内容+包头2和数据内容……+包头N和数据内容。当输入文件为多个时,对应该输入文件创建多个输出文件,将图1中的多个输出 文件依次拷贝在一起,形成如图2所示的数据结构,则可实现批量传输。该多个输出文件的 数据结构表示为文件头1+包头1和数据内容+包头2和数据内容……+包头N和数据内容+文 件头2+包头1和数据内容+包头2和数据内容……+包头N和数据内容……+文件头N+ 包头1和数据内容+包头2和数据内容……+包头N和数据内容。步骤2、将输出文件从主机传输至目标平台;当输出文件开始从主机(PC)传输到目标平台时,先从文件头开始传输,文件头用 于在数据存储阶段计算当前文件存储的起始位置,目标平台收到一个文件头,表示一个新 文件传输的开始,并回传给主机“可以开始数据包传输”的指令。开始数据包传输时,主机先给目标平台发送一个包头,告诉目标平台当前数据包 的大小和校验和;目标平台接收到包头后,告诉主机可以传输数据,并开始从主机接收由包 头指定大小的数据;然后开始采用和数据打包过程中相同的算法计算校验和,如果计算出 的校验和与包头中的校验和一致,则表示当前传输成功;若结果不一致,则表示当前传输失 败;当每个数据包传完之后,平台会回传给主机一个“传输成功与否”的指令,只有在上一个 数据包成功传输后,才开始传输下一个数据包,这样一个一个地依次传输数据包;若平台回 传给主机的指令为传输出错,则只需将传输出错的数据包重传,直至传输成功为止。例如, 如果成功传了 3个数据包,若第4个数据包出错,则下次传输从第4个数据包开始传。对于批量的文件传输,在一个大输出文件中包含有多个子输出文件。根据文件头 数据结构的定义,主机可以清楚地知道每个子输出文件在大输出文件中的起始位置和结束 位置,主机按以上传输的方式,依次处理每个子输出文件,即可实现多文件的批量传输。步骤3、将传输至目标平台的输出文件存储至NAND FLASH中;该传输至目标平台的输出文件在NAND FLASH中采用分区存放的方式,分区表存放 在NAND FLASH的一个位置固定的特殊分区中,并且分区表也可作为一个文件通过以上方式下载,从而对分区表进行更新。通过输出文件中文件头中的文件名,可以在分区表中查找对 应的分区,决定其存储的起始地址.包头中的地址即是所属分区中的偏移地址,由分区的 起始地址和当前数据包的偏移地址计算出在NAND FLASH中的存储地址,通过NAND FLASH 驱动接口,将输出文件中的数据写入NAND FLASH中的正确地址。 本发明的重点在于首先在主机上将输入文件按照NAND FLASH块存储的特点处 理并形成与NAND FLASH块存储相对应的输出文件,然后将输出文件从主机传输至目标平 台,传输过程中依次确认数据包传输是否成功,一旦传输出错,则从传输出错处开始重传, 使数据能快速、安全地传输,并且能实现多文件批量传输;该输出文件传输至目标平台后, 该输出文件中的数据包依照与NAND FLASH对应的位置存储入NANDFLASH中。
权利要求
1.一种基于USB和NAND FLASH的数据打包和传输的方法,其特征在于包括以下几个步骤步骤1、在主机上对原始数据按照NAND FLASH块的大小,以块的形式进行数据打包,形 成输出文件;步骤2、将输出文件从主机传输至目标平台;输出文件从主机传输到目标平台的过程中,先从文件头开始传输,文件头用于在数据 存储阶段计算当前文件存储的起始位置,目标平台收到一个文件头,表示一个新文件传输 的开始,并回传给主机“可以开始数据包传输”的指令;开始数据包传输时,主机先给目标平台发送一个包头,告诉目标平台当前数据包的大 小和校验和;目标平台接收到包头后,告诉主机可以传输数据,并开始从主机接收由包头指 定大小的数据量;然后开始采用和数据打包过程中相同的算法计算校验和,如果计算出的 校验和与包头中的校验和一致,则表示当前传输成功;若结果不一致,则表示当前传输失 败;当每个数据包传完之后,目标平台会回传给主机一个“传输成功与否”的指令,只有在上 一个数据包成功传输后,才开始传输下一个数据包,这样一个一个地依次传输数据包;若平 台回传给主机的指令为传输出错,则只需将传输出错的数据包重传,直至传输成功为止;步骤3、所述的传输至目标平台的输出文件在NAND FLASH中采用分区存放的方式,分 区表存放在NAND FLASH的一个位置固定的特殊分区中,通过输出文件中文件头中的文件 名,可以在分区表中查找对应的分区,决定其存储的起始地址.包头中的地址即是所属分 区中的偏移地址,由分区的起始地址和当前数据包的偏移地址计算出在NAND FLASH中的存 储地址,通过NAND FLASH驱动接口,将输出文件中的数据写入NAND FLASH中的正确地址。
2.根据权利要求1所述的一种基于USB和NANDFLASH的数据打包和传输的方法,所述 的在主机上对原始数据按照NAND FLASH块的大小,以块的形式进行数据打包,形成输出文 件,包括以下具体步骤(1)打开存储有原始数据的输入文件,将输入文件按照NANDFLASH块的大小进行分包, 获得数据包的个数以便进行计数控制;(2)创建完输出文件的文件头后,开始依次创建数据包;(3)依次从输入文件中读取一个NANDFLASH块大小的数据量,进行校验和计算,填充 包头和数据内容形成一个数据包写入输出文件中;(4)当开始创建最后一个数据包时,先从输入文件中读取剩余的数据量,进行校验和计 算,填充包头和数据内容形成数据包写入输出文件;(5)形成对应上述输入文件的输出文件,该输出文件的数据结构表示为文件头+包头 1和数据内容+包头2和数据内容……+包头N和数据内容。
3.根据权利要求2所述的一种基于USB和NAND FLASH的数据打包和传输的方法,其特 征在于当输入文件为多个时,对应该输入文件创建多个输出文件,将多个输出文件依次拷贝 在一起,形成如下所示的数据结构,则可进行批量的文件传输,该多个输出文件的数据结构 表示为文件头1+包头1和数据内容+包头2和数据内容……+包头N和数据内容+文件头 2+包头1和数据内容+包头2和数据内容……+包头N和数据内容……+文件头N+包头1和数据内容+包头2和数据内容……+包头N和数据内容。
4.根据权利要求3所述的一种基于USB和NAND FLASH的数据打包和传输的方法,其特 征在于所述批量的文件传输,在一个大输出文件中包含有多个子输出文件,根据文件头数 据结构的定义,主机可以清楚地知道每个子输出文件在大输出文件中的起始位置和结束位 置,主机依次传输每个子输出文件至目标平台。
全文摘要
本发明一种基于USB和NAND FLASH的数据打包和传输的方法,首先在主机上将输入文件按照NAND FLASH块存储的特点处理并形成与NAND FLASH块存储相对应的输出文件,然后将输出文件从主机传输至目标平台,传输过程中依次确认数据包传输是否成功,一旦传输出错,则从传输出错处开始重传,使数据能快速、安全地传输,并且能实现多文件批量传输;并且,由于该输出文件的数据结构和数据包与NAND FLASH块存储是一致且对应的,所以该输出文件传输至目标平台后存储入NAND FLASH的数据处理过程会相对简单而快速,不容易出错。
文档编号H04L29/08GK101997646SQ201010186549
公开日2011年3月30日 申请日期2010年5月25日 优先权日2010年5月25日
发明者肖乐 申请人:锐骐(厦门)电子科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1