From d3e0cc2819c1d63035f688c61a7f459cbd0a2b52 Mon Sep 17 00:00:00 2001 From: morgan Date: Mon, 7 Oct 2024 13:15:53 +0800 Subject: [PATCH] downconn fw: add ring buffer test --- src/libboard_artiq/src/cxp_downconn.rs | 32 +++++++++++++++----------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/src/libboard_artiq/src/cxp_downconn.rs b/src/libboard_artiq/src/cxp_downconn.rs index 050104a..da16fd0 100644 --- a/src/libboard_artiq/src/cxp_downconn.rs +++ b/src/libboard_artiq/src/cxp_downconn.rs @@ -43,20 +43,24 @@ pub fn loopback_testing(channel: usize, timer: &mut GlobalTimer, speed: CXP_SPEE cxp_proto::downconn_debug_send_trig_ack(channel); + const SEND_TIMES: usize = 4; const MAX_PACKET: usize = 128; const DATA_MAXSIZE: usize = /*max size*/MAX_PACKET - /*Tag*/4 - /*Op code & length*/4 - /*addr*/4 - /*CRC*/4 ; - let data: u32 = 0x11; let mut data_slice: [u8; DATA_MAXSIZE] = [0; DATA_MAXSIZE]; - data_slice[..4].clone_from_slice(&data.to_be_bytes()); - cxp_proto::downconn_debug_send( - channel, - &cxp_proto::UpConnPacket::CtrlAckLoopback { - ackcode: 0x00, - length: 0x04, - data: data_slice, - }, - ) - .expect("loopback gtx tx error"); + + for i in 0..SEND_TIMES { + let data: u32 = i as u32; + data_slice[..4].clone_from_slice(&data.to_be_bytes()); + cxp_proto::downconn_debug_send( + channel, + &cxp_proto::UpConnPacket::CtrlAckLoopback { + ackcode: 0x00, + length: 0x04, + data: data_slice, + }, + ) + .expect("loopback gtx tx error"); + } timer.delay_us(1000); // wait packet has arrive at RX async fifo (CXP[channel].downconn_tx_stb_write)(0); @@ -69,8 +73,10 @@ pub fn loopback_testing(channel: usize, timer: &mut GlobalTimer, speed: CXP_SPEE info!("test error = {}", (CXP[channel].downconn_test_error_read)()); info!("packet type = {:#06X}", (CXP[channel].downconn_packet_type_read)()); - cxp_proto::receive(channel).expect("loopback gtx rx error"); - cxp_proto::downconn_debug_mem_print(channel); + for _ in 0..SEND_TIMES { + cxp_proto::receive(channel).expect("loopback gtx rx error"); + } + // cxp_proto::downconn_debug_mem_print(channel); // DEBUG: print loopback packets const LEN: usize = 20;