HN-I SAM

HN-I SAM的主要功能是将传入的地址映射到连接在HN-I下游的目标端点。这些端点可以是带有内存映射I/O空间的外设(如UART或GPIO)或物理内存(如SRAM或FLASH)。

地址区域(Address Regions):HN-I SAM支持最多三个地址区域(Address Regions 1, 2, 3),这些区域不能重叠。每个地址区域可以被编程为外设或物理内存,默认情况下,每个地址区域被映射为外设内存。

排序区域(Order Regions):每个地址区域可以包含一个排序区域(Order Regions),这些排序区域是地址空间的更小子集。在排序区域内,设备内存排序保证得以维持。

默认地址区域(Address Region 0):HN-I还提供了一个默认的地址区域(Address Region 0)

由下图可以看出,在HN-I整个地址映射空间挖出来三个地址区域,其余全是默认的address region0。

Boot Flash:启动闪存,用于存储设备启动时需要加载的代码或数据。

Address Region 0:地址区域0,是设备内存映射中的一个特定区域,通常用于访问Boot Flash等关键资源。

Order Region 0:排序区域0,是一个配置参数,用于指定在Address Region 0中哪些地址范围的访问请求需要被保证按顺序执行。

编程时机:Arm建议HN-I SAM仅在boot过程中进行编程,以确保在系统启动时正确配置地址映射。

排序区域大小:通过编程排序区域的大小,可以强制执行特定地址区域的严格排序。例如,将order region size设置为6'b111111可以强制在该地址区域内保持严格的排序。

禁用地址区域:如果新的请求可能落入新配置的地址区域或排序区域,并且这些请求需要与现有的pending请求保持排序,则必须禁用相应的address regions寄存器。

Address regions 和 order regions的最小地址粒度是4KB,这相当于AXI/ACE-Lite中最小slave地址空间粒度。the base address in the Address Region {1, 2, 3} Confifiguration Registers only includes bits[REQ_ADDR_WIDTH−1:12].

默认情况下,HN-I的整个地址空间都被映射到地址区域0

事务顺序:所有到地址区域0的事务都保持顺序。

  • Order Region大小配置:地址区域0中的Order Region大小是可配置的,它决定了事务在地址区域0中如何被组织或排序。默认情况下,Order Region的大小设置为6'b111111,(
    配置 order region size = 6'b111111 代表整个
    region 全是 order region 就不用真实计算其 size
    )这覆盖了HN-I的整个地址空间。但是,根据REQ_ADDR_WIDTH(请求地址宽度)的不同,Order Region的大小可以配置为更小的值:
    • 当REQ_ADDR_WIDTH等于52时,Order Region大小配置为6'b101000。
    • 当REQ_ADDR_WIDTH等于48时,Order Region大小配置为6'b100100。
    • 当REQ_ADDR_WIDTH等于44时,Order Region大小配置为6'b100000。
      这种配置允许根据具体的地址宽度需求来优化事务处理。
  • Address Region 0的有效性:地址区域0始终是有效的,这意味着它不需要通过一个“有效”位(Valid bit)来启用或禁用

Address region0的寄存器配置:

其中该区域的order region是在低五位配置

该寄存器不需要valid位,因为address region0一直有效

  • 默认配置:初始配置将Order Region 0的大小设置为32KB,这意味着从地址0x0000_0000_0000到0x0000_0000_8000的访问请求将被按顺序处理。然而,如果Boot Flash的实际物理位置不是从0x0000_0000_0000开始,而是从0x0000_0000_4000到0x0000_0000_C000(即不是32KB对齐的),那么按照默认的Order Region 0配置,可能会有一部分访问Boot Flash的请求没有被正确排序,从而可能导致问题。
  • 确保顺序:为了确保所有对Boot Flash的访问请求都按顺序进行,需要将Order Region 0的大小至少配置为64KB(从0x0000_0000_0000到0x0000_0000_FFFF),这样可以覆盖Boot Flash的整个物理范围(即使它不是从0x0000_0000_0000开始的),从而确保所有相关的访问请求都被排序。但这种配置可能会影响到其他设备的访问性能,如SPI1、SPI2和CFG Reg 2,因为它们的访问也需要被排序。
  • 优化性能:另一种方法是优化Boot Flash的映射,使其与Address Region 0的起始地址对齐(即Boot Flash从0x0000_0000_0000开始)。这样,就可以将Order Region 0的大小设置为32KB,同时满足对Boot Flash访问的顺序要求,并且不会不必要地影响其他设备的访问性能。

Address region1

       

地址从0x0000_0000_2000开始,size=8KB

整个address region1都被视为一个order region(

当不是整个 order region size 都需要保序,
那就可以规定保序的 size 2^1*4=8KB

Addess region2

地址从0x0000_0002_0000开始,size=128KB

整个address region2都被视为一个order region(因为是6'b111111,就代表整个地址区域保序)

Address region3

地址从0x0000_0020_0000开始,size=1MB

2^3*4KB=32KB,在1MB的范围内,每32KB保序

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值