1. 知识关联图Mermaid1.1 中断层级图graph LR A[Input Eventbr(SRIO/DMA/定时器等)] -- B[CIC中断分发控制器] B -- C[核内INTC中断控制器] C -- D[CorePac DSP核心] style B fill:#f0f0ff,stroke:#333 note right of B: 国产化特性标称支持1024事件br实际可用中断源5121.2 典型雷达信号处理数据流图graph LR A[雷达ADC回波采样] -- B[国产FPGAbr(SMQ7K325T/JFM7K325T)brSRIO终端] B --SRIO 4x 3.125Gbps-- C[FT-M6678 共享DDR3] C -- D[8核CorePac并行信号处理] D -- E[处理结果输出br(上位机/后端处理)] style B fill:#f0fff0,stroke:#333 note over B,C: 国产化适配GTX收发器125MHz参考时钟匹配2. FT-M6678 vs TI TMS320C6678 关键差异表对比项飞腾FT-M6678国产TI TMS320C6678进口引用来源核心算力1GHz主频256GMAC/128GFLOPS支持SIMD192GMAC/96GFLOPS支持SIMDQMSS队列管理空闲描述符队列需手动初始化头指针描述符Tag位域定义不同硬件自动完成空闲队列初始化中断系统标称支持1024个中断事件实际可用512个支持完整1024个中断事件国产化规范要求复位与时序主核必须完成PLL配置后才能唤醒从核时序要求更严格主从核可并行完成PLL配置从核自动唤醒国产化规范要求BootloaderBootROM设备表格式、多核镜像解析逻辑与TI不同标准TI镜像格式兼容主流工具国产化规范要求工具生态仅支持C6000老版本编译器需使用锐华IDE替代TI SYS/BIOS完整支持CCS、SYS/BIOS等全套开发工具存储资源最大支持2GB DDR3MSMC共享SRAM固定4MB最大支持8GB DDR3MSMC共享SRAM 4MBSRIO初始化链路初始化需额外等待2个时钟周期时序要求更严格初始化时序宽松无需额外等待国产化规范要求PCIe接口最高支持4x通道支持RC/EP双模最高支持8x通道支持RC/EP双模3. 关键配置代码片段带中文注释/************************ * 代码片段1SRIO 4x 3.125Gbps链路配置 * 来源双频雷达SRIO配置方案 ************************/ #define SRIO_PBUSCTRL_ADDR 0x02620300 // SRIO总线控制寄存器地址 void config_srio_4x_3125(void) { uint32_t reg_val; reg_val *(volatile uint32_t *)SRIO_PBUSCTRL_ADDR; // 清除原有链路宽度和速率配置 reg_val ~ (0xF 8 | 0x3 12); // 配置为4x链路、3.125Gbps每lane reg_val | (0x3 8) | (0x2 12); *(volatile uint32_t *)SRIO_PBUSCTRL_ADDR reg_val; // 国产化适配FT要求链路稳定多等待比TI多2个时钟周期 __delay_cycles(1000); }/************************ * 代码片段2QMSS空闲描述符队列初始化 * 国产化特有必须手动写队列头指针TI无需此步骤 ************************/ #define QMSS_FREE_QUEUE_BASE 0x03000000 typedef struct qmss_desc { uint32_t next_ptr; // 下一个描述符地址 uint32_t buf_ptr; // 数据缓冲区地址 } qmss_desc_t; void qmss_init_free_queue(int queue_id, qmss_desc_t *desc_base, int num_desc) { if(num_desc 0) return; // 从最后一个描述符反向构建链表 qmss_desc_t *cur_desc desc_base (num_desc - 1); for(int i num_desc - 2; i 0; i--) { cur_desc-next_ptr (uint32_t)(desc_base i); cur_desc desc_base i; } // 手动写入队列头指针到硬件寄存器 *(volatile uint32_t *)(QMSS_FREE_QUEUE_BASE queue_id * 4) (uint32_t)cur_desc; }/************************ * 代码片段3硬件信号量多核同步主从模型 ************************/ #define HW_SEM_BASE 0x02800000 // 获取硬件信号量返回1成功0失败 int hw_sem_take(int sem_id) { // FT-M6678硬件信号量0为空闲1为已占用 return (*(volatile uint32_t *)(HW_SEM_BASE sem_id * 4) 0); } // 释放硬件信号量 void hw_sem_give(int sem_id) { *(volatile uint32_t *)(HW_SEM_BASE sem_id * 4) 0; }4. FT-M6678 关键寄存器速查卡片可打印寄存器地址(十六进制)默认值(十六进制)功能简述所属模块注意事项0x026203000x00000101SRIO总线控制寄存器SRIObit[11:8]配置链路宽度bit[13:12]配置lane速率0x026203200x00100100DDR3 PLL配置寄存器DDR3控制器DDR初始化失败优先检查该寄存器0x026203240x000F0F00SRIO SerDes配置寄存器SRIOSRIO链路不通优先检查该寄存器0x03000000 N*40x00000000QMSS第N个队列头指针QMSS国产化空闲队列必须手动写入初始指针0x02800000 N*40x00000000第N个硬件信号量同步模块0空闲1已占用用于多核同步0x010000000x00000123主PLL控制寄存器时钟系统国产化主核配置完成后才能唤醒从核0x04000000 N*40x00000000CIC中断路由寄存器中断系统国产化不要配置编号≥512的中断事件