Marvell 88Q5152 车载交换机:从配置生成到固件烧录实战指南

文章目录

    • 前言
    • 一. 需求分析与寄存器配置
      • 端口配置需求
      • 寄存器映射表
    • 二. 固件生成工具链操作
      • 生成 Configuration Bin (XML -> Bin)
      • 生成 Secure Image (Bin -> Image)
    • 三. Flash 内存布局与烧录脚本
      • Flash 内存地址映射 (Memory Map)
      • 自动化烧录脚本 (flash_script_xxx.sh)
      • 烧录方式
      • 调试
    • 其他

前言

在车载以太网架构设计中,Marvell 88Q5152 是一款应用广泛的高性能交换机芯片。本文将基于实际项目需求,详细介绍如何从底层的端口寄存器配置开始,生成 Configuration Bin 文件,合成 Secure Image,并最终通过 Shell 脚本完成对设备 Flash 的双分区烧录。

一. 需求分析与寄存器配置

在生成固件之前,首先需要明确硬件设计的端口需求。根据本项目规划,我们需要配置 6 个 PHY 端口,混合了千兆(1G)和百兆(100M)速率,且全部配置为 Master 模式。

端口配置需求

  • P1, P2: 内部 PHY Master 100M (千兆主)
  • P3, P4: 内部 PHY Master 100M (百兆主)
  • P5: 外部 PHY Master 1G (对接 88Q2220)
  • P6: 外部 PHY Master 1G (对接 88Q2221)

寄存器映射表

针对上述需求,我们在 XML 配置文件中需设定对应的寄存器值。以下是 88Q5152 常用的 PHY 模式寄存器对照表:

速率MasterSlave
100MC0008000
1GC0018001
2.5GC0048004
10GC0068006
<?xmlversion="1.0"encoding="UTF-8"standalone="yes"?><switch_config_1><board_config>D:/eth/board_config_0xb52_0x9101_demo_base.xml</board_config><ptp><entity_order_no>0x0002</entity_order_no><entity_enabled>true</entity_enabled><ptp_entity_autocds><ptp_id>0x0000</ptp_id><ptp_entity_config_autocds_v2><feature_mask>0x00000002</feature_mask><sync_receipt_timeout>0x000007d0</sync_receipt_timeout></ptp_entity_config_autocds_v2><ptp_port_autocds><ptp_port_index>0x0001</ptp_port_index><ptp_role>0x06</ptp_role><init_log_pdelay_req_interval>0x00</init_log_pdelay_req_interval><init_log_sync_interval>-0x03</init_log_sync_interval><operation_pdelay_req_interval>0x00</operation_pdelay_req_interval><operation_sync_interval>-0x03</operation_sync_interval><neighbor_prop_delay>0x00000000</neighbor_prop_delay></ptp_port_autocds><ptp_port_autocds><ptp_port_index>0x0002</ptp_port_index><ptp_role>0x06</ptp_role><init_log_pdelay_req_interval>0x00</init_log_pdelay_req_interval><init_log_sync_interval>-0x03</init_log_sync_interval><operation_pdelay_req_interval>0x00</operation_pdelay_req_interval><operation_sync_interval>-0x03</operation_sync_interval><neighbor_prop_delay>0x00000000</neighbor_prop_delay></ptp_port_autocds><ptp_port_autocds><ptp_port_index>0x0003</ptp_port_index><ptp_role>0x06</ptp_role><init_log_pdelay_req_interval>0x00</init_log_pdelay_req_interval><init_log_sync_interval>-0x03</init_log_sync_interval><operation_pdelay_req_interval>0x00</operation_pdelay_req_interval><operation_sync_interval>-0x03</operation_sync_interval><neighbor_prop_delay>0x00000000</neighbor_prop_delay></ptp_port_autocds><ptp_port_autocds><ptp_port_index>0x0004</ptp_port_index><ptp_role>0x06</ptp_role><init_log_pdelay_req_interval>0x00</init_log_pdelay_req_interval><init_log_sync_interval>-0x03</init_log_sync_interval><operation_pdelay_req_interval>0x00</operation_pdelay_req_interval><operation_sync_interval>-0x03</operation_sync_interval><neighbor_prop_delay>0x00000000</neighbor_prop_delay></ptp_port_autocds>