cnmmd
驱动牛犊
驱动牛犊
  • 注册日期2004-03-15
  • 最后登录2018-05-26
  • 粉丝0
  • 关注0
  • 积分62分
  • 威望48点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
  • 社区居民
阅读:2110回复:1

SST-49lf004b Flash Bios 的问题

楼主#
更多 发布于:2005-04-21 09:21
我正在开发基于 VIA epia-nl 主板(南北桥:cn400-wt8237)的flash bios update。用的是 sst 49lf004b的 4Mbit firmware flash.

更新的思路是:
做一个驱动。将物理内存 0xfff8 0000 通过MmMapIoSpace映射后,对其读写。

现在遇到的情况是:
用award开发的windows下的flash bios update 软件 WinFlash来更新bios后(成功更新),再用我的软件重新更新,也能成功。
但是,如果开机后,不用WinFlash更新,直接用我的软件更新,则不成功。

所以我们总结是WinFlash为我们打开了某些必须的开关,他退出的时候没有关掉,我们的软件占了他的光后,就可以成功了。

现在就是不知道他打开了哪些我们没有打开过的开关。


在写之前,我们已经将pci 南桥方面的工作都做好了,什么rom 可写,关闭写保护之类的。

现在我比较疑惑的是,sst49lf004b 的 DataSheet 上,有关于 Block Lock的东西没有做过。

但是,datasheet上的说明是:

Memory Map Register Address
 ffb8 0000 ~  ffbf 0000
我们没法访问这个区域。

不知道要访问这个区域,需要做些什么操作?
LuckLrp54321
驱动牛犊
驱动牛犊
  • 注册日期2004-05-09
  • 最后登录2007-01-03
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-05-31 09:03
楼上的,请看看为何我的以下代码不执行
          *(MapAddress+0x5555)=(UCHAR)0xAA;
*(MapAddress+0x2AAA)=(UCHAR)0x55;
*(MapAddress+0x5555)=(UCHAR)0x90;

for(int i=0;i<3000;i++);
ManufacturerID=*MapAddress;
DeviceID=*(MapAddress+1);
*(MapAddress+0x5555)=(UCHAR)0xAA;
*(MapAddress+0x2AAA)=(UCHAR)0x55;
*(MapAddress+0x5555)=(UCHAR)0xF0;
游客

返回顶部