6.4 SMFI

Shared Memory Flash Interface Bridge

6.4.1概述

Bridge提供主机访问共享内存。它还提供映射到主机域地址空间的EC代码地址空间,以及用于读/写保护的锁定机制。

6.4.2 特征

1)充当LPC/FWH存储设备(HLPC)

2)支持主机域和EC域之间的内存映射

3)支持读/写(编程/擦除)Flash操作和保护机制

4)支持两个共享内存访问路径:主机和EC

5)支持256KB/512KB的e-flash

6.4.3 功能描述

6.4.3.1 支持的接口

SMFI可以在连接到主机南桥的LPC总线上充当LPC/FWH存储设备,该功能简称为HLPC。

6.4.3.2 支持的FLASH

256KB/512KB e-flash

6.4.3.3 HLPC:主机转换

SMFI在主机总线和M总线之间提供HLPC接口。Flash被映射到主机存储器地址空间用于主机访问。Flash还被映射到EC存储器地址空间用于EC访问。

M总线事务由主机总线转换生成,具有以下三种类型:

1) 8-bit LPC Memory Read/Write

2) 8-bit FWH Read/Write

3) 8-bit Host-Indirect(间接) Memory Read/Write

LPC地址转换完成后,如果主机内存事务正在访问未受保护的区域,则将其转发到M-BUS(Flash接口)。在固件将1写入HOSTWA位SMECCS寄存器之前,主机端无法发出写入事务。

6.4.3.4  EC-Indirect(间接)Memory Read/Write Transaction(事务)

芯片的CPU可以访问整个flash地址范围。

发出EC- Indirect(间接)内存周期的固件代码应在临时ROM内执行。

这种访问方式对于

1)读取EC BIOS的FlashID

2)自定义Flash编程界面。

3)将额外的BIOS数据放在EC 64K之外。

· EC- Indirect(间接)存储器地址寄存器(ECINDAR3-0)

表示Flash地址 [31:0]。

· EC- Indirect(间接)存储器数据寄存器(ECINDDR)

表示Flash数据 [7:0]。

· EC- Indirect(间接)Read Mode

当ECINDAR3为00h时,EC固件可以从ECINDDR读取位于ECINDAR2-0组合的Flash地址的Flash字节。

· EC- Indirect(间接)Follow Mode

对于串行Flash,通过EC-Indirect跟随模式执行另一种访问全Flash的模式。

将0Fh写入ECINDAR3寄存器后, EC-Indirect跟随模式使能。

将00h写入ECINDAR3寄存器后,EC-Indirect跟随模式被禁用。

在EC-Indirect跟随模式

1. 将00h写入EC间接存储器地址FFFF_FExxh会生成高电平的FSCE#。

2. 将数据写入EC间接存储器地址FFFF_FDxxh会产生低电平的FSCE#和写入数据的FMOSI。

3. 从EC间接存储器地址FFFF_FDxxh读取数据会生成低电平的FSCE#,并从FMISO读取数据。

4. 上述所有动作都由8个FSCK时钟节拍计时,在其他情况下停止FSCK。

6.4.3.5主机域和EC域之间共享Flash

硬件仲裁器处理主机和EC侧之间的Flash读/写转换。

·HLPC

IT81202桥接LPC总线上的内存周期,并将它们桥接到连接的SPI闪存。SMFI内部闪存控制器执行交错机制控制,让主机和EC端读取闪存

它可能会响应LPC总线上的长等待,或者由于交错机制而冻结CPU取码。没有内部硬连线机制来监控连接的SPI闪存是否处于由主机的WIP指令引起的WIP(忙)状态。

当主机想要通过跟随模式0擦除或编程闪存时,信号接口(信号量写入或KBC/PMC扩展命令,如62h/66h命令)通知固件将1写入SMECCS寄存器中的HOSTWA位。由于擦除/编程导致WIP(忙)状态,EC CPU将无法取码,因此必须应用临时ROM。一旦主机完成对闪存的访问,主机应向EC表明这一点,从而允许EC清除HOSTWA位并恢复正常操作。EC可以随时清除HOSTWA位,并防止主机发出任何擦除或编程操作。

当主机想要通过跟随模式1擦除或编程闪存时,如果EC代码未被修改,则固件没有必要将代码映射到SRAM,因为存在内部硬连线机制来监控闪存的WIP(忙)状态。有关说明和限制,请参阅第112页的6.4.3.10节HLPC:串行闪存编程。

6.4.3.6串行Flash性能注意事项

每个周期花费的Clock-tick数=8。

