forked from xuos/xiuos
support can and add test case for xidatong-riscv64 on nuttx
This commit is contained in:
parent
2bc1de068c
commit
5d6aa56f29
|
@ -39,6 +39,12 @@ menuconfig BSP_USING_TOUCH
|
||||||
bool "Using touch device"
|
bool "Using touch device"
|
||||||
default n
|
default n
|
||||||
|
|
||||||
|
menuconfig BSP_USING_CAN
|
||||||
|
select K210_16550_UART
|
||||||
|
select K210_16550_UART1
|
||||||
|
bool "Using CAN device"
|
||||||
|
default n
|
||||||
|
|
||||||
menuconfig BSP_USING_CH438
|
menuconfig BSP_USING_CH438
|
||||||
bool "Using CH438 device"
|
bool "Using CH438 device"
|
||||||
default n
|
default n
|
||||||
|
|
|
@ -0,0 +1,73 @@
|
||||||
|
#
|
||||||
|
# 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_K210_16550_UART=y
|
||||||
|
CONFIG_K210_16550_UART1=y
|
||||||
|
CONFIG_K210_16550_UART1_BASE=0x50210000
|
||||||
|
CONFIG_K210_16550_UART1_CLOCK=195000000
|
||||||
|
CONFIG_K210_16550_UART1_IRQ=38
|
||||||
|
CONFIG_K210_16550_UART1_BAUD=115200
|
||||||
|
CONFIG_K210_16550_UART1_PARITY=0
|
||||||
|
CONFIG_K210_16550_UART1_BITS=8
|
||||||
|
CONFIG_K210_16550_UART1_2STOP=0
|
||||||
|
CONFIG_K210_16550_UART1_RXBUFSIZE=128
|
||||||
|
CONFIG_K210_16550_UART1_TXBUFSIZE=128
|
||||||
|
CONFIG_BSP_USING_CAN=y
|
||||||
|
CONFIG_SERIAL_TERMIOS=y
|
|
@ -78,8 +78,6 @@ extern "C"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*************************** GPIO define ***************************/
|
/*************************** GPIO define ***************************/
|
||||||
/* Connected to red led */
|
|
||||||
#define BOARD_LED_PAD 14
|
|
||||||
|
|
||||||
/* UART IO */
|
/* UART IO */
|
||||||
#define GPIO_WIFI_RXD 7
|
#define GPIO_WIFI_RXD 7
|
||||||
|
@ -88,6 +86,8 @@ extern "C"
|
||||||
#define GPIO_EC200T_TXD 20
|
#define GPIO_EC200T_TXD 20
|
||||||
#define GPIO_CH376T_RXD 22
|
#define GPIO_CH376T_RXD 22
|
||||||
#define GPIO_CH376T_TXD 23
|
#define GPIO_CH376T_TXD 23
|
||||||
|
#define GPIO_CAN_RXD 18
|
||||||
|
#define GPIO_CAN_TXD 19
|
||||||
|
|
||||||
/* ch438 IO */
|
/* ch438 IO */
|
||||||
#define CH438_ALE_PIN 24
|
#define CH438_ALE_PIN 24
|
||||||
|
@ -128,12 +128,12 @@ extern "C"
|
||||||
#define GPIO_E220_M1 45
|
#define GPIO_E220_M1 45
|
||||||
#define GPIO_E18_MODE 46
|
#define GPIO_E18_MODE 46
|
||||||
#define GPIO_WIFI_EN 8
|
#define GPIO_WIFI_EN 8
|
||||||
|
#define GPIO_CAN_CFG 43
|
||||||
|
|
||||||
/************************** end GPIO define **************************/
|
/************************** end GPIO define **************************/
|
||||||
|
|
||||||
|
|
||||||
/*************************** FPIOA define ***************************/
|
/*************************** FPIOA define ***************************/
|
||||||
#define BOARD_LED_IO 0
|
|
||||||
|
|
||||||
/* UART FPOA */
|
/* UART FPOA */
|
||||||
#define FPOA_USART1_RX K210_IO_FUNC_UART1_RX
|
#define FPOA_USART1_RX K210_IO_FUNC_UART1_RX
|
||||||
|
@ -182,6 +182,7 @@ extern "C"
|
||||||
#define FPIOA_E220_M1 2
|
#define FPIOA_E220_M1 2
|
||||||
#define FPIOA_E18_MODE 3
|
#define FPIOA_E18_MODE 3
|
||||||
#define FPIOA_WIFI_EN 4
|
#define FPIOA_WIFI_EN 4
|
||||||
|
#define FPIOA_CAN_NCFG 5
|
||||||
|
|
||||||
/************************** end FPIOA define **************************/
|
/************************** end FPIOA define **************************/
|
||||||
|
|
||||||
|
|
|
@ -58,4 +58,8 @@ ifeq ($(CONFIG_BSP_USING_TOUCH),y)
|
||||||
CSRCS += k210_touch.c
|
CSRCS += k210_touch.c
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifeq ($(CONFIG_BSP_USING_CAN),y)
|
||||||
|
CSRCS += can_demo.c
|
||||||
|
endif
|
||||||
|
|
||||||
include $(TOPDIR)/boards/Board.mk
|
include $(TOPDIR)/boards/Board.mk
|
||||||
|
|
|
@ -0,0 +1,147 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2020 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 can_demo.c
|
||||||
|
* @brief xidatong-riscv64 can_demo.c
|
||||||
|
* @version 1.0
|
||||||
|
* @author AIIT XUOS Lab
|
||||||
|
* @date 2022.11.10
|
||||||
|
*/
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Included Files
|
||||||
|
****************************************************************************/
|
||||||
|
#include <nuttx/config.h>
|
||||||
|
#include <nuttx/pthread.h>
|
||||||
|
#include <sys/ioctl.h>
|
||||||
|
#include <nuttx/time.h>
|
||||||
|
#include <nuttx/fs/fs.h>
|
||||||
|
#include <nuttx/fs/ioctl.h>
|
||||||
|
#include <nuttx/arch.h>
|
||||||
|
#include <nuttx/board.h>
|
||||||
|
#include <arch/board/board.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <stdbool.h>
|
||||||
|
#include "time.h"
|
||||||
|
#include <debug.h>
|
||||||
|
#include <assert.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
#include <termios.h>
|
||||||
|
#include <nuttx/ioexpander/gpio.h>
|
||||||
|
#include "k210_uart_16550.h"
|
||||||
|
#include "k210_fpioa.h"
|
||||||
|
#include "k210_gpiohs.h"
|
||||||
|
#include "k210_gpio_common.h"
|
||||||
|
|
||||||
|
static int fd, flag=0;
|
||||||
|
|
||||||
|
static void serial_thread_entry(void)
|
||||||
|
{
|
||||||
|
uint8_t ch;
|
||||||
|
while(read(fd, &ch, 1) == 1)
|
||||||
|
{
|
||||||
|
printf("%02x ",ch);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void start_thread(void)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
pthread_t thread;
|
||||||
|
pthread_attr_t attr = PTHREAD_ATTR_INITIALIZER;
|
||||||
|
attr.priority = 20;
|
||||||
|
attr.stacksize = 2048;
|
||||||
|
|
||||||
|
ret = pthread_create(&thread, &attr, (void*)serial_thread_entry, NULL);
|
||||||
|
if (ret != 0)
|
||||||
|
{
|
||||||
|
printf("task create failed, status=%d\n", ret);
|
||||||
|
}
|
||||||
|
|
||||||
|
flag = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void set_baud(unsigned long speed)
|
||||||
|
{
|
||||||
|
struct termios cfg;
|
||||||
|
tcgetattr(fd, &cfg);
|
||||||
|
cfsetspeed(&cfg, speed);
|
||||||
|
tcsetattr(fd, TCSANOW, &cfg);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void can_cfg_start(void)
|
||||||
|
{
|
||||||
|
uint8_t cmd[8];
|
||||||
|
set_baud(9600);
|
||||||
|
up_mdelay(1000);
|
||||||
|
|
||||||
|
k210_gpiohs_set_direction(FPIOA_CAN_NCFG, GPIO_DM_OUTPUT);
|
||||||
|
k210_gpiohs_set_value(FPIOA_CAN_NCFG, GPIO_PV_LOW);
|
||||||
|
up_mdelay(200);
|
||||||
|
|
||||||
|
cmd[0] = 0xAA;
|
||||||
|
cmd[1] = 0x55;
|
||||||
|
cmd[2] = 0xFD;
|
||||||
|
cmd[3] = 0x32;
|
||||||
|
cmd[4] = 0x01;
|
||||||
|
cmd[5] = 0x0B;
|
||||||
|
cmd[6] = 0xc4;
|
||||||
|
cmd[7] = 0x29;
|
||||||
|
write(fd, cmd, 8);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void can_cfg_end(void)
|
||||||
|
{
|
||||||
|
k210_gpiohs_set_direction(FPIOA_CAN_NCFG, GPIO_DM_OUTPUT);
|
||||||
|
k210_gpiohs_set_value(FPIOA_CAN_NCFG, GPIO_PV_HIGH);
|
||||||
|
set_baud(115200);
|
||||||
|
}
|
||||||
|
|
||||||
|
void can_test(void)
|
||||||
|
{
|
||||||
|
uint8_t msg[8];
|
||||||
|
uint8_t i;
|
||||||
|
|
||||||
|
fd = open("/dev/ttyS1", O_RDWR);
|
||||||
|
if (flag == 0)
|
||||||
|
{
|
||||||
|
/* 1、start thread */
|
||||||
|
start_thread();
|
||||||
|
up_mdelay(20);
|
||||||
|
|
||||||
|
/* 2、config can prama */
|
||||||
|
can_cfg_start();
|
||||||
|
up_mdelay(20);
|
||||||
|
|
||||||
|
/* 3、exit config */
|
||||||
|
can_cfg_end();
|
||||||
|
up_mdelay(20);;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 4、send data */
|
||||||
|
for(i=0;i<10;i++)
|
||||||
|
{
|
||||||
|
msg[0] = 0x11;
|
||||||
|
msg[1] = 0x22;
|
||||||
|
msg[2] = 0x33;
|
||||||
|
msg[3] = 0x44;
|
||||||
|
msg[4] = 0x55;
|
||||||
|
msg[5] = 0x66;
|
||||||
|
msg[6] = 0x77;
|
||||||
|
msg[7] = 0x99;
|
||||||
|
write(fd, msg, 8);
|
||||||
|
up_mdelay(20);
|
||||||
|
}
|
||||||
|
}
|
|
@ -95,30 +95,42 @@ int k210_bringup(void)
|
||||||
board_touch_initialize();
|
board_touch_initialize();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_K210_16550_UART1
|
#ifdef CONFIG_ADAPTER_ESP8285_WIFI
|
||||||
sysctl_clock_enable(SYSCTL_CLOCK_UART1);
|
sysctl_clock_enable(SYSCTL_CLOCK_UART1);
|
||||||
sysctl_reset(SYSCTL_RESET_UART1);
|
sysctl_reset(SYSCTL_RESET_UART1);
|
||||||
|
|
||||||
fpioa_set_function(GPIO_WIFI_TXD, FPOA_USART1_RX);
|
fpioa_set_function(GPIO_WIFI_TXD, FPOA_USART1_RX);
|
||||||
fpioa_set_function(GPIO_WIFI_RXD, FPOA_USART1_TX);
|
fpioa_set_function(GPIO_WIFI_RXD, FPOA_USART1_TX);
|
||||||
|
|
||||||
fpioa_set_function(GPIO_WIFI_EN, K210_IO_FUNC_GPIOHS0 + GPIO_WIFI_EN);
|
fpioa_set_function(GPIO_WIFI_EN, K210_IO_FUNC_GPIOHS0 + FPIOA_WIFI_EN);
|
||||||
k210_gpiohs_set_direction(GPIO_WIFI_EN, GPIO_DM_OUTPUT);
|
k210_gpiohs_set_direction(FPIOA_WIFI_EN, GPIO_DM_OUTPUT);
|
||||||
k210_gpiohs_set_value(GPIO_WIFI_EN, GPIO_PV_LOW);
|
k210_gpiohs_set_value(FPIOA_WIFI_EN, GPIO_PV_LOW);
|
||||||
up_mdelay(50);
|
up_mdelay(50);
|
||||||
k210_gpiohs_set_value(GPIO_WIFI_EN, GPIO_PV_HIGH);
|
k210_gpiohs_set_value(FPIOA_WIFI_EN, GPIO_PV_HIGH);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_K210_16550_UART2
|
#ifdef CONFIG_BSP_USING_CAN
|
||||||
|
sysctl_clock_enable(SYSCTL_CLOCK_UART1);
|
||||||
|
sysctl_reset(SYSCTL_RESET_UART1);
|
||||||
|
|
||||||
|
fpioa_set_function(GPIO_CAN_TXD, FPOA_USART1_TX);
|
||||||
|
fpioa_set_function(GPIO_CAN_RXD, FPOA_USART1_RX);
|
||||||
|
|
||||||
|
k210_fpioa_config(GPIO_CAN_CFG, HS_GPIO(FPIOA_CAN_NCFG) | K210_IOFLAG_GPIOHS);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_ADAPTER_EC200T
|
||||||
sysctl_clock_enable(SYSCTL_CLOCK_UART2);
|
sysctl_clock_enable(SYSCTL_CLOCK_UART2);
|
||||||
sysctl_reset(SYSCTL_RESET_UART2);
|
sysctl_reset(SYSCTL_RESET_UART2);
|
||||||
|
|
||||||
fpioa_set_function(GPIO_EC200T_RXD, FPOA_USART2_RX);
|
fpioa_set_function(GPIO_EC200T_RXD, FPOA_USART2_RX);
|
||||||
fpioa_set_function(GPIO_EC200T_TXD, FPOA_USART2_TX);
|
fpioa_set_function(GPIO_EC200T_TXD, FPOA_USART2_TX);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_K210_16550_UART3
|
#ifdef CONFIG_BSP_USING_CH376
|
||||||
sysctl_clock_enable(SYSCTL_CLOCK_UART3);
|
sysctl_clock_enable(SYSCTL_CLOCK_UART3);
|
||||||
sysctl_reset(SYSCTL_RESET_UART3);
|
sysctl_reset(SYSCTL_RESET_UART3);
|
||||||
|
|
||||||
fpioa_set_function(GPIO_CH376T_RXD, FPOA_USART3_RX);
|
fpioa_set_function(GPIO_CH376T_RXD, FPOA_USART3_RX);
|
||||||
fpioa_set_function(GPIO_CH376T_TXD, FPOA_USART3_TX);
|
fpioa_set_function(GPIO_CH376T_TXD, FPOA_USART3_TX);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -18,8 +18,8 @@
|
||||||
* @date 2022.04.26
|
* @date 2022.04.26
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __BOARDS_ARM_IMXRT_XIDATONG_SRC_IMXRT_CH438_H
|
#ifndef __BOARDS_XIDATONG_SRC_RISCV64_CH438_H
|
||||||
#define __BOARDS_ARM_IMXRT_XIDATONG_SRC_IMXRT_CH438_H
|
#define __BOARDS_XIDATONG_SRC_RISCV64_CH438_H
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Included Files
|
* Included Files
|
||||||
|
@ -322,5 +322,5 @@
|
||||||
void board_ch438_initialize(void);
|
void board_ch438_initialize(void);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif /* __BOARDS_ARM_IMXRT_XIDATONG_SRC_IMXRT_CH438_H */
|
#endif /* __BOARDS_XIDATONG_SRC_RISCV64_CH438_H */
|
||||||
|
|
||||||
|
|
|
@ -36,23 +36,12 @@
|
||||||
|
|
||||||
void board_autoled_initialize(void)
|
void board_autoled_initialize(void)
|
||||||
{
|
{
|
||||||
k210_fpioa_config(BOARD_LED_PAD, BOARD_LED_IO_FUNC | K210_IOFLAG_GPIOHS);
|
|
||||||
k210_gpiohs_set_direction(BOARD_LED_IO, GPIO_DM_OUTPUT);
|
|
||||||
k210_gpiohs_set_value(BOARD_LED_IO, true); /* LED off */
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void board_autoled_on(int led)
|
void board_autoled_on(int led)
|
||||||
{
|
{
|
||||||
if (led == LED_PANIC)
|
|
||||||
{
|
|
||||||
k210_gpiohs_set_value(BOARD_LED_IO, false);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void board_autoled_off(int led)
|
void board_autoled_off(int led)
|
||||||
{
|
{
|
||||||
if (led == LED_PANIC)
|
|
||||||
{
|
|
||||||
k210_gpiohs_set_value(BOARD_LED_IO, true);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -671,6 +671,10 @@ config NSH_DISABLE_MUSL_TEST
|
||||||
bool "Disable the musl test."
|
bool "Disable the musl test."
|
||||||
default n
|
default n
|
||||||
|
|
||||||
|
config NSH_NSH_DISABLE_CAN_TEST
|
||||||
|
bool "Disable the can test."
|
||||||
|
default n
|
||||||
|
|
||||||
endmenu
|
endmenu
|
||||||
|
|
||||||
if MMCSD
|
if MMCSD
|
||||||
|
|
|
@ -1591,6 +1591,9 @@ int nsh_foreach_var(FAR struct nsh_vtbl_s *vtbl, nsh_foreach_var_t cb,
|
||||||
int cmd_musl(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv);
|
int cmd_musl(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(CONFIG_BSP_USING_CAN) && !defined(CONFIG_NSH_DISABLE_CAN_TEST)
|
||||||
|
int cmd_cantest(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv);
|
||||||
|
#endif
|
||||||
#if defined(__cplusplus)
|
#if defined(__cplusplus)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -509,4 +509,14 @@ int cmd_musl(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv)
|
||||||
Testmusl();
|
Testmusl();
|
||||||
return OK;
|
return OK;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(CONFIG_BSP_USING_CAN) && !defined(CONFIG_NSH_DISABLE_CAN_TEST)
|
||||||
|
extern void can_test(void);
|
||||||
|
int cmd_cantest(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv)
|
||||||
|
{
|
||||||
|
nsh_output(vtbl, "Hello, world!\n");
|
||||||
|
can_test();
|
||||||
|
return OK;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
|
@ -736,6 +736,10 @@ static const struct cmdmap_s g_cmdmap[] =
|
||||||
{ "testmusl", cmd_musl, 1, 1, "[test musl function.]" },
|
{ "testmusl", cmd_musl, 1, 1, "[test musl function.]" },
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(CONFIG_BSP_USING_CAN) && !defined(CONFIG_NSH_DISABLE_CAN_TEST)
|
||||||
|
{ "cantest", cmd_cantest, 1, 1, "[test can function.]" },
|
||||||
|
#endif
|
||||||
|
|
||||||
{ NULL, NULL, 1, 1, NULL }
|
{ NULL, NULL, 1, 1, NULL }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue