change esp8266 to wifi, ec200 to lte, w5500 to enet
This commit is contained in:
parent
95667a74d2
commit
50c21fe298
|
@ -129,9 +129,9 @@ endmenu
|
|||
|
||||
endif # BSP_USING_CH438
|
||||
|
||||
menuconfig BSP_USING_EC200
|
||||
menuconfig BSP_USING_LTE
|
||||
depends on U16550_UART2
|
||||
bool "Using EC200 device"
|
||||
bool "Using LTE device"
|
||||
default n
|
||||
|
||||
menuconfig BSP_USING_CAN
|
||||
|
@ -139,13 +139,13 @@ menuconfig BSP_USING_CAN
|
|||
bool "Using CAN device"
|
||||
default n
|
||||
|
||||
menuconfig BSP_USING_ESP8266
|
||||
menuconfig BSP_USING_WIFI
|
||||
depends on U16550_UART2
|
||||
bool "Using ESP8266 device"
|
||||
bool "Using WIFI device"
|
||||
default n
|
||||
|
||||
menuconfig BSP_USING_W5500
|
||||
bool "Using W5500 device"
|
||||
menuconfig BSP_USING_ENET
|
||||
bool "Using ENET device"
|
||||
default n
|
||||
|
||||
endif # ARCH_BOARD_XIDATONG_RISCV64
|
||||
|
|
|
@ -58,4 +58,4 @@ CONFIG_READLINE_TABCOMPLETION=y
|
|||
CONFIG_SCHED_HPWORK=y
|
||||
CONFIG_DEV_GPIO=y
|
||||
CONFIG_BOARDCTL_RESET=y
|
||||
CONFIG_BSP_USING_W5500=y
|
||||
CONFIG_BSP_USING_ENET=y
|
|
@ -1,78 +0,0 @@
|
|||
#
|
||||
# This file is autogenerated: PLEASE DO NOT EDIT IT.
|
||||
#
|
||||
# You can use "make menuconfig" to make any modifications to the installed .config file.
|
||||
# You can then do "make savedefconfig" to generate a new defconfig file that includes your
|
||||
# modifications.
|
||||
#
|
||||
# CONFIG_NSH_DISABLE_LOSMART is not set
|
||||
# CONFIG_STANDARD_SERIAL is not set
|
||||
CONFIG_ADD_NUTTX_FETURES=y
|
||||
CONFIG_ARCH="risc-v"
|
||||
CONFIG_ARCH_BOARD="xidatong-riscv64"
|
||||
CONFIG_ARCH_BOARD_XIDATONG_RISCV64=y
|
||||
CONFIG_ARCH_CHIP="k210"
|
||||
CONFIG_ARCH_CHIP_K210=y
|
||||
CONFIG_ARCH_INTERRUPTSTACK=2048
|
||||
CONFIG_ARCH_RISCV=y
|
||||
CONFIG_ARCH_STACKDUMP=y
|
||||
CONFIG_BINFMT_DISABLE=y
|
||||
CONFIG_BOARD_LOOPSPERMSEC=46000
|
||||
CONFIG_BUILTIN=y
|
||||
CONFIG_DEBUG_FULLOPT=y
|
||||
CONFIG_DEBUG_SYMBOLS=y
|
||||
CONFIG_EXAMPLES_HELLO=y
|
||||
CONFIG_IDLETHREAD_STACKSIZE=2048
|
||||
CONFIG_INIT_ENTRYPOINT="nsh_main"
|
||||
CONFIG_INIT_STACKSIZE=3072
|
||||
CONFIG_INTELHEX_BINARY=y
|
||||
CONFIG_LIBC_PERROR_STDOUT=y
|
||||
CONFIG_LIBC_STRERROR=y
|
||||
CONFIG_NSH_ARCHINIT=y
|
||||
CONFIG_NSH_BUILTIN_APPS=y
|
||||
CONFIG_NSH_DISABLE_IFUPDOWN=y
|
||||
CONFIG_NSH_DISABLE_MKDIR=y
|
||||
CONFIG_NSH_DISABLE_RM=y
|
||||
CONFIG_NSH_DISABLE_RMDIR=y
|
||||
CONFIG_NSH_DISABLE_UMOUNT=y
|
||||
CONFIG_NSH_READLINE=y
|
||||
CONFIG_NSH_STRERROR=y
|
||||
CONFIG_PREALLOC_TIMERS=4
|
||||
CONFIG_RAM_SIZE=2097152
|
||||
CONFIG_RAM_START=0x80400000
|
||||
CONFIG_RAW_BINARY=y
|
||||
CONFIG_READLINE_CMD_HISTORY=y
|
||||
CONFIG_READLINE_CMD_HISTORY_LEN=100
|
||||
CONFIG_READLINE_CMD_HISTORY_LINELEN=120
|
||||
CONFIG_RR_INTERVAL=200
|
||||
CONFIG_SCHED_WAITPID=y
|
||||
CONFIG_STACK_COLORATION=y
|
||||
CONFIG_START_DAY=28
|
||||
CONFIG_START_MONTH=12
|
||||
CONFIG_START_YEAR=2019
|
||||
CONFIG_SYSTEM_NSH=y
|
||||
CONFIG_TASK_NAME_SIZE=20
|
||||
CONFIG_TESTING_GETPRIME=y
|
||||
CONFIG_UART0_SERIAL_CONSOLE=y
|
||||
CONFIG_READLINE_TABCOMPLETION=y
|
||||
CONFIG_SCHED_HPWORK=y
|
||||
CONFIG_DEV_GPIO=y
|
||||
CONFIG_BOARDCTL_RESET=y
|
||||
CONFIG_U16550_UART=y
|
||||
CONFIG_U16550_UART2=y
|
||||
CONFIG_U16550_UART2_BASE=0x50220000
|
||||
CONFIG_U16550_UART2_CLOCK=195000000
|
||||
CONFIG_U16550_UART2_IRQ=39
|
||||
CONFIG_U16550_UART2_BAUD=115200
|
||||
CONFIG_U16550_UART2_PARITY=0
|
||||
CONFIG_U16550_UART2_BITS=8
|
||||
CONFIG_U16550_UART2_2STOP=0
|
||||
CONFIG_U16550_UART2_RXBUFSIZE=256
|
||||
CONFIG_U16550_UART2_TXBUFSIZE=256
|
||||
CONFIG_U16550_NO_SERIAL_CONSOLE=y
|
||||
CONFIG_U16550_SUPRESS_INITIAL_CONFIG=y
|
||||
CONFIG_SERIAL_UART_ARCH_MMIO=y
|
||||
CONFIG_U16550_REGINCR=4
|
||||
CONFIG_U16550_REGWIDTH=32
|
||||
CONFIG_U16550_ADDRWIDTH=32
|
||||
CONFIG_BSP_USING_ESP8266=y
|
|
@ -75,4 +75,4 @@ CONFIG_SERIAL_UART_ARCH_MMIO=y
|
|||
CONFIG_U16550_REGINCR=4
|
||||
CONFIG_U16550_REGWIDTH=32
|
||||
CONFIG_U16550_ADDRWIDTH=32
|
||||
CONFIG_BSP_USING_EC200=y
|
||||
CONFIG_BSP_USING_LTE=y
|
|
@ -1,61 +0,0 @@
|
|||
#
|
||||
# This file is autogenerated: PLEASE DO NOT EDIT IT.
|
||||
#
|
||||
# You can use "make menuconfig" to make any modifications to the installed .config file.
|
||||
# You can then do "make savedefconfig" to generate a new defconfig file that includes your
|
||||
# modifications.
|
||||
#
|
||||
# CONFIG_NSH_DISABLE_LOSMART is not set
|
||||
# CONFIG_STANDARD_SERIAL is not set
|
||||
CONFIG_ADD_NUTTX_FETURES=y
|
||||
CONFIG_ARCH="risc-v"
|
||||
CONFIG_ARCH_BOARD="xidatong-riscv64"
|
||||
CONFIG_ARCH_BOARD_XIDATONG_RISCV64=y
|
||||
CONFIG_ARCH_CHIP="k210"
|
||||
CONFIG_ARCH_CHIP_K210=y
|
||||
CONFIG_ARCH_INTERRUPTSTACK=2048
|
||||
CONFIG_ARCH_RISCV=y
|
||||
CONFIG_ARCH_STACKDUMP=y
|
||||
CONFIG_BINFMT_DISABLE=y
|
||||
CONFIG_BOARD_LOOPSPERMSEC=46000
|
||||
CONFIG_BUILTIN=y
|
||||
CONFIG_DEBUG_FULLOPT=y
|
||||
CONFIG_DEBUG_SYMBOLS=y
|
||||
CONFIG_EXAMPLES_HELLO=y
|
||||
CONFIG_IDLETHREAD_STACKSIZE=2048
|
||||
CONFIG_INIT_ENTRYPOINT="nsh_main"
|
||||
CONFIG_INIT_STACKSIZE=3072
|
||||
CONFIG_INTELHEX_BINARY=y
|
||||
CONFIG_LIBC_PERROR_STDOUT=y
|
||||
CONFIG_LIBC_STRERROR=y
|
||||
CONFIG_NSH_ARCHINIT=y
|
||||
CONFIG_NSH_BUILTIN_APPS=y
|
||||
CONFIG_NSH_DISABLE_IFUPDOWN=y
|
||||
CONFIG_NSH_DISABLE_MKDIR=y
|
||||
CONFIG_NSH_DISABLE_RM=y
|
||||
CONFIG_NSH_DISABLE_RMDIR=y
|
||||
CONFIG_NSH_DISABLE_UMOUNT=y
|
||||
CONFIG_NSH_READLINE=y
|
||||
CONFIG_NSH_STRERROR=y
|
||||
CONFIG_PREALLOC_TIMERS=4
|
||||
CONFIG_RAM_SIZE=2097152
|
||||
CONFIG_RAM_START=0x80400000
|
||||
CONFIG_RAW_BINARY=y
|
||||
CONFIG_READLINE_CMD_HISTORY=y
|
||||
CONFIG_READLINE_CMD_HISTORY_LEN=100
|
||||
CONFIG_READLINE_CMD_HISTORY_LINELEN=120
|
||||
CONFIG_RR_INTERVAL=200
|
||||
CONFIG_SCHED_WAITPID=y
|
||||
CONFIG_STACK_COLORATION=y
|
||||
CONFIG_START_DAY=28
|
||||
CONFIG_START_MONTH=12
|
||||
CONFIG_START_YEAR=2019
|
||||
CONFIG_SYSTEM_NSH=y
|
||||
CONFIG_TASK_NAME_SIZE=20
|
||||
CONFIG_TESTING_GETPRIME=y
|
||||
CONFIG_UART0_SERIAL_CONSOLE=y
|
||||
CONFIG_READLINE_TABCOMPLETION=y
|
||||
CONFIG_SCHED_HPWORK=y
|
||||
CONFIG_DEV_GPIO=y
|
||||
CONFIG_BOARDCTL_RESET=y
|
||||
CONFIG_BSP_USING_W5500=y
|
|
@ -75,4 +75,4 @@ CONFIG_SERIAL_UART_ARCH_MMIO=y
|
|||
CONFIG_U16550_REGINCR=4
|
||||
CONFIG_U16550_REGWIDTH=32
|
||||
CONFIG_U16550_ADDRWIDTH=32
|
||||
CONFIG_BSP_USING_ESP8266=y
|
||||
CONFIG_BSP_USING_WIFI=y
|
|
@ -50,20 +50,20 @@ ifeq ($(CONFIG_BSP_USING_CH376),y)
|
|||
CSRCS += k210_ch376.c ch376_demo.c
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_BSP_USING_EC200),y)
|
||||
CSRCS += k210_ec200.c ec200_demo.c
|
||||
ifeq ($(CONFIG_BSP_USING_LTE),y)
|
||||
CSRCS += k210_lte.c lte_demo.c
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_BSP_USING_CAN),y)
|
||||
CSRCS += k210_can.c can_demo.c
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_BSP_USING_ESP8266),y)
|
||||
CSRCS += k210_esp8266.c esp8266_demo.c
|
||||
ifeq ($(CONFIG_BSP_USING_WIFI),y)
|
||||
CSRCS += k210_wifi.c wifi_demo.c
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_BSP_USING_W5500),y)
|
||||
CSRCS += k210_w5500.c w5500.c w5500_demo.c
|
||||
ifeq ($(CONFIG_BSP_USING_ENET),y)
|
||||
CSRCS += k210_enet.c w5500.c enet_demo.c
|
||||
endif
|
||||
|
||||
include $(TOPDIR)/boards/Board.mk
|
||||
|
|
|
@ -11,19 +11,19 @@
|
|||
*/
|
||||
|
||||
/**
|
||||
* @file w5500_demo.c
|
||||
* @brief xidatong-riscv64 w5500_demo.c
|
||||
* @file enet_demo.c
|
||||
* @brief xidatong-riscv64 enet_demo.c
|
||||
* @version 1.0
|
||||
* @author AIIT XUOS Lab
|
||||
* @date 2022.08.22
|
||||
* @date 2022.9.16
|
||||
*/
|
||||
|
||||
#include "k210_w5500.h"
|
||||
#include "k210_enet.h"
|
||||
#include "w5500.h"
|
||||
|
||||
#define w_print printf
|
||||
|
||||
void W5500Demo(void)
|
||||
void EnetDemo(void)
|
||||
{
|
||||
w_print("start %s\n", __func__);
|
||||
w5500_net_test();
|
|
@ -45,20 +45,20 @@
|
|||
# include "k210_ch376.h"
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_BSP_USING_EC200
|
||||
# include "k210_ec200.h"
|
||||
#ifdef CONFIG_BSP_USING_LTE
|
||||
# include "k210_lte.h"
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_BSP_USING_CAN
|
||||
# include "k210_can.h"
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_BSP_USING_ESP8266
|
||||
# include "k210_esp8266.h"
|
||||
#ifdef CONFIG_BSP_USING_WIFI
|
||||
# include "k210_wifi.h"
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_BSP_USING_W5500
|
||||
# include "k210_w5500.h"
|
||||
#ifdef CONFIG_BSP_USING_ENET
|
||||
# include "k210_enet.h"
|
||||
#endif
|
||||
|
||||
#include "k210_sysctl.h"
|
||||
|
@ -114,11 +114,11 @@ int k210_bringup(void)
|
|||
board_ch376_initialize();
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_BSP_USING_EC200
|
||||
#ifdef CONFIG_BSP_USING_LTE
|
||||
k210_sysctl_init();
|
||||
sysctl_clock_enable(SYSCTL_CLOCK_UART2);
|
||||
sysctl_reset(SYSCTL_RESET_UART2);
|
||||
board_ec200_initialize();
|
||||
board_lte_initialize();
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_BSP_USING_CAN
|
||||
|
@ -128,16 +128,16 @@ int k210_bringup(void)
|
|||
board_can_initialize();
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_BSP_USING_ESP8266
|
||||
#ifdef CONFIG_BSP_USING_WIFI
|
||||
k210_sysctl_init();
|
||||
sysctl_clock_enable(SYSCTL_CLOCK_UART3);
|
||||
sysctl_reset(SYSCTL_RESET_UART3);
|
||||
board_esp8266_initialize();
|
||||
board_wifi_initialize();
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_BSP_USING_W5500
|
||||
#ifdef CONFIG_BSP_USING_ENET
|
||||
k210_sysctl_init();
|
||||
board_w5500_initialize();
|
||||
board_enet_initialize();
|
||||
#endif
|
||||
|
||||
return ret;
|
||||
|
|
|
@ -11,8 +11,8 @@
|
|||
*/
|
||||
|
||||
/**
|
||||
* @file k210_w5500.c
|
||||
* @brief support to register w5500 pointer and function
|
||||
* @file k210_enet.c
|
||||
* @brief support to register enet pointer and function
|
||||
* @version 1.0
|
||||
* @author AIIT XUOS Lab
|
||||
* @date 2022-9-14
|
||||
|
@ -22,18 +22,18 @@
|
|||
#include <nuttx/wqueue.h>
|
||||
#include <sys/poll.h>
|
||||
#include "ctype.h"
|
||||
#include "k210_w5500.h"
|
||||
#include "k210_enet.h"
|
||||
|
||||
#define w_print printf
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
struct w5500_dev_s g_w5500dev;
|
||||
static char *w5500_dev_name = "/dev/w5500";
|
||||
struct enet_dev_s g_enetdev;
|
||||
static char *enet_dev_name = "/dev/enet";
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
void w5500_print_buf(int size, uint8_t *buf)
|
||||
void enet_print_buf(int size, uint8_t *buf)
|
||||
{
|
||||
char ch[10] = {0};
|
||||
char temp[256] = {0};
|
||||
|
@ -63,65 +63,51 @@ void w5500_print_buf(int size, uint8_t *buf)
|
|||
}
|
||||
}
|
||||
if(size)
|
||||
w_print("w5500 read %d data: %s\n", size, temp);
|
||||
w_print("enet read %d data: %s\n", size, temp);
|
||||
}
|
||||
|
||||
//int w5500_read_buf(void *dev, int *size, uint8_t *buf)
|
||||
//{
|
||||
// uart_dev_t *uart_dev = (uart_dev_t *)dev;
|
||||
// int cur_size = uart_dev->recv.head - uart_dev->recv.tail;
|
||||
// *size = *size > cur_size ? cur_size : *size;
|
||||
// memcpy(buf, uart_dev->recv.buffer, *size);
|
||||
// uart_dev->recv.head = uart_dev->recv.tail;
|
||||
// w5500_print_buf(*size, buf);
|
||||
// return *size;
|
||||
//}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: w5500_data_work
|
||||
* Name: enet_data_work
|
||||
*
|
||||
* Description:
|
||||
* thread task w5500_data_work
|
||||
* thread task enet_data_work
|
||||
*
|
||||
****************************************************************************/
|
||||
static FAR void w5500_data_work(FAR void *arg)
|
||||
static FAR void enet_data_work(FAR void *arg)
|
||||
{
|
||||
struct w5500_dev_s *w5500_dev = (struct w5500_dev_s *)arg;
|
||||
// uart_dev_t *uart_dev = w5500_dev->uart_dev;
|
||||
nxsem_wait(&w5500_dev->waitsem);
|
||||
w5500_dev->recv_size = W5500_RECV_BUF_SIZE;
|
||||
// w5500_read_buf(uart_dev, &w5500_dev->recv_size, w5500_dev->recv_buf);
|
||||
work_queue(HPWORK, &w5500_dev->irqwork, w5500_data_work, w5500_dev, W5500_INCREMENT);
|
||||
// w5500info("uart size %d ok!\n", w5500_dev->recv_size);
|
||||
struct enet_dev_s *enet_dev = (struct enet_dev_s *)arg;
|
||||
nxsem_wait(&enet_dev->waitsem);
|
||||
enet_dev->recv_size = ENET_RECV_BUF_SIZE;
|
||||
work_queue(HPWORK, &enet_dev->irqwork, enet_data_work, enet_dev, ENET_INCREMENT);
|
||||
enetinfo("uart size %d ok!\n", enet_dev->recv_size);
|
||||
}
|
||||
|
||||
static int w5500_bringup(struct w5500_dev_s *dev)
|
||||
static int enet_bringup(struct enet_dev_s *dev)
|
||||
{
|
||||
// struct w5500_dev_s *w5500_dev = &g_w5500dev;
|
||||
|
||||
dev->uart_fd = open(dev->dev_name, O_RDWR);
|
||||
|
||||
w5500info("open %s fd = %d\n", dev->dev_name, dev->uart_fd);
|
||||
enetinfo("open %s fd = %d\n", dev->dev_name, dev->uart_fd);
|
||||
|
||||
work_queue(HPWORK, &dev->irqwork, w5500_data_work, dev, W5500_INCREMENT);
|
||||
work_queue(HPWORK, &dev->irqwork, enet_data_work, dev, ENET_INCREMENT);
|
||||
return OK;
|
||||
}
|
||||
|
||||
static int w5500_write_config(struct w5500_dev_s *dev)
|
||||
static int enet_write_config(struct enet_dev_s *dev)
|
||||
{
|
||||
return OK;
|
||||
}
|
||||
|
||||
static int w5500_shutdown(struct w5500_dev_s *dev)
|
||||
static int enet_shutdown(struct enet_dev_s *dev)
|
||||
{
|
||||
close(dev->uart_fd);
|
||||
return OK;
|
||||
}
|
||||
|
||||
static int w5500_open(FAR struct file *filep)
|
||||
static int enet_open(FAR struct file *filep)
|
||||
{
|
||||
FAR struct inode *inode;
|
||||
FAR struct w5500_dev_s *priv;
|
||||
FAR struct enet_dev_s *priv;
|
||||
|
||||
uint8_t ref_cnt;
|
||||
|
||||
|
@ -131,14 +117,14 @@ static int w5500_open(FAR struct file *filep)
|
|||
inode = filep->f_inode;
|
||||
DEBUGASSERT(inode && inode->i_private);
|
||||
|
||||
priv = (FAR struct w5500_dev_s *)inode->i_private;
|
||||
priv = (FAR struct enet_dev_s *)inode->i_private;
|
||||
|
||||
/* Get exclusive access to the driver data structure */
|
||||
ret = nxsem_wait(&priv->devsem);
|
||||
|
||||
if(ret < 0)
|
||||
{
|
||||
w5500err("ERROR: nxsem_wait failed: %d\n", ret);
|
||||
eneterr("ERROR: nxsem_wait failed: %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -158,20 +144,20 @@ static int w5500_open(FAR struct file *filep)
|
|||
|
||||
if(ref_cnt == 1)
|
||||
{
|
||||
ret = w5500_bringup(priv);
|
||||
ret = enet_bringup(priv);
|
||||
|
||||
if(ret < 0)
|
||||
{
|
||||
w5500err("ERROR: w5500_bringup failed: %d\n", ret);
|
||||
eneterr("ERROR: enet_bringup failed: %d\n", ret);
|
||||
nxsem_post(&priv->devsem);
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = w5500_write_config(priv);
|
||||
ret = enet_write_config(priv);
|
||||
|
||||
if(ret < 0)
|
||||
{
|
||||
w5500err("ERROR: w5500_write_config failed: %d\n", ret);
|
||||
eneterr("ERROR: enet_write_config failed: %d\n", ret);
|
||||
nxsem_post(&priv->devsem);
|
||||
return ret;
|
||||
}
|
||||
|
@ -185,13 +171,13 @@ static int w5500_open(FAR struct file *filep)
|
|||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: w5500_close
|
||||
* Name: enet_close
|
||||
****************************************************************************/
|
||||
|
||||
static int w5500_close(FAR struct file *filep)
|
||||
static int enet_close(FAR struct file *filep)
|
||||
{
|
||||
FAR struct inode *inode;
|
||||
FAR struct w5500_dev_s *priv;
|
||||
FAR struct enet_dev_s *priv;
|
||||
|
||||
int ret;
|
||||
|
||||
|
@ -199,14 +185,14 @@ static int w5500_close(FAR struct file *filep)
|
|||
inode = filep->f_inode;
|
||||
DEBUGASSERT(inode && inode->i_private);
|
||||
|
||||
priv = (FAR struct w5500_dev_s *)inode->i_private;
|
||||
priv = (FAR struct enet_dev_s *)inode->i_private;
|
||||
|
||||
/* Get exclusive access to the driver data structure */
|
||||
ret = nxsem_wait(&priv->devsem);
|
||||
|
||||
if(ret < 0)
|
||||
{
|
||||
w5500err("ERROR: nxsem_wait failed: %d\n", ret);
|
||||
eneterr("ERROR: nxsem_wait failed: %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -220,12 +206,12 @@ static int w5500_close(FAR struct file *filep)
|
|||
}
|
||||
|
||||
/* When the count decrements to zero, there are no further open references
|
||||
* to the driver and it w5500 be uninitialized.
|
||||
* to the driver and it enet be uninitialized.
|
||||
*/
|
||||
|
||||
if(priv->crefs == 0)
|
||||
{
|
||||
w5500_shutdown(priv);
|
||||
enet_shutdown(priv);
|
||||
}
|
||||
|
||||
nxsem_post(&priv->devsem);
|
||||
|
@ -233,26 +219,26 @@ static int w5500_close(FAR struct file *filep)
|
|||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: w5500_read
|
||||
* Name: enet_read
|
||||
****************************************************************************/
|
||||
|
||||
static ssize_t w5500_read(FAR struct file *filep, FAR char *buffer, size_t len)
|
||||
static ssize_t enet_read(FAR struct file *filep, FAR char *buffer, size_t len)
|
||||
{
|
||||
FAR struct inode *inode;
|
||||
FAR struct w5500_dev_s *priv;
|
||||
FAR struct enet_dev_s *priv;
|
||||
int ret, buf_size = len;
|
||||
|
||||
DEBUGASSERT(filep);
|
||||
inode = filep->f_inode;
|
||||
DEBUGASSERT(inode && inode->i_private);
|
||||
|
||||
priv = (FAR struct w5500_dev_s *)inode->i_private;
|
||||
priv = (FAR struct enet_dev_s *)inode->i_private;
|
||||
|
||||
ret = nxsem_wait(&priv->devsem);
|
||||
|
||||
if(ret < 0)
|
||||
{
|
||||
w5500err("ERROR: nxsem_wait failed: %d\n", ret);
|
||||
eneterr("ERROR: nxsem_wait failed: %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -264,42 +250,42 @@ static ssize_t w5500_read(FAR struct file *filep, FAR char *buffer, size_t len)
|
|||
|
||||
|
||||
/****************************************************************************
|
||||
* Name: w5500_write
|
||||
* Name: enet_write
|
||||
****************************************************************************/
|
||||
|
||||
static ssize_t w5500_write(FAR struct file *filep, FAR const char *buffer, size_t len)
|
||||
static ssize_t enet_write(FAR struct file *filep, FAR const char *buffer, size_t len)
|
||||
{
|
||||
FAR struct inode *inode;
|
||||
FAR struct w5500_dev_s *priv;
|
||||
FAR struct enet_dev_s *priv;
|
||||
int ret;
|
||||
DEBUGASSERT(filep);
|
||||
inode = filep->f_inode;
|
||||
DEBUGASSERT(inode && inode->i_private);
|
||||
priv = (FAR struct w5500_dev_s *)inode->i_private;
|
||||
priv = (FAR struct enet_dev_s *)inode->i_private;
|
||||
|
||||
/* Get exclusive access to the driver data structure */
|
||||
ret = nxsem_wait(&priv->devsem);
|
||||
|
||||
if(ret < 0)
|
||||
{
|
||||
w5500err("ERROR: nxsem_wait failed: %d\n", ret);
|
||||
eneterr("ERROR: nxsem_wait failed: %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = write(priv->uart_fd, buffer, len);
|
||||
w5500info("write fd %d len %ld ret = %d\n", priv->uart_fd, len, ret);
|
||||
enetinfo("write fd %d len %ld ret = %d\n", priv->uart_fd, len, ret);
|
||||
nxsem_post(&priv->devsem);
|
||||
return ret;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: w5500_ioctl
|
||||
* Name: enet_ioctl
|
||||
****************************************************************************/
|
||||
|
||||
static int w5500_ioctl(FAR struct file *filep, int cmd, unsigned long arg)
|
||||
static int enet_ioctl(FAR struct file *filep, int cmd, unsigned long arg)
|
||||
{
|
||||
FAR struct inode *inode;
|
||||
FAR struct w5500_dev_s *priv;
|
||||
FAR struct enet_dev_s *priv;
|
||||
FAR uint32_t *ptr;
|
||||
|
||||
int ret;
|
||||
|
@ -308,14 +294,14 @@ static int w5500_ioctl(FAR struct file *filep, int cmd, unsigned long arg)
|
|||
inode = filep->f_inode;
|
||||
DEBUGASSERT(inode && inode->i_private);
|
||||
|
||||
priv = (FAR struct w5500_dev_s *)inode->i_private;
|
||||
priv = (FAR struct enet_dev_s *)inode->i_private;
|
||||
|
||||
/* Get exclusive access to the driver data structure */
|
||||
ret = nxsem_wait(&priv->devsem);
|
||||
|
||||
if(ret < 0)
|
||||
{
|
||||
w5500err("ERROR: nxsem_wait failed: %d\n", ret);
|
||||
eneterr("ERROR: nxsem_wait failed: %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -323,7 +309,7 @@ static int w5500_ioctl(FAR struct file *filep, int cmd, unsigned long arg)
|
|||
|
||||
switch(cmd)
|
||||
{
|
||||
case W5500IOC_SETFREQUENCY: /* arg: Pointer to uint32_t frequency value */
|
||||
case ENETIOC_SETFREQUENCY: /* arg: Pointer to uint32_t frequency value */
|
||||
ptr = (FAR uint32_t *)((uintptr_t)arg);
|
||||
DEBUGASSERT(priv->config != NULL && ptr != NULL);
|
||||
break;
|
||||
|
@ -337,36 +323,36 @@ static int w5500_ioctl(FAR struct file *filep, int cmd, unsigned long arg)
|
|||
return ret;
|
||||
}
|
||||
|
||||
void w5500_notify(uart_dev_t *dev)
|
||||
void enet_notify(uart_dev_t *dev)
|
||||
{
|
||||
nxsem_post(&g_w5500dev.waitsem);
|
||||
nxsem_post(&g_enetdev.waitsem);
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: w5500_poll
|
||||
* Name: enet_poll
|
||||
****************************************************************************/
|
||||
|
||||
static int w5500_poll(FAR struct file *filep, FAR struct pollfd *fds, bool setup)
|
||||
static int enet_poll(FAR struct file *filep, FAR struct pollfd *fds, bool setup)
|
||||
{
|
||||
FAR struct inode *inode;
|
||||
FAR struct w5500_dev_s *priv;
|
||||
FAR struct enet_dev_s *priv;
|
||||
|
||||
int ret;
|
||||
|
||||
w5500info("setup: %d\n", (int)setup);
|
||||
enetinfo("setup: %d\n", (int)setup);
|
||||
|
||||
DEBUGASSERT(filep && fds);
|
||||
inode = filep->f_inode;
|
||||
DEBUGASSERT(inode && inode->i_private);
|
||||
|
||||
priv = (FAR struct w5500_dev_s *)inode->i_private;
|
||||
priv = (FAR struct enet_dev_s *)inode->i_private;
|
||||
|
||||
/* Are we setting up the poll? Or tearing it down? */
|
||||
ret = nxsem_wait(&priv->devsem);
|
||||
|
||||
if(ret < 0)
|
||||
{
|
||||
w5500err("ERROR: nxsem_wait failed: %d\n", ret);
|
||||
eneterr("ERROR: nxsem_wait failed: %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -375,11 +361,11 @@ static int w5500_poll(FAR struct file *filep, FAR struct pollfd *fds, bool setup
|
|||
/* Ignore waits that do not include POLLIN */
|
||||
if((fds->events & POLLIN) == 0)
|
||||
{
|
||||
w5500err("ERROR: Missing POLLIN: revents: %08x\n", fds->revents);
|
||||
eneterr("ERROR: Missing POLLIN: revents: %08x\n", fds->revents);
|
||||
nxsem_post(&priv->devsem);
|
||||
return -EDEADLK;
|
||||
}
|
||||
w5500_notify(priv->uart_dev);
|
||||
enet_notify(priv->uart_dev);
|
||||
}
|
||||
else if(fds->priv)
|
||||
{
|
||||
|
@ -396,28 +382,28 @@ static int w5500_poll(FAR struct file *filep, FAR struct pollfd *fds, bool setup
|
|||
}
|
||||
|
||||
|
||||
static const struct file_operations w5500_fops =
|
||||
static const struct file_operations enet_fops =
|
||||
{
|
||||
w5500_open, /* open */
|
||||
w5500_close, /* close */
|
||||
w5500_read, /* read */
|
||||
w5500_write, /* write */
|
||||
enet_open, /* open */
|
||||
enet_close, /* close */
|
||||
enet_read, /* read */
|
||||
enet_write, /* write */
|
||||
NULL, /* seek */
|
||||
w5500_ioctl, /* ioctl */
|
||||
w5500_poll /* poll */
|
||||
enet_ioctl, /* ioctl */
|
||||
enet_poll /* poll */
|
||||
};
|
||||
|
||||
|
||||
/****************************************************************************
|
||||
* Name: w5500_register
|
||||
* Name: enet_register
|
||||
*
|
||||
* Description:
|
||||
* Register /dev/ext_uartN
|
||||
*
|
||||
****************************************************************************/
|
||||
static int w5500_register(FAR const char *devpath)
|
||||
static int enet_register(FAR const char *devpath)
|
||||
{
|
||||
FAR struct w5500_dev_s *priv = &g_w5500dev;
|
||||
FAR struct enet_dev_s *priv = &g_enetdev;
|
||||
int ret = 0;
|
||||
|
||||
nxsem_init(&priv->devsem, 0, 1);
|
||||
|
@ -425,7 +411,7 @@ static int w5500_register(FAR const char *devpath)
|
|||
nxsem_set_protocol(&priv->waitsem, SEM_PRIO_NONE);
|
||||
|
||||
/* Register the driver */
|
||||
ret = register_driver(devpath, &w5500_fops, 0666, priv);
|
||||
ret = register_driver(devpath, &enet_fops, 0666, priv);
|
||||
if(ret < 0)
|
||||
{
|
||||
kmm_free(priv);
|
||||
|
@ -435,36 +421,36 @@ static int w5500_register(FAR const char *devpath)
|
|||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: w5500_init
|
||||
* Name: enet_init
|
||||
*
|
||||
* Description:
|
||||
* Ch376 default initialization function
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
void board_w5500_initialize(void)
|
||||
void board_enet_initialize(void)
|
||||
{
|
||||
//simluate SPI bus
|
||||
k210_fpioa_config(BSP_W5500_SCLK, HS_GPIO(FPIOA_W5500_SCLK) | K210_IOFLAG_GPIOHS);
|
||||
k210_fpioa_config(BSP_W5500_NRST, HS_GPIO(FPIOA_W5500_NRST) | K210_IOFLAG_GPIOHS);
|
||||
k210_fpioa_config(BSP_W5500_MOSI, HS_GPIO(FPIOA_W5500_MOSI) | K210_IOFLAG_GPIOHS);
|
||||
k210_fpioa_config(BSP_W5500_MISO, HS_GPIO(FPIOA_W5500_MISO) | K210_IOFLAG_GPIOHS);
|
||||
k210_fpioa_config(BSP_W5500_NCS, HS_GPIO(FPIOA_W5500_NCS) | K210_IOFLAG_GPIOHS);
|
||||
k210_fpioa_config(BSP_W5500_NINT, HS_GPIO(FPIOA_W5500_NINT) | K210_IOFLAG_GPIOHS);
|
||||
k210_fpioa_config(BSP_ENET_SCLK, HS_GPIO(FPIOA_ENET_SCLK) | K210_IOFLAG_GPIOHS);
|
||||
k210_fpioa_config(BSP_ENET_NRST, HS_GPIO(FPIOA_ENET_NRST) | K210_IOFLAG_GPIOHS);
|
||||
k210_fpioa_config(BSP_ENET_MOSI, HS_GPIO(FPIOA_ENET_MOSI) | K210_IOFLAG_GPIOHS);
|
||||
k210_fpioa_config(BSP_ENET_MISO, HS_GPIO(FPIOA_ENET_MISO) | K210_IOFLAG_GPIOHS);
|
||||
k210_fpioa_config(BSP_ENET_NCS, HS_GPIO(FPIOA_ENET_NCS) | K210_IOFLAG_GPIOHS);
|
||||
k210_fpioa_config(BSP_ENET_NINT, HS_GPIO(FPIOA_ENET_NINT) | K210_IOFLAG_GPIOHS);
|
||||
|
||||
k210_gpiohs_set_direction(FPIOA_W5500_MISO, GPIO_DM_INPUT);
|
||||
k210_gpiohs_set_direction(FPIOA_W5500_NRST, GPIO_DM_OUTPUT);
|
||||
k210_gpiohs_set_direction(FPIOA_W5500_SCLK, GPIO_DM_OUTPUT);
|
||||
k210_gpiohs_set_direction(FPIOA_W5500_MOSI, GPIO_DM_OUTPUT);
|
||||
k210_gpiohs_set_direction(FPIOA_W5500_NCS, GPIO_DM_OUTPUT);
|
||||
k210_gpiohs_set_direction(FPIOA_W5500_NINT, GPIO_DM_INPUT);
|
||||
k210_gpiohs_set_direction(FPIOA_ENET_MISO, GPIO_DM_INPUT);
|
||||
k210_gpiohs_set_direction(FPIOA_ENET_NRST, GPIO_DM_OUTPUT);
|
||||
k210_gpiohs_set_direction(FPIOA_ENET_SCLK, GPIO_DM_OUTPUT);
|
||||
k210_gpiohs_set_direction(FPIOA_ENET_MOSI, GPIO_DM_OUTPUT);
|
||||
k210_gpiohs_set_direction(FPIOA_ENET_NCS, GPIO_DM_OUTPUT);
|
||||
k210_gpiohs_set_direction(FPIOA_ENET_NINT, GPIO_DM_INPUT);
|
||||
|
||||
k210_gpiohs_set_value(FPIOA_W5500_SCLK, GPIO_PV_HIGH);
|
||||
k210_gpiohs_set_value(FPIOA_W5500_MOSI, GPIO_PV_HIGH);
|
||||
k210_gpiohs_set_value(FPIOA_W5500_NCS, GPIO_PV_LOW);
|
||||
k210_gpiohs_set_value(FPIOA_W5500_NRST, GPIO_PV_HIGH);
|
||||
k210_gpiohs_set_value(FPIOA_ENET_SCLK, GPIO_PV_HIGH);
|
||||
k210_gpiohs_set_value(FPIOA_ENET_MOSI, GPIO_PV_HIGH);
|
||||
k210_gpiohs_set_value(FPIOA_ENET_NCS, GPIO_PV_LOW);
|
||||
k210_gpiohs_set_value(FPIOA_ENET_NRST, GPIO_PV_HIGH);
|
||||
|
||||
w5500_register(w5500_dev_name);
|
||||
w5500info("dev %s ok!\n", w5500_dev_name);
|
||||
enet_register(enet_dev_name);
|
||||
enetinfo("dev %s ok!\n", enet_dev_name);
|
||||
}
|
||||
|
|
@ -0,0 +1,122 @@
|
|||
/*
|
||||
* Copyright (c) 2022 AIIT XUOS Lab
|
||||
* XiUOS is licensed under Mulan PSL v2.
|
||||
* You can use this software according to the terms and conditions of the Mulan PSL v2.
|
||||
* You may obtain a copy of Mulan PSL v2 at:
|
||||
* http://license.coscl.org.cn/MulanPSL2
|
||||
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
|
||||
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
|
||||
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
|
||||
* See the Mulan PSL v2 for more details.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file k210_enet.h
|
||||
* @brief define aiit-riscv64-board enet function and struct
|
||||
* @version 1.0
|
||||
* @author AIIT XUOS Lab
|
||||
* @date 2022-09-14
|
||||
*/
|
||||
|
||||
#ifndef __K210_ENET_H_
|
||||
#define __K210_ENET_H_
|
||||
|
||||
#include <nuttx/kmalloc.h>
|
||||
#include <nuttx/wqueue.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <sys/ioctl.h>
|
||||
#include <stdio.h>
|
||||
#include <debug.h>
|
||||
#include <assert.h>
|
||||
#include <fcntl.h>
|
||||
|
||||
#include <arch/board/board.h>
|
||||
#include "riscv_internal.h"
|
||||
|
||||
#include "k210_config.h"
|
||||
#include "k210_fpioa.h"
|
||||
#include "k210_gpiohs.h"
|
||||
#include "xidatong-riscv64.h"
|
||||
#include "nuttx/serial/serial.h"
|
||||
|
||||
/* Define ENET PIN NUM */
|
||||
|
||||
#define BSP_ENET_SCLK 9
|
||||
#define BSP_ENET_MISO 10
|
||||
#define BSP_ENET_MOSI 11
|
||||
#define BSP_ENET_NCS 12
|
||||
#define BSP_ENET_NRST 13
|
||||
#define BSP_ENET_NINT 14
|
||||
|
||||
/* Define enet FPIOA NUMBER */
|
||||
|
||||
#define FPIOA_ENET_NRST 0
|
||||
#define FPIOA_ENET_NINT 9
|
||||
#define FPIOA_ENET_SCLK 28
|
||||
#define FPIOA_ENET_MISO 29
|
||||
#define FPIOA_ENET_MOSI 23
|
||||
#define FPIOA_ENET_NCS 31
|
||||
|
||||
#define ENET_FUNC_GPIO(n) ((K210_IO_FUNC_GPIOHS0 + n) | K210_IOFLAG_GPIOHS)
|
||||
|
||||
#define ENETIOC_SETFREQUENCY _WLIOC(0x0001) /* arg: Pointer to uint32_t frequency value */
|
||||
#define ENETIOC_GETFREQUENCY _WLIOC(0x0002) /* arg: Pointer to uint32_t frequency value */
|
||||
|
||||
/* enet debug */
|
||||
#ifdef CONFIG_DEBUG_ENET_ERROR
|
||||
# define eneterr _err
|
||||
#else
|
||||
# define eneterr _none
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_DEBUG_ENET_WARN
|
||||
# define enetwarn _warn
|
||||
#else
|
||||
# define enetwarn _none
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_DEBUG_ENET_INFO
|
||||
# define enetinfo _info
|
||||
#else
|
||||
# define enetinfo _none
|
||||
#endif
|
||||
|
||||
#define ENET_RECV_BUF_SIZE 256
|
||||
#define ENET_INCREMENT MSEC2TICK(33)
|
||||
|
||||
struct enet_config_s
|
||||
{
|
||||
int (*attach)(FAR const struct enet_config_s *config, xcpt_t isr,
|
||||
FAR void *arg);
|
||||
void (*enable)(FAR const struct enet_config_s *config, bool enable);
|
||||
void (*clear)(FAR const struct enet_config_s *config);
|
||||
|
||||
void (*wakeup)(FAR const struct enet_config_s *config);
|
||||
void (*nreset)(FAR const struct enet_config_s *config, bool state);
|
||||
};
|
||||
|
||||
|
||||
struct enet_dev_s
|
||||
{
|
||||
uint8_t crefs; /* Number of times the device
|
||||
* has been opened */
|
||||
uint8_t nwaiters; /* Number of threads waiting for
|
||||
* data */
|
||||
sem_t devsem; /* Manages exclusive access to
|
||||
* this structure */
|
||||
sem_t waitsem; /* Used to wait for the
|
||||
* availability of data */
|
||||
FAR const struct enet_config_s *config; /* Board configuration data */
|
||||
struct work_s irqwork; /* Supports the interrupt
|
||||
* handling "bottom half" */
|
||||
char *dev_name;
|
||||
int uart_fd;
|
||||
uart_dev_t *uart_dev;
|
||||
int recv_size;
|
||||
uint8_t recv_buf[ENET_RECV_BUF_SIZE];
|
||||
};
|
||||
|
||||
void board_enet_initialize(void);
|
||||
|
||||
#endif
|
|
@ -11,8 +11,8 @@
|
|||
*/
|
||||
|
||||
/**
|
||||
* @file k210_ec200.c
|
||||
* @brief support to register ch436 pointer and function
|
||||
* @file k210_lte.c
|
||||
* @brief support to register lte pointer and function
|
||||
* @version 1.0
|
||||
* @author AIIT XUOS Lab
|
||||
* @date 2022-07-20
|
||||
|
@ -22,18 +22,18 @@
|
|||
#include <nuttx/wqueue.h>
|
||||
#include <sys/poll.h>
|
||||
#include "ctype.h"
|
||||
#include "k210_ec200.h"
|
||||
#include "k210_lte.h"
|
||||
|
||||
#define ec_print printf
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
struct ec200_dev_s g_ec200dev;
|
||||
static char *ec200_dev_name = "/dev/ec200";
|
||||
struct lte_dev_s g_ltedev;
|
||||
static char *lte_dev_name = "/dev/lte";
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
void ec200_print_buf(int size, uint8_t *buf)
|
||||
void lte_print_buf(int size, uint8_t *buf)
|
||||
{
|
||||
char ch[10] = {0};
|
||||
char temp[256] = {0};
|
||||
|
@ -63,65 +63,63 @@ void ec200_print_buf(int size, uint8_t *buf)
|
|||
}
|
||||
}
|
||||
if(size)
|
||||
ec_print("ec200 read %d data: %s\n", size, temp);
|
||||
ec_print("lte read %d data: %s\n", size, temp);
|
||||
}
|
||||
|
||||
int ec200_read_buf(void *dev, int *size, uint8_t *buf)
|
||||
int lte_read_buf(void *dev, int *size, uint8_t *buf)
|
||||
{
|
||||
uart_dev_t *uart_dev = (uart_dev_t *)dev;
|
||||
int cur_size = uart_dev->recv.head - uart_dev->recv.tail;
|
||||
*size = *size > cur_size ? cur_size : *size;
|
||||
memcpy(buf, uart_dev->recv.buffer, *size);
|
||||
uart_dev->recv.head = uart_dev->recv.tail;
|
||||
ec200_print_buf(*size, buf);
|
||||
lte_print_buf(*size, buf);
|
||||
return *size;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: ec200_data_work
|
||||
* Name: lte_data_work
|
||||
*
|
||||
* Description:
|
||||
* thread task ec200_data_work
|
||||
* thread task lte_data_work
|
||||
*
|
||||
****************************************************************************/
|
||||
static FAR void ec200_data_work(FAR void *arg)
|
||||
static FAR void lte_data_work(FAR void *arg)
|
||||
{
|
||||
struct ec200_dev_s *ec200_dev = (struct ec200_dev_s *)arg;
|
||||
uart_dev_t *uart_dev = ec200_dev->uart_dev;
|
||||
nxsem_wait(&ec200_dev->waitsem);
|
||||
ec200_dev->recv_size = EC200_RECV_BUF_SIZE;
|
||||
ec200_read_buf(uart_dev, &ec200_dev->recv_size, ec200_dev->recv_buf);
|
||||
work_queue(HPWORK, &ec200_dev->irqwork, ec200_data_work, ec200_dev, EC200_INCREMENT);
|
||||
// ec200info("uart size %d ok!\n", ec200_dev->recv_size);
|
||||
struct lte_dev_s *lte_dev = (struct lte_dev_s *)arg;
|
||||
uart_dev_t *uart_dev = lte_dev->uart_dev;
|
||||
nxsem_wait(<e_dev->waitsem);
|
||||
lte_dev->recv_size = LTE_RECV_BUF_SIZE;
|
||||
lte_read_buf(uart_dev, <e_dev->recv_size, lte_dev->recv_buf);
|
||||
work_queue(HPWORK, <e_dev->irqwork, lte_data_work, lte_dev, LTE_INCREMENT);
|
||||
lteinfo("uart size %d ok!\n", lte_dev->recv_size);
|
||||
}
|
||||
|
||||
static int ec200_bringup(struct ec200_dev_s *dev)
|
||||
static int lte_bringup(struct lte_dev_s *dev)
|
||||
{
|
||||
// struct ec200_dev_s *ec200_dev = &g_ec200dev;
|
||||
|
||||
dev->uart_fd = open(dev->dev_name, O_RDWR);
|
||||
|
||||
ec200info("open %s fd = %d\n", dev->dev_name, dev->uart_fd);
|
||||
lteinfo("open %s fd = %d\n", dev->dev_name, dev->uart_fd);
|
||||
|
||||
work_queue(HPWORK, &dev->irqwork, ec200_data_work, dev, EC200_INCREMENT);
|
||||
work_queue(HPWORK, &dev->irqwork, lte_data_work, dev, LTE_INCREMENT);
|
||||
return OK;
|
||||
}
|
||||
|
||||
static int ec200_write_config(struct ec200_dev_s *dev)
|
||||
static int lte_write_config(struct lte_dev_s *dev)
|
||||
{
|
||||
return OK;
|
||||
}
|
||||
|
||||
static int ec200_shutdown(struct ec200_dev_s *dev)
|
||||
static int lte_shutdown(struct lte_dev_s *dev)
|
||||
{
|
||||
close(dev->uart_fd);
|
||||
return OK;
|
||||
}
|
||||
|
||||
static int ec200_open(FAR struct file *filep)
|
||||
static int lte_open(FAR struct file *filep)
|
||||
{
|
||||
FAR struct inode *inode;
|
||||
FAR struct ec200_dev_s *priv;
|
||||
FAR struct lte_dev_s *priv;
|
||||
|
||||
uint8_t ref_cnt;
|
||||
|
||||
|
@ -131,14 +129,14 @@ static int ec200_open(FAR struct file *filep)
|
|||
inode = filep->f_inode;
|
||||
DEBUGASSERT(inode && inode->i_private);
|
||||
|
||||
priv = (FAR struct ec200_dev_s *)inode->i_private;
|
||||
priv = (FAR struct lte_dev_s *)inode->i_private;
|
||||
|
||||
/* Get exclusive access to the driver data structure */
|
||||
ret = nxsem_wait(&priv->devsem);
|
||||
|
||||
if(ret < 0)
|
||||
{
|
||||
ec200err("ERROR: nxsem_wait failed: %d\n", ret);
|
||||
lteerr("ERROR: nxsem_wait failed: %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -158,20 +156,20 @@ static int ec200_open(FAR struct file *filep)
|
|||
|
||||
if(ref_cnt == 1)
|
||||
{
|
||||
ret = ec200_bringup(priv);
|
||||
ret = lte_bringup(priv);
|
||||
|
||||
if(ret < 0)
|
||||
{
|
||||
ec200err("ERROR: ec200_bringup failed: %d\n", ret);
|
||||
lteerr("ERROR: lte_bringup failed: %d\n", ret);
|
||||
nxsem_post(&priv->devsem);
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = ec200_write_config(priv);
|
||||
ret = lte_write_config(priv);
|
||||
|
||||
if(ret < 0)
|
||||
{
|
||||
ec200err("ERROR: ec200_write_config failed: %d\n", ret);
|
||||
lteerr("ERROR: lte_write_config failed: %d\n", ret);
|
||||
nxsem_post(&priv->devsem);
|
||||
return ret;
|
||||
}
|
||||
|
@ -185,13 +183,13 @@ static int ec200_open(FAR struct file *filep)
|
|||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: ec200_close
|
||||
* Name: lte_close
|
||||
****************************************************************************/
|
||||
|
||||
static int ec200_close(FAR struct file *filep)
|
||||
static int lte_close(FAR struct file *filep)
|
||||
{
|
||||
FAR struct inode *inode;
|
||||
FAR struct ec200_dev_s *priv;
|
||||
FAR struct lte_dev_s *priv;
|
||||
|
||||
int ret;
|
||||
|
||||
|
@ -199,14 +197,14 @@ static int ec200_close(FAR struct file *filep)
|
|||
inode = filep->f_inode;
|
||||
DEBUGASSERT(inode && inode->i_private);
|
||||
|
||||
priv = (FAR struct ec200_dev_s *)inode->i_private;
|
||||
priv = (FAR struct lte_dev_s *)inode->i_private;
|
||||
|
||||
/* Get exclusive access to the driver data structure */
|
||||
ret = nxsem_wait(&priv->devsem);
|
||||
|
||||
if(ret < 0)
|
||||
{
|
||||
ec200err("ERROR: nxsem_wait failed: %d\n", ret);
|
||||
lteerr("ERROR: nxsem_wait failed: %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -225,7 +223,7 @@ static int ec200_close(FAR struct file *filep)
|
|||
|
||||
if(priv->crefs == 0)
|
||||
{
|
||||
ec200_shutdown(priv);
|
||||
lte_shutdown(priv);
|
||||
}
|
||||
|
||||
nxsem_post(&priv->devsem);
|
||||
|
@ -233,26 +231,26 @@ static int ec200_close(FAR struct file *filep)
|
|||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: ec200_read
|
||||
* Name: lte_read
|
||||
****************************************************************************/
|
||||
|
||||
static ssize_t ec200_read(FAR struct file *filep, FAR char *buffer, size_t len)
|
||||
static ssize_t lte_read(FAR struct file *filep, FAR char *buffer, size_t len)
|
||||
{
|
||||
FAR struct inode *inode;
|
||||
FAR struct ec200_dev_s *priv;
|
||||
FAR struct lte_dev_s *priv;
|
||||
int ret, buf_size = len;
|
||||
|
||||
DEBUGASSERT(filep);
|
||||
inode = filep->f_inode;
|
||||
DEBUGASSERT(inode && inode->i_private);
|
||||
|
||||
priv = (FAR struct ec200_dev_s *)inode->i_private;
|
||||
priv = (FAR struct lte_dev_s *)inode->i_private;
|
||||
|
||||
ret = nxsem_wait(&priv->devsem);
|
||||
|
||||
if(ret < 0)
|
||||
{
|
||||
ec200err("ERROR: nxsem_wait failed: %d\n", ret);
|
||||
lteerr("ERROR: nxsem_wait failed: %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -264,42 +262,42 @@ static ssize_t ec200_read(FAR struct file *filep, FAR char *buffer, size_t len)
|
|||
|
||||
|
||||
/****************************************************************************
|
||||
* Name: ec200_write
|
||||
* Name: lte_write
|
||||
****************************************************************************/
|
||||
|
||||
static ssize_t ec200_write(FAR struct file *filep, FAR const char *buffer, size_t len)
|
||||
static ssize_t lte_write(FAR struct file *filep, FAR const char *buffer, size_t len)
|
||||
{
|
||||
FAR struct inode *inode;
|
||||
FAR struct ec200_dev_s *priv;
|
||||
FAR struct lte_dev_s *priv;
|
||||
int ret;
|
||||
DEBUGASSERT(filep);
|
||||
inode = filep->f_inode;
|
||||
DEBUGASSERT(inode && inode->i_private);
|
||||
priv = (FAR struct ec200_dev_s *)inode->i_private;
|
||||
priv = (FAR struct lte_dev_s *)inode->i_private;
|
||||
|
||||
/* Get exclusive access to the driver data structure */
|
||||
ret = nxsem_wait(&priv->devsem);
|
||||
|
||||
if(ret < 0)
|
||||
{
|
||||
ec200err("ERROR: nxsem_wait failed: %d\n", ret);
|
||||
lteerr("ERROR: nxsem_wait failed: %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = write(priv->uart_fd, buffer, len);
|
||||
ec200info("write fd %d len %ld ret = %d\n", priv->uart_fd, len, ret);
|
||||
lteinfo("write fd %d len %ld ret = %d\n", priv->uart_fd, len, ret);
|
||||
nxsem_post(&priv->devsem);
|
||||
return ret;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: ec200_ioctl
|
||||
* Name: lte_ioctl
|
||||
****************************************************************************/
|
||||
|
||||
static int ec200_ioctl(FAR struct file *filep, int cmd, unsigned long arg)
|
||||
static int lte_ioctl(FAR struct file *filep, int cmd, unsigned long arg)
|
||||
{
|
||||
FAR struct inode *inode;
|
||||
FAR struct ec200_dev_s *priv;
|
||||
FAR struct lte_dev_s *priv;
|
||||
|
||||
int ret;
|
||||
|
||||
|
@ -307,14 +305,14 @@ static int ec200_ioctl(FAR struct file *filep, int cmd, unsigned long arg)
|
|||
inode = filep->f_inode;
|
||||
DEBUGASSERT(inode && inode->i_private);
|
||||
|
||||
priv = (FAR struct ec200_dev_s *)inode->i_private;
|
||||
priv = (FAR struct lte_dev_s *)inode->i_private;
|
||||
|
||||
/* Get exclusive access to the driver data structure */
|
||||
ret = nxsem_wait(&priv->devsem);
|
||||
|
||||
if(ret < 0)
|
||||
{
|
||||
ec200err("ERROR: nxsem_wait failed: %d\n", ret);
|
||||
lteerr("ERROR: nxsem_wait failed: %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -322,11 +320,6 @@ static int ec200_ioctl(FAR struct file *filep, int cmd, unsigned long arg)
|
|||
|
||||
switch(cmd)
|
||||
{
|
||||
// case TSIOC_SETFREQUENCY: /* arg: Pointer to uint32_t frequency value */
|
||||
// FAR uint32_t *ptr = (FAR uint32_t *)((uintptr_t)arg);
|
||||
// DEBUGASSERT(priv->config != NULL && ptr != NULL);
|
||||
// break;
|
||||
|
||||
default:
|
||||
ret = -ENOTTY;
|
||||
break;
|
||||
|
@ -337,30 +330,30 @@ static int ec200_ioctl(FAR struct file *filep, int cmd, unsigned long arg)
|
|||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: ec200_poll
|
||||
* Name: lte_poll
|
||||
****************************************************************************/
|
||||
|
||||
static int ec200_poll(FAR struct file *filep, FAR struct pollfd *fds, bool setup)
|
||||
static int lte_poll(FAR struct file *filep, FAR struct pollfd *fds, bool setup)
|
||||
{
|
||||
FAR struct inode *inode;
|
||||
FAR struct ec200_dev_s *priv;
|
||||
FAR struct lte_dev_s *priv;
|
||||
|
||||
int ret;
|
||||
|
||||
ec200info("setup: %d\n", (int)setup);
|
||||
lteinfo("setup: %d\n", (int)setup);
|
||||
|
||||
DEBUGASSERT(filep && fds);
|
||||
inode = filep->f_inode;
|
||||
DEBUGASSERT(inode && inode->i_private);
|
||||
|
||||
priv = (FAR struct ec200_dev_s *)inode->i_private;
|
||||
priv = (FAR struct lte_dev_s *)inode->i_private;
|
||||
|
||||
/* Are we setting up the poll? Or tearing it down? */
|
||||
ret = nxsem_wait(&priv->devsem);
|
||||
|
||||
if(ret < 0)
|
||||
{
|
||||
ec200err("ERROR: nxsem_wait failed: %d\n", ret);
|
||||
lteerr("ERROR: nxsem_wait failed: %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -369,11 +362,11 @@ static int ec200_poll(FAR struct file *filep, FAR struct pollfd *fds, bool setup
|
|||
/* Ignore waits that do not include POLLIN */
|
||||
if((fds->events & POLLIN) == 0)
|
||||
{
|
||||
ec200err("ERROR: Missing POLLIN: revents: %08x\n", fds->revents);
|
||||
lteerr("ERROR: Missing POLLIN: revents: %08x\n", fds->revents);
|
||||
nxsem_post(&priv->devsem);
|
||||
return -EDEADLK;
|
||||
}
|
||||
ec200_notify(priv->uart_dev);
|
||||
lte_notify(priv->uart_dev);
|
||||
}
|
||||
else if(fds->priv)
|
||||
{
|
||||
|
@ -390,28 +383,28 @@ static int ec200_poll(FAR struct file *filep, FAR struct pollfd *fds, bool setup
|
|||
}
|
||||
|
||||
|
||||
static const struct file_operations ec200_fops =
|
||||
static const struct file_operations lte_fops =
|
||||
{
|
||||
ec200_open, /* open */
|
||||
ec200_close, /* close */
|
||||
ec200_read, /* read */
|
||||
ec200_write, /* write */
|
||||
lte_open, /* open */
|
||||
lte_close, /* close */
|
||||
lte_read, /* read */
|
||||
lte_write, /* write */
|
||||
NULL, /* seek */
|
||||
ec200_ioctl, /* ioctl */
|
||||
ec200_poll /* poll */
|
||||
lte_ioctl, /* ioctl */
|
||||
lte_poll /* poll */
|
||||
};
|
||||
|
||||
|
||||
/****************************************************************************
|
||||
* Name: ec200_register
|
||||
* Name: lte_register
|
||||
*
|
||||
* Description:
|
||||
* Register /dev/ext_uartN
|
||||
* Register /dev/lte
|
||||
*
|
||||
****************************************************************************/
|
||||
static int ec200_register(FAR const char *devpath)
|
||||
static int lte_register(FAR const char *devpath)
|
||||
{
|
||||
FAR struct ec200_dev_s *priv = &g_ec200dev;
|
||||
FAR struct lte_dev_s *priv = &g_ltedev;
|
||||
int ret = 0;
|
||||
|
||||
nxsem_init(&priv->devsem, 0, 1);
|
||||
|
@ -419,7 +412,7 @@ static int ec200_register(FAR const char *devpath)
|
|||
nxsem_set_protocol(&priv->waitsem, SEM_PRIO_NONE);
|
||||
|
||||
/* Register the driver */
|
||||
ret = register_driver(devpath, &ec200_fops, 0666, priv);
|
||||
ret = register_driver(devpath, <e_fops, 0666, priv);
|
||||
if(ret < 0)
|
||||
{
|
||||
kmm_free(priv);
|
||||
|
@ -428,31 +421,31 @@ static int ec200_register(FAR const char *devpath)
|
|||
return ret;
|
||||
}
|
||||
|
||||
void ec200_notify(uart_dev_t *dev)
|
||||
void lte_notify(uart_dev_t *dev)
|
||||
{
|
||||
if(dev == g_ec200dev.uart_dev)
|
||||
nxsem_post(&g_ec200dev.waitsem);
|
||||
if(dev == g_ltedev.uart_dev)
|
||||
nxsem_post(&g_ltedev.waitsem);
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: ec200_init
|
||||
* Name: lte_init
|
||||
*
|
||||
* Description:
|
||||
* Ch376 default initialization function
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
void board_ec200_initialize(void)
|
||||
void board_lte_initialize(void)
|
||||
{
|
||||
#if defined(CONFIG_U16550_UART2)
|
||||
|
||||
fpioa_set_function(EC200_RX_PIN, FPIOA_EC200_RX);
|
||||
fpioa_set_function(EC200_TX_PIN, FPIOA_EC200_TX);
|
||||
fpioa_set_function(LTE_RX_PIN, FPIOA_LTE_RX);
|
||||
fpioa_set_function(LTE_TX_PIN, FPIOA_LTE_TX);
|
||||
|
||||
g_ec200dev.dev_name = "/dev/uart2";
|
||||
u16550_register(&g_ec200dev.uart_dev, 2);
|
||||
ec200_register(ec200_dev_name);
|
||||
ec200info("dev %p ok!\n", g_ec200dev.uart_dev);
|
||||
g_ltedev.dev_name = "/dev/uart2";
|
||||
u16550_register(&g_ltedev.uart_dev, 2);
|
||||
lte_register(lte_dev_name);
|
||||
lteinfo("dev %p ok!\n", g_ltedev.uart_dev);
|
||||
#endif
|
||||
}
|
||||
|
|
@ -11,15 +11,15 @@
|
|||
*/
|
||||
|
||||
/**
|
||||
* @file k210_ec200.h
|
||||
* @brief define aiit-riscv64-board ec200 function and struct
|
||||
* @file k210_lte.h
|
||||
* @brief define aiit-riscv64-board lte function and struct
|
||||
* @version 1.0
|
||||
* @author AIIT XUOS Lab
|
||||
* @date 2022-09-7
|
||||
*/
|
||||
|
||||
#ifndef __K210_EC200_H_
|
||||
#define __K210_EC200_H_
|
||||
#ifndef __K210_LTE_H_
|
||||
#define __K210_LTE_H_
|
||||
|
||||
#include <nuttx/config.h>
|
||||
#include <nuttx/kmalloc.h>
|
||||
|
@ -61,50 +61,49 @@
|
|||
#include "nuttx/serial/uart_16550.h"
|
||||
|
||||
|
||||
/* Define CH438 PIN NUM */
|
||||
#define EC200_RX_PIN 21
|
||||
#define EC200_TX_PIN 20
|
||||
/* Define LTE PIN NUM */
|
||||
#define LTE_RX_PIN 21
|
||||
#define LTE_TX_PIN 20
|
||||
|
||||
/* Define ch438 FPIOA NUMBER */
|
||||
#define FPIOA_EC200_RX 66
|
||||
#define FPIOA_EC200_TX 67
|
||||
/* Define FPIOA NUMBER */
|
||||
#define FPIOA_LTE_RX 66
|
||||
#define FPIOA_LTE_TX 67
|
||||
|
||||
|
||||
/* ec200 debug */
|
||||
#ifdef CONFIG_DEBUG_EC200_ERROR
|
||||
# define ec200err _err
|
||||
/* lte debug */
|
||||
#ifdef CONFIG_DEBUG_LTE_ERROR
|
||||
# define lteerr _err
|
||||
#else
|
||||
# define ec200err _none
|
||||
# define lteerr _none
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_DEBUG_EC200_WARN
|
||||
# define ec200warn _warn
|
||||
#ifdef CONFIG_DEBUG_LTE_WARN
|
||||
# define ltewarn _warn
|
||||
#else
|
||||
# define ec200warn _none
|
||||
# define ltewarn _none
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_DEBUG_EC200_INFO
|
||||
# define ec200info _info
|
||||
#ifdef CONFIG_DEBUG_LTE_INFO
|
||||
# define lteinfo _info
|
||||
#else
|
||||
# define ec200info _none
|
||||
# define lteinfo _none
|
||||
#endif
|
||||
|
||||
#define EC200_RECV_BUF_SIZE 256
|
||||
#define EC200_INCREMENT MSEC2TICK(33)
|
||||
#define LTE_RECV_BUF_SIZE 256
|
||||
#define LTE_INCREMENT MSEC2TICK(33)
|
||||
|
||||
struct ec200_config_s
|
||||
struct lte_config_s
|
||||
{
|
||||
int (*attach)(FAR const struct ec200_config_s *config, xcpt_t isr,
|
||||
int (*attach)(FAR const struct lte_config_s *config, xcpt_t isr,
|
||||
FAR void *arg);
|
||||
void (*enable)(FAR const struct ec200_config_s *config, bool enable);
|
||||
void (*clear)(FAR const struct ec200_config_s *config);
|
||||
void (*enable)(FAR const struct lte_config_s *config, bool enable);
|
||||
void (*clear)(FAR const struct lte_config_s *config);
|
||||
|
||||
void (*wakeup)(FAR const struct ec200_config_s *config);
|
||||
void (*nreset)(FAR const struct ec200_config_s *config, bool state);
|
||||
void (*wakeup)(FAR const struct lte_config_s *config);
|
||||
void (*nreset)(FAR const struct lte_config_s *config, bool state);
|
||||
};
|
||||
|
||||
|
||||
struct ec200_dev_s
|
||||
struct lte_dev_s
|
||||
{
|
||||
uint8_t crefs; /* Number of times the device
|
||||
* has been opened */
|
||||
|
@ -115,18 +114,18 @@ struct ec200_dev_s
|
|||
sem_t waitsem; /* Used to wait for the
|
||||
* availability of data */
|
||||
|
||||
FAR const struct ec200_config_s *config;/* Board configuration data */
|
||||
FAR const struct lte_config_s *config;/* Board configuration data */
|
||||
struct work_s irqwork; /* Supports the interrupt
|
||||
* handling "bottom half" */
|
||||
char *dev_name;
|
||||
int uart_fd;
|
||||
uart_dev_t *uart_dev;
|
||||
int recv_size;
|
||||
uint8_t recv_buf[EC200_RECV_BUF_SIZE];
|
||||
uint8_t recv_buf[LTE_RECV_BUF_SIZE];
|
||||
};
|
||||
|
||||
|
||||
void ec200_notify(uart_dev_t *dev);
|
||||
void board_ec200_initialize(void);
|
||||
void lte_notify(uart_dev_t *dev);
|
||||
void board_lte_initialize(void);
|
||||
|
||||
#endif
|
|
@ -1,137 +0,0 @@
|
|||
/*
|
||||
* Copyright (c) 2022 AIIT XUOS Lab
|
||||
* XiUOS is licensed under Mulan PSL v2.
|
||||
* You can use this software according to the terms and conditions of the Mulan PSL v2.
|
||||
* You may obtain a copy of Mulan PSL v2 at:
|
||||
* http://license.coscl.org.cn/MulanPSL2
|
||||
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
|
||||
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
|
||||
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
|
||||
* See the Mulan PSL v2 for more details.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file k210_w5500.h
|
||||
* @brief define aiit-riscv64-board w5500 function and struct
|
||||
* @version 1.0
|
||||
* @author AIIT XUOS Lab
|
||||
* @date 2022-09-14
|
||||
*/
|
||||
|
||||
#ifndef __K210_W5500_H_
|
||||
#define __K210_W5500_H_
|
||||
|
||||
#include <nuttx/kmalloc.h>
|
||||
#include <nuttx/wqueue.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <sys/ioctl.h>
|
||||
#include <stdio.h>
|
||||
#include <debug.h>
|
||||
#include <assert.h>
|
||||
#include <fcntl.h>
|
||||
|
||||
#include <arch/board/board.h>
|
||||
#include "riscv_internal.h"
|
||||
|
||||
#include "k210_config.h"
|
||||
#include "k210_fpioa.h"
|
||||
#include "k210_gpiohs.h"
|
||||
#include "xidatong-riscv64.h"
|
||||
#include "nuttx/serial/serial.h"
|
||||
|
||||
/* Define W5500 PIN NUM */
|
||||
|
||||
#define BSP_W5500_SCLK 9
|
||||
#define BSP_W5500_MISO 10
|
||||
#define BSP_W5500_MOSI 11
|
||||
#define BSP_W5500_NCS 12
|
||||
#define BSP_W5500_NRST 13
|
||||
#define BSP_W5500_NINT 14
|
||||
|
||||
/* Define w5500 FPIOA NUMBER */
|
||||
|
||||
//#define FPIOA_W5500_SCLK 83
|
||||
//#define FPIOA_W5500_MISO 70
|
||||
//#define FPIOA_W5500_MOSI 71
|
||||
//#define FPIOA_W5500_NCS 78
|
||||
//
|
||||
//#define FPIOA_W5500_NRST 4
|
||||
//#define FPIOA_W5500_INT 5
|
||||
|
||||
//#define FPIOA_W5500_NRST 0
|
||||
//#define FPIOA_W5500_NINT 9
|
||||
//#define FPIOA_W5500_SCLK 28
|
||||
//#define FPIOA_W5500_MOSI 29
|
||||
//#define FPIOA_W5500_MISO 23
|
||||
//#define FPIOA_W5500_NCS 31
|
||||
|
||||
#define FPIOA_W5500_NRST 0
|
||||
#define FPIOA_W5500_NINT 9
|
||||
#define FPIOA_W5500_SCLK 28
|
||||
#define FPIOA_W5500_MISO 29
|
||||
#define FPIOA_W5500_MOSI 23
|
||||
#define FPIOA_W5500_NCS 31
|
||||
|
||||
#define W5500_FUNC_GPIO(n) ((K210_IO_FUNC_GPIOHS0 + n) | K210_IOFLAG_GPIOHS)
|
||||
|
||||
#define W5500IOC_SETFREQUENCY _WLIOC(0x0001) /* arg: Pointer to uint32_t frequency value */
|
||||
#define W5500IOC_GETFREQUENCY _WLIOC(0x0002) /* arg: Pointer to uint32_t frequency value */
|
||||
|
||||
/* w5500 debug */
|
||||
#ifdef CONFIG_DEBUG_W5500_ERROR
|
||||
# define w5500err _err
|
||||
#else
|
||||
# define w5500err _none
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_DEBUG_W5500_WARN
|
||||
# define w5500warn _warn
|
||||
#else
|
||||
# define w5500warn _none
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_DEBUG_W5500_INFO
|
||||
# define w5500info _info
|
||||
#else
|
||||
# define w5500info _none
|
||||
#endif
|
||||
|
||||
#define W5500_RECV_BUF_SIZE 256
|
||||
#define W5500_INCREMENT MSEC2TICK(33)
|
||||
|
||||
struct w5500_config_s
|
||||
{
|
||||
int (*attach)(FAR const struct w5500_config_s *config, xcpt_t isr,
|
||||
FAR void *arg);
|
||||
void (*enable)(FAR const struct w5500_config_s *config, bool enable);
|
||||
void (*clear)(FAR const struct w5500_config_s *config);
|
||||
|
||||
void (*wakeup)(FAR const struct w5500_config_s *config);
|
||||
void (*nreset)(FAR const struct w5500_config_s *config, bool state);
|
||||
};
|
||||
|
||||
|
||||
struct w5500_dev_s
|
||||
{
|
||||
uint8_t crefs; /* Number of times the device
|
||||
* has been opened */
|
||||
uint8_t nwaiters; /* Number of threads waiting for
|
||||
* data */
|
||||
sem_t devsem; /* Manages exclusive access to
|
||||
* this structure */
|
||||
sem_t waitsem; /* Used to wait for the
|
||||
* availability of data */
|
||||
FAR const struct w5500_config_s *config; /* Board configuration data */
|
||||
struct work_s irqwork; /* Supports the interrupt
|
||||
* handling "bottom half" */
|
||||
char *dev_name;
|
||||
int uart_fd;
|
||||
uart_dev_t *uart_dev;
|
||||
int recv_size;
|
||||
uint8_t recv_buf[W5500_RECV_BUF_SIZE];
|
||||
};
|
||||
|
||||
void board_w5500_initialize(void);
|
||||
|
||||
#endif
|
|
@ -11,8 +11,8 @@
|
|||
*/
|
||||
|
||||
/**
|
||||
* @file k210_esp8266.c
|
||||
* @brief support to register esp8266 pointer and function
|
||||
* @file k210_wifi.c
|
||||
* @brief support to register wifi pointer and function
|
||||
* @version 1.0
|
||||
* @author AIIT XUOS Lab
|
||||
* @date 2022-07-20
|
||||
|
@ -22,18 +22,18 @@
|
|||
#include <nuttx/wqueue.h>
|
||||
#include <sys/poll.h>
|
||||
#include "ctype.h"
|
||||
#include "k210_esp8266.h"
|
||||
#include "k210_wifi.h"
|
||||
|
||||
#define ec_print printf
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
struct esp8266_dev_s g_esp8266dev;
|
||||
static char *esp8266_dev_name = "/dev/esp8266";
|
||||
struct wifi_dev_s g_wifidev;
|
||||
static char *wifi_dev_name = "/dev/wifi";
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
void esp8266_print_buf(int size, uint8_t *buf)
|
||||
void wifi_print_buf(int size, uint8_t *buf)
|
||||
{
|
||||
char ch[10] = {0};
|
||||
char temp[256] = {0};
|
||||
|
@ -63,65 +63,61 @@ void esp8266_print_buf(int size, uint8_t *buf)
|
|||
}
|
||||
}
|
||||
if(size)
|
||||
ec_print("esp8266 read %d data: %s\n", size, temp);
|
||||
ec_print("wifi read %d data: %s\n", size, temp);
|
||||
}
|
||||
|
||||
int esp8266_read_buf(void *dev, int *size, uint8_t *buf)
|
||||
int wifi_read_buf(void *dev, int *size, uint8_t *buf)
|
||||
{
|
||||
uart_dev_t *uart_dev = (uart_dev_t *)dev;
|
||||
int cur_size = uart_dev->recv.head - uart_dev->recv.tail;
|
||||
*size = *size > cur_size ? cur_size : *size;
|
||||
memcpy(buf, uart_dev->recv.buffer, *size);
|
||||
uart_dev->recv.head = uart_dev->recv.tail;
|
||||
esp8266_print_buf(*size, buf);
|
||||
wifi_print_buf(*size, buf);
|
||||
return *size;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: esp8266_data_work
|
||||
* Name: wifi_data_work
|
||||
*
|
||||
* Description:
|
||||
* thread task esp8266_data_work
|
||||
* thread task wifi_data_work
|
||||
*
|
||||
****************************************************************************/
|
||||
static FAR void esp8266_data_work(FAR void *arg)
|
||||
static FAR void wifi_data_work(FAR void *arg)
|
||||
{
|
||||
struct esp8266_dev_s *esp8266_dev = (struct esp8266_dev_s *)arg;
|
||||
uart_dev_t *uart_dev = esp8266_dev->uart_dev;
|
||||
nxsem_wait(&esp8266_dev->waitsem);
|
||||
esp8266_dev->recv_size = ESP8266_RECV_BUF_SIZE;
|
||||
esp8266_read_buf(uart_dev, &esp8266_dev->recv_size, esp8266_dev->recv_buf);
|
||||
work_queue(HPWORK, &esp8266_dev->irqwork, esp8266_data_work, esp8266_dev, ESP8266_INCREMENT);
|
||||
// esp8266info("uart size %d ok!\n", esp8266_dev->recv_size);
|
||||
struct wifi_dev_s *wifi_dev = (struct wifi_dev_s *)arg;
|
||||
uart_dev_t *uart_dev = wifi_dev->uart_dev;
|
||||
nxsem_wait(&wifi_dev->waitsem);
|
||||
wifi_dev->recv_size = WIFI_RECV_BUF_SIZE;
|
||||
wifi_read_buf(uart_dev, &wifi_dev->recv_size, wifi_dev->recv_buf);
|
||||
work_queue(HPWORK, &wifi_dev->irqwork, wifi_data_work, wifi_dev, WIFI_INCREMENT);
|
||||
wifiinfo("uart size %d ok!\n", wifi_dev->recv_size);
|
||||
}
|
||||
|
||||
static int esp8266_bringup(struct esp8266_dev_s *dev)
|
||||
static int wifi_bringup(struct wifi_dev_s *dev)
|
||||
{
|
||||
// struct esp8266_dev_s *esp8266_dev = &g_esp8266dev;
|
||||
|
||||
dev->uart_fd = open(dev->dev_name, O_RDWR);
|
||||
|
||||
esp8266info("open %s fd = %d\n", dev->dev_name, dev->uart_fd);
|
||||
|
||||
work_queue(HPWORK, &dev->irqwork, esp8266_data_work, dev, ESP8266_INCREMENT);
|
||||
wifiinfo("open %s fd = %d\n", dev->dev_name, dev->uart_fd);
|
||||
work_queue(HPWORK, &dev->irqwork, wifi_data_work, dev, WIFI_INCREMENT);
|
||||
return OK;
|
||||
}
|
||||
|
||||
static int esp8266_write_config(struct esp8266_dev_s *dev)
|
||||
static int wifi_write_config(struct wifi_dev_s *dev)
|
||||
{
|
||||
return OK;
|
||||
}
|
||||
|
||||
static int esp8266_shutdown(struct esp8266_dev_s *dev)
|
||||
static int wifi_shutdown(struct wifi_dev_s *dev)
|
||||
{
|
||||
close(dev->uart_fd);
|
||||
return OK;
|
||||
}
|
||||
|
||||
static int esp8266_open(FAR struct file *filep)
|
||||
static int wifi_open(FAR struct file *filep)
|
||||
{
|
||||
FAR struct inode *inode;
|
||||
FAR struct esp8266_dev_s *priv;
|
||||
FAR struct wifi_dev_s *priv;
|
||||
|
||||
uint8_t ref_cnt;
|
||||
|
||||
|
@ -131,14 +127,14 @@ static int esp8266_open(FAR struct file *filep)
|
|||
inode = filep->f_inode;
|
||||
DEBUGASSERT(inode && inode->i_private);
|
||||
|
||||
priv = (FAR struct esp8266_dev_s *)inode->i_private;
|
||||
priv = (FAR struct wifi_dev_s *)inode->i_private;
|
||||
|
||||
/* Get exclusive access to the driver data structure */
|
||||
ret = nxsem_wait(&priv->devsem);
|
||||
|
||||
if(ret < 0)
|
||||
{
|
||||
esp8266err("ERROR: nxsem_wait failed: %d\n", ret);
|
||||
wifierr("ERROR: nxsem_wait failed: %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -158,20 +154,20 @@ static int esp8266_open(FAR struct file *filep)
|
|||
|
||||
if(ref_cnt == 1)
|
||||
{
|
||||
ret = esp8266_bringup(priv);
|
||||
ret = wifi_bringup(priv);
|
||||
|
||||
if(ret < 0)
|
||||
{
|
||||
esp8266err("ERROR: esp8266_bringup failed: %d\n", ret);
|
||||
wifierr("ERROR: wifi_bringup failed: %d\n", ret);
|
||||
nxsem_post(&priv->devsem);
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = esp8266_write_config(priv);
|
||||
ret = wifi_write_config(priv);
|
||||
|
||||
if(ret < 0)
|
||||
{
|
||||
esp8266err("ERROR: esp8266_write_config failed: %d\n", ret);
|
||||
wifierr("ERROR: wifi_write_config failed: %d\n", ret);
|
||||
nxsem_post(&priv->devsem);
|
||||
return ret;
|
||||
}
|
||||
|
@ -185,13 +181,13 @@ static int esp8266_open(FAR struct file *filep)
|
|||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: esp8266_close
|
||||
* Name: wifi_close
|
||||
****************************************************************************/
|
||||
|
||||
static int esp8266_close(FAR struct file *filep)
|
||||
static int wifi_close(FAR struct file *filep)
|
||||
{
|
||||
FAR struct inode *inode;
|
||||
FAR struct esp8266_dev_s *priv;
|
||||
FAR struct wifi_dev_s *priv;
|
||||
|
||||
int ret;
|
||||
|
||||
|
@ -199,14 +195,14 @@ static int esp8266_close(FAR struct file *filep)
|
|||
inode = filep->f_inode;
|
||||
DEBUGASSERT(inode && inode->i_private);
|
||||
|
||||
priv = (FAR struct esp8266_dev_s *)inode->i_private;
|
||||
priv = (FAR struct wifi_dev_s *)inode->i_private;
|
||||
|
||||
/* Get exclusive access to the driver data structure */
|
||||
ret = nxsem_wait(&priv->devsem);
|
||||
|
||||
if(ret < 0)
|
||||
{
|
||||
esp8266err("ERROR: nxsem_wait failed: %d\n", ret);
|
||||
wifierr("ERROR: nxsem_wait failed: %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -220,12 +216,12 @@ static int esp8266_close(FAR struct file *filep)
|
|||
}
|
||||
|
||||
/* When the count decrements to zero, there are no further open references
|
||||
* to the driver and it esp8266 be uninitialized.
|
||||
* to the driver and it wifi be uninitialized.
|
||||
*/
|
||||
|
||||
if(priv->crefs == 0)
|
||||
{
|
||||
esp8266_shutdown(priv);
|
||||
wifi_shutdown(priv);
|
||||
}
|
||||
|
||||
nxsem_post(&priv->devsem);
|
||||
|
@ -233,26 +229,26 @@ static int esp8266_close(FAR struct file *filep)
|
|||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: esp8266_read
|
||||
* Name: wifi_read
|
||||
****************************************************************************/
|
||||
|
||||
static ssize_t esp8266_read(FAR struct file *filep, FAR char *buffer, size_t len)
|
||||
static ssize_t wifi_read(FAR struct file *filep, FAR char *buffer, size_t len)
|
||||
{
|
||||
FAR struct inode *inode;
|
||||
FAR struct esp8266_dev_s *priv;
|
||||
FAR struct wifi_dev_s *priv;
|
||||
int ret, buf_size = len;
|
||||
|
||||
DEBUGASSERT(filep);
|
||||
inode = filep->f_inode;
|
||||
DEBUGASSERT(inode && inode->i_private);
|
||||
|
||||
priv = (FAR struct esp8266_dev_s *)inode->i_private;
|
||||
priv = (FAR struct wifi_dev_s *)inode->i_private;
|
||||
|
||||
ret = nxsem_wait(&priv->devsem);
|
||||
|
||||
if(ret < 0)
|
||||
{
|
||||
esp8266err("ERROR: nxsem_wait failed: %d\n", ret);
|
||||
wifierr("ERROR: nxsem_wait failed: %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -264,42 +260,42 @@ static ssize_t esp8266_read(FAR struct file *filep, FAR char *buffer, size_t len
|
|||
|
||||
|
||||
/****************************************************************************
|
||||
* Name: esp8266_write
|
||||
* Name: wifi_write
|
||||
****************************************************************************/
|
||||
|
||||
static ssize_t esp8266_write(FAR struct file *filep, FAR const char *buffer, size_t len)
|
||||
static ssize_t wifi_write(FAR struct file *filep, FAR const char *buffer, size_t len)
|
||||
{
|
||||
FAR struct inode *inode;
|
||||
FAR struct esp8266_dev_s *priv;
|
||||
FAR struct wifi_dev_s *priv;
|
||||
int ret;
|
||||
DEBUGASSERT(filep);
|
||||
inode = filep->f_inode;
|
||||
DEBUGASSERT(inode && inode->i_private);
|
||||
priv = (FAR struct esp8266_dev_s *)inode->i_private;
|
||||
priv = (FAR struct wifi_dev_s *)inode->i_private;
|
||||
|
||||
/* Get exclusive access to the driver data structure */
|
||||
ret = nxsem_wait(&priv->devsem);
|
||||
|
||||
if(ret < 0)
|
||||
{
|
||||
esp8266err("ERROR: nxsem_wait failed: %d\n", ret);
|
||||
wifierr("ERROR: nxsem_wait failed: %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = write(priv->uart_fd, buffer, len);
|
||||
esp8266info("write fd %d len %ld ret = %d\n", priv->uart_fd, len, ret);
|
||||
wifiinfo("write fd %d len %ld ret = %d\n", priv->uart_fd, len, ret);
|
||||
nxsem_post(&priv->devsem);
|
||||
return ret;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: esp8266_ioctl
|
||||
* Name: wifi_ioctl
|
||||
****************************************************************************/
|
||||
|
||||
static int esp8266_ioctl(FAR struct file *filep, int cmd, unsigned long arg)
|
||||
static int wifi_ioctl(FAR struct file *filep, int cmd, unsigned long arg)
|
||||
{
|
||||
FAR struct inode *inode;
|
||||
FAR struct esp8266_dev_s *priv;
|
||||
FAR struct wifi_dev_s *priv;
|
||||
FAR uint32_t *ptr;
|
||||
|
||||
int ret;
|
||||
|
@ -308,14 +304,14 @@ static int esp8266_ioctl(FAR struct file *filep, int cmd, unsigned long arg)
|
|||
inode = filep->f_inode;
|
||||
DEBUGASSERT(inode && inode->i_private);
|
||||
|
||||
priv = (FAR struct esp8266_dev_s *)inode->i_private;
|
||||
priv = (FAR struct wifi_dev_s *)inode->i_private;
|
||||
|
||||
/* Get exclusive access to the driver data structure */
|
||||
ret = nxsem_wait(&priv->devsem);
|
||||
|
||||
if(ret < 0)
|
||||
{
|
||||
esp8266err("ERROR: nxsem_wait failed: %d\n", ret);
|
||||
wifierr("ERROR: nxsem_wait failed: %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -323,7 +319,7 @@ static int esp8266_ioctl(FAR struct file *filep, int cmd, unsigned long arg)
|
|||
|
||||
switch(cmd)
|
||||
{
|
||||
case ESP8266IOC_SETFREQUENCY: /* arg: Pointer to uint32_t frequency value */
|
||||
case WIFIIOC_SETFREQUENCY: /* arg: Pointer to uint32_t frequency value */
|
||||
ptr = (FAR uint32_t *)((uintptr_t)arg);
|
||||
DEBUGASSERT(priv->config != NULL && ptr != NULL);
|
||||
break;
|
||||
|
@ -338,30 +334,30 @@ static int esp8266_ioctl(FAR struct file *filep, int cmd, unsigned long arg)
|
|||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: esp8266_poll
|
||||
* Name: wifi_poll
|
||||
****************************************************************************/
|
||||
|
||||
static int esp8266_poll(FAR struct file *filep, FAR struct pollfd *fds, bool setup)
|
||||
static int wifi_poll(FAR struct file *filep, FAR struct pollfd *fds, bool setup)
|
||||
{
|
||||
FAR struct inode *inode;
|
||||
FAR struct esp8266_dev_s *priv;
|
||||
FAR struct wifi_dev_s *priv;
|
||||
|
||||
int ret;
|
||||
|
||||
esp8266info("setup: %d\n", (int)setup);
|
||||
wifiinfo("setup: %d\n", (int)setup);
|
||||
|
||||
DEBUGASSERT(filep && fds);
|
||||
inode = filep->f_inode;
|
||||
DEBUGASSERT(inode && inode->i_private);
|
||||
|
||||
priv = (FAR struct esp8266_dev_s *)inode->i_private;
|
||||
priv = (FAR struct wifi_dev_s *)inode->i_private;
|
||||
|
||||
/* Are we setting up the poll? Or tearing it down? */
|
||||
ret = nxsem_wait(&priv->devsem);
|
||||
|
||||
if(ret < 0)
|
||||
{
|
||||
esp8266err("ERROR: nxsem_wait failed: %d\n", ret);
|
||||
wifierr("ERROR: nxsem_wait failed: %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -370,11 +366,11 @@ static int esp8266_poll(FAR struct file *filep, FAR struct pollfd *fds, bool set
|
|||
/* Ignore waits that do not include POLLIN */
|
||||
if((fds->events & POLLIN) == 0)
|
||||
{
|
||||
esp8266err("ERROR: Missing POLLIN: revents: %08x\n", fds->revents);
|
||||
wifierr("ERROR: Missing POLLIN: revents: %08x\n", fds->revents);
|
||||
nxsem_post(&priv->devsem);
|
||||
return -EDEADLK;
|
||||
}
|
||||
esp8266_notify(priv->uart_dev);
|
||||
wifi_notify(priv->uart_dev);
|
||||
}
|
||||
else if(fds->priv)
|
||||
{
|
||||
|
@ -391,28 +387,28 @@ static int esp8266_poll(FAR struct file *filep, FAR struct pollfd *fds, bool set
|
|||
}
|
||||
|
||||
|
||||
static const struct file_operations esp8266_fops =
|
||||
static const struct file_operations wifi_fops =
|
||||
{
|
||||
esp8266_open, /* open */
|
||||
esp8266_close, /* close */
|
||||
esp8266_read, /* read */
|
||||
esp8266_write, /* write */
|
||||
wifi_open, /* open */
|
||||
wifi_close, /* close */
|
||||
wifi_read, /* read */
|
||||
wifi_write, /* write */
|
||||
NULL, /* seek */
|
||||
esp8266_ioctl, /* ioctl */
|
||||
esp8266_poll /* poll */
|
||||
wifi_ioctl, /* ioctl */
|
||||
wifi_poll /* poll */
|
||||
};
|
||||
|
||||
|
||||
/****************************************************************************
|
||||
* Name: esp8266_register
|
||||
* Name: wifi_register
|
||||
*
|
||||
* Description:
|
||||
* Register /dev/ext_uartN
|
||||
*
|
||||
****************************************************************************/
|
||||
static int esp8266_register(FAR const char *devpath)
|
||||
static int wifi_register(FAR const char *devpath)
|
||||
{
|
||||
FAR struct esp8266_dev_s *priv = &g_esp8266dev;
|
||||
FAR struct wifi_dev_s *priv = &g_wifidev;
|
||||
int ret = 0;
|
||||
|
||||
nxsem_init(&priv->devsem, 0, 1);
|
||||
|
@ -420,7 +416,7 @@ static int esp8266_register(FAR const char *devpath)
|
|||
nxsem_set_protocol(&priv->waitsem, SEM_PRIO_NONE);
|
||||
|
||||
/* Register the driver */
|
||||
ret = register_driver(devpath, &esp8266_fops, 0666, priv);
|
||||
ret = register_driver(devpath, &wifi_fops, 0666, priv);
|
||||
if(ret < 0)
|
||||
{
|
||||
kmm_free(priv);
|
||||
|
@ -429,34 +425,34 @@ static int esp8266_register(FAR const char *devpath)
|
|||
return ret;
|
||||
}
|
||||
|
||||
void esp8266_notify(uart_dev_t *dev)
|
||||
void wifi_notify(uart_dev_t *dev)
|
||||
{
|
||||
if(dev == g_esp8266dev.uart_dev)
|
||||
nxsem_post(&g_esp8266dev.waitsem);
|
||||
if(dev == g_wifidev.uart_dev)
|
||||
nxsem_post(&g_wifidev.waitsem);
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: esp8266_init
|
||||
* Name: wifi_init
|
||||
*
|
||||
* Description:
|
||||
* Ch376 default initialization function
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
void board_esp8266_initialize(void)
|
||||
void board_wifi_initialize(void)
|
||||
{
|
||||
k210_fpioa_config(ESP8266_EN_PIN, ESP8266_FUNC_GPIO(FPIOA_ESP8266_EN));
|
||||
k210_gpiohs_set_direction(FPIOA_ESP8266_EN, GPIO_DM_OUTPUT);
|
||||
k210_gpiohs_set_value(FPIOA_ESP8266_EN, GPIO_PV_HIGH);
|
||||
k210_fpioa_config(WIFI_EN_PIN, WIFI_FUNC_GPIO(FPIOA_WIFI_EN));
|
||||
k210_gpiohs_set_direction(FPIOA_WIFI_EN, GPIO_DM_OUTPUT);
|
||||
k210_gpiohs_set_value(FPIOA_WIFI_EN, GPIO_PV_HIGH);
|
||||
|
||||
fpioa_set_function(ESP8266_RX_PIN, FPIOA_ESP8266_RX);
|
||||
fpioa_set_function(ESP8266_TX_PIN, FPIOA_ESP8266_TX);
|
||||
fpioa_set_function(WIFI_RX_PIN, FPIOA_WIFI_RX);
|
||||
fpioa_set_function(WIFI_TX_PIN, FPIOA_WIFI_TX);
|
||||
|
||||
#if defined(CONFIG_U16550_UART2)
|
||||
g_esp8266dev.dev_name = "/dev/uart2";
|
||||
u16550_register(&g_esp8266dev.uart_dev, 2);
|
||||
esp8266_register(esp8266_dev_name);
|
||||
esp8266info("dev %p ok!\n", g_esp8266dev.uart_dev);
|
||||
g_wifidev.dev_name = "/dev/uart2";
|
||||
u16550_register(&g_wifidev.uart_dev, 2);
|
||||
wifi_register(wifi_dev_name);
|
||||
wifiinfo("dev %p ok!\n", g_wifidev.uart_dev);
|
||||
#endif
|
||||
}
|
||||
|
|
@ -11,15 +11,15 @@
|
|||
*/
|
||||
|
||||
/**
|
||||
* @file k210_esp8266.h
|
||||
* @brief define aiit-riscv64-board esp8266 function and struct
|
||||
* @file k210_wifi.h
|
||||
* @brief define aiit-riscv64-board wifi function and struct
|
||||
* @version 1.0
|
||||
* @author AIIT XUOS Lab
|
||||
* @date 2022-09-7
|
||||
*/
|
||||
|
||||
#ifndef __K210_ESP8266_H_
|
||||
#define __K210_ESP8266_H_
|
||||
#ifndef __K210_WIFI_H_
|
||||
#define __K210_WIFI_H_
|
||||
|
||||
#include <nuttx/config.h>
|
||||
#include <nuttx/kmalloc.h>
|
||||
|
@ -61,56 +61,56 @@
|
|||
#include "nuttx/serial/uart_16550.h"
|
||||
|
||||
|
||||
/* Define CH438 PIN NUM */
|
||||
#define ESP8266_RX_PIN 6
|
||||
#define ESP8266_TX_PIN 7
|
||||
#define ESP8266_EN_PIN 8
|
||||
/* Define WIFI PIN NUM */
|
||||
#define WIFI_RX_PIN 6
|
||||
#define WIFI_TX_PIN 7
|
||||
#define WIFI_EN_PIN 8
|
||||
|
||||
/* Define ch438 FPIOA NUMBER */
|
||||
#define FPIOA_ESP8266_RX 66
|
||||
#define FPIOA_ESP8266_TX 67
|
||||
#define FPIOA_ESP8266_EN 4
|
||||
/* Define WIFI FPIOA NUMBER */
|
||||
#define FPIOA_WIFI_RX 66
|
||||
#define FPIOA_WIFI_TX 67
|
||||
#define FPIOA_WIFI_EN 4
|
||||
|
||||
#define ESP8266_FUNC_GPIO(n) ((K210_IO_FUNC_GPIOHS0 + n) | K210_IOFLAG_GPIOHS)
|
||||
#define WIFI_FUNC_GPIO(n) ((K210_IO_FUNC_GPIOHS0 + n) | K210_IOFLAG_GPIOHS)
|
||||
|
||||
#define ESP8266IOC_SETFREQUENCY _WLIOC(0x0001) /* arg: Pointer to uint32_t frequency value */
|
||||
#define ESP8266IOC_GETFREQUENCY _WLIOC(0x0002) /* arg: Pointer to uint32_t frequency value */
|
||||
#define WIFIIOC_SETFREQUENCY _WLIOC(0x0001) /* arg: Pointer to uint32_t frequency value */
|
||||
#define WIFIIOC_GETFREQUENCY _WLIOC(0x0002) /* arg: Pointer to uint32_t frequency value */
|
||||
|
||||
/* esp8266 debug */
|
||||
#ifdef CONFIG_DEBUG_ESP8266_ERROR
|
||||
# define esp8266err _err
|
||||
/* wifi debug */
|
||||
#ifdef CONFIG_DEBUG_WIFI_ERROR
|
||||
# define wifierr _err
|
||||
#else
|
||||
# define esp8266err _none
|
||||
# define wifierr _none
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_DEBUG_ESP8266_WARN
|
||||
# define esp8266warn _warn
|
||||
#ifdef CONFIG_DEBUG_WIFI_WARN
|
||||
# define wifiwarn _warn
|
||||
#else
|
||||
# define esp8266warn _none
|
||||
# define wifiwarn _none
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_DEBUG_ESP8266_INFO
|
||||
# define esp8266info _info
|
||||
#ifdef CONFIG_DEBUG_WIFI_INFO
|
||||
# define wifiinfo _info
|
||||
#else
|
||||
# define esp8266info _none
|
||||
# define wifiinfo _none
|
||||
#endif
|
||||
|
||||
#define ESP8266_RECV_BUF_SIZE 256
|
||||
#define ESP8266_INCREMENT MSEC2TICK(33)
|
||||
#define WIFI_RECV_BUF_SIZE 256
|
||||
#define WIFI_INCREMENT MSEC2TICK(33)
|
||||
|
||||
struct esp8266_config_s
|
||||
struct wifi_config_s
|
||||
{
|
||||
int (*attach)(FAR const struct esp8266_config_s *config, xcpt_t isr,
|
||||
int (*attach)(FAR const struct wifi_config_s *config, xcpt_t isr,
|
||||
FAR void *arg);
|
||||
void (*enable)(FAR const struct esp8266_config_s *config, bool enable);
|
||||
void (*clear)(FAR const struct esp8266_config_s *config);
|
||||
void (*enable)(FAR const struct wifi_config_s *config, bool enable);
|
||||
void (*clear)(FAR const struct wifi_config_s *config);
|
||||
|
||||
void (*wakeup)(FAR const struct esp8266_config_s *config);
|
||||
void (*nreset)(FAR const struct esp8266_config_s *config, bool state);
|
||||
void (*wakeup)(FAR const struct wifi_config_s *config);
|
||||
void (*nreset)(FAR const struct wifi_config_s *config, bool state);
|
||||
};
|
||||
|
||||
|
||||
struct esp8266_dev_s
|
||||
struct wifi_dev_s
|
||||
{
|
||||
uint8_t crefs; /* Number of times the device
|
||||
* has been opened */
|
||||
|
@ -120,18 +120,18 @@ struct esp8266_dev_s
|
|||
* this structure */
|
||||
sem_t waitsem; /* Used to wait for the
|
||||
* availability of data */
|
||||
FAR const struct esp8266_config_s *config; /* Board configuration data */
|
||||
FAR const struct wifi_config_s *config; /* Board configuration data */
|
||||
struct work_s irqwork; /* Supports the interrupt
|
||||
* handling "bottom half" */
|
||||
char *dev_name;
|
||||
int uart_fd;
|
||||
uart_dev_t *uart_dev;
|
||||
int recv_size;
|
||||
uint8_t recv_buf[ESP8266_RECV_BUF_SIZE];
|
||||
uint8_t recv_buf[WIFI_RECV_BUF_SIZE];
|
||||
};
|
||||
|
||||
|
||||
void esp8266_notify(uart_dev_t *dev);
|
||||
void board_esp8266_initialize(void);
|
||||
void wifi_notify(uart_dev_t *dev);
|
||||
void board_wifi_initialize(void);
|
||||
|
||||
#endif
|
|
@ -11,8 +11,8 @@
|
|||
*/
|
||||
|
||||
/**
|
||||
* @file ec200_demo.c
|
||||
* @brief xidatong-riscv64 ec200_demo.c
|
||||
* @file lte_demo.c
|
||||
* @brief xidatong-riscv64 lte_demo.c
|
||||
* @version 1.0
|
||||
* @author AIIT XUOS Lab
|
||||
* @date 2022.08.22
|
||||
|
@ -21,19 +21,19 @@
|
|||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
#include "k210_ec200.h"
|
||||
#include "k210_lte.h"
|
||||
#include <sys/ioctl.h>
|
||||
#include "time.h"
|
||||
|
||||
#define ec_print printf
|
||||
#define EC200_DEMO_TIMEOUT 10
|
||||
#define lte_print printf
|
||||
#define LTE_DEMO_TIMEOUT 10
|
||||
|
||||
|
||||
// first: receive \n\rRDY\n\r
|
||||
// second: AT -> OK
|
||||
|
||||
// APN configuration "CTNET"(中国电信)
|
||||
char *ec200_ctnet_cmd[] =
|
||||
char *lte_ctnet_cmd[] =
|
||||
{
|
||||
|
||||
"AT\r\n",
|
||||
|
@ -43,7 +43,7 @@ char *ec200_ctnet_cmd[] =
|
|||
};
|
||||
|
||||
// APN configuration "CMNET"(中国移动)
|
||||
char *ec200_cmnet_cmd[] =
|
||||
char *lte_cmnet_cmd[] =
|
||||
{
|
||||
"AT\r\n",
|
||||
"AT+QICSGP=1,1,\"CMNET\",\"\",\"\",1\r\n",
|
||||
|
@ -51,7 +51,7 @@ char *ec200_cmnet_cmd[] =
|
|||
"AT+QIOPEN=1,0,\"TCP\",\"121.41.20.48\",8840,0,2\r\n"
|
||||
};
|
||||
|
||||
static int ec200_read_with_time(int fd, char *buffer, int seconds)
|
||||
static int lte_read_with_time(int fd, char *buffer, int seconds)
|
||||
{
|
||||
int read_size = 0;
|
||||
time_t cur_time = time(NULL);
|
||||
|
@ -63,12 +63,12 @@ static int ec200_read_with_time(int fd, char *buffer, int seconds)
|
|||
|
||||
if(read_size < 0)
|
||||
{
|
||||
ec_print("ec200 read failed %d\n", read_size);
|
||||
lte_print("lte read failed %d\n", read_size);
|
||||
return -ETIME;
|
||||
}
|
||||
else if(read_size)
|
||||
{
|
||||
ec_print("ec200 read size %d ok!\n", read_size);
|
||||
lte_print("lte read size %d ok!\n", read_size);
|
||||
break;
|
||||
}
|
||||
cur_time = time(NULL);
|
||||
|
@ -76,10 +76,10 @@ static int ec200_read_with_time(int fd, char *buffer, int seconds)
|
|||
return read_size;
|
||||
}
|
||||
|
||||
int ec200_check_demo(int fd, char *send_str, char *recv_str)
|
||||
int lte_check_demo(int fd, char *send_str, char *recv_str)
|
||||
{
|
||||
int ret;
|
||||
char buf[EC200_RECV_BUF_SIZE] = {0};
|
||||
char buf[LTE_RECV_BUF_SIZE] = {0};
|
||||
|
||||
if(send_str)
|
||||
{
|
||||
|
@ -87,52 +87,52 @@ int ec200_check_demo(int fd, char *send_str, char *recv_str)
|
|||
|
||||
if(ret < 0)
|
||||
{
|
||||
ec_print("ec200 write failed %d\n", ret);
|
||||
lte_print("lte write failed %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
ec_print("write %s ret = %d\n", send_str, ret);
|
||||
lte_print("write %s ret = %d\n", send_str, ret);
|
||||
}
|
||||
|
||||
ret = ec200_read_with_time(fd, buf, EC200_DEMO_TIMEOUT);
|
||||
ret = lte_read_with_time(fd, buf, LTE_DEMO_TIMEOUT);
|
||||
if(ret < 0)
|
||||
{
|
||||
ec_print("ec200 read failed %d\n", ret);
|
||||
lte_print("lte read failed %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
ec_print("ec200 read: %s!\n", buf);
|
||||
lte_print("lte read: %s!\n", buf);
|
||||
|
||||
if(strstr(buf, recv_str))
|
||||
{
|
||||
ec_print("ec200 %s found!\n", recv_str);
|
||||
lte_print("lte %s found!\n", recv_str);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
void EC200Demo(void)
|
||||
void LteDemo(void)
|
||||
{
|
||||
int fd;
|
||||
|
||||
ec_print("start %s\n", __func__);
|
||||
lte_print("start %s\n", __func__);
|
||||
|
||||
fd = open("/dev/ec200", O_RDWR);
|
||||
fd = open("/dev/lte", O_RDWR);
|
||||
if(fd < 0)
|
||||
{
|
||||
ec_print("ec200 open failed %d\n", fd);
|
||||
lte_print("lte open failed %d\n", fd);
|
||||
return;
|
||||
}
|
||||
|
||||
ec200_check_demo(fd, NULL, "RDY");
|
||||
ec200_check_demo(fd, "AT\r\n", "OK");
|
||||
ec200_check_demo(fd, "AT+QICSGP=1,1,\"CTNET\",\"\",\"\",1\r\n", "OK");
|
||||
ec200_check_demo(fd, "AT+QIACT=1\r\n", "OK");
|
||||
ec200_check_demo(fd, "AT+QIOPEN=1,0,\"TCP\",\"121.41.20.48\",8840,0,2\r\n", "OK");
|
||||
lte_check_demo(fd, NULL, "RDY");
|
||||
lte_check_demo(fd, "AT\r\n", "OK");
|
||||
lte_check_demo(fd, "AT+QICSGP=1,1,\"CTNET\",\"\",\"\",1\r\n", "OK");
|
||||
lte_check_demo(fd, "AT+QIACT=1\r\n", "OK");
|
||||
lte_check_demo(fd, "AT+QIOPEN=1,0,\"TCP\",\"121.41.20.48\",8840,0,2\r\n", "OK");
|
||||
|
||||
up_mdelay(2000);
|
||||
close(fd);
|
||||
|
||||
ec_print("end %s\n", __func__);
|
||||
lte_print("end %s\n", __func__);
|
||||
}
|
|
@ -20,7 +20,7 @@
|
|||
|
||||
#include "nuttx/arch.h"
|
||||
#include "w5500.h"
|
||||
#include "k210_w5500.h"
|
||||
#include "k210_enet.h"
|
||||
#include "k210_gpio_common.h"
|
||||
|
||||
/*----------------------------------------------------------------------------*/
|
||||
|
@ -28,15 +28,15 @@
|
|||
#define w_print printf
|
||||
#define w_delay() up_udelay(1)
|
||||
|
||||
#define NCS_L() k210_gpiohs_set_value(FPIOA_W5500_NCS, GPIO_PV_LOW); w_delay();
|
||||
#define NCS_H() k210_gpiohs_set_value(FPIOA_W5500_NCS, GPIO_PV_HIGH); w_delay();
|
||||
#define SCLK_L() k210_gpiohs_set_value(FPIOA_W5500_SCLK, GPIO_PV_LOW); w_delay();
|
||||
#define SCLK_H() k210_gpiohs_set_value(FPIOA_W5500_SCLK, GPIO_PV_HIGH); w_delay();
|
||||
#define MOSI_L() k210_gpiohs_set_value(FPIOA_W5500_MOSI, GPIO_PV_LOW); w_delay();
|
||||
#define MOSI_H() k210_gpiohs_set_value(FPIOA_W5500_MOSI, GPIO_PV_HIGH); w_delay();
|
||||
#define NCS_L() k210_gpiohs_set_value(FPIOA_ENET_NCS, GPIO_PV_LOW); w_delay();
|
||||
#define NCS_H() k210_gpiohs_set_value(FPIOA_ENET_NCS, GPIO_PV_HIGH); w_delay();
|
||||
#define SCLK_L() k210_gpiohs_set_value(FPIOA_ENET_SCLK, GPIO_PV_LOW); w_delay();
|
||||
#define SCLK_H() k210_gpiohs_set_value(FPIOA_ENET_SCLK, GPIO_PV_HIGH); w_delay();
|
||||
#define MOSI_L() k210_gpiohs_set_value(FPIOA_ENET_MOSI, GPIO_PV_LOW); w_delay();
|
||||
#define MOSI_H() k210_gpiohs_set_value(FPIOA_ENET_MOSI, GPIO_PV_HIGH); w_delay();
|
||||
|
||||
#define RST_L() k210_gpiohs_set_value(FPIOA_W5500_NRST, GPIO_PV_LOW); up_mdelay(200);
|
||||
#define RST_H() k210_gpiohs_set_value(FPIOA_W5500_NRST, GPIO_PV_HIGH); up_mdelay(200);
|
||||
#define RST_L() k210_gpiohs_set_value(FPIOA_ENET_NRST, GPIO_PV_LOW); up_mdelay(200);
|
||||
#define RST_H() k210_gpiohs_set_value(FPIOA_ENET_NRST, GPIO_PV_HIGH); up_mdelay(200);
|
||||
|
||||
#define SOCK_WR_REG(_sock) (VDM | RWB_WRITE | (_sock * 0x20 + 0x10))
|
||||
|
||||
|
@ -61,7 +61,7 @@ static uint8_t spi_read_byte(void)
|
|||
{
|
||||
SCLK_H();
|
||||
dat <<= 1;
|
||||
dat |= k210_gpiohs_get_value(FPIOA_W5500_MISO);
|
||||
dat |= k210_gpiohs_get_value(FPIOA_ENET_MISO);
|
||||
w_delay();
|
||||
SCLK_L();
|
||||
}
|
||||
|
|
|
@ -11,8 +11,8 @@
|
|||
*/
|
||||
|
||||
/**
|
||||
* @file esp8266_demo.c
|
||||
* @brief xidatong-riscv64 esp8266_demo.c
|
||||
* @file wifi_demo.c
|
||||
* @brief xidatong-riscv64 wifi_demo.c
|
||||
* @version 1.0
|
||||
* @author AIIT XUOS Lab
|
||||
* @date 2022.08.22
|
||||
|
@ -21,18 +21,18 @@
|
|||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
#include "k210_esp8266.h"
|
||||
#include "k210_wifi.h"
|
||||
#include <sys/ioctl.h>
|
||||
#include "time.h"
|
||||
|
||||
#define ec_print printf
|
||||
#define ESP8266_DEMO_TIMEOUT 10
|
||||
#define WIFI_DEMO_TIMEOUT 10
|
||||
|
||||
|
||||
// first: receive \n\rRDY\n\r
|
||||
// second: AT -> OK
|
||||
|
||||
static int esp8266_read_with_time(int fd, char *buffer, int seconds)
|
||||
static int wifi_read_with_time(int fd, char *buffer, int seconds)
|
||||
{
|
||||
int read_size = 0;
|
||||
time_t cur_time = time(NULL);
|
||||
|
@ -44,12 +44,12 @@ static int esp8266_read_with_time(int fd, char *buffer, int seconds)
|
|||
|
||||
if(read_size < 0)
|
||||
{
|
||||
ec_print("esp8266 read failed %d\n", read_size);
|
||||
ec_print("wifi read failed %d\n", read_size);
|
||||
return -ETIME;
|
||||
}
|
||||
else if(read_size)
|
||||
{
|
||||
ec_print("esp8266 read size %d ok!\n", read_size);
|
||||
ec_print("wifi read size %d ok!\n", read_size);
|
||||
break;
|
||||
}
|
||||
cur_time = time(NULL);
|
||||
|
@ -57,10 +57,10 @@ static int esp8266_read_with_time(int fd, char *buffer, int seconds)
|
|||
return read_size;
|
||||
}
|
||||
|
||||
int esp8266_check_demo(int fd, char *send_str, char *recv_str)
|
||||
int wifi_check_demo(int fd, char *send_str, char *recv_str)
|
||||
{
|
||||
int ret;
|
||||
char buf[ESP8266_RECV_BUF_SIZE] = {0};
|
||||
char buf[WIFI_RECV_BUF_SIZE] = {0};
|
||||
|
||||
if(send_str)
|
||||
{
|
||||
|
@ -68,49 +68,49 @@ int esp8266_check_demo(int fd, char *send_str, char *recv_str)
|
|||
|
||||
if(ret < 0)
|
||||
{
|
||||
ec_print("esp8266 write failed %d\n", ret);
|
||||
ec_print("wifi write failed %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
ec_print("write %s ret = %d\n", send_str, ret);
|
||||
}
|
||||
|
||||
ret = esp8266_read_with_time(fd, buf, ESP8266_DEMO_TIMEOUT);
|
||||
ret = wifi_read_with_time(fd, buf, WIFI_DEMO_TIMEOUT);
|
||||
if(ret < 0)
|
||||
{
|
||||
ec_print("esp8266 read failed %d\n", ret);
|
||||
ec_print("wifi read failed %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
ec_print("esp8266 read: %s!\n", buf);
|
||||
ec_print("wifi read: %s!\n", buf);
|
||||
|
||||
if(strstr(buf, recv_str))
|
||||
{
|
||||
ec_print("esp8266 %s found!\n", recv_str);
|
||||
ec_print("wifi %s found!\n", recv_str);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
void Esp8266Demo(void)
|
||||
void WifiDemo(void)
|
||||
{
|
||||
int fd;
|
||||
|
||||
k210_gpiohs_set_value(FPIOA_ESP8266_EN, GPIO_PV_HIGH);
|
||||
k210_gpiohs_set_value(FPIOA_WIFI_EN, GPIO_PV_HIGH);
|
||||
up_mdelay(100);
|
||||
|
||||
ec_print("start %s\n", __func__);
|
||||
|
||||
fd = open("/dev/esp8266", O_RDWR);
|
||||
fd = open("/dev/wifi", O_RDWR);
|
||||
if(fd < 0)
|
||||
{
|
||||
ec_print("esp8266 open failed %d\n", fd);
|
||||
ec_print("wifi open failed %d\n", fd);
|
||||
return;
|
||||
}
|
||||
|
||||
up_mdelay(2000);
|
||||
esp8266_check_demo(fd, "AT\r\n", "OK");
|
||||
wifi_check_demo(fd, "AT\r\n", "OK");
|
||||
|
||||
close(fd);
|
||||
|
|
@ -1458,20 +1458,20 @@ int nsh_foreach_var(FAR struct nsh_vtbl_s *vtbl, nsh_foreach_var_t cb,
|
|||
int cmd_Ch376(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv);
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_BSP_USING_EC200) && !defined(CONFIG_NSH_DISABLE_EC200)
|
||||
int cmd_EC200(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv);
|
||||
#if defined(CONFIG_BSP_USING_LTE) && !defined(CONFIG_NSH_DISABLE_LTE)
|
||||
int cmd_Lte(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv);
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_BSP_USING_CAN) && !defined(CONFIG_NSH_DISABLE_CAN)
|
||||
int cmd_CAN(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv);
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_BSP_USING_ESP8266) && !defined(CONFIG_NSH_DISABLE_ESP8266)
|
||||
int cmd_Esp8266(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv);
|
||||
#if defined(CONFIG_BSP_USING_WIFI) && !defined(CONFIG_NSH_DISABLE_WIFI)
|
||||
int cmd_Wifi(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv);
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_BSP_USING_W5500) && !defined(CONFIG_NSH_DISABLE_W5500)
|
||||
int cmd_W5500(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv);
|
||||
#if defined(CONFIG_BSP_USING_ENET) && !defined(CONFIG_NSH_DISABLE_ENET)
|
||||
int cmd_Enet(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv);
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_K210_LCD) && !defined(CONFIG_NSH_DISABLE_LCD)
|
||||
|
|
|
@ -67,12 +67,12 @@ int cmd_Ch376(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv)
|
|||
/****************************************************************************
|
||||
* Name: cmd_Ch376
|
||||
****************************************************************************/
|
||||
#if defined(CONFIG_BSP_USING_EC200) && !defined(CONFIG_NSH_DISABLE_EC200)
|
||||
extern void EC200Demo(void);
|
||||
int cmd_EC200(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv)
|
||||
#if defined(CONFIG_BSP_USING_LTE) && !defined(CONFIG_NSH_DISABLE_LTE)
|
||||
extern void LteDemo(void);
|
||||
int cmd_Lte(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv)
|
||||
{
|
||||
nsh_output(vtbl, "Hello, EC200!\n");
|
||||
EC200Demo();
|
||||
nsh_output(vtbl, "Hello, Lte!\n");
|
||||
LteDemo();
|
||||
return OK;
|
||||
}
|
||||
#endif
|
||||
|
@ -91,14 +91,14 @@ int cmd_CAN(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv)
|
|||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Name: cmd_Esp8266
|
||||
* Name: cmd_Wifi
|
||||
****************************************************************************/
|
||||
#if defined(CONFIG_BSP_USING_ESP8266) && !defined(CONFIG_NSH_DISABLE_ESP8266)
|
||||
extern void Esp8266Demo(void);
|
||||
int cmd_Esp8266(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv)
|
||||
#if defined(CONFIG_BSP_USING_WIFI) && !defined(CONFIG_NSH_DISABLE_WIFI)
|
||||
extern void WifiDemo(void);
|
||||
int cmd_Wifi(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv)
|
||||
{
|
||||
nsh_output(vtbl, "Hello, Esp8266!\n");
|
||||
Esp8266Demo();
|
||||
nsh_output(vtbl, "Hello, Wifi!\n");
|
||||
WifiDemo();
|
||||
return OK;
|
||||
}
|
||||
#endif
|
||||
|
@ -106,12 +106,12 @@ int cmd_Esp8266(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv)
|
|||
/****************************************************************************
|
||||
* Name: cmd_W5500
|
||||
****************************************************************************/
|
||||
#if defined(CONFIG_BSP_USING_W5500) && !defined(CONFIG_NSH_DISABLE_W5500)
|
||||
extern void W5500Demo(void);
|
||||
int cmd_W5500(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv)
|
||||
#if defined(CONFIG_BSP_USING_ENET) && !defined(CONFIG_NSH_DISABLE_ENET)
|
||||
extern void EnetDemo(void);
|
||||
int cmd_Enet(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv)
|
||||
{
|
||||
nsh_output(vtbl, "Hello, W5500!\n");
|
||||
W5500Demo();
|
||||
nsh_output(vtbl, "Hello, Enet!\n");
|
||||
EnetDemo();
|
||||
return OK;
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -604,20 +604,20 @@ static const struct cmdmap_s g_cmdmap[] =
|
|||
{ "ch376", cmd_Ch376, 1, 1, "[ch376 demo cmd.]" },
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_BSP_USING_EC200) && !defined(CONFIG_NSH_DISABLE_EC200)
|
||||
{ "ec200", cmd_EC200, 1, 1, "[ec200 demo cmd.]" },
|
||||
#if defined(CONFIG_BSP_USING_LTE) && !defined(CONFIG_NSH_DISABLE_LTE)
|
||||
{ "lte", cmd_Lte, 1, 1, "[Lte demo cmd.]" },
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_BSP_USING_CAN) && !defined(CONFIG_NSH_DISABLE_CAN)
|
||||
{ "can", cmd_CAN, 1, 1, "[can demo cmd.]" },
|
||||
{ "can", cmd_CAN, 1, 1, "[CAN demo cmd.]" },
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_BSP_USING_ESP8266) && !defined(CONFIG_NSH_DISABLE_ESP8266)
|
||||
{ "esp8266", cmd_Esp8266, 1, 1, "[can demo cmd.]" },
|
||||
#if defined(CONFIG_BSP_USING_WIFI) && !defined(CONFIG_NSH_DISABLE_WIFI)
|
||||
{ "wifi", cmd_Wifi, 1, 1, "[Wifi demo cmd.]" },
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_BSP_USING_W5500) && !defined(CONFIG_NSH_DISABLE_W5500)
|
||||
{ "w5500", cmd_W5500, 1, 1, "[can demo cmd.]" },
|
||||
#if defined(CONFIG_BSP_USING_ENET) && !defined(CONFIG_NSH_DISABLE_ENET)
|
||||
{ "enet", cmd_Enet, 1, 1, "[Ethernet demo cmd.]" },
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_K210_LCD) && !defined(CONFIG_NSH_DISABLE_LCD)
|
||||
|
|
|
@ -1890,6 +1890,132 @@ config DEBUG_CH438_INFO
|
|||
|
||||
endif # DEBUG_CH438
|
||||
|
||||
config DEBUG_CH376
|
||||
bool "CH376 Debug Features"
|
||||
default n
|
||||
---help---
|
||||
Enable CH376 debug features.
|
||||
|
||||
if DEBUG_CH376
|
||||
|
||||
config DEBUG_CH376_ERROR
|
||||
bool "CH376 Error Output"
|
||||
default n
|
||||
depends on DEBUG_ERROR
|
||||
---help---
|
||||
Enable CH376 error output to SYSLOG.
|
||||
|
||||
config DEBUG_CH376_WARN
|
||||
bool "CH376 Warnings Output"
|
||||
default n
|
||||
depends on DEBUG_WARN
|
||||
---help---
|
||||
Enable CH376 warning output to SYSLOG.
|
||||
|
||||
config DEBUG_CH376_INFO
|
||||
bool "CH376 Informational Output"
|
||||
default n
|
||||
depends on DEBUG_INFO
|
||||
---help---
|
||||
Enable CH376 informational output to SYSLOG.
|
||||
|
||||
endif # DEBUG_CH376
|
||||
|
||||
|
||||
config DEBUG_WIFI
|
||||
bool "WIFI Debug Features"
|
||||
default n
|
||||
---help---
|
||||
Enable WIFI debug features.
|
||||
|
||||
if DEBUG_WIFI
|
||||
|
||||
config DEBUG_WIFI_ERROR
|
||||
bool "WIFI Error Output"
|
||||
default n
|
||||
depends on DEBUG_ERROR
|
||||
---help---
|
||||
Enable WIFI error output to SYSLOG.
|
||||
|
||||
config DEBUG_WIFI_WARN
|
||||
bool "WIFI Warnings Output"
|
||||
default n
|
||||
depends on DEBUG_WARN
|
||||
---help---
|
||||
Enable WIFI warning output to SYSLOG.
|
||||
|
||||
config DEBUG_WIFI_INFO
|
||||
bool "WIFI Informational Output"
|
||||
default n
|
||||
depends on DEBUG_INFO
|
||||
---help---
|
||||
Enable WIFI informational output to SYSLOG.
|
||||
|
||||
endif # DEBUG_WIFI
|
||||
|
||||
config DEBUG_LTE
|
||||
bool "LTE Debug Features"
|
||||
default n
|
||||
---help---
|
||||
Enable LTE debug features.
|
||||
|
||||
if DEBUG_LTE
|
||||
|
||||
config DEBUG_LTE_ERROR
|
||||
bool "LTE Error Output"
|
||||
default n
|
||||
depends on DEBUG_ERROR
|
||||
---help---
|
||||
Enable LTE error output to SYSLOG.
|
||||
|
||||
config DEBUG_LTE_WARN
|
||||
bool "LTE Warnings Output"
|
||||
default n
|
||||
depends on DEBUG_WARN
|
||||
---help---
|
||||
Enable LTE warning output to SYSLOG.
|
||||
|
||||
config DEBUG_LTE_INFO
|
||||
bool "LTE Informational Output"
|
||||
default n
|
||||
depends on DEBUG_INFO
|
||||
---help---
|
||||
Enable LTE informational output to SYSLOG.
|
||||
|
||||
endif # DEBUG_LTE
|
||||
|
||||
config DEBUG_ENET
|
||||
bool "ENET Debug Features"
|
||||
default n
|
||||
---help---
|
||||
Enable ENET debug features.
|
||||
|
||||
if DEBUG_ENET
|
||||
|
||||
config DEBUG_ENET_ERROR
|
||||
bool "ENET Error Output"
|
||||
default n
|
||||
depends on DEBUG_ERROR
|
||||
---help---
|
||||
Enable ENET error output to SYSLOG.
|
||||
|
||||
config DEBUG_ENET_WARN
|
||||
bool "ENET Warnings Output"
|
||||
default n
|
||||
depends on DEBUG_WARN
|
||||
---help---
|
||||
Enable ENET warning output to SYSLOG.
|
||||
|
||||
config DEBUG_ENET_INFO
|
||||
bool "ENET Informational Output"
|
||||
default n
|
||||
depends on DEBUG_INFO
|
||||
---help---
|
||||
Enable ENET informational output to SYSLOG.
|
||||
|
||||
endif # DEBUG_ENET
|
||||
|
||||
|
||||
endif # DEBUG_FEATURES
|
||||
|
||||
config DEBUG_TCBINFO
|
||||
|
|
Loading…
Reference in New Issue