用于分支指令的Clock-tick数=M+(4+N)x 8

M = FSCE# Min High Width = 1 + SCEMINHW

(SCEMINHW field in FLHCTRL2R register)

N = 1 if “Fast Read” (SPIFR bit in FLHCTRL1R register)

这些寄存器的选择取决于闪存规格。

请注意,闪存时钟频率为FreqPLL。(570页的表10-2列出了FreqPLL)

如果设置了SMECCS寄存器中的HOSTWA位,则主机LPC在M总线上的读取性能非常差。

6.4.3.7 对禁止访问的响应

禁止的访问由受保护的转换后的主机地址生成。

HLPC: 对主机总线的响应取决于SMECCS寄存器中的此处字段。

6.4.3.8 临时数据存储SRAMDMA

静态DMA编程流程:

1.通过程序寄存器STCDMACR bit4-bit1选择此静态DMA中使用的直接映射SRAM。

2.通过对寄存器SCAR0~12位19位0进行编程,设置eFlash中的逻辑存储器地址。由程序选择SCAR0~12中的哪个寄存器取决于寄存器STCDMACR位4-位1中设置的值,即如果STCDMACR[4:1]==10,则选择寄存器SCAR10[19:0]以设置eFlash中的逻辑存储器地址。

3.通过设置寄存器STCDMACR[0]=1来启动静态DMA。

4.根据STCDMACR[0]=0等待静态DMA完成。

5.通过对寄存器SCAR0~12 BIT20=0进行编程,验证直接映射SRAM功能。流程与步骤2相同,根据STCDMACR bit4-bit1中的寄存器值,选择SCAR0~12中的哪个寄存器进行设置,即如果STCDMACR[4:1]==10,则设置寄存器SCAR10[20]=0,以验证Direct-map SRAM功能。

6.调用已移至Direct-map SRAM的函数。

注意事项:

静态DMA程序流必须通过调用ROM API来执行。下面是如何使用ROMAPI的示例。

如果用户想要设置“STCDMACR[4:1]==10”和“SCAR10[19:0]=0x1000”,则调用ROM API的静态DMA程序流程如下:

eflash_to_direct_map(0x1000,10);

dm_set_segment_valid(10);

在调用这两个ROM API之后,完成了静态DMA程序流程,然后用户就可以调用要在Direct-map SRAM中运行的函数了。

6.4.3.9 HLPC: 通过带临时数据存储SRAM的主机LPC接口进行闪存编程

         当通过HLPC跟随模式0对闪存进行编程时,闪存将处于忙碌状态,CPU从闪存提取代码将无效,并导致CPU无法执行指令。这意味着固件必须将必要的指令从代码空间复制到临时数据存储SRAM,启用将临时数据存储SRAM映射到临时数据存储ROM,并在对闪存进行编程之前跳转到临时数据存储ROM。

闪存编程步骤:

(A)主机侧通过KBC/PMC扩展寄存器或信号量寄存器与EC侧通信。

(B)EC端:将1写入SMECCS寄存器中的HOSTWA位。

(C)EC侧:将必要的代码复制到擦除RAM。

(D)EC侧:启用临时数据存储SRAM的代码空间映射。

(E)EC侧:必要时使主机处理器进入SMM模式。

(F)EC侧:跳转指令至擦除ROM。

(G)主机端:在南桥设置相关内存写寄存器。

(H)主机端:启动闪存编程。

(I)结束闪存编程并在必要时重置EC域。

注:在处理闪存编程流程时,不要让EC进入Doze/Deep Doze/Sleep模式。

6.4.3.10 HLPC : Serial Flash Programming

有专门用于通过主机LPC接口进行串行Flash编程的跟随模式。

跟随模式有模式0和1,不能同时启用。

在模式0中,没有内部hard-wired机制来监控Flash的WIP(忙)状态。

在模式1中,有一个内部hard-wired机制来监控Flash的WIP(忙)状态;但是,主机端的实用程序仍需要通过RDSR指令轮询Flash状态。

在模式0中,固件必须将代码映射到SRAM并停止所有Flash访问,以让HLPC占用Flash仲裁器。

在模式1中,固件没有必要将代码映射到SRAM,并且HLPC与固件发出的其他Flash访问进行交织。

在模式0下,如果硬件保护被禁用,则主机侧的程序可以构建任何SPI周期。

在模式0中,如果硬件保护被启用,则表6-25中列出的WIP指令由保护逻辑监控。

6.25 HLPC监控的SPI指令表遵循模式0,保护已启用

在模式1中,仅支持某些指定的指令。

如果Flash的JEDEC ID的前两个字节是“BFH 25H”,则在桥接WIP指令之前将“50h 01h”发送到Flash。

6.26 HLPC遵循模式1支持的SPI指令表

Follow Mode 0 is enabled after (跟随模式0在以下情况下启用)   

1. Writing 1 to HOSTWA bit in SMECCS register in the EC side.

2. Writing 00h to LPC/FWH Address FFFF_FExxh in the host side

Follow Mode 0 is disabled after

1. Writing 0 to HOSTWA bit in SMECCS register in the EC side.

Follow Mode 1 is enabled after

1. Writing 1 to HFW1EN bit in HCTRL2R register in the EC side.

2. Writing 00h to LPC/FWH Address FFFF_FExxh in the host side

3. Write 1 to ACP80 bit in SPCTRL1 register to enable LPC_IO-to-FSPI function.

Follow Mode 1 is disabled after

1. Writing 0 to HFW1EN bit in HCTRL2R register in the EC side.

In HLPC Follow Mode,

1. Writing 00h to LPC/FWH Memory Address FFFF_FExxh generates FSCE# with high level.

2. Writing data to LPC/FWH Memory Address FFFF_FDxxh generates FSCE# with low level and FMOSI with

written data.

3. Reading data from LPC/FWH Memory Address FFFF_FDxxh generates FSCE# with low level and read

data from FMISO.

4. All the above actions are clocked by 8 FSCK clock ticks and FSCK is stopped in other cases.

6.4.3.11  Host Side to EC Scratch RAM (H2RAM)

6.4.3.11主机端至EC临时数据存储RAM(H2RAM)

:Scratch RAM 由 CPU 使用的用于临时数据存储的内存

6.4.3.11.1通过LPC内存/FWH周期将HLPC转换为EC临时数据存储RAM(H2RAM-HLPC)

·主机端软件可以使用H2RAM通过LPCMemory/FWH周期访问临时RAM。

·该功能还支持读/写保护机制。

·H2RAM不能通过主机间接内存路径使用。

Fig6.18 H2RAM-HLPC Mapping through LPC Memory/FWH Cycles HLPC to Scratch RAM

图6.18H2RAM- HLPC通过LPC存储器/FWH循环HLPC到临时RAM的映射

6.4.3.11.2通过LPC IO周期将HLPC转换为EC临时RAM(H2RAM-HLPC)

·H2RAM还可用于将某些地址从主机IO空间转换为临时RAM空间。

·该功能还支持读/写保护机制。

Figure 6-19. H2RAM-HLPC Mapping through LPC IO Cycles

图6.19 通过LPC IO周期实现H2RAM-HLPC映射

6.4.3.11.3 H2RAM EC/主机信号量

以H2RAM主机信号量为目标的LPC存储器/FWH/IO写入周期将产生一个中断(INT83)来通知EC,在H2RAM EC信号量上执行的数据写入指令也会向主机生成IRQ。通过这些信号量,主机和EC可以在H2RAM数据传输期间相互通信。

Figure 6-20. H2RAM EC/Host Semaphore Interrupt through LPC Memory/FWH Cycles

图6-20。H2RAM EC/主机信号量中断通过LPC内存/FWH周期

Figure 6-21. H2RAM EC/Host Semaphore Interrupt through LPC IO Cycles

图6-21。H2RAM EC/主机信号量通过LPC IO周期中断

6.4.3.12 e-FLASH通电检测

6.4.3.12.1 16B-签名和隐式/显式EC码基地址

使用特定的16B签名来定位EC码基地址。

这16个字节的所有内容必须与表中的内容匹配。

注:在F/W中添加16字节签名(强烈推荐)

第8字节的位7:必须是1b。

第8字节的位6:  0b:禁用

1b:暂停内部到外部时钟切换请求。

此位设置时,内部时钟将充当临时时钟,使EC能够在外部晶体准备好工作之前配置一些GPIO设置。该位仅在第8字节的位4为0时可用。请参阅第264页的第7.7.3.6节。

第8字节的第5位:必须是1b。

第8字节的第4位:必须是1b。

第8字节的位3:必须为0b。

第8字节的位2:必须是1b。

第8字节的位1:必须为0b。

第8字节的位0:必须为0b。

第一个字节必须位于16字节边界。

例如,假设第一个字节的地址为ADDR1[23:0],则ADDR1[3:0]必须为0000b。

第一个字节必须位于地址40H、50H、60H、…。到EC代码库的F0h偏移量。例如,假设第一个字节的地址为addr1[23:0],则addr1[7:0]必须为40h、50h、60h…。F0h(间隔10h),EC码基位于(ADDR1[23:12]*2^12)。

6.4.3.12.2检测顺序

6.27 SPI闪存上电检测对应表

ITE EC(IT81202)--- SMFI模块手册翻译相关推荐

  1. ITE EC(IT81202)--- PMC模块手册翻译

    PMC Power Management Channel 6.7.1概述 电源管理通道在ACPI规范中定义,用作主机处理器和嵌入式控制器之间的通信通道. 6.7.2功能 支持五个PM通道 支持通道1的 ...

  2. TypeScript手册翻译系列4-模块

    为什么80%的码农都做不了架构师?>>>    模块 在TypeScript中利用模块(module)来组织代码.这里将讨论内部和外部模块,以及在何时使用哪种方式更合适,以及怎么使用 ...

  3. netopeer-manager手册翻译

    netopeer-manager(1)手册翻译 名字 netopeer-manager 对netopeer-server的模块管理 概述 netopeer-manager [–help] [ ] 描述 ...

  4. 20050620 GNU Bison 中文手册翻译完成

    20050620 GNU Bison 中文手册翻译完成 GNU Bison实际上是使用最广泛的Yacc-like分析器生成器,使用它可以生成解释器,编译器,协议实现等多种程序. 它不但与Yacc兼容还 ...

  5. awk 4.0+ man手册翻译第一版本

    CentOS 7 上awk 4.0以上版本的man手册翻译第一版: 参考地址:http://www.cnblogs.com/wutao666/p/9732976.html 参考地址:https://w ...

  6. tcpprep man 手册翻译

    TCPPREP(1)                                     Programmer's Manual                                   ...

  7. HCPL3120手册翻译

    HCPL3120手册翻译 首先HCPL3120是一个2.5A电流输出的IGBT门极驱动光电耦合器. Description: HCPL3120包含一个磷砷化镓的发光LED,该LED被光电耦合于一个带有 ...

  8. PhysX官方手册翻译

    PhysX官方手册翻译 本人水平有限,翻译中如果出现比较恶的句子...大家一定要查阅原文. 更新:2008-7-1   22:22  Raycasting(射线查询) 更新:2008-6-26 23: ...

  9. rsyncd.conf 文件man手册翻译

    rsyncd.conf(5)rsyncd.conf(5) 姓名 rsyncd.conf-后台程序模式下rsync的配置文件 简介 rsyncd.conf文件 说明 rsyncd.conf文件是rsyn ...

最新文章

  1. Android中ExpandableListView的使用
  2. 最优布线问题(普里姆算法)
  3. 服务器iis7.5 配置文件,使用注册表项 - Internet Information Services | Microsoft Docs
  4. 使用MyBatis集成阿里巴巴druid连接池(不使用spring)
  5. Win32ASM学习[9]: 标志寄存器
  6. 微信内测“群直播”;小米发布第三代屏下相机技术;马斯克宣布脑机接口重大突破 | 极客头条...
  7. 跨界 +赋能——互联网的下一个关键词
  8. 激光雷达系统原理及相关介绍
  9. Cadence学习之路:什么是PCB工艺的正片与负片
  10. LT2611UXC-LVDS转HDMI2.0转换芯片
  11. 8个电脑小技巧让你在朋友圈秒杀众人!
  12. ArrayList集合类实现的RandomAccess空接口有何用?
  13. 300iq Contest 1
  14. vba中定时器的用法
  15. CSS3选择器、边框、背景、按钮
  16. Docker 命令操作
  17. jsp页面适应手机屏幕_JavaScript实现移动端页面按手机屏幕分辨率自动缩放的最强代码...
  18. Revit插件推荐[二]
  19. 《地理信息系统导论》 坐标系统 复习题
  20. 拼音爱好者的好消息:紫光V6发版

热门文章

  1. Mac mini内置扬声器选项不见了
  2. vue组件传值的八种方式
  3. Vue组件传值-设置默认值
  4. 【操作系统】《2023 南京大学 “操作系统:设计与实现” (蒋炎岩)》- 知识点目录
  5. html苹果笔记本文稿如何转换,如何转换旧苹果电脑文字处理文件
  6. 用友U8销售发货单序列号明细查询SQL语句
  7. linux上mysql5.7忘记密码,Linux下Mysql5.7忘记密码
  8. JS判断手机端是否安装了某个客户端APP
  9. linux环境dockers安装minio
  10. word中目录的设置