一种嵌入式设备与pc机之间传输文件的方法

文档序号:6470988阅读:169来源:国知局
专利名称:一种嵌入式设备与pc机之间传输文件的方法
技术领域
本发明涉及嵌入式系统领域,尤其涉及一种嵌入式设备与PC坤几之间传
输文件的方法。
背景技术
嵌入式系统的开发、调试和实际应用中,经常需要在嵌入式设备和PC 机之间传输文件,包括从PC传输文件到嵌入式设备,和从嵌入式设备传输 文件到PC机,方便快捷的串口通信往往成为人们的首选。
在串口通信中,当需要从PC传输文件到嵌入式设备时, 一般的文件传 输过程是PC程序打开文件,获得文件大小,将大小值传输给嵌入式设备, 由嵌入式设备申请文件大小的緩存,接收从PC传输的数据,然后将数据写
入文件。
相似地,当需要从嵌入式设备传输文件到PC机时,也是由嵌入式设备 根据需要传输文件,申请文件大小的緩存,通过该緩存,向PC发送文件数据。
由于嵌入式设备上内存都不太大,当传输大文件时,在资源有限的嵌入 式设备上无法申请到足够的緩存。
现有技术中,出现这种问题可以改用USB接口来解决,但是使用USB 接口需要相应的硬件设备,在没有USB接口的情况下,上述问题就无法解决。

发明内容
本发明要解决的技术问题就是提出一种嵌入式设备与PC机之间传输文 件的方法,解决现有技术中嵌入式设备与PC机之间传输大文件时,有可能
无法申请到足够的緩存的问题。
为了解决上述技术问题,本发明提供一种嵌入式设备与PC机之间传输 文件的方法,嵌入式设备与PC机之间需要传输文件时,由PC机确定嵌入式
设备上需要申请的緩存大小,PC机根据该緩存大小申请嵌入式设备的緩存 后,嵌入式设备和PC机通过该緩存传输文件数据。
进一步地,所述方法包括如下步骤
(a) PC机选择需要传输的文件,获得文件大小;
(b) PC机确定嵌入式设备上需要申请的緩存大小,并根据该緩存大小 申请嵌入式设备的緩存;
(c) PC机将文件数据写入嵌入式设备的緩存;
(d) PC机将所述嵌入式设备緩存中的文件数据写入文件中;
(e) PC机判断是否写完,若未写完,则返回执行步骤(c);若写完, 则执行下一步;
(f) 释放所述申请的嵌入式设备的緩存。
进一步地,若是PC机传输文件到嵌入式设备,在所述步骤(c)中,将 PC机的文件数据写入嵌入式设备的緩存中;在所述步骤(d)中,将嵌入式 设备的緩存中的文件数据写入嵌入式设备的文件中。
进一步地,若是嵌入式设备传输文件到PC机,则所述步骤(b)中,还 在PC机本地分配与嵌入式设备上需要申请的緩存大'J、一样的緩存;在所述 步骤(c)中,将嵌入式设备的文件数据写入嵌入式设备的緩存中;在所述步 骤(d)中,先将嵌入式设备緩存中的文件数据写入PC机中的緩存中,再将 PC机中的緩存中的文件数据写入PC机的文件中;在所述步骤(f)中,还释 放PC机本地申请的緩存。
进一步地,所述步骤(d)中,PC机将所述嵌入式设备緩存中的文件数 据按指定的偏移写入文件中。
进一步地,嵌入式设备需要传输文件到PC机时,所述方法包括如下步

(A) PC机选择需要传输的文件,获得文件大小;
(B) PC机在本地分配文件大小的緩存,并确定嵌入式设备上需要申请 的緩存大小,根据该緩存大小申请嵌入式设备的緩存;
(C) PC机将文件数据写入嵌入式设备的緩存;
(D ) PC机将所迷嵌入式设备緩存中的文件数据按顺序写入PC机本地 的缓存中;
(E) PC机判断是否写完,若未写完,则返回执行步骤(C);若写完, 则执行下一步;
(F) PC机将本地緩存中的文件数据写入本地文件中;
(G) 释放PC机本地申请的緩存以及申请的嵌入式设备的緩存。
进一步地,若PC机申请嵌入式设备的緩存操作未成功,则PC机调整申 请緩存的大小,重新在嵌入式设备上申请较小的緩存。
进一步地,在传输文件过程中,若PC机接收到嵌入式设备的返回值表 示操作没有执行成功,则PC机重新执行相应命令,若执行两遍还不成功, 则报错退出。
进一步地,PC机根据分配策略确定嵌入式设备上需要申请的緩存大小, 所述分配策略为如下方式之一
(1) PC机申请固定大小的緩存;
(2) PC机先发送查询命令给嵌入式设备,嵌入式设备返回当前可申请 最大内存空间的大小,若需要传输的文件小于当前可申请最大内存空间的大 小,则申请的緩存大小等于需要传输的文件大小;若需要传输的文件大于当 前可申请最大内存空间的大小,则申请的緩存大小等于当前可申请最大内存 空间的大小。
进一步地,嵌入式设备与PC机之间传输文件使用的接口为串口或串行 外设接口 SPI或12(3 4秦口。
本发明中,PC机发起每个操作,主动发送命令,嵌入式设备被动响应命 令;由PC机来控制嵌入式设备上申请緩存的大小,对传输的文件大小没有任何限制;而且即使在传输文件的过程中,PC机插入了其它的命令,只要文 件传输的命令顺序不变,系统依然能够正常的运行。


图1是本发明实施例的传输文件流程图2是本发明实施例的嵌入式设备执行程序的流程图3是本发明应用实例的PC机传输文件到嵌入式设备的流程困;
图4是本发明应用实例的嵌入式设备传输文件到PC机的流程图。
具体实施例方式
本发明的核心思想是当需要传输文件时,由PC机确定嵌入式设备上 需要申请的緩存大小,PC机根据该緩存大小申请嵌入式设备的緩存后,嵌入 式设备和PC机通过该緩存传输文件数据。
申请的嵌入式设备上緩存可以小于需要传输文件的大小,这时只须将文 件数据分批、多次传输, 一次只传输緩存大小的数据即可,解决了现有技术 中无法传输大文件的问题。
下面结合附图及具体实施例对本发明进行详细说明。
在本发明中,通过PC机发送一系列命令,嵌入式设备接收并解析这些 命令,完成大批量数据的传输。
如图l所示,本发明实施例的传输文件的流程包括如下步骤
步骤101, PC机选择需要传输(下载或上传)的文件,获得文件大小;
步骤102, PC机根据分配策略确定嵌入式设备上需要申请的緩存大小, 称为BufSize,并向嵌入式设备申请BufSize大小的緩存;
其中,所述分配策略可以是
(1) PC机申请固定大小BufSize的缓存,比如,1OOK字节;
(2) PC机先发送查询命令给嵌入式设备,嵌入式设备返回当前可申请 最大内存空间的大小,若需要传输的文件小于当前可申请最大内存空间的大
小,则BufSize等于需要传输的文件大小;若需要传输的文件大于当前可申请 最大内存空间的大小,则BufSize等于当前可申请最大内存空间的大小;
步骤103, PC机将文件数据写入嵌入式设备的緩存,由于需要传输的文 件可能比BufSize大,所以一次最多传输BufSize大小的数据;如果是PC机 传输文件到嵌入式设备(下载),则将PC机的文件数据写入嵌入式设备的 緩存中;如果是嵌入式设备传输文件到PC机(上传),则将嵌入式设备的 文件数据写入嵌入式设备的緩存中;
步骤104,将所述嵌入式设备緩存中的文件数据按指定的偏移写入文件 中, 一般而言是追加到文件结尾;如果是PC机传输文件到嵌入式设备,则 将嵌入式设备的緩存中的文件数据写入嵌入式设备的文件中;如果是嵌入式 设备传输文件到PC机,则先将嵌入式设备緩存中的文件数据写入PC机中的 缓存中,再将PC机中的緩存中的文件数据写入PC机的文件中;
步骤105,判断是否写完,若未写完,则返回执行步骤103;若写完,则 执行下一步;
步骤106,文件传输完毕,释放所述申请的嵌入式设备的緩存。
由于要传输的文件可能较大,超过嵌入式设备能够提供的緩存大小,所 以在本发明中,BufSize小于等于需要传输的文件大小,当BufSize小于需要 传输的文件大小时,则需要将文件数据分批、多次传输, 一次只传输BufSize 大小,分成多次进行传输,这样步骤104 - 105可能重复多次执行,直到文件 传输完毕。
当嵌入式设备传输文件到PC机(上传)时,由于PC机上的内存一般较 大,可以在PC机本地申请文件大小的緩存,传输的时候将嵌入式设备緩存 中的文件数据按照顺序依次存放在该PC机本地的緩存中,最后再统一写入 文件中。
由于嵌入式设备与PC机之间使用串口较多,在本发明主要应用在嵌入 式设备与PC机之间使用串口传输文件,当然,本发明也可以应用如I2C , SPI (Serial Peripheral Interface,串行外设接口 )等其它接口中。
下面以具体的应用实例进行进一步阐述。
在应用实例中,首先定义多个命令如下
Vp—malloc <Size〉在PC机的程序上申请嵌入式设备上面的緩存,大小 为Size,申请成功后,嵌入式设备传输该緩存的首地址给PC机。
Vp—free <Addr>:在PC机上的程序释放嵌入式设备上申请的緩存,首地 址为Addr,释放成功后,嵌入式设备传输0,否则传输l给PC机。
Vp—WriteBuf <Addr〉 <Len>:在PC机上写嵌入式设备上面的緩存,緩存 首地址为Addr,数据长度为Len,数据在本命令传输完成一定时间(例如10ms) 后开始传输,这个数据的传输需要调用数据传输的函数;执行完成后,嵌入 式设备返回接收的长度给PC机。
Vp—ReadBuf <Addr> <Len>:在PC机上读嵌入式设备上的緩存,緩存首 地址为Addr,数据长度为Len。 PC机在发送完本命令后开始接收嵌入式设备 传来的数据,直到接收完Len长度的数据。
Vp—WriteFile <Addr> <Len> <FileName> <Offset> :在PC才几上写嵌入式 设备上面的文件,将嵌入式设备上从Addr地址处开始的Len长度的数据写入 到路径为FileName的文件的偏移为Offset的地方。执行成功嵌入式设备传输 0,否则传输l给PC机。
Vp—ReadFile <Addr〉 <Len> <FileName〉 <Offset〉在PC机上读嵌入式设 备上面的文件,将嵌入式设备上路径为FileName的文件、偏移为Offset、长 度为Len的数据读到首地址为Addr的緩存。执行成功嵌入式设备传输0,否 则传输l给PC机。
Vp一GetFileSize <FileName〉 PC机上的粗序获得嵌入式设备上路径为 FileName的文件的大小,嵌入式设备传输文件大小给PC机。
嵌入式设备程序的流程如图2所示,简单的接收命令,执行命令,传输 返回值给PC才几。
如图3所示,PC机传输文件到嵌入式设备包括如下步骤
步骤301, PC机选择要下载的文件,获得文件路径(path)和文件大小 (fileSize);
步骤302, PC机根据分配策略确定嵌入式设备上需要申请的緩存大小
(BufSize),发送Vp—malloc命令申请嵌入式设备上BufSize大小的緩存;
步骤303, PC机接收嵌入式设备发送返回值,获得嵌入式设备上緩存首 地址;
若緩存未申请成功,则有可能是因为申请的緩存太大,则PC机可以根 据需要,调整申请緩存的大小,重新在嵌入式设备上申请较小的緩存;
步骤304, PC机判断fileSize是否大于BufSize,若是,则设置WriteSize 等于BufSize ,否则,令WriteSize等于fileSize;可以使用程序语句WriteSize =(fileSize〉BufSize) BufSize: fileSize实现该功能;
步骤305, PC机发送Vp_WriteBuf命令传输WriteSize大小的文件数据到 嵌入式设备緩存;
步骤306, PC机接收嵌入式设备发送的返回值,若返回值表示已写入 WriteSize大小的文件数据,则执行下一步;
步骤307, PC机发送Vp_WriteFile命令将嵌入式设备緩存中按照指定的 偏移(Offset)写到文件中;其中,Offset初始值一般是0,每次写入文件后, 令Offset = Offset + WriteSize;
步骤308, PC机接收嵌入式设备发送的返回值,若返回值表示执行成功 (返回值为0),则执行下一步;
步骤309, PC机设置fileSize等于fileSize减去WriteSize;
步骤310, PC机判断fileSize是否等于O,若是,则执行下一步,否则, 返回执行步骤304;
步骤311, PC机发送Vp—free命令释放申请的嵌入式设备上的緩存;
步骤312, PC机接收嵌入式设备发送的返回值,若返回值表示执行成功 (返回值为0),则结束本流程。
在上述流程执行过程中,若PC机接收到的返回值表示没有执行成功, 则可以这样处理PC机重新执行相应命令,若执行两遍还不成功,则报错退 出本流程。
如图4所示,嵌入式设备传输文件到PC机包括如下步骤
步骤401, PC机选择上传的文件,发送Vp—GetRleSize命令给嵌入式设
备;
步骤402, PC机接收嵌入式设备发送返回值,获取待上传文件的大小 (fileSize);
步骤403, PC机根据分配策略确定嵌入式设备上需要申请的緩存大小 (BufSize),在PC机本地分配BufSize大小的緩存;
步骤404, PC机发送Vp_malloc命令申请嵌入式设备上BufSize大小的 緩存;
步骤405, PC机接收嵌入式设备发送的返回值,获得嵌入式设备上緩存 首地址;
步骤406, PC机判断fileSize是否大于BufSize,若是,则设置ReadSize 等于BufSize,否则,ReadSize等于fileSize;可以使用程序语句ReadSize = (fileSize>BufSize) BufSize: fileSize实现该功能;
步骤407, PC机发送Vp一ReadFile命令读取ReadSize大小的文件数据到 嵌入式设备緩存;
步骤408, PC机接收嵌入式设备发送的返回值,若返回值表示执行成功 (返回值为0),则执行下一步;
步骤409, PC机发送Vp_ReadBuf命令传输缓存中ReadSize大小的文件 数据到PC机;
步骤410, PC机接收ReadSize大小的文件数据,存入本地的缓存中;
步骤411, PC机将所述本地緩存中文件数据按指定的偏移写入本地文件 中, 一般而言是追加到文件结尾;
步骤412, PC机设置fileSize等于fileSize减去ReadSize;
步骤413, PC机判断fileSize是否等于O,若是,则执行下一步,否则, 返回执行步骤406;
步骤414, PC机释放本地申请的緩存;
步骤415, PC机发送Vp一free命令释放申请的嵌入式设备上的緩存;
步骤416, PC机接收嵌入式设备发送的返回值,若返回值表示执行成功 (返回值为0),则结束本流程。
在上述过程中,也可以在PC机本地申请文件大小的緩存,传输的时候 将文件数据按照顺序依次存放在该緩存中,最后再统一写入文件中,上述流 程中有如下修改
步骤403' , PC机在本地分配fileSize大小的緩存,并根据分配策略确定 嵌入式设备上需要申请的緩存大小(BufSize),
步骤410' , PC机接收ReadSize大小的文件数据,按顺序存入本地的緩 存中;
步骤411' , PC机设置fileSize等于fileSize减去ReadSize;
步骤412' , PC机判断fileSize是否等于O,若是,则执行下一步,否则, 返回执行步骤406;
步骤413' , PC机将本地缓存中的文件数据写入本地文件中;
其它步骤与图4的相同。
当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的 情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形, 但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
权利要求
1、一种嵌入式设备与PC机之间传输文件的方法,其特征在于,嵌入式设备与PC机之间需要传输文件时,由PC机确定嵌入式设备上需要申请的缓存大小,PC机根据该缓存大小申请嵌入式设备的缓存后,嵌入式设备和PC机通过该缓存传输文件数据。
2、 如权利要求l所述的方法,其特征在于,所述方法包括如下步骤(a) PC机选择需要传输的文件,获得文件大小;(b) PC机确定嵌入式设备上需要申请的緩存大小,并根据该緩存大小 申请嵌入式设备的緩存;(c) PC机将文件数据写入嵌入式设备的緩存;(d) PC机将所述嵌入式设备緩存中的文件数据写入文件中;(e) PC机判断是否写完,若未写完,则返回执行步骤(c);若写完, 则执行下一步;(f) 释放所述申请的嵌入式设备的緩存。
3、 如权利要求2所述的方法,其特征在于,若是PC机传输文件到嵌入 式设备,在所述步骤(c)中,将PC机的文件数据写入嵌入式设备的緩存中; 在所述步骤(d)中,将嵌入式设备的緩存中的文件数据写入嵌入式设备的文 件中。
4、 如权利要求2所述的方法,其特征在于,若是嵌入式设备传输文件到 PC机,则所述步骤(b)中,还在PC机本地分配与嵌入式设备上需要申请的 緩存大小一样的緩存;在所述步骤(c)中,将嵌入式i殳备的文件数据写入嵌 入式设备的緩存中;在所述步骤(d)中,先将嵌入式设备緩存中的文件数据 写入PC机中的緩存中,再将PC机中的缓存中的文件数据写入PC机的文件 中;在所述步骤(f)中,还释放PC机本地申请的緩存。
5、 如权利要求2所述的方法,其特征在于,所述步骤(d)中,PC机将 所述嵌入式设备緩存中的文件数据按指定的偏移写入文件中。
6、 如权利要求l所述的方法,其特征在于,嵌入式设备需要传输文件到 PC机时,所述方法包括如下步骤 (A) PC机选择需要传输的文件,获得文件大小;(B) PC机在本地分配文件大小的緩存,并确定嵌入式设备上需要申请 的緩存大小,根据该緩存大小申请嵌入式设备的緩存;(C) PC机将文件数据写入嵌入式设备的緩存;(D) PC机将所述嵌入式设备緩存中的文件数据按顺序写入PC机本地 的纟爰存中;(E) PC机判断是否写完,若未写完,则返回执行步骤(C);若写完, 则4丸行下一步;(F) PC机将本地緩存中的文件数据写入本地文件中;(G) 释放PC机本地申请的緩存以及申请的嵌入式设备的緩存。
7、 如权利要求2~6中任意一项所述的方法,其特征在于,若PC机申 请嵌入式设备的緩存操作未成功,则PC机调整申请緩存的大小,重新在嵌 入式设备上申请较小的緩存。
8、 如权利要求2~6中任意一项所述的方法,其特征在于,在传输文件 过程中,若PC机接收到嵌入式设备的返回值表示操作没有执行成功,则PC 机重新执行相应命令,若执行两遍还不成功,则报错退出。
9、 如权利要求1 6中任意一项所述的方法,其特征在于,PC机根据分 配策略确定嵌入式设备上需要申请的緩存大小,所述分配策略为如下方式之(1) PC机申请固定大小的缓存;(2) PC机先发送查询命令给嵌入式设备,嵌入式设备返回当前可申请 最大内存空间的大小,若需要传输的文件小于当前可申请最大内存空间的大 小,则申请的緩存大小等于需要传输的文件大小;若需要传输的文件大于当 前可申请最大内存空间的大小,则申请的緩存大小等于当前可申请最大内存 空间的大小。
10、 如权利要求1 6中任意一项所述的方法,其特征在于,嵌入式设备 与PC机之间传输文件使用的接口为串口或串行外设接口 SPI或I2C接口。
全文摘要
本发明公开了一种嵌入式设备与PC机之间传输文件的方法,嵌入式设备与PC机之间需要传输文件时,由PC机确定嵌入式设备上需要申请的缓存大小,PC机根据该缓存大小申请嵌入式设备的缓存后,嵌入式设备和PC机通过该缓存传输文件数据。本发明由PC机来控制嵌入式设备上申请缓存的大小,对传输的文件大小没有任何限制;而且即使在传输文件的过程中,PC机插入了其它的命令,只要文件传输的命令顺序不变,系统依然能够正常的运行。
文档编号G06F13/38GK101382926SQ20081022468
公开日2009年3月11日 申请日期2008年10月23日 优先权日2008年10月23日
发明者李栋梁, 游明琦, 国 艾 申请人:北京中星微电子有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1