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 模式寄存器对照表:
| 速率 | Master | Slave |
|---|---|---|
| 100M | C000 | 8000 |
| 1G | C001 | 8001 |
| 2.5G | C004 | 8004 |
| 10G | C006 | 8006 |
<?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>