forked from xuos/xiuos
commit
fd69c3d400
|
@ -2,6 +2,7 @@
|
||||||
# APP_Framework/Applications/Make.defs
|
# APP_Framework/Applications/Make.defs
|
||||||
############################################################################
|
############################################################################
|
||||||
CONFIGURED_APPS += $(APPDIR)/../../../APP_Framework/Applications
|
CONFIGURED_APPS += $(APPDIR)/../../../APP_Framework/Applications
|
||||||
|
CONFIGURED_APPS += $(APPDIR)/../../../APP_Framework/Applications/app_test
|
||||||
CONFIGURED_APPS += $(APPDIR)/../../../APP_Framework/Applications/general_functions/list
|
CONFIGURED_APPS += $(APPDIR)/../../../APP_Framework/Applications/general_functions/list
|
||||||
|
|
||||||
include $(wildcard $(APPDIR)/../../../APP_Framework/Applications/*/Make.defs)
|
include $(wildcard $(APPDIR)/../../../APP_Framework/Applications/*/Make.defs)
|
||||||
|
|
|
@ -29,5 +29,9 @@ menu "test app"
|
||||||
default "/dev/dac_dev"
|
default "/dev/dac_dev"
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
config USER_TEST_SEMC
|
||||||
|
bool "Config test semc sdram"
|
||||||
|
default n
|
||||||
endif
|
endif
|
||||||
endmenu
|
endmenu
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
############################################################################
|
||||||
|
# APP_Framework/Applications/app_test/Make.defs
|
||||||
|
############################################################################
|
||||||
|
CONFIGURED_APPS += $(APPDIR)/../../../APP_Framework/Applications/app_test
|
||||||
|
|
||||||
|
include $(wildcard $(APPDIR)/../../../APP_Framework/Applications/app_test/*/Make.defs)
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
SRC_FILES :=
|
SRC_FILES :=
|
||||||
|
|
||||||
ifeq ($(CONFIG_USER_TEST_SPI_FLASH),y)
|
ifeq ($(CONFIG_USER_TEST_SPI_FLASH),y)
|
||||||
SRC_FILES += test_spi_flash.c
|
SRC_FILES += test_spi_flash.c
|
||||||
|
@ -12,4 +12,18 @@ ifeq ($(CONFIG_USER_TEST_DAC),y)
|
||||||
SRC_FILES += test_dac.c
|
SRC_FILES += test_dac.c
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifeq ($(CONFIG_USER_TEST_SEMC),y)
|
||||||
|
SRC_FILES += test_extsram.c
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(CONFIG_ADD_XIZI_FETURES),y)
|
||||||
include $(KERNEL_ROOT)/compiler.mk
|
include $(KERNEL_ROOT)/compiler.mk
|
||||||
|
endif
|
||||||
|
|
||||||
|
include $(KERNEL_ROOT)/.config
|
||||||
|
ifeq ($(CONFIG_ADD_NUTTX_FETURES),y)
|
||||||
|
include $(APPDIR)/Make.defs
|
||||||
|
CSRCS += test_extsram.c
|
||||||
|
include $(APPDIR)/Application.mk
|
||||||
|
endif
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,97 @@
|
||||||
|
|
||||||
|
#ifdef ADD_XIZI_FETURES
|
||||||
|
#include <xizi.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
#include "transform.h"
|
||||||
|
|
||||||
|
/* parameters for sram peripheral */
|
||||||
|
// /* stm32f4 Bank3:0X68000000 */
|
||||||
|
// #define SRAM_BANK_ADDR ((uint32_t)0X68000000)
|
||||||
|
|
||||||
|
/* OK-1052 semc:0X80000000 */
|
||||||
|
#define SRAM_BANK_ADDR ((uint32_t)0X80000000)
|
||||||
|
|
||||||
|
/* data width: 8, 16, 32 */
|
||||||
|
#define SRAM_DATA_WIDTH 16
|
||||||
|
|
||||||
|
/* sram size */
|
||||||
|
#define SRAM_SIZE ((uint32_t)0x2000000)
|
||||||
|
|
||||||
|
#define TICK_PER_SECOND 100
|
||||||
|
|
||||||
|
int extsram_test(void)
|
||||||
|
{
|
||||||
|
int i = 0;
|
||||||
|
uint32_t start_time = 0, time_cast = 0;
|
||||||
|
#if SRAM_DATA_WIDTH == 8
|
||||||
|
char data_width = 1;
|
||||||
|
uint8_t data = 0;
|
||||||
|
#elif SRAM_DATA_WIDTH == 16
|
||||||
|
char data_width = 2;
|
||||||
|
uint16_t data = 0;
|
||||||
|
#else
|
||||||
|
char data_width = 4;
|
||||||
|
uint32_t data = 0;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* write data */
|
||||||
|
printf("Writing the %ld bytes data, waiting....", SRAM_SIZE);
|
||||||
|
start_time = PrivGetTickTime();
|
||||||
|
for (i = 0; i < SRAM_SIZE / data_width; i++)
|
||||||
|
{
|
||||||
|
#if SRAM_DATA_WIDTH == 8
|
||||||
|
*(volatile uint8_t *)(SRAM_BANK_ADDR + i * data_width) = (uint8_t)0x55;
|
||||||
|
#elif SRAM_DATA_WIDTH == 16
|
||||||
|
*(volatile uint16_t *)(SRAM_BANK_ADDR + i * data_width) = (uint16_t)0x5555;
|
||||||
|
#else
|
||||||
|
*(volatile uint32_t *)(SRAM_BANK_ADDR + i * data_width) = (uint32_t)0x55555555;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
time_cast = PrivGetTickTime() - start_time;
|
||||||
|
printf("Write data success, total time: %ld.%03ldS.\n", time_cast / TICK_PER_SECOND,
|
||||||
|
time_cast % TICK_PER_SECOND / ((TICK_PER_SECOND * 1 + 999) / 1000));
|
||||||
|
|
||||||
|
/* read data */
|
||||||
|
printf("start Reading and verifying data, waiting....\n");
|
||||||
|
for (i = 0; i < SRAM_SIZE / data_width; i++)
|
||||||
|
{
|
||||||
|
#if SRAM_DATA_WIDTH == 8
|
||||||
|
data = *(volatile uint8_t *)(SRAM_BANK_ADDR + i * data_width);
|
||||||
|
if (data != 0x55)
|
||||||
|
{
|
||||||
|
printf("SRAM test failed!");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
#elif SRAM_DATA_WIDTH == 16
|
||||||
|
data = *(volatile uint16_t *)(SRAM_BANK_ADDR + i * data_width);
|
||||||
|
if (data != 0x5555)
|
||||||
|
{
|
||||||
|
printf("SRAM test failed! data = 0x%x\n",data);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
data = *(volatile uint32_t *)(SRAM_BANK_ADDR + i * data_width);
|
||||||
|
if (data != 0x55555555)
|
||||||
|
{
|
||||||
|
printf("SRAM test failed!");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
if (i >= SRAM_SIZE / data_width)
|
||||||
|
{
|
||||||
|
printf("SRAM test success!\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef ADD_XIZI_FETURES
|
||||||
|
SHELL_EXPORT_CMD(SHELL_CMD_PERMISSION(0)|SHELL_CMD_TYPE(SHELL_TYPE_CMD_FUNC)|SHELL_CMD_PARAM_NUM(0),
|
||||||
|
sram_test, sram_test, sram_test);
|
||||||
|
#endif
|
||||||
|
|
|
@ -3,5 +3,11 @@ menu "connection app"
|
||||||
menuconfig APPLICATION_CONNECTION
|
menuconfig APPLICATION_CONNECTION
|
||||||
bool "Using connection apps"
|
bool "Using connection apps"
|
||||||
default n
|
default n
|
||||||
|
|
||||||
|
if APPLICATION_CONNECTION
|
||||||
|
menuconfig SOCKET_DEMO
|
||||||
|
bool "Config test socket demo"
|
||||||
|
default n
|
||||||
|
endif
|
||||||
|
|
||||||
endmenu
|
endmenu
|
||||||
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
############################################################################
|
||||||
|
# APP_Framework/Application/connection_app/Make.defs
|
||||||
|
############################################################################
|
||||||
|
ifneq ($(CONFIG_APPLICATION_CONNECTION),)
|
||||||
|
CONFIGURED_APPS += $(APPDIR)/../../../APP_Framework/Applications/connection_app/socket_demo
|
||||||
|
endif
|
|
@ -1,7 +1,20 @@
|
||||||
SRC_DIR :=
|
|
||||||
|
|
||||||
ifeq ($(CONFIG_RESOURCES_LWIP),y)
|
ifeq ($(CONFIG_SOCKET_DEMO),y)
|
||||||
SRC_DIR += socket_demo
|
|
||||||
|
include $(KERNEL_ROOT)/.config
|
||||||
|
|
||||||
|
ifeq ($(CONFIG_ADD_NUTTX_FETURES),y)
|
||||||
|
include $(APPDIR)/Make.defs
|
||||||
|
include $(APPDIR)/Application.mk
|
||||||
endif
|
endif
|
||||||
|
|
||||||
include $(KERNEL_ROOT)/compiler.mk
|
ifeq ($(CONFIG_ADD_XIZI_FETURES),y)
|
||||||
|
|
||||||
|
ifeq ($(CONFIG_RESOURCES_LWIP),y)
|
||||||
|
SRC_DIR += socket_demo
|
||||||
|
endif
|
||||||
|
|
||||||
|
include $(KERNEL_ROOT)/compiler.mk
|
||||||
|
endif
|
||||||
|
|
||||||
|
endif
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
############################################################################
|
||||||
|
# APP_Framework/Application/connection_app/socket_demo/Make.defs
|
||||||
|
############################################################################
|
||||||
|
ifneq ($(CONFIG_SOCKET_DEMO),)
|
||||||
|
CONFIGURED_APPS += $(APPDIR)/../../../APP_Framework/Applications/connection_app/socket_demo/*/Make.defs
|
||||||
|
include $(wildcard $(APPDIR)/../../../APP_Framework/Applications/connection_app/socket_demo/*/Make.defs)
|
||||||
|
endif
|
|
@ -1,3 +1,14 @@
|
||||||
SRC_FILES := lwip_tcp_socket_demo.c lwip_udp_socket_demo.c
|
|
||||||
|
|
||||||
|
|
||||||
|
ifeq ($(CONFIG_ADD_XIZI_FETURES),y)
|
||||||
|
SRC_FILES := lwip_tcp_socket_demo.c lwip_udp_socket_demo.c
|
||||||
include $(KERNEL_ROOT)/compiler.mk
|
include $(KERNEL_ROOT)/compiler.mk
|
||||||
|
endif
|
||||||
|
|
||||||
|
include $(KERNEL_ROOT)/.config
|
||||||
|
ifeq ($(CONFIG_ADD_NUTTX_FETURES),y)
|
||||||
|
include $(APPDIR)/Make.defs
|
||||||
|
CSRCS += lwip_tcp_socket_demo.c lwip_udp_socket_demo.c
|
||||||
|
include $(APPDIR)/Application.mk
|
||||||
|
endif
|
||||||
|
|
||||||
|
|
|
@ -19,14 +19,41 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <transform.h>
|
#include <transform.h>
|
||||||
|
|
||||||
|
#ifdef ADD_XIZI_FETURES
|
||||||
#include "sys_arch.h"
|
#include "sys_arch.h"
|
||||||
#include <lwip/sockets.h>
|
#include <lwip/sockets.h>
|
||||||
#include "lwip/sys.h"
|
#include "lwip/sys.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef ADD_NUTTX_FETURES
|
||||||
|
#include <sys/socket.h>
|
||||||
|
#include <netinet/in.h>
|
||||||
|
#include "stdio.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
#define TCP_DEMO_BUF_SIZE 65535
|
#define TCP_DEMO_BUF_SIZE 65535
|
||||||
|
|
||||||
char tcp_socket_ip[] = {192, 168, 250, 252};
|
char tcp_socket_ip[] = {192, 168, 250, 252};
|
||||||
u16_t tcp_socket_port = LWIP_TARGET_PORT;
|
|
||||||
|
#ifdef ADD_NUTTX_FETURES
|
||||||
|
#define lw_print printf
|
||||||
|
#define lw_notice printf
|
||||||
|
#define lw_error printf
|
||||||
|
|
||||||
|
#define LWIP_DEMO_TIMES 3
|
||||||
|
|
||||||
|
/** Create u32_t value from bytes */
|
||||||
|
#define LWIP_MAKEU32(a,b,c,d) (((uint32_t)((a) & 0xff) << 24) | \
|
||||||
|
((uint32_t)((b) & 0xff) << 16) | \
|
||||||
|
((uint32_t)((c) & 0xff) << 8) | \
|
||||||
|
(uint32_t)((d) & 0xff))
|
||||||
|
|
||||||
|
#define PP_HTONL(x) ((uint32_t)(x))
|
||||||
|
#define LWIP_TARGET_PORT 6000
|
||||||
|
#endif
|
||||||
|
|
||||||
|
uint16_t tcp_socket_port = LWIP_TARGET_PORT;
|
||||||
|
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
|
|
||||||
|
@ -63,7 +90,7 @@ static void TCPSocketRecvTask(void *arg)
|
||||||
if (bind(fd, (struct sockaddr *)&tcp_addr, sizeof(struct sockaddr)) == -1)
|
if (bind(fd, (struct sockaddr *)&tcp_addr, sizeof(struct sockaddr)) == -1)
|
||||||
{
|
{
|
||||||
lw_error("Unable to bind\n");
|
lw_error("Unable to bind\n");
|
||||||
closesocket(fd);
|
close(fd);
|
||||||
free(recv_buf);
|
free(recv_buf);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -75,7 +102,7 @@ static void TCPSocketRecvTask(void *arg)
|
||||||
if (listen(fd, 5) != 0 )
|
if (listen(fd, 5) != 0 )
|
||||||
{
|
{
|
||||||
lw_error("Unable to listen\n");
|
lw_error("Unable to listen\n");
|
||||||
closesocket(fd);
|
close(fd);
|
||||||
free(recv_buf);
|
free(recv_buf);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -97,10 +124,11 @@ static void TCPSocketRecvTask(void *arg)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
closesocket(fd);
|
close(fd);
|
||||||
free(recv_buf);
|
free(recv_buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef ADD_XIZI_FETURES
|
||||||
void TCPSocketRecvTest(int argc, char *argv[])
|
void TCPSocketRecvTest(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
int result = 0;
|
int result = 0;
|
||||||
|
@ -120,6 +148,8 @@ void TCPSocketRecvTest(int argc, char *argv[])
|
||||||
|
|
||||||
SHELL_EXPORT_CMD(SHELL_CMD_PERMISSION(0) | SHELL_CMD_TYPE(SHELL_TYPE_CMD_MAIN) | SHELL_CMD_PARAM_NUM(3),
|
SHELL_EXPORT_CMD(SHELL_CMD_PERMISSION(0) | SHELL_CMD_TYPE(SHELL_TYPE_CMD_MAIN) | SHELL_CMD_PARAM_NUM(3),
|
||||||
TCPSocketRecv, TCPSocketRecvTest, TCP recv echo);
|
TCPSocketRecv, TCPSocketRecvTest, TCP recv echo);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
static void TCPSocketSendTask(void *arg)
|
static void TCPSocketSendTask(void *arg)
|
||||||
{
|
{
|
||||||
|
@ -146,7 +176,7 @@ static void TCPSocketSendTask(void *arg)
|
||||||
if (connect(fd, (struct sockaddr *)&tcp_sock, sizeof(struct sockaddr)))
|
if (connect(fd, (struct sockaddr *)&tcp_sock, sizeof(struct sockaddr)))
|
||||||
{
|
{
|
||||||
lw_print("Unable to connect\n");
|
lw_print("Unable to connect\n");
|
||||||
closesocket(fd);
|
close(fd);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -158,14 +188,15 @@ static void TCPSocketSendTask(void *arg)
|
||||||
snprintf(send_msg, sizeof(send_msg), "TCP test package times %d\r\n", cnt);
|
snprintf(send_msg, sizeof(send_msg), "TCP test package times %d\r\n", cnt);
|
||||||
sendto(fd, send_msg, strlen(send_msg), 0, (struct sockaddr*)&tcp_sock, sizeof(struct sockaddr));
|
sendto(fd, send_msg, strlen(send_msg), 0, (struct sockaddr*)&tcp_sock, sizeof(struct sockaddr));
|
||||||
lw_notice("Send tcp msg: %s ", send_msg);
|
lw_notice("Send tcp msg: %s ", send_msg);
|
||||||
MdelayKTask(1000);
|
PrivTaskDelay(1000);
|
||||||
}
|
}
|
||||||
|
|
||||||
closesocket(fd);
|
close(fd);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef ADD_XIZI_FETURES
|
||||||
void TCPSocketSendTest(int argc, char *argv[])
|
void TCPSocketSendTest(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
if(argc >= 2)
|
if(argc >= 2)
|
||||||
|
@ -183,4 +214,18 @@ void TCPSocketSendTest(int argc, char *argv[])
|
||||||
|
|
||||||
SHELL_EXPORT_CMD(SHELL_CMD_PERMISSION(0) | SHELL_CMD_TYPE(SHELL_TYPE_CMD_MAIN) | SHELL_CMD_PARAM_NUM(0),
|
SHELL_EXPORT_CMD(SHELL_CMD_PERMISSION(0) | SHELL_CMD_TYPE(SHELL_TYPE_CMD_MAIN) | SHELL_CMD_PARAM_NUM(0),
|
||||||
TCPSocketSend, TCPSocketSendTest, TCP send demo);
|
TCPSocketSend, TCPSocketSendTest, TCP send demo);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef ADD_NUTTX_FETURES
|
||||||
|
void tcp_recv_demo(void)
|
||||||
|
{
|
||||||
|
TCPSocketRecvTask(NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
void tcp_send_demo(void)
|
||||||
|
{
|
||||||
|
TCPSocketSendTask(NULL);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -18,13 +18,39 @@
|
||||||
* @date 2022-03-21
|
* @date 2022-03-21
|
||||||
*/
|
*/
|
||||||
#include <transform.h>
|
#include <transform.h>
|
||||||
|
|
||||||
|
#ifdef ADD_XIZI_FETURES
|
||||||
#include "sys_arch.h"
|
#include "sys_arch.h"
|
||||||
#include "lwip/sockets.h"
|
#include "lwip/sockets.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef ADD_NUTTX_FETURES
|
||||||
|
#include <sys/socket.h>
|
||||||
|
#include <netinet/in.h>
|
||||||
|
#include <arpa/inet.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
#define LWIP_DEMO_TIMES 3
|
||||||
|
#define LWIP_LOCAL_PORT 6000
|
||||||
|
|
||||||
|
#define lw_error printf
|
||||||
|
#define lw_notice printf
|
||||||
|
#define lw_print printf
|
||||||
|
|
||||||
|
/** Create u32_t value from bytes */
|
||||||
|
#define LWIP_MAKEU32(a,b,c,d) (((uint32_t)((a) & 0xff) << 24) | \
|
||||||
|
((uint32_t)((b) & 0xff) << 16) | \
|
||||||
|
((uint32_t)((c) & 0xff) << 8) | \
|
||||||
|
(uint32_t)((d) & 0xff))
|
||||||
|
|
||||||
|
#define PP_HTONL(x) ((uint32_t)(x))
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
#define UDP_BUF_SIZE 65536
|
#define UDP_BUF_SIZE 65536
|
||||||
|
|
||||||
char udp_socket_ip[] = {192, 168, 250, 252};
|
char udp_socket_ip[] = {192, 168, 250, 252};
|
||||||
u16_t udp_socket_port = LWIP_LOCAL_PORT;
|
uint16_t udp_socket_port = LWIP_LOCAL_PORT;
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
@ -61,7 +87,7 @@ static void UdpSocketRecvTask(void *arg)
|
||||||
if(bind(fd, (struct sockaddr *)&udp_addr, sizeof(struct sockaddr)) == -1)
|
if(bind(fd, (struct sockaddr *)&udp_addr, sizeof(struct sockaddr)) == -1)
|
||||||
{
|
{
|
||||||
lw_error("Unable to bind\n");
|
lw_error("Unable to bind\n");
|
||||||
closesocket(fd);
|
close(fd);
|
||||||
free(recv_buf);
|
free(recv_buf);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -81,11 +107,12 @@ static void UdpSocketRecvTask(void *arg)
|
||||||
sendto(fd, recv_buf, recv_len, 0, (struct sockaddr*)&server_addr, addr_len);
|
sendto(fd, recv_buf, recv_len, 0, (struct sockaddr*)&server_addr, addr_len);
|
||||||
}
|
}
|
||||||
|
|
||||||
closesocket(fd);
|
close(fd);
|
||||||
free(recv_buf);
|
free(recv_buf);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef ADD_XIZI_FETURES
|
||||||
void UdpSocketRecvTest(int argc, char *argv[])
|
void UdpSocketRecvTest(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
if(argc >= 2)
|
if(argc >= 2)
|
||||||
|
@ -103,6 +130,7 @@ void UdpSocketRecvTest(int argc, char *argv[])
|
||||||
|
|
||||||
SHELL_EXPORT_CMD(SHELL_CMD_PERMISSION(0) | SHELL_CMD_TYPE(SHELL_TYPE_CMD_MAIN) | SHELL_CMD_PARAM_NUM(3),
|
SHELL_EXPORT_CMD(SHELL_CMD_PERMISSION(0) | SHELL_CMD_TYPE(SHELL_TYPE_CMD_MAIN) | SHELL_CMD_PARAM_NUM(3),
|
||||||
UDPSocketRecv, UdpSocketRecvTest, UDP Receive DEMO);
|
UDPSocketRecv, UdpSocketRecvTest, UDP Receive DEMO);
|
||||||
|
#endif
|
||||||
|
|
||||||
static void UdpSocketSendTask(void *arg)
|
static void UdpSocketSendTask(void *arg)
|
||||||
{
|
{
|
||||||
|
@ -128,7 +156,7 @@ static void UdpSocketSendTask(void *arg)
|
||||||
if(connect(fd, (struct sockaddr *)&udp_sock, sizeof(struct sockaddr)))
|
if(connect(fd, (struct sockaddr *)&udp_sock, sizeof(struct sockaddr)))
|
||||||
{
|
{
|
||||||
lw_error("Unable to connect\n");
|
lw_error("Unable to connect\n");
|
||||||
closesocket(fd);
|
close(fd);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -140,13 +168,14 @@ static void UdpSocketSendTask(void *arg)
|
||||||
snprintf(send_str, sizeof(send_str), "UDP test package times %d\r\n", cnt);
|
snprintf(send_str, sizeof(send_str), "UDP test package times %d\r\n", cnt);
|
||||||
sendto(fd, send_str, strlen(send_str), 0, (struct sockaddr*)&udp_sock, sizeof(struct sockaddr));
|
sendto(fd, send_str, strlen(send_str), 0, (struct sockaddr*)&udp_sock, sizeof(struct sockaddr));
|
||||||
lw_notice("Send UDP msg: %s ", send_str);
|
lw_notice("Send UDP msg: %s ", send_str);
|
||||||
MdelayKTask(1000);
|
PrivTaskDelay(1000);
|
||||||
}
|
}
|
||||||
|
|
||||||
closesocket(fd);
|
close(fd);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef ADD_XIZI_FETURES
|
||||||
void UdpSocketSendTest(int argc, char *argv[])
|
void UdpSocketSendTest(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
if(argc >= 2)
|
if(argc >= 2)
|
||||||
|
@ -164,4 +193,16 @@ void UdpSocketSendTest(int argc, char *argv[])
|
||||||
|
|
||||||
SHELL_EXPORT_CMD(SHELL_CMD_PERMISSION(0) | SHELL_CMD_TYPE(SHELL_TYPE_CMD_MAIN) | SHELL_CMD_PARAM_NUM(3),
|
SHELL_EXPORT_CMD(SHELL_CMD_PERMISSION(0) | SHELL_CMD_TYPE(SHELL_TYPE_CMD_MAIN) | SHELL_CMD_PARAM_NUM(3),
|
||||||
UDPSocketSend, UdpSocketSendTest, UDP send echo);
|
UDPSocketSend, UdpSocketSendTest, UDP send echo);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef ADD_NUTTX_FETURES
|
||||||
|
void udp_recv_demo(void)
|
||||||
|
{
|
||||||
|
UdpSocketRecvTask(NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
void udp_send_demo(void)
|
||||||
|
{
|
||||||
|
UdpSocketSendTask(NULL);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
|
@ -0,0 +1,70 @@
|
||||||
|
#
|
||||||
|
# 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_ADD_NUTTX_FETURES=y
|
||||||
|
CONFIG_ARCH="arm"
|
||||||
|
CONFIG_ARCH_BOARD="xidatong-arm32"
|
||||||
|
CONFIG_ARCH_BOARD_XIDATONG_ARM32=y
|
||||||
|
CONFIG_ARCH_CHIP="imxrt"
|
||||||
|
CONFIG_ARCH_CHIP_IMXRT=y
|
||||||
|
CONFIG_ARCH_CHIP_MIMXRT1052CVL5B=y
|
||||||
|
CONFIG_ARCH_INTERRUPTSTACK=10240
|
||||||
|
CONFIG_ARCH_STACKDUMP=y
|
||||||
|
CONFIG_ARMV7M_DCACHE=y
|
||||||
|
CONFIG_ARMV7M_DCACHE_WRITETHROUGH=y
|
||||||
|
CONFIG_ARMV7M_ICACHE=y
|
||||||
|
CONFIG_ARMV7M_USEBASEPRI=y
|
||||||
|
CONFIG_BOARD_LOOPSPERMSEC=104926
|
||||||
|
CONFIG_BUILTIN=y
|
||||||
|
CONFIG_CLOCK_MONOTONIC=y
|
||||||
|
CONFIG_EXAMPLES_HELLO=y
|
||||||
|
CONFIG_IMXRT_GPIO_IRQ=y
|
||||||
|
CONFIG_IMXRT_GPIO3_0_15_IRQ=y
|
||||||
|
CONFIG_IDLETHREAD_STACKSIZE=2048
|
||||||
|
CONFIG_IMXRT_LPUART1=y
|
||||||
|
CONFIG_INTELHEX_BINARY=y
|
||||||
|
CONFIG_LPUART1_SERIAL_CONSOLE=y
|
||||||
|
CONFIG_NSH_ARCHINIT=y
|
||||||
|
CONFIG_NSH_BUILTIN_APPS=y
|
||||||
|
CONFIG_NSH_DISABLE_IFUPDOWN=y
|
||||||
|
CONFIG_NSH_FILEIOSIZE=512
|
||||||
|
CONFIG_NSH_LINELEN=64
|
||||||
|
CONFIG_NSH_READLINE=y
|
||||||
|
CONFIG_RAM_SIZE=524288
|
||||||
|
CONFIG_RAM_START=0x20200000
|
||||||
|
CONFIG_RAW_BINARY=y
|
||||||
|
CONFIG_SCHED_HPWORK=y
|
||||||
|
CONFIG_SCHED_WAITPID=y
|
||||||
|
CONFIG_START_DAY=14
|
||||||
|
CONFIG_START_MONTH=3
|
||||||
|
CONFIG_SYSTEM_NSH=y
|
||||||
|
CONFIG_DEV_GPIO=y
|
||||||
|
CONFIG_READLINE_CMD_HISTORY=y
|
||||||
|
CONFIG_READLINE_CMD_HISTORY_LEN=100
|
||||||
|
CONFIG_READLINE_CMD_HISTORY_LINELEN=120
|
||||||
|
CONFIG_READLINE_TABCOMPLETION=y
|
||||||
|
CONFIG_FS_ROMFS=y
|
||||||
|
CONFIG_NSH_ROMFSETC=y
|
||||||
|
CONFIG_NSH_ARCHROMFS=y
|
||||||
|
CONFIG_BOARDCTL_RESET=y
|
||||||
|
CONFIG_INIT_ENTRYPOINT="nsh_main"
|
||||||
|
CONFIG_IMXRT_SEMC=y
|
||||||
|
CONFIG_ARM_MPU=y
|
||||||
|
CONFIG_ARM_MPU_NREGIONS=16
|
||||||
|
CONFIG_IMXRT_SEMC_SDRAM=y
|
||||||
|
CONFIG_IMXRT_SDRAM_START=0x80000000
|
||||||
|
CONFIG_IMXRT_SDRAM_SIZE=31457280
|
||||||
|
CONFIG_IMXRT_SDRAM_HEAP=y
|
||||||
|
CONFIG_IMXRT_SDRAM_HEAPOFFSET=0x0
|
||||||
|
CONFIG_ARCH_USE_MPU=y
|
||||||
|
CONFIG_MM_REGIONS=2
|
||||||
|
CONFIG_TESTING_MM=y
|
||||||
|
CONFIG_TESTING_MM_PROGNAME="mm"
|
||||||
|
CONFIG_TESTING_MM_PRIORITY=100
|
||||||
|
CONFIG_TESTING_MM_STACKSIZE=2048
|
||||||
|
CONFIG_USER_TEST=y
|
||||||
|
CONFIG_USER_TEST_SEMC=y
|
|
@ -1458,6 +1458,10 @@ int nsh_foreach_var(FAR struct nsh_vtbl_s *vtbl, nsh_foreach_var_t cb,
|
||||||
int cmd_Lcd(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv);
|
int cmd_Lcd(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(CONFIG_USER_TEST_SEMC) && !defined(CONFIG_NSH_DISABLE_USER_TEST_SEMC)
|
||||||
|
int cmd_Extsram(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv);
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined(CONFIG_APPLICATION_SENSOR_HCHO_TB600B_WQ_HCHO1OS) && !defined(CONFIG_NSH_DISABLE_HCHO_TB600B_WQ_HCHO1OS)
|
#if defined(CONFIG_APPLICATION_SENSOR_HCHO_TB600B_WQ_HCHO1OS) && !defined(CONFIG_NSH_DISABLE_HCHO_TB600B_WQ_HCHO1OS)
|
||||||
int cmd_Hcho1os(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv);
|
int cmd_Hcho1os(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -64,6 +64,19 @@ int cmd_Lcd(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Name: cmd_Extsram
|
||||||
|
****************************************************************************/
|
||||||
|
#if defined(CONFIG_USER_TEST_SEMC) && !defined(CONFIG_NSH_DISABLE_USER_TEST_SEMC)
|
||||||
|
extern int extsram_test(void);
|
||||||
|
int cmd_Extsram(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv)
|
||||||
|
{
|
||||||
|
nsh_output(vtbl, "Hello, extra sdram!\n");
|
||||||
|
extsram_test();
|
||||||
|
return OK;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Name: cmd_Hcho1os
|
* Name: cmd_Hcho1os
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
|
@ -604,6 +604,10 @@ static const struct cmdmap_s g_cmdmap[] =
|
||||||
{ "lcd", cmd_Lcd, 1, 1, "[LCD demo cmd.]" },
|
{ "lcd", cmd_Lcd, 1, 1, "[LCD demo cmd.]" },
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(CONFIG_USER_TEST_SEMC) && !defined(CONFIG_NSH_DISABLE_USER_TEST_SEMC)
|
||||||
|
{ "sram", cmd_Extsram, 1, 1, "[Extra sdram demo cmd.]" },
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined(CONFIG_APPLICATION_SENSOR_HCHO_TB600B_WQ_HCHO1OS) && !defined(CONFIG_NSH_DISABLE_HCHO_TB600B_WQ_HCHO1OS)
|
#if defined(CONFIG_APPLICATION_SENSOR_HCHO_TB600B_WQ_HCHO1OS) && !defined(CONFIG_NSH_DISABLE_HCHO_TB600B_WQ_HCHO1OS)
|
||||||
{ "hcho1os", cmd_Hcho1os, 1, 1, "[get the concentration of formaldehyde with sensor tb600b_wq_hcho1os.]" },
|
{ "hcho1os", cmd_Hcho1os, 1, 1, "[get the concentration of formaldehyde with sensor tb600b_wq_hcho1os.]" },
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -0,0 +1,227 @@
|
||||||
|
/****************************************************************************
|
||||||
|
* arch/arm/src/imxrt/imxrt_mpuinit.c
|
||||||
|
*
|
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
* contributor license agreements. See the NOTICE file distributed with
|
||||||
|
* this work for additional information regarding copyright ownership. The
|
||||||
|
* ASF licenses this file to you under the Apache License, Version 2.0 (the
|
||||||
|
* "License"); you may not use this file except in compliance with the
|
||||||
|
* License. You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||||
|
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||||
|
* License for the specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Included Files
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
#include <nuttx/config.h>
|
||||||
|
|
||||||
|
#include <assert.h>
|
||||||
|
|
||||||
|
#include <nuttx/userspace.h>
|
||||||
|
|
||||||
|
#include "mpu.h"
|
||||||
|
#include "barriers.h"
|
||||||
|
|
||||||
|
#include "hardware/imxrt_memorymap.h"
|
||||||
|
|
||||||
|
#include "imxrt_mpuinit.h"
|
||||||
|
|
||||||
|
#ifdef CONFIG_ARM_MPU
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Pre-processor Definitions
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
#ifndef MAX
|
||||||
|
# define MAX(a,b) a > b ? a : b
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef MIN
|
||||||
|
# define MIN(a,b) a < b ? a : b
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef CONFIG_ARMV7M_DCACHE
|
||||||
|
/* With Dcache off:
|
||||||
|
* Cacheable (MPU_RASR_C) and Bufferable (MPU_RASR_B) needs to be off
|
||||||
|
*/
|
||||||
|
# undef MPU_RASR_B
|
||||||
|
# define MPU_RASR_B 0
|
||||||
|
# define RASR_B_VALUE 0
|
||||||
|
# define RASR_C_VALUE 0
|
||||||
|
#else
|
||||||
|
# ifndef CONFIG_ARMV7M_DCACHE_WRITETHROUGH
|
||||||
|
/* With Dcache on:
|
||||||
|
* Cacheable (MPU_RASR_C) and Bufferable (MPU_RASR_B) needs to be on
|
||||||
|
*/
|
||||||
|
# define RASR_B_VALUE MPU_RASR_B
|
||||||
|
# define RASR_C_VALUE MPU_RASR_C
|
||||||
|
|
||||||
|
# else
|
||||||
|
/* With Dcache in WRITETHROUGH Bufferable (MPU_RASR_B)
|
||||||
|
* needs to be off, except for FLASH for alignment leniency
|
||||||
|
*/
|
||||||
|
# define RASR_B_VALUE 0
|
||||||
|
# define RASR_C_VALUE MPU_RASR_C
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Public Functions
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Name: imxrt_mpu_initialize
|
||||||
|
*
|
||||||
|
* Description:
|
||||||
|
* Configure the MPU to permit user-space access to only restricted i.MXRT
|
||||||
|
* resources.
|
||||||
|
*
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
void imxrt_mpu_initialize(void)
|
||||||
|
{
|
||||||
|
#ifdef CONFIG_BUILD_PROTECTED
|
||||||
|
uintptr_t datastart;
|
||||||
|
uintptr_t dataend;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Show MPU information */
|
||||||
|
|
||||||
|
mpu_showtype();
|
||||||
|
|
||||||
|
#ifdef CONFIG_ARMV7M_DCACHE
|
||||||
|
/* Memory barrier */
|
||||||
|
|
||||||
|
ARM_DMB();
|
||||||
|
|
||||||
|
#ifdef CONFIG_IMXFT_QSPI
|
||||||
|
/* Make QSPI memory region strongly ordered */
|
||||||
|
|
||||||
|
mpu_priv_stronglyordered(IMXRT_QSPIMEM_BASE, IMXRT_QSPIMEM_SIZE);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_BUILD_PROTECTED
|
||||||
|
/* Configure user flash and SRAM space */
|
||||||
|
|
||||||
|
DEBUGASSERT(USERSPACE->us_textend >= USERSPACE->us_textstart);
|
||||||
|
|
||||||
|
mpu_user_flash(USERSPACE->us_textstart,
|
||||||
|
USERSPACE->us_textend - USERSPACE->us_textstart);
|
||||||
|
|
||||||
|
datastart = MIN(USERSPACE->us_datastart, USERSPACE->us_bssstart);
|
||||||
|
dataend = MAX(USERSPACE->us_dataend, USERSPACE->us_bssend);
|
||||||
|
|
||||||
|
DEBUGASSERT(dataend >= datastart);
|
||||||
|
|
||||||
|
mpu_user_intsram(datastart, dataend - datastart);
|
||||||
|
#else
|
||||||
|
mpu_configure_region(0xc0000000, 512 * 1024 * 1024,
|
||||||
|
MPU_RASR_TEX_DEV | /* Device
|
||||||
|
* Not Cacheable
|
||||||
|
* Not Bufferable
|
||||||
|
* Not Shareable */
|
||||||
|
MPU_RASR_AP_RWRW); /* P:RW U:RW
|
||||||
|
* Instruction access */
|
||||||
|
|
||||||
|
mpu_configure_region(IMXRT_EXTMEM_BASE, 1024 * 1024 * 1024,
|
||||||
|
MPU_RASR_TEX_DEV | /* Device
|
||||||
|
* Not Cacheable
|
||||||
|
* Not Bufferable
|
||||||
|
* Not Shareable */
|
||||||
|
MPU_RASR_AP_RWRW); /* P:RW U:RW
|
||||||
|
* Instruction access */
|
||||||
|
|
||||||
|
mpu_configure_region(IMXRT_FLEXCIPHER_BASE, 8 * 1024 * 1024,
|
||||||
|
MPU_RASR_TEX_NOR | /* Normal */
|
||||||
|
RASR_C_VALUE | /* Cacheable */
|
||||||
|
MPU_RASR_B | /* Bufferable
|
||||||
|
* Not Shareable */
|
||||||
|
MPU_RASR_AP_RORO); /* P:RO U:RO
|
||||||
|
* Instruction access */
|
||||||
|
|
||||||
|
mpu_configure_region(IMXRT_ITCM_BASE, 128 * 1024,
|
||||||
|
MPU_RASR_TEX_NOR | /* Normal */
|
||||||
|
RASR_C_VALUE | /* Cacheable */
|
||||||
|
RASR_B_VALUE | /* Bufferable
|
||||||
|
* Not Shareable */
|
||||||
|
MPU_RASR_AP_RWRW); /* P:RW U:RW
|
||||||
|
* Instruction access */
|
||||||
|
|
||||||
|
mpu_configure_region(IMXRT_DTCM_BASE, 128 * 1024,
|
||||||
|
MPU_RASR_TEX_NOR | /* Normal */
|
||||||
|
RASR_C_VALUE | /* Cacheable */
|
||||||
|
RASR_B_VALUE | /* Bufferable
|
||||||
|
* Not Shareable */
|
||||||
|
MPU_RASR_AP_RWRW); /* P:RW U:RW
|
||||||
|
* Instruction access */
|
||||||
|
#if 0
|
||||||
|
mpu_configure_region(IMXRT_OCRAM2_BASE, 512 * 1024,
|
||||||
|
MPU_RASR_TEX_NOR | /* Normal */
|
||||||
|
RASR_C_VALUE | /* Cacheable */
|
||||||
|
RASR_B_VALUE | /* Bufferable
|
||||||
|
* Not Shareable */
|
||||||
|
MPU_RASR_AP_RWRW); /* P:RW U:RW
|
||||||
|
* Instruction access */
|
||||||
|
#endif
|
||||||
|
mpu_configure_region(IMXRT_OCRAM_BASE, 512 * 1024,
|
||||||
|
MPU_RASR_TEX_NOR | /* Normal */
|
||||||
|
RASR_C_VALUE | /* Cacheable */
|
||||||
|
RASR_B_VALUE | /* Bufferable
|
||||||
|
* Not Shareable */
|
||||||
|
MPU_RASR_AP_RWRW); /* P:RW U:RW
|
||||||
|
* Instruction access */
|
||||||
|
|
||||||
|
mpu_configure_region(IMXRT_EXTMEM_BASE, 32 * 1024 * 1024,
|
||||||
|
MPU_RASR_TEX_SO | /* Ordered */
|
||||||
|
RASR_C_VALUE | /* Cacheable */
|
||||||
|
RASR_B_VALUE | /* Bufferable
|
||||||
|
* Not Shareable */
|
||||||
|
MPU_RASR_AP_RWRW); /* P:RW U:RW
|
||||||
|
* Instruction access */
|
||||||
|
|
||||||
|
mpu_configure_region(0x81e00000, 2 * 1024 * 1024,
|
||||||
|
MPU_RASR_TEX_NOR | /* Normal
|
||||||
|
* Not Cacheable
|
||||||
|
* Not Bufferable
|
||||||
|
* Not Shareable */
|
||||||
|
MPU_RASR_AP_RWRW); /* P:RW U:RW
|
||||||
|
* Instruction access */
|
||||||
|
|
||||||
|
mpu_control(true, true, true);
|
||||||
|
return;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Then enable the MPU */
|
||||||
|
|
||||||
|
mpu_control(true, false, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Name: imxrt_mpu_uheap
|
||||||
|
*
|
||||||
|
* Description:
|
||||||
|
* Map the user-heap region.
|
||||||
|
*
|
||||||
|
* This logic may need an extension to handle external SDRAM).
|
||||||
|
*
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
#ifdef CONFIG_BUILD_PROTECTED
|
||||||
|
void imxrt_mpu_uheap(uintptr_t start, size_t size)
|
||||||
|
{
|
||||||
|
mpu_user_intsram(start, size);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* CONFIG_ARM_MPU */
|
|
@ -13,7 +13,7 @@
|
||||||
/**
|
/**
|
||||||
* @file test_threadsched.c
|
* @file test_threadsched.c
|
||||||
* @brief support to test thread sched function
|
* @brief support to test thread sched function
|
||||||
* @version 1.0
|
* @version 1.0
|
||||||
* @author AIIT XUOS Lab
|
* @author AIIT XUOS Lab
|
||||||
* @date 2021-04-24
|
* @date 2021-04-24
|
||||||
*/
|
*/
|
||||||
|
@ -25,11 +25,14 @@
|
||||||
extern long ShowTask(void);
|
extern long ShowTask(void);
|
||||||
extern unsigned int msleep(uint64_t msec);
|
extern unsigned int msleep(uint64_t msec);
|
||||||
|
|
||||||
|
#define BATCH_TEST_TASK_SIZE 100
|
||||||
|
|
||||||
static int32 tid1 = NONE;
|
static int32 tid1 = NONE;
|
||||||
static int32 tid2 = NONE;
|
static int32 tid2 = NONE;
|
||||||
static int32 tid3 = NONE;
|
static int32 tid3 = NONE;
|
||||||
static int32 tid4 = NONE;
|
static int32 tid4 = NONE;
|
||||||
static int32 tid5 = NONE;
|
static int32 tid5 = NONE;
|
||||||
|
static int32 tids[BATCH_TEST_TASK_SIZE];
|
||||||
|
|
||||||
#define DYNAMIC_TASK_STACK_SIZE 3072
|
#define DYNAMIC_TASK_STACK_SIZE 3072
|
||||||
#define PRIORITY 15
|
#define PRIORITY 15
|
||||||
|
@ -56,12 +59,12 @@ static void Task1Entry(void *parameter)
|
||||||
ShowTask();
|
ShowTask();
|
||||||
#endif
|
#endif
|
||||||
KPrintf("\n");
|
KPrintf("\n");
|
||||||
|
|
||||||
DOUBLE_LINKLIST_FOR_EACH(node, head) {
|
DOUBLE_LINKLIST_FOR_EACH(node, head) {
|
||||||
tmp = SYS_DOUBLE_LINKLIST_ENTRY(node, struct TaskDyncSchedMember, sched_link);
|
tmp = SYS_DOUBLE_LINKLIST_ENTRY(node, struct TaskDyncSchedMember, sched_link);
|
||||||
obj =CONTAINER_OF(tmp,struct TaskDescriptor, task_dync_sched_member);
|
obj =CONTAINER_OF(tmp,struct TaskDescriptor, task_dync_sched_member);
|
||||||
KPrintf("task ready table node name = %s node remaining_tick= %d node advance_cnt =%d\n",obj->task_base_info.name,
|
KPrintf("task ready table node name = %s node remaining_tick= %d node advance_cnt =%d\n",obj->task_base_info.name,
|
||||||
obj->task_dync_sched_member.rest_timeslice, obj->task_dync_sched_member.advance_cnt);
|
obj->task_dync_sched_member.rest_timeslice, obj->task_dync_sched_member.advance_cnt);
|
||||||
}
|
}
|
||||||
#ifdef ARCH_SMP
|
#ifdef ARCH_SMP
|
||||||
#ifdef SCHED_POLICY_FIFO
|
#ifdef SCHED_POLICY_FIFO
|
||||||
|
@ -120,15 +123,8 @@ void DynamicTaskSchedTest(char* parm)
|
||||||
if (0 == strncmp("-b", parm, strlen("-b")) || 0 == strncmp("-bind", parm, strlen("-bind"))){
|
if (0 == strncmp("-b", parm, strlen("-b")) || 0 == strncmp("-bind", parm, strlen("-bind"))){
|
||||||
strncpy(t_parm,"-b", 4);
|
strncpy(t_parm,"-b", 4);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
tid1 = KTaskCreate("d_tid1",
|
|
||||||
Task1Entry,
|
|
||||||
t_parm,
|
|
||||||
DYNAMIC_TASK_STACK_SIZE,
|
|
||||||
16);
|
|
||||||
if (tid1 >= 0)
|
|
||||||
StartupKTask(tid1);
|
|
||||||
|
|
||||||
tid2 = KTaskCreate("d_tid2",
|
tid2 = KTaskCreate("d_tid2",
|
||||||
Task2Entry,
|
Task2Entry,
|
||||||
"d_tid2",
|
"d_tid2",
|
||||||
|
@ -141,7 +137,7 @@ void DynamicTaskSchedTest(char* parm)
|
||||||
#endif
|
#endif
|
||||||
if (tid2 >= 0)
|
if (tid2 >= 0)
|
||||||
StartupKTask(tid2);
|
StartupKTask(tid2);
|
||||||
|
|
||||||
tid3 = KTaskCreate("d_tid3",
|
tid3 = KTaskCreate("d_tid3",
|
||||||
Task3Entry,
|
Task3Entry,
|
||||||
"d_tid3",
|
"d_tid3",
|
||||||
|
@ -154,7 +150,7 @@ void DynamicTaskSchedTest(char* parm)
|
||||||
#endif
|
#endif
|
||||||
if (tid3 >= 0)
|
if (tid3 >= 0)
|
||||||
StartupKTask(tid3);
|
StartupKTask(tid3);
|
||||||
|
|
||||||
tid4 = KTaskCreate("d_tid4",
|
tid4 = KTaskCreate("d_tid4",
|
||||||
Task4Entry,
|
Task4Entry,
|
||||||
"d_tid4",
|
"d_tid4",
|
||||||
|
@ -167,7 +163,7 @@ void DynamicTaskSchedTest(char* parm)
|
||||||
#endif
|
#endif
|
||||||
if (tid4 >= 0)
|
if (tid4 >= 0)
|
||||||
StartupKTask(tid4);
|
StartupKTask(tid4);
|
||||||
|
|
||||||
tid5 = KTaskCreate("d_tid5",
|
tid5 = KTaskCreate("d_tid5",
|
||||||
Task5Entry,
|
Task5Entry,
|
||||||
"d_tid5",
|
"d_tid5",
|
||||||
|
@ -183,8 +179,24 @@ void DynamicTaskSchedTest(char* parm)
|
||||||
StartupKTask(tid5);
|
StartupKTask(tid5);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void BatchTaskSchedTest(char* parm)
|
||||||
|
{
|
||||||
|
memset(tids, 0, sizeof(int32) * BATCH_TEST_TASK_SIZE);
|
||||||
|
char task_name[20] = "batch_tid_";
|
||||||
|
for(int i = 0; i < BATCH_TEST_TASK_SIZE;i++){
|
||||||
|
task_name[9] = (char)(i / 100 + '0');
|
||||||
|
task_name[10] = (char)((i / 10) % 10 + '0');
|
||||||
|
task_name[11] = (char)(i % 10 + '0');
|
||||||
|
task_name[12] = 0;
|
||||||
|
tids[i] = KTaskCreate(task_name, Task2Entry, task_name, 128, 15);
|
||||||
|
if(tids[i] >= 0){
|
||||||
|
StartupKTask(tids[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/********************************************************************/
|
/********************************************************************/
|
||||||
static void UsageHelp(void)
|
static void UsageHelp(void)
|
||||||
{
|
{
|
||||||
KPrintf("test_task_ready_usage.\n");
|
KPrintf("test_task_ready_usage.\n");
|
||||||
}
|
}
|
||||||
|
@ -192,8 +204,7 @@ static void UsageHelp(void)
|
||||||
int TestTaskReadyAndSched(int argc, char * argv[])
|
int TestTaskReadyAndSched(int argc, char * argv[])
|
||||||
{
|
{
|
||||||
DynamicTaskSchedTest(argv[0]);
|
DynamicTaskSchedTest(argv[0]);
|
||||||
|
BatchTaskSchedTest(argv[0]);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue