|
|
| | -文章搜索 - 最新文章 - | |
第41979篇:PCI-PCI桥在线读写EEPROM的技巧 |
| 发布时间:2006年5月19日 点击次数:645 |
| 来源: 作者:上海贝尔有限公司 王 江 |
PCI-PCI桥启动时,一般需要从EEPROM预读取配置数据。更改EEPROM中的数据一般需要专用的烧结器,这给调试过程带来不便。尤其是采用表贴封装的EEPROM。本文以Intel公司的Dec21554PCI-PCI桥为例,介绍一种在线读写EEPROM的方法。 EEPROM选用的是ATMEL公司生产的AT93LC66,4Kbit,按512×8bit组织。AT93LC66与Dec21554的硬件连线如图1所示。 Dec21554提供了一组寄存器,用于访问外接的串行ROM。寄存器位于CSR(控制状态寄存器组)空间中,基地址是PCI配置头部Secondary BAR2寄存器的值,文中定义为base。寄存器包括: ①ROM数据寄存器(RDR)。8位宽,用于存放读写数据。偏移地址是0x0CA。 ②ROM地址寄存器(RAR)。24位宽,偏移地址是0x0CC,比特分配如下:
操作码的意义: 01b——写(SROM_OpWrite); 10b——读(SROM_OpRead); 11b——擦; 00b——见操作码扩展位(SROM_OpGeneral)。 00b——写无效; 01b——全写; 10b——全擦; 11b——写有效(SROM_GeneralWriteEnable)。 操作码扩展位同时兼作地址的7、8位。该寄存器上电后的默认值为0x000400。 ③ROM控制寄存器(RCR)。各bit含义如表1所列。
寄存器8位宽,偏移地址是0x0CF。 为了读取串行ROM垢数据,必须首先清除ROM控制寄存器的ROM_START位,然后进行如下操作: ①在ROM地址寄存器中写入读取数据的地址(address),以及读数据操作码。代码为 PUT32(base+0xCC,address SROM_OpRead); ②在ROM控制寄存器中置ROM_START为1,开始读取; PUT8(base+0xCF,ROM_START); ③当ROM_START位为0时,ROM数据寄存器中的值就是读取的值; while(GET8(base+0xCF)&ROM_START)delay(1); value=GET8(base+0xCA); value就是读得的数据。那么,如何更改数据呢? 因为串行ROM在上电后,处于擦/写无效状态,所以在写数据之前,必须先设置擦/写为有效。步骤如下: ①在ROM地址寄存器中写入地址和操作码; PUT32(base+0xCC,SROM_OpGeneral SROM_GeneralWriteEnable); ②同时在ROM控制寄存器中设置ROM_START位为1; PUT8(base+0xCF,ROM_START); ③当ROM_START位为0时,操作完成; 一旦串行ROM擦/写有效后,就可以写数据了,步骤如下: ①在ROM地址寄存器中写入地址和操作码; PUT32(base+0xCC,address SROM_OpWrite); ②在ROM数据寄存器中写入8位数据; PUT8(base+0xCA,data); ③在ROM控制寄存器中置ROM_START位为1; PUT8(base+0xCF,ROM_START); ④当ROM控制寄存器中的ROM_START位为0时,将ROM_START位置为1,SROM_POLL位自动置为1,开始查询操作,以验证写操作是否完成; while(GET8(base+0xCF)&ROM_START)delay(4); PUT8(base+0xCF,ROM_START); while(GET8(base+0xCF)&ROM_START); ⑤SROM_POLL位显示了查询操作的状态。如果为1,串行ROM还要接着查询,否则,写操作完成。 While(GET8(base+0xCF)&SROM_POLL){ PUT8(base+0xCF,ROM_START); while(GET8(base+0xCF)&ROM_START); } 这样就完成了EEPROM的写操作过程。我们可以读出刚才写入的数据,验证是否写的正确。在调试过程中,只需要编写两个短小的读写程序,就可以解除经常使用烧写器带来的不例,提高调试效率。 |
|||||||||||||||||||||||||||||
|
|
|
[存储器] 相关文章: 基于闪烁存储器的TMS320VC5409DSP并行引导装载方法简介: 摘要: 闪烁存储器Am29LV400B的主要特点及编程方法;通过把FLASH的前32K映射到DSP TMS320VC5409的数据空间,按照自举表(Boottable)的格式在FLASH中存储程序代码,由DSP引导装载(Bootloader)程序实现了FLASH的16位并行引导装载;结合实例介绍了该引导装载方法的实现过程。 ...... 大容量串行FlashMM36SB010系列特点及应用 闪存LH28F160及基于DSP的编程写入 东芝卷入闪存侵权风暴,数亿赔付之余大量产品将要付诸东流 SanDisk和Micron为争霸主竞相并购Lexar |
|
|
|