Просмотр исходного кода

解决raspi4 smart在使用多pl011串口时,关闭其中一个会导致所有同类串口失效的问题
解决raspi4网络卡死问题

shaojinchun 4 лет назад
Родитель
Сommit
32d0b8938c

+ 3 - 31
bsp/raspberry-pi/raspi4-32/driver/board.c

@@ -46,10 +46,10 @@ size_t mbox_addr = MBOX_ADDR;
 
 size_t wdt_base_addr = WDT_BASE;
 
-void* mac_reg_base_addr = (void *)MAC_REG;
+uint8_t *mac_reg_base_addr = (uint8_t *)MAC_REG;
 
-void* eth_send_no_cache = (void *)SEND_DATA_NO_CACHE;
-void* eth_recv_no_cache = (void *)RECV_DATA_NO_CACHE;
+uint8_t *eth_send_no_cache = (uint8_t *)SEND_DATA_NO_CACHE;
+uint8_t *eth_recv_no_cache = (uint8_t *)RECV_DATA_NO_CACHE;
 
 #ifdef RT_USING_USERSPACE
 struct mem_desc platform_mem_desc[] = {
@@ -188,31 +188,3 @@ void rt_hw_board_init(void)
     rt_components_board_init();
 #endif
 }
-
-#ifdef RT_USING_GDBSERVER
-#include <dfs_posix.h>
-
-#define GDB_CONNECT_DEVICE "/dev/uart4"
-
-/* for gdb */
-int gdb_com_open(void)
-{
-    return open(GDB_CONNECT_DEVICE, O_RDWR);
-}
-
-void gdb_com_close(int fd)
-{
-    close(fd);
-}
-
-ssize_t gdb_com_read(int fd, void *buff, size_t len)
-{
-    return read(fd, buff, len);
-}
-
-ssize_t gdb_com_write(int fd, void *buff, size_t len)
-{
-    return write(fd, buff, len);
-}
-
-#endif

+ 1 - 2
bsp/raspberry-pi/raspi4-32/driver/drv_eth.c

@@ -49,7 +49,6 @@ static rt_uint32_t rx_index = 0;
 static rt_uint32_t index_flag = 0;
 
 static rt_uint8_t send_cache_pbuf[RECV_CACHE_BUF];
-static rt_uint8_t recv_data[RX_BUF_LENGTH];
 
 struct rt_eth_dev
 {
@@ -430,7 +429,7 @@ static rt_uint32_t bcmgenet_gmac_eth_recv(rt_uint8_t **packetp)
     }
     else
     {
-        if(prev_recv_cnt == prod_index)
+        if(prev_recv_cnt == (prod_index & 0xffffUL))
         {
             return 0;
         }

+ 0 - 10
bsp/raspberry-pi/raspi4-32/driver/drv_uart.c

@@ -117,16 +117,6 @@ static rt_err_t uart_control(struct rt_serial_device *serial, int cmd, void *arg
     switch (cmd)
     {
     case RT_DEVICE_CTRL_CLR_INT:
-        /* disable rx irq */
-        if(uart->hw_base == AUX_BASE)
-        {
-            AUX_MU_IER_REG(uart->hw_base) = 0x0;
-        }
-        else
-        {
-            PL011_REG_IMSC(uart->hw_base) &= ~((uint32_t)PL011_IMSC_RXIM);
-        }
-        rt_hw_interrupt_mask(uart->irqno);
         break;
 
     case RT_DEVICE_CTRL_SET_INT:

+ 3 - 3
bsp/raspberry-pi/raspi4-32/driver/raspi4.h

@@ -165,15 +165,15 @@ extern uint32_t mmc2_base_addr;
 
 //mac
 #define MAC_REG                 (void *)(0xfd580000)
-extern void *                   mac_reg_base_addr;
+extern uint8_t *                   mac_reg_base_addr;
 
 #define ETH_IRQ                 (160+29)
 
 #define SEND_DATA_NO_CACHE      (0x08200000)
-extern void *                   eth_send_no_cache;
+extern uint8_t *                   eth_send_no_cache;
 
 #define RECV_DATA_NO_CACHE      (0x08400000)
-extern void *                   eth_recv_no_cache;
+extern uint8_t *                   eth_recv_no_cache;
 
 /* the basic constants and interfaces needed by gic */
 rt_inline rt_uint32_t platform_get_gic_dist_base(void)

+ 3 - 3
bsp/raspberry-pi/raspi4-64/drivers/board.c

@@ -46,10 +46,10 @@ size_t mbox_addr = MBOX_ADDR;
 
 size_t wdt_base_addr = WDT_BASE;
 
-void* mac_reg_base_addr = (void *)MAC_REG;
+uint8_t *mac_reg_base_addr = (uint8_t *)MAC_REG;
 
-void* eth_send_no_cache = (void *)SEND_DATA_NO_CACHE;
-void* eth_recv_no_cache = (void *)RECV_DATA_NO_CACHE;
+uint8_t *eth_send_no_cache = (uint8_t *)SEND_DATA_NO_CACHE;
+uint8_t *eth_recv_no_cache = (uint8_t *)RECV_DATA_NO_CACHE;
 
 #ifdef RT_USING_USERSPACE
 struct mem_desc platform_mem_desc[] = {

+ 1 - 1
bsp/raspberry-pi/raspi4-64/drivers/drv_eth.c

@@ -431,7 +431,7 @@ static rt_uint32_t bcmgenet_gmac_eth_recv(rt_uint8_t **packetp)
     }
     else
     {
-        if(prev_recv_cnt == prod_index)
+        if(prev_recv_cnt == (prod_index & 0xffffUL))
         {
             return 0;
         }

+ 0 - 10
bsp/raspberry-pi/raspi4-64/drivers/drv_uart.c

@@ -117,16 +117,6 @@ static rt_err_t uart_control(struct rt_serial_device *serial, int cmd, void *arg
     switch (cmd)
     {
     case RT_DEVICE_CTRL_CLR_INT:
-        /* disable rx irq */
-        if(uart->hw_base == AUX_BASE)
-        {
-            AUX_MU_IER_REG(uart->hw_base) = 0x0;
-        }
-        else
-        {
-            PL011_REG_IMSC(uart->hw_base) &= ~((uint32_t)PL011_IMSC_RXIM);
-        }
-        rt_hw_interrupt_mask(uart->irqno);
         break;
 
     case RT_DEVICE_CTRL_SET_INT:

+ 3 - 3
bsp/raspberry-pi/raspi4-64/drivers/raspi4.h

@@ -165,15 +165,15 @@ extern size_t mmc2_base_addr;
 
 //mac
 #define MAC_REG                 (void *)(0xfd580000)
-extern void *                   mac_reg_base_addr;
+extern uint8_t *                mac_reg_base_addr;
 
 #define ETH_IRQ                 (160+29)
 
 #define SEND_DATA_NO_CACHE      (0x08200000)
-extern void *                   eth_send_no_cache;
+extern uint8_t *                eth_send_no_cache;
 
 #define RECV_DATA_NO_CACHE      (0x08400000)
-extern void *                   eth_recv_no_cache;
+extern uint8_t *                eth_recv_no_cache;
 
 /* the basic constants and interfaces needed by gic */
 rt_inline size_t platform_get_gic_dist_base(void)