存储介质的数据读取方法和设备的制造方法_3

文档序号:8543445阅读:来源:国知局
比如read_10命令,以对nand flash进行读操作;读取命令中携带上位机根据存储有预制内容的块的个数生成的LBA、以及需要读取的数据量的信息;
[0074]读取命令中携带的LBA的值为O到步骤24中手持设备发送的mtd分区中存储有预制内容的块的个数之间的整数,比如,mtd分区中存储有预制内容的块的个数为5,上位机若需要读取mtd分区中第I个块的内容,则读取命令中携带的LBA的值为1,若需要读取mtd分区中第2个块的内容,则读取命令中携带的LBA的值为2,依次类推。读取命令中携带的需要读取的数据量为nand flash中页大小或页大小的整数倍,因为是以页为单位读取nand flash中的数据。read_10命令是代码为0x28的scsi命令;
[0075]手持设备将读取命令中携带的LBA转换为nand flash上的地址偏移量,并获得上位机需要读取的数据量的大小,转换后的地址偏移量指向上位机需要读的mtd分区中存储有预制内容的块,转换方法如下:由于nand flash的块大小一般为2048byte或4096byte,LBA为块的个数,则转换后的地址偏移量等于LBA乘以mtd分区中一个块的大小。
[0076]步骤26:手持设备根据步骤20中记录的坏块的信息,判断当前地址偏移量指向的块是否为好块,若是,则到步骤27,否则,到步骤28 ;
[0077]步骤27:手持设备读取当前地址偏移量指向的块中一个页大小的预制内容,将读取的预制内容放入缓存区,到步骤29 ;
[0078]步骤28:将当前的地址偏移量更新为当前块的下一个好块的地址偏移量,返回步骤27 ;
[0079]步骤29:通过USB将缓存区中的预制内容发送给上位机;
[0080]步骤30:手持设备判断当前的读操作是否完成,即判断是否已传输完上位机需要读取的数据量,若是,则到步骤31,否则,到步骤32:
[0081]这里,手持设备判断当前的读操作是否完成,具体为:更新需要读取的数据量,更新后的需要读取的数据量等于更新前的需要读取的数据量-本次读取的数据量;若更新后的需要读取的数据量等于0,则当前的读操作完成,否则未完成。
[0082]步骤31:手持设备向上位机发送读操作完成命令,通知上位机此次读操作完成,本流程结束;
[0083]步骤32:将当前的地址偏移量进行更新,更新后的地址偏移量等于更新前的地址偏移量减去页大小,返回步骤26。
[0084]本实施例中的手持设备可以采用Iinux 2.6版本的操作系统,nand flash的页大小为2kB,总容量为512MB。
[0085]本实施例通过直接访问nand flash的方法,配合对scsi命令的配置,使得上位机顺利得到其所需数据,从而完整的读出mtd分区的所有预制内容,以cdrom的方式呈现给用户。由于cdrom只读的特性,所以不会直接对nand flash进行写操作,也就无需对预制内容增加负载均衡算法。通过预制内容到nand flash的操作,降低了手持设备的成本,提供友好的使用方式给用户,扩展了 USB的使用方法。
[0086]参见图3,本发明实施例还提供一种手持设备,包括存储介质,该存储介质包含至少一个存储器工艺设备mtd分区,每个mtd分区包含至少一个块,每个块包含至少一个页;该手持设备还包括:
[0087]信息获取单元31,用于在该手持设备通过通用串行总线USB与上位机连接后,获取该手持设备的存储介质中存储有预制内容的mtd分区的地址,根据该地址信息得到所述mtd分区中存储有所述预制内容的块的信息;
[0088]信息上报单元32,用于接收上位机的查询命令,将所述块的信息上报给上位机;
[0089]数据读取上报单元33,用于接收上位机的读取命令,该读取命令中携带上位机根据所述块的信息生成的逻辑块地址LBA信息,确定该LBA信息所指向的所述mtd分区中的块,读取确定的块中存储的预制内容,并将读取的预制内容通过USB传输给上位机。
[0090]进一步的,该手持设备还包括:
[0091]类型上报单元34,用于在该手持设备通过USB与上位机连接后、且获取该手持设备的存储介质中存储有预制内容的mtd分区的地址之前,在上位机对该手持设备的枚举过程中通知上位机该手持设备的设备类型为只读类型。
[0092]进一步的,所述信息获取单元31包括:
[0093]内核层单元,在该手持设备通过通用串行总线USB与上位机连接后,向用户层单元上报USB插入事件;接收用户层单元发来的mtd分区的地址,执行对该地址对应的mtd分区的读操作,得到所述mtd分区中存储有所述预制内容的块的信息。
[0094]用户层单元,用于接收到所述USB插入事件后,从维护的mtd分区列表中读取存储有预制内容的mtd分区的地址,并将读取到的mtd分区的地址发送给内核层单元。
[0095]进一步的,所述信息上报单元32在将所述块的信息上报给上位机的同时,还将所述存储介质的页的信息发送给上位机;所述读取命令中还携带上位机根据所述页的信息生成的需要读取的数据量的信息;
[0096]所述数据读取上报单元33还用于:在将读取的预制内容通过USB传输给上位机后,根据所述数据量的信息判断是否已传输上位机需要读取的数据量,若是,则向上位机发送读操作完成命令,否则,继续进行预制内容的读取,并将读取的预制内容通过USB传输给上位机,直到传输给上位机的数据量达到所述需要读取的数据量。
[0097]进一步的,该手持设备还包括:
[0098]坏块标记单元35,用于在手持设备在通过USB与上位机连接之前,获取该手持设备的存储介质中存储有预制内容的mtd分区的地址,对该地址对应的mtd分区进行扫描,根据扫描结果确定该mtd分区中的坏块,并记录坏块的信息;
[0099]所述数据读取上报单元33还用于:在确定该LBA信息所指向的所述mtd分区中的块之后、并且读取确定的块中存储的预制内容之前,根据记录的坏块的信息,判断该LBA信息所指向的块是否为坏块;在判断该LBA信息所指向的块不为坏块时,读取确定的块中存储的预制内容。
[0100]进一步的,所述数据读取上报单元33还用于:
[0101]在判断该LBA信息所指向的块为坏块时,确定该LBA信息所指向的块的下一个未被标记为坏块的块,读取该块中存储的预制内容,并将读取的预制内容通过USB传输给上位机。
[0102]进一步的,所述存储介质为nand flash。
[0103]综上,本发明的有益效果包括:
[0104]本发明实施例提供的方案中,手持设备在通过USB与上位机连接后,获取该手持设备的存储介质中存储有预制内容的mtd分区的地址,根据该地址信息得到该mtd分区中存储有预制内容的块的信息,在接收到上位机的查询命令后,将该块的信息上报给上位机,在接收到上位机的读取命令后,确定该读取命令中携带的根据该块的信息生成的LBA信息所指向的存储有预制内容的块,读取该块中存储的预制内容,并将读取的预制内容通过USB传输给上位机。可见,本方案中实现了上位机对手持设备中的存储介质的读取操作,并且该过程中不需要加载fat文件系统,从而解决了手持设备中的存储介质由于无法加载fat文件系统而无法作为USB挂载介质与上位机进行通信的问题。
[0105]本发明利用cdrom只读的特点,通过USB、cdrom直接挂载mtd分区的通路,建立了上位机通过USB直接访问nand flash的通路,使得大容量的nand flash可
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1