ZHCABB2 June   2021 DRA821U , DRA829J , DRA829V , TDA4VM , TDA4VM-Q1

 

  1.   摘要
  2.   商标
  3. 1引言
  4. 2防火墙文档
    1. 2.1 技术参考手册 (TRM)
    2. 2.2 SDK TISCI 文档
    3. 2.3 SDK 防火墙文档
    4. 2.4 TI NDA 防火墙幻灯片组
  5. 3防火墙定义和术语
  6. 4SysConfig 工具
  7. 5主防火墙与从防火墙
    1. 5.1 从防火墙
    2. 5.2 主防火墙
    3. 5.3 A72 主防火墙
  8. 6防火墙的位置
    1. 6.1 示例
  9. 7防火墙编程
    1. 7.1 示例 SBL 代码
      1. 7.1.1 创建表
      2. 7.1.2 解析防火墙区域表
      3. 7.1.3 实用功能
      4. 7.1.4 Processor SDK 7.1 SBL 示例

创建表

创建一个包含条目的表,其中每个条目代表一个防火墙区域。这种格式与 SysConfig 工具使用的 .c 输出格式相同。下面的示例为 A72 主防火墙创建了三个区域。

struct ti_sci_msg_fwl_region {
	uint16_t            fwl_id;
	uint16_t            region;
	uint32_t            n_permission_regs;
	uint32_t            control;
	uint32_t            permissions[FWL_MAX_PRIVID_SLOTS];
	uint64_t        start_address;
	uint64_t        end_address;
} __attribute__((__packed__));

void J721E_Set_Firewall(uint32_t isBuildHs)
{
    int32_t status = CSL_EFAIL;
	struct ti_sci_msg_fwl_region j721e_fwl_data[] = {

	    /* compute_cluster Master firewall  - background region 0 */
	    {
	        .fwl_id = CSL_MSTR_FW_A72SS0_CORE0_CPU_0_CPU_0_MSMC_ID,
	        .region = 0,
	        .n_permission_regs = 1,
	        .control = 0x30A,
	        .start_address = 0x00000000,
	        .end_address = 0xFFFFFFFFF,
	        .permissions = { 0x1FFFF }, // PrivId 1U
	    },
	    /* compute_cluster Master firewall  - region 1 */
	    {
	        .fwl_id = CSL_MSTR_FW_A72SS0_CORE0_CPU_0_CPU_0_MSMC_ID,
	        .region = 1,
	        .n_permission_regs = 1,
	        .control = 0x20A,
	        .start_address = 0xa0000000,
	        .end_address = 0xa8ffffff,
	        .permissions = { 0x10000 }, // PrivId 1U
	    },
	    /* compute_cluster Master firewall  - region 2 */
	    {
	        .fwl_id = CSL_MSTR_FW_A72SS0_CORE0_CPU_0_CPU_0_MSMC_ID,
	        .region = 2,
	        .n_permission_regs = 1,
	        .control = 0x20A,
	        .start_address = 0xce000000,
	        .end_address = 0xfbffffff,
	        .permissions = { 0x10000 }, // PrivId 1U
	    },
	};
  • 区域 0 作为后台区域,使 A72 可以完全访问存储器范围。
  • 然后区域 1 和 2 引入限制,确保 A72 对为这些区域定义的存储器范围没有任何权限。
  • 请注意,对于所有三个区域,.permissions 条目上的 Privid 指示应将权限应用于哪个发起方。当位 [16] 设置为“1”时,这表明权限将应用于源自 A72 的事务。