2535|3

88

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

请教关于增大nor FLASH的地址变化问题 [复制链接]

shuiyan大侠:
您在我的另一个帖子中:
“NOR是线性寻址的,所以其实是不需要初始化的。只是CE下有block设备的统一接口,所以会在eboot中将其按照标准block设备配置一下,定义好对应的block size, page size, block num等等。换nor的话,这里会有改动的。

另外,虚拟地址空间映射肯定要改,要将原来的32M空间增加为64M空间,这样系统才知道可用的ROM区的实际大小。不改的话,系统还是只认低32M的。”


请问shuiyan大侠:
原来定义的(32M-J3C):
--------------------------------------32M-----------------------------------------------------
在D:\WINCE420\PLATFORM\MCORE\inc\Bvd1BD.inc中
; Mainstone (on PDC): nCS0: Boot ROM (32MB FLASH)
;
BOOT_FLASH_BASE_PHYSICAL        EQU                0x00000000
BOOT_FLASH_BASE_C_VIRTUAL        EQU                0x80000000
BOOT_FLASH_BASE_U_VIRTUAL        EQU                (BOOT_FLASH_BASE_C_VIRTUAL + CACHED_TO_UNCACHED_OFFSET)
                                                其中CACHED_TO_UNCACHED_OFFSET = 0x20000000
在D:\WINCE420\PLATFORM\MCORE\inc\MemMap.inc
OEMAddressTable中:

    DCD BOOT_FLASH_BASE_C_VIRTUAL,  BOOT_FLASH_BASE_PHYSICAL,  32  ;(8000 0000, 0000 0000)  nCS0: BOOT ROM

-----------------------------------------------------------------------------------------------

现在定义的64Mnor flash (p33):
    新改的FLASH从J3C(32M)变为P33(64M)
      硬件改变影响软件的部分只有:原来J3C的地址线从MA1---MA24,现在的P33的地址是从MA1---MA25
那么我在OEMAddressTable中需要怎么修改才能“将原来的32M空间增加为64M空间,这样系统才知道可用的ROM区的实际大小”呢??
难道就仅仅将“32”变成“64”
虚拟地址是否需要修改?
因为我看您的是:// Mainstone: (on PDC): nCS0: Boot FLASH (32MB)
#define BOOT_FLASH_BASE_PHYSICAL            0x00000000
#define BOOT_FLASH_BASE_C_VIRTUAL          0x9CA00000
#define BOOT_FLASH_BASE_U_VIRTUAL          (BOOT_FLASH_BASE_C_VIRTUAL + CACHED_TO_UNCACHED_OFFSET)
————————————————————————————————————————————————————————————
非常感谢!!!

最新回复

wcg
要想将NOR的空间提交给系统,并且在系统中能够识别、使用,就必须在驱动层将NOR配置成标准BLOCK设备,使用的是FMD接口。其中关键的参数就是 sector_size, bytes_per_block,一般SECTOR_SIZE定义成512,这样系统就可以对其进行sector等级的操作。其实这是兼容硬盘参数的配置。 1. BOOT_FLASH_BASE的物理地址不需要修改,虚拟地址也不需要,这两个只是表示“起始”地址。 2. 在OEMAddressTable中将32MB改成64MB,这样才能在虚拟内存地址中保留足够的地址空间。 3. 如果希望系统启动时,自动将NOR的剩余空间作为fat32加载,那么eboot中,OEMPlatformInit里面需要将NOR进行一下初始化,配置好对应的SECTOR, block的size,BlockNum,然后在OEMLaunch()的OpenPatition里面,除了Format开始部分的BINFS格式,还要将剩余的空间都格式化成FAT32格式,这时就需要sector/block这些参数了。 4. 在进入kernel了,驱动里面,仍然需要将NOR加载一次,仍然是强调要将sector/block设置好。因为大容量NOR的sector肯定大于512字节,那么就需要处理对应的FMD_READ/FMD_WRITE等函数,将其分解成512 bytes的sector进行操作。这些工作都是为了配合CE标准的FMD接口,以及常用的FAT32格式来进行的。 也就是说:根据这些配置参数,就能算出flash的空间是32MB还是64MB。FLASH_SIZE = BlockNum * BytesPerBlock。  详情 回复 发表于 2009-2-18 15:56
点赞 关注

回复
举报

76

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
从我的OEMAddressTable中:
    DCD BOOT_FLASH_BASE_C_VIRTUAL,  BOOT_FLASH_BASE_PHYSICAL,  32  ;(8000 0000, 0000 0000)  nCS0: BOOT ROM
看BOOT_FLASH_BASE_PHYSICAL = 0x00000000

那么我现在修改了硬件上的连接线(原来J3C的地址线从MA1---MA24,现在的P33的地址是从MA1---MA25 )
物理地址(BOOT_FLASH_BASE_PHYSICAL)是否也需要修改呢??
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
不需要修改。
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

4
 
要想将NOR的空间提交给系统,并且在系统中能够识别、使用,就必须在驱动层将NOR配置成标准BLOCK设备,使用的是FMD接口。其中关键的参数就是
sector_size, bytes_per_block,一般SECTOR_SIZE定义成512,这样系统就可以对其进行sector等级的操作。其实这是兼容硬盘参数的配置。

1. BOOT_FLASH_BASE的物理地址不需要修改,虚拟地址也不需要,这两个只是表示“起始”地址。

2. 在OEMAddressTable中将32MB改成64MB,这样才能在虚拟内存地址中保留足够的地址空间。

3. 如果希望系统启动时,自动将NOR的剩余空间作为fat32加载,那么eboot中,OEMPlatformInit里面需要将NOR进行一下初始化,配置好对应的SECTOR, block的size,BlockNum,然后在OEMLaunch()的OpenPatition里面,除了Format开始部分的BINFS格式,还要将剩余的空间都格式化成FAT32格式,这时就需要sector/block这些参数了。

4. 在进入kernel了,驱动里面,仍然需要将NOR加载一次,仍然是强调要将sector/block设置好。因为大容量NOR的sector肯定大于512字节,那么就需要处理对应的FMD_READ/FMD_WRITE等函数,将其分解成512 bytes的sector进行操作。这些工作都是为了配合CE标准的FMD接口,以及常用的FAT32格式来进行的。

也就是说:根据这些配置参数,就能算出flash的空间是32MB还是64MB。FLASH_SIZE = BlockNum * BytesPerBlock。
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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