Merge main (CRC32 fix)

This commit is contained in:
2026-06-25 02:52:09 +08:00

View File

@@ -146,8 +146,6 @@ int main(void)
/* ── Start marker (must be first output) ──────────────────── */ /* ── Start marker (must be first output) ──────────────────── */
printf("MATMUL_START\n"); printf("MATMUL_START\n");
unsigned int tick_start = get_ns();
// 清理寄存器状态 // 清理寄存器状态
REG_WR(MATMUL_STATUS, STATUS_DONE | STATUS_ERROR); REG_WR(MATMUL_STATUS, STATUS_DONE | STATUS_ERROR);
@@ -187,16 +185,6 @@ int main(void)
// 6. 立即启动当前组在 IP 中的计算 // 6. 立即启动当前组在 IP 中的计算
REG_WR(MATMUL_CTRL, ctrl_start[cur_bank]); REG_WR(MATMUL_CTRL, ctrl_start[cur_bank]);
// 调试输出逻辑 (通过无缓存指针直接从内存读取刚刚 DMA 写回的数据)
// 注意:因为 Channel 1 刚启动,需要等它搬运完才能打印 C[0..2]
if (g - 1 == 1) { // 也就是当刚刚计算完 Group 1 并发起 DMA 后
dma_wait_polling(1); // 强制等一下,供打印使用
printf("DBG C[0..2]=%08lx %08lx %08lx\n",
(unsigned long)extram[DST_BASE_WORDS + 1 * 48 + 0],
(unsigned long)extram[DST_BASE_WORDS + 1 * 48 + 1],
(unsigned long)extram[DST_BASE_WORDS + 1 * 48 + 2]);
}
} }
/* ── Epilogue: 收尾最后一组 ───────────────────────────── */ /* ── Epilogue: 收尾最后一组 ───────────────────────────── */
@@ -207,17 +195,6 @@ int main(void)
dma_start_transfer(1, phys_bank_C[(MATMUL_GROUP_NUM - 1) % 2], EXTRAM_PHYS_C(MATMUL_GROUP_NUM - 1), 192, 20); dma_start_transfer(1, phys_bank_C[(MATMUL_GROUP_NUM - 1) % 2], EXTRAM_PHYS_C(MATMUL_GROUP_NUM - 1), 192, 20);
dma_wait_polling(1); // 必须等待最后一组写回完成 dma_wait_polling(1); // 必须等待最后一组写回完成
unsigned int tick_end = get_ns();
// 检查测试输出要求
printf("DBG wrote C[0]=%08lx @ ExtRAM[%d]\n",
(unsigned long)extram[DST_BASE_WORDS], DST_BASE_WORDS);
printf("\n--- Performance Data ---\n");
unsigned int total_time = tick_end - tick_start;
printf("Matmul %d groups total time: %u ns (%.3f ms)\n",
MATMUL_GROUP_NUM, total_time, (float)total_time / 1000000.0);
/* ── CRC32 over result region ─────────────────────────────── */ /* ── CRC32 over result region ─────────────────────────────── */
crc = compute_crc32(extram); crc = compute_crc32(extram);