4513|7

51

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

BP_OpenPartition的疑问 [复制链接]


  1. *      dwStartSector - Logical sector to start the partition.  NEXT_FREE_LOC if none
  2. *          specified.  Ignored if opening existing partition.

  3. *      dwNumSectors - Number of logical sectors of the partition.  USE_REMAINING_SPACE
  4. *          to indicate to take up the rest of the space on the flash for that partition (should
  5. *          only be used when creating extended partitions).  This parameter is ignored
  6. *          if opening existing partition.
  7. ...
  8. HANDLE BP_OpenPartition(DWORD dwStartSector, DWORD dwNumSectors, DWORD dwPartType, BOOL fActive, DWORD dwCreationFlags)

复制代码


第一个参数说明是开始的Sector,第二个参数是Sector的数目
但是我看代码怎么好像是Page呢?


  1. hPart = BP_OpenPartition( (NK_START_BLOCK+1)*PAGES_PER_BLOCK,  // next block of MBR   
  2. SECTOR_TO_BLOCK_SIZE(FILE_TO_SECTOR_SIZE(dwBINFSPartLength))*PAGES_PER_BLOCK,  //align to block
  3.                               PART_BINFS,
  4.                               TRUE,
  5.                               PART_OPEN_ALWAYS);

复制代码

(NK_START_BLOCK+1)*PAGES_PER_BLOCK ?? NK_START_BLOCK 在s3c6410中为6,PAGES_PER_BLOCK = 64
算出来应该是前面总共的Pages偏移量才对啊,第二个参数不是也是算Pages的数目吗?

另外还有一个问题,eboot里面这个分区为什么从(NK_START_BLOCK+1)开始,+1做什么。
第一sector放uboot,第二sector放TOC,第3-6(4个)放eboot,要跳开1个sector做什么?






最新回复

学习了,正解  详情 回复 发表于 2010-5-4 18:59
点赞 关注

回复
举报

62

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
Page跟Sector是一个意思吧Page->block,Sector->block

eboot里面这个分区为什么从(NK_START_BLOCK+1)开始,+1做什么
加1的意思是不是NK_START_BLOCK是MBR,我猜的,不敢确定
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
1sector=512,1page=4*sector=2k,1block=64*page=128k
好像是这样的关系吧。
不过看了FMD_ReadSector、FMD_WriteSector等函数好像参数实际上也是用page的概念。
FMD_EraseBlock参数用的是Block的概念。
我的理解是这样。不知道对不对。
+1为了前面放MBR,有可能,这部分代码没看懂。不过MBR不是才512Byte吗?
说实在的,对于磁盘里面这些概念一直不清楚。
什么柱面啊,磁头啊,扇区啊....没什么概念。
哪位高手能简单介绍一下。


 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

4
 
硬盘由很多盘片(platter)组成,每个盘片的每个面都有一个读写磁头。如果有N个盘片。就有2N个面,对应2N个磁头(Heads),从0、1、2 开始编号。每个盘片被划分成若干个同心圆磁道(逻辑上的,是不可见的。)每个盘片的划分规则通常是一样的。这样每个盘片的半径均为固定值R的同心圆再逻辑上形成了一个以电机主轴为轴的柱面(Cylinders),从外至里编号为0、1、2……每个盘片上的每个磁道又被划分为几十个扇区(Sector),通常的容量是512byte,并按照一定规则编号为1、2、3……形成Cylinders×Heads×Sector个扇区。这三个参数即是硬盘的物理参数。
上层对应的是页
底层是块
这方面以前好像有个帖子专门说了
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

5
 
引用 3 楼 xilidecai 的回复:
硬盘由很多盘片(platter)组成,每个盘片的每个面都有一个读写磁头。如果有N个盘片。就有2N个面,对应2N个磁头(Heads),从0、1、2 开始编号。每个盘片被划分成若干个同心圆磁道(逻辑上的,是不可见的。)每个盘片的划分规则通常是一样的。这样每个盘片的半径均为固定值R的同心圆再逻辑上形成了一个以电机主轴为轴的柱面(Cylinders),从外至里编号为0、1、2……每个盘片上的每个磁道又被划……


先顶你~~呵呵


LZ应该已经很清楚了,从你这段解释中:
*      dwStartSector - Logical sector to start the partition.  NEXT_FREE_LOC if none
*          specified.  Ignored if opening existing partition.

*      dwNumSectors - Number of logical sectors of the partition.  USE_REMAINING_SPACE
*          to indicate to take up the rest of the space on the flash for that partition (should
*          only be used when creating extended partitions).  This parameter is ignored
*          if opening existing partition.
...
HANDLE BP_OpenPartition(DWORD dwStartSector, DWORD dwNumSectors, DWORD dwPartType, BOOL fActive, DWORD dwCreationFlags)






 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

6
 
HANDLE BP_OpenPartition(DWORD dwStartSector, DWORD dwNumSectors, DWORD dwPartType, BOOL fActive, DWORD dwCreationFlags)中:
这个函数是文件系统分区函数

StartSector:文件系统分区起始地址
dwNumSectors:这是长度了

注意这里是系统打印出来的时候 转成了逻辑地址
譬如:
CreatePartition: Start = 0x100, Num = 0xae00.
Log2Phys: Logical 0x100 -> Physical 0x500

这样有些厂家的BSP中EBOOT就可能存在问题(打印出来的信息与实际不符)
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

7
 
引用 3 楼 xilidecai 的回复:
硬盘由很多盘片(platter)组成,每个盘片的每个面都有一个读写磁头。如果有N个盘片。就有2N个面,对应2N个磁头(Heads),从0、1、2 开始编号。每个盘片被划分成若干个同心圆磁道(逻辑上的,是不可见的。)每个盘片的划分规则通常是一样的。这样每个盘片的半径均为固定值R的同心圆再逻辑上形成了一个以电机主轴为轴的柱面(Cylinders),从外至里编号为0、1、2……每个盘片上的每个磁道又被划……

有点懂了。

谢谢各位。不过就更觉得注释中Logical sector更不对。
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

8
 
引用 2 楼 accessysq 的回复:
1sector=512,1page=4*sector=2k,1block=64*page=128k
好像是这样的关系吧。
不过看了FMD_ReadSector、FMD_WriteSector等函数好像参数实际上也是用page的概念。
FMD_EraseBlock参数用的是Block的概念。
我的理解是这样。不知道对不对。
+1为了前面放MBR,有可能,这部分代码没看懂。不过MBR不是才5……


学习了,正解
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表