@@ -50,14 +50,14 @@ int main(void) {
5050 * reg32 (PLIC_BASE , RV_PLIC_IE0_0_REG_OFFSET )  |= (1  << (RV_PLIC_IE0_0_E_19_BIT )); // Enable interrupt number ; 
5151
5252  volatile  uint64_t  data_to_write [DATA_CHUNK ] =  {
53-         0x0207230100890702 , 
53+         0x1032230100890702 , 
5454        0x3210400020709800 ,
55-         0x1716151413121110 , 
56-         0x2726252423222120 ,
57-         0x3736353433323130 , 
58-         0x4746454443424140 ,
59-         0x5756555453525150 , 
60-         0x6766656463626160 
55+         0x35ED077D93FC89BA , 
56+         0x56BE7F8D79A46B8C ,
57+         0xAEB3F2D1446FE19E , 
58+         0x7D21C83EFF976DB8 ,
59+         0x940D2024EB89AC07 , 
60+         0x2B9EBCDC4561DA5C 
6161  };
6262
6363  // load data into mem 
@@ -66,9 +66,9 @@ int main(void) {
6666        * tx_addr  =  data_to_write [i ];
6767  }
6868
69-   * reg32 (ETH_BASE , MACLO_OFFSET )          =  0x00890702 ;
70-   // High 16 bit Mac Address 
71-   * reg32 (ETH_BASE , MACHI_OFFSET )          =  0x00802301 ;
69+   * reg32 (ETH_BASE , MACLO_OFFSET )          =  0x89000123 ;
70+   // High 16 bit Mac Address and irq_en  
71+   * reg32 (ETH_BASE , MACHI_OFFSET )          =  0x00800207 ;
7272  // DMA Source Address 
7373  * reg32 (ETH_BASE , IDMA_SRC_ADDR_OFFSET )  =  TX_BASE ;
7474  // DMA Destination Address 
@@ -83,17 +83,17 @@ int main(void) {
8383  // Validate Request to DMA 
8484  * reg32 (ETH_BASE , IDMA_REQ_VALID_OFFSET ) =  0x1 ;
8585
86-   //  uint32_t *mdio;
87-   // //  mdio = reg32(ETH_BASE, ETH_MDIO_OFFSET);   
88-   //  mdio = 0x0300c008;
89-   //  printf("MDIO value: 0x%08X\n", *mdio);
86+   uint32_t  * mdio ;
87+   // mdio = reg32(ETH_BASE, ETH_MDIO_OFFSET);   
88+   mdio  =  0x0300c008 ;
89+   printf ("MDIO value: 0x%08X\n" , * mdio );
9090
9191  // configure ethernet 
92-   * reg32 (ETH_BASE , MACLO_OFFSET )          =  0x00890702 ;  
93-   * reg32 (ETH_BASE , MACHI_OFFSET )          =  0x00802301 ; 
92+   * reg32 (ETH_BASE , MACLO_OFFSET )          =  0x89000123 ;  
93+   * reg32 (ETH_BASE , MACHI_OFFSET )          =  0x00800207 ; 
9494  // rx irq 
9595  while  (!(* reg32 (PLIC_BASE , RV_PLIC_IP_0_OFFSET )) &  (1  << 19 ) );
96-     
96+ 
9797  // dma length ready, dma can be configured now 
9898  while  (!(* reg32 (ETH_BASE ,IDMA_RX_EN_OFFSET )));
9999
@@ -104,6 +104,10 @@ int main(void) {
104104  * reg32 (ETH_BASE , IDMA_DST_PROTO_OFFSET ) =  0x0 ;
105105  * reg32 (ETH_BASE , IDMA_REQ_VALID_OFFSET ) =  0x1 ;
106106
107+   uint32_t  * rx_fcs ;
108+   rx_fcs  =  0x0300c014 ;
109+   printf ("rfcs value: 0x%08X\n" , * rx_fcs );
110+ 
107111  // wait until DMA moves all data 
108112  while  (!(* reg32 (ETH_BASE , IDMA_RSP_VALID_OFFSET )));
109113
0 commit comments