未验证 提交 6962bd1f 编写于 作者: B Bernard Xiong 提交者: GitHub

Merge pull request #1101 from BernardXiong/master

[Kernel] Use rt_object_get_information to get object chain
...@@ -26,11 +26,6 @@ ...@@ -26,11 +26,6 @@
/*@{*/ /*@{*/
extern int rt_application_init(void); extern int rt_application_init(void);
#ifdef RT_USING_FINSH
extern int finsh_system_init(void);
extern void finsh_set_device(const char* device);
#endif
/******************************************************************************* /*******************************************************************************
* Function Name : assert_failed * Function Name : assert_failed
...@@ -87,8 +82,7 @@ void rtthread_startup(void) ...@@ -87,8 +82,7 @@ void rtthread_startup(void)
rt_thread_idle_init(); rt_thread_idle_init();
/* start scheduler */ /* start scheduler */
rt_system_scheduler_start();
rt_system_scheduler_start();
/* never reach here */ /* never reach here */
return ; return ;
......
...@@ -164,15 +164,15 @@ rt_module_t rt_module_find(const char *name) ...@@ -164,15 +164,15 @@ rt_module_t rt_module_find(const char *name)
struct rt_object *object; struct rt_object *object;
struct rt_list_node *node; struct rt_list_node *node;
extern struct rt_object_information rt_object_container[];
RT_DEBUG_NOT_IN_INTERRUPT; RT_DEBUG_NOT_IN_INTERRUPT;
/* enter critical */ /* enter critical */
rt_enter_critical(); rt_enter_critical();
/* try to find device object */ /* try to find device object */
information = &rt_object_container[RT_Object_Class_Module]; information = rt_object_get_information(RT_Object_Class_Module);
RT_ASSERT(information != RT_NULL);
for (node = information->object_list.next; for (node = information->object_list.next;
node != &(information->object_list); node != &(information->object_list);
node = node->next) node = node->next)
......
...@@ -85,6 +85,7 @@ CONFIG_FINSH_USING_MSH_DEFAULT=y ...@@ -85,6 +85,7 @@ CONFIG_FINSH_USING_MSH_DEFAULT=y
CONFIG_RT_USING_DFS=y CONFIG_RT_USING_DFS=y
CONFIG_DFS_USING_WORKDIR=y CONFIG_DFS_USING_WORKDIR=y
CONFIG_DFS_FILESYSTEMS_MAX=4 CONFIG_DFS_FILESYSTEMS_MAX=4
CONFIG_DFS_FILESYSTEM_TYPES_MAX=2
CONFIG_DFS_FD_MAX=4 CONFIG_DFS_FD_MAX=4
CONFIG_RT_USING_DFS_ELMFAT=y CONFIG_RT_USING_DFS_ELMFAT=y
...@@ -108,6 +109,7 @@ CONFIG_RT_USING_DFS_DEVFS=y ...@@ -108,6 +109,7 @@ CONFIG_RT_USING_DFS_DEVFS=y
# CONFIG_RT_USING_DFS_ROMFS is not set # CONFIG_RT_USING_DFS_ROMFS is not set
# CONFIG_RT_USING_DFS_RAMFS is not set # CONFIG_RT_USING_DFS_RAMFS is not set
# CONFIG_RT_USING_DFS_UFFS is not set # CONFIG_RT_USING_DFS_UFFS is not set
# CONFIG_RT_USING_DFS_NFS is not set
# #
# Device Drivers # Device Drivers
...@@ -116,14 +118,20 @@ CONFIG_RT_USING_DEVICE_IPC=y ...@@ -116,14 +118,20 @@ CONFIG_RT_USING_DEVICE_IPC=y
CONFIG_RT_USING_SERIAL=y CONFIG_RT_USING_SERIAL=y
# CONFIG_RT_USING_CAN is not set # CONFIG_RT_USING_CAN is not set
# CONFIG_RT_USING_HWTIMER is not set # CONFIG_RT_USING_HWTIMER is not set
# CONFIG_RT_USING_I2C is not set CONFIG_RT_USING_I2C=y
CONFIG_RT_USING_I2C_BITOPS=y
CONFIG_RT_USING_PIN=y CONFIG_RT_USING_PIN=y
CONFIG_RT_USING_MTD_NOR=y CONFIG_RT_USING_MTD_NOR=y
# CONFIG_RT_USING_MTD_NAND is not set # CONFIG_RT_USING_MTD_NAND is not set
# CONFIG_RT_USING_RTC is not set # CONFIG_RT_USING_RTC is not set
# CONFIG_RT_USING_SDIO is not set CONFIG_RT_USING_SDIO=y
# CONFIG_RT_USING_SPI is not set # CONFIG_RT_USING_SPI is not set
# CONFIG_RT_USING_WDT is not set # CONFIG_RT_USING_WDT is not set
# CONFIG_RT_USING_WIFI is not set
#
# Using USB
#
# CONFIG_RT_USING_USB_HOST is not set # CONFIG_RT_USING_USB_HOST is not set
# CONFIG_RT_USING_USB_DEVICE is not set # CONFIG_RT_USING_USB_DEVICE is not set
...@@ -131,10 +139,8 @@ CONFIG_RT_USING_MTD_NOR=y ...@@ -131,10 +139,8 @@ CONFIG_RT_USING_MTD_NOR=y
# POSIX layer and C standard library # POSIX layer and C standard library
# #
CONFIG_RT_USING_LIBC=y CONFIG_RT_USING_LIBC=y
# CONFIG_RT_USING_PTHREADS is not set CONFIG_RT_USING_PTHREADS=y
CONFIG_RT_USING_POSIX=y # CONFIG_RT_USING_POSIX is not set
# CONFIG_RT_USING_POSIX_MMAP is not set
# CONFIG_RT_USING_POSIX_TERMIOS is not set
# #
# Network stack # Network stack
...@@ -143,23 +149,96 @@ CONFIG_RT_USING_POSIX=y ...@@ -143,23 +149,96 @@ CONFIG_RT_USING_POSIX=y
# #
# light weight TCP/IP stack # light weight TCP/IP stack
# #
# CONFIG_RT_USING_LWIP is not set CONFIG_RT_USING_LWIP=y
# CONFIG_RT_USING_LWIP141 is not set
CONFIG_RT_USING_LWIP202=y
# CONFIG_RT_USING_LWIP_IPV6 is not set
# CONFIG_RT_LWIP_IGMP is not set
CONFIG_RT_LWIP_ICMP=y
# CONFIG_RT_LWIP_SNMP is not set
CONFIG_RT_LWIP_DNS=y
CONFIG_RT_LWIP_DHCP=y
CONFIG_IP_SOF_BROADCAST=1
CONFIG_IP_SOF_BROADCAST_RECV=1
#
# Static IPv4 Address
#
CONFIG_RT_LWIP_IPADDR="192.168.1.30"
CONFIG_RT_LWIP_GWADDR="192.168.1.1"
CONFIG_RT_LWIP_MSKADDR="255.255.255.0"
CONFIG_RT_LWIP_UDP=y
CONFIG_RT_LWIP_TCP=y
# CONFIG_RT_LWIP_RAW is not set
# CONFIG_RT_LWIP_PPP is not set
CONFIG_RT_MEMP_NUM_NETCONN=8
CONFIG_RT_LWIP_PBUF_NUM=16
CONFIG_RT_LWIP_RAW_PCB_NUM=4
CONFIG_RT_LWIP_UDP_PCB_NUM=4
CONFIG_RT_LWIP_TCP_PCB_NUM=4
CONFIG_RT_LWIP_TCP_SEG_NUM=40
CONFIG_RT_LWIP_TCP_SND_BUF=8196
CONFIG_RT_LWIP_TCP_WND=8196
CONFIG_RT_LWIP_TCPTHREAD_PRIORITY=10
CONFIG_RT_LWIP_TCPTHREAD_MBOX_SIZE=8
CONFIG_RT_LWIP_TCPTHREAD_STACKSIZE=2048
CONFIG_RT_LWIP_ETHTHREAD_PRIORITY=12
CONFIG_RT_LWIP_ETHTHREAD_STACKSIZE=1024
CONFIG_RT_LWIP_ETHTHREAD_MBOX_SIZE=8
CONFIG_RT_LWIP_REASSEMBLY_FRAG=y
CONFIG_LWIP_NETIF_STATUS_CALLBACK=1
CONFIG_SO_REUSE=1
CONFIG_LWIP_SO_RCVTIMEO=1
CONFIG_LWIP_SO_SNDTIMEO=1
CONFIG_LWIP_SO_RCVBUF=1
# #
# Modbus master and slave stack # Modbus master and slave stack
# #
# CONFIG_RT_USING_MODBUS is not set # CONFIG_RT_USING_MODBUS is not set
# CONFIG_LWIP_USING_DHCPD is not set
# CONFIG_RT_USING_NETUTILS is not set
# #
# RT-Thread UI Engine # RT-Thread UI Engine
# #
# CONFIG_RT_USING_GUIENGINE is not set CONFIG_RT_USING_GUIENGINE=y
CONFIG_RTGUI_NAME_MAX=16
# CONFIG_RTGUI_USING_TTF is not set
CONFIG_RTGUI_USING_FONT16=y
CONFIG_RTGUI_USING_FONT12=y
# CONFIG_RTGUI_USING_FONTHZ is not set
# CONFIG_RTGUI_IMAGE_XPM is not set
CONFIG_RTGUI_IMAGE_JPEG_NONE=y
# CONFIG_RTGUI_IMAGE_JPEG is not set
# CONFIG_RTGUI_IMAGE_TJPGD is not set
# CONFIG_RTGUI_IMAGE_PNG_NONE is not set
# CONFIG_RTGUI_IMAGE_PNG is not set
CONFIG_RTGUI_IMAGE_LODEPNG=y
# CONFIG_RTGUI_IMAGE_BMP is not set
CONFIG_RTGUI_IMAGE_CONTAINER=y
CONFIG_RTGUI_USING_DEMO=y
# #
# VBUS(Virtual Software BUS) # VBUS(Virtual Software BUS)
# #
# CONFIG_RT_USING_VBUS is not set # CONFIG_RT_USING_VBUS is not set
#
# Utilities
#
# CONFIG_RT_USING_LOGTRACE is not set
# CONFIG_RT_USING_RYM is not set
#
# RT-Thread Senior Membership Packages
#
#
# system packages
#
# CONFIG_PKG_USING_FTL_SRC is not set
# #
# RT-Thread online packages # RT-Thread online packages
# #
...@@ -168,7 +247,9 @@ CONFIG_RT_USING_POSIX=y ...@@ -168,7 +247,9 @@ CONFIG_RT_USING_POSIX=y
# system packages # system packages
# #
# CONFIG_PKG_USING_PARTITION is not set # CONFIG_PKG_USING_PARTITION is not set
# CONFIG_PKG_USING_PERSIMMON is not set
# CONFIG_PKG_USING_SQLITE is not set # CONFIG_PKG_USING_SQLITE is not set
# CONFIG_PKG_USING_RTI is not set
# #
# IoT - internet of things # IoT - internet of things
...@@ -179,26 +260,25 @@ CONFIG_RT_USING_POSIX=y ...@@ -179,26 +260,25 @@ CONFIG_RT_USING_POSIX=y
# CONFIG_PKG_USING_WEBTERMINAL is not set # CONFIG_PKG_USING_WEBTERMINAL is not set
# CONFIG_PKG_USING_CJSON is not set # CONFIG_PKG_USING_CJSON is not set
# CONFIG_PKG_USING_EZXML is not set # CONFIG_PKG_USING_EZXML is not set
# CONFIG_PKG_USING_NANOPB is not set
#
# Marvell WiFi
#
# CONFIG_PKG_USING_MARVELLWIFI is not set
# #
# security packages # security packages
# #
# CONFIG_PKG_USING_MBEDTLS is not set # CONFIG_PKG_USING_MBEDTLS is not set
# CONFIG_PKG_USING_libsodium is not set
# CONFIG_PKG_USING_TINYCRYPT is not set
# #
# language packages # language packages
# #
# CONFIG_PKG_USING_JERRYSCRIPT is not set # CONFIG_PKG_USING_JERRYSCRIPT is not set
# CONFIG_PKG_USING_MICROPYTHON is not set
# #
# multimedia packages # multimedia packages
# #
# CONFIG_PKG_USING_FASTLZ is not set # CONFIG_PKG_USING_OPENMV is not set
# #
# tools packages # tools packages
...@@ -206,10 +286,17 @@ CONFIG_RT_USING_POSIX=y ...@@ -206,10 +286,17 @@ CONFIG_RT_USING_POSIX=y
# CONFIG_PKG_USING_CMBACKTRACE is not set # CONFIG_PKG_USING_CMBACKTRACE is not set
# CONFIG_PKG_USING_EASYLOGGER is not set # CONFIG_PKG_USING_EASYLOGGER is not set
# CONFIG_PKG_USING_SYSTEMVIEW is not set # CONFIG_PKG_USING_SYSTEMVIEW is not set
# CONFIG_PKG_USING_IPERF is not set
# #
# miscellaneous packages # miscellaneous packages
# #
# CONFIG_PKG_USING_FASTLZ is not set
# CONFIG_PKG_USING_MINILZO is not set
#
# example package: hello
#
# CONFIG_PKG_USING_HELLO is not set # CONFIG_PKG_USING_HELLO is not set
CONFIG_BOARD_X1000_REALBOARD=y CONFIG_BOARD_X1000_REALBOARD=y
# CONFIG_RT_USING_HARD_FLOAT is not set # CONFIG_RT_USING_HARD_FLOAT is not set
...@@ -221,5 +308,23 @@ CONFIG_BOARD_HALLEY2_REALBOARD_V2=y ...@@ -221,5 +308,23 @@ CONFIG_BOARD_HALLEY2_REALBOARD_V2=y
# CONFIG_RT_USING_UART0 is not set # CONFIG_RT_USING_UART0 is not set
# CONFIG_RT_USING_UART1 is not set # CONFIG_RT_USING_UART1 is not set
CONFIG_RT_USING_UART2=y CONFIG_RT_USING_UART2=y
CONFIG_RT_USING_MSC0=y
CONFIG_RT_USING_MSC1=y
CONFIG_RT_MMCSD_STACK_SIZE=2048
CONFIG_RT_USING_I2C0=y
# CONFIG_RT_USING_I2C1 is not set
# CONFIG_RT_USING_I2C2 is not set
CONFIG_RT_USING_SLCD=y
CONFIG_RT_USING_ILI9488=y
# CONFIG_RT_USING_ILI9341 is not set
# CONFIG_RT_USING_OTM4802 is not set
# CONFIG_RT_USING_TRULY_TFT240240 is not set
CONFIG_RT_USING_TOUCH=y
CONFIG_RT_USING_GT9XX=y
# CONFIG_RT_USING_FT6x06 is not set
CONFIG_RT_TOUCH_THREAD_PRIORITY=10
CONFIG_RT_USING_AUDIO=y CONFIG_RT_USING_AUDIO=y
CONFIG_RT_USING_ICODEC=y
CONFIG_RT_USING_CPU_FFS=y CONFIG_RT_USING_CPU_FFS=y
# CONFIG_WIFI_USING_AP6212 is not set
# CONFIG_WIFI_USING_AP6181 is not set
/*
* File : rtgui_demo.c
* This file is part of RT-Thread RTOS
* COPYRIGHT (C) 2008 - 2017, RT-Thread Development Team
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Change Logs:
* Date Author Notes
* 2017-11-8 Tangyuxin first version
*/
#include <rtthread.h>
// #define DEBUG
#ifdef DEBUG
#define DEBUG_PRINTF(...) rt_kprintf(__VA_ARGS__)
#else
#define DEBUG_PRINTF(...)
#endif
#ifdef RT_USING_GUIENGINE
#include <rtgui/rtgui.h>
#include <rtgui/rtgui_system.h>
#include <rtgui/rtgui_app.h>
#include <rtgui/widgets/window.h>
#include <rtgui/dc.h>
struct rtgui_win *main_win;
rt_bool_t dc_event_handler(struct rtgui_object *object, rtgui_event_t *event);
static void rt_gui_demo_entry(void *parameter)
{
struct rtgui_app *app;
DEBUG_PRINTF("gui demo entry\n");
/* create gui app */
app = rtgui_app_create("gui_demo");
if (app == RT_NULL)
{
DEBUG_PRINTF("rtgui_app_create faild\n");
return;
}
/* create main window */
main_win = rtgui_mainwin_create(RT_NULL,
"UiWindow", RTGUI_WIN_STYLE_NO_TITLE | RTGUI_WIN_STYLE_NO_BORDER);
if (main_win == RT_NULL)
{
DEBUG_PRINTF("main_win is null\n");
rtgui_app_destroy(app);
return;
}
rtgui_object_set_event_handler(RTGUI_OBJECT(main_win), dc_event_handler);
DEBUG_PRINTF("rtgui_win_show\n");
rtgui_win_show(main_win, RT_FALSE);
DEBUG_PRINTF("rtgui_app_run\n");
rtgui_app_run(app);
DEBUG_PRINTF("rtgui_win_destroy\n");
rtgui_win_destroy(main_win);
DEBUG_PRINTF("rtgui_app_destroy\n");
rtgui_app_destroy(app);
}
rt_bool_t dc_event_handler(struct rtgui_object *object, rtgui_event_t *event)
{
struct rtgui_widget *widget = RTGUI_WIDGET(object);
if (event->type == RTGUI_EVENT_PAINT)
{
struct rtgui_dc *dc;
rtgui_rect_t rect;
DEBUG_PRINTF("\r\n RTGUI_EVENT_PAINT \r\n");
rtgui_win_event_handler(RTGUI_OBJECT(widget), event);
rtgui_widget_get_rect(widget, &rect);
DEBUG_PRINTF("widget react x1: %d, y1: %d, x2: %d, y2: %d\r\n",
rect.x1, rect.y1, rect.x2, rect.y2);
dc = rtgui_dc_begin_drawing(widget);
if (dc == RT_NULL)
{
DEBUG_PRINTF("\r\n dc is null \r\n");
return RT_FALSE;
}
rtgui_dc_draw_line(dc, rect.x1, rect.y1, rect.x2, rect.y2);
rtgui_dc_draw_line(dc, rect.x1, rect.y2, rect.x2, rect.y1);
rect.x1 += (rect.x2 - rect.x1) / 2;
rect.y1 += (rect.y2 - rect.y1) / 2;
rtgui_dc_draw_text_stroke(dc, __DATE__"--"__TIME__, &rect, HIGH_LIGHT, BLUE);
rtgui_dc_end_drawing(dc,RT_TRUE);
}
return RT_FALSE;
}
int rt_gui_demo_init(void)
{
rt_thread_t tid;
rt_device_t device;
rt_err_t err;
device = rt_device_find("lcd");
if (device == RT_NULL)
{
rt_kprintf("Not found LCD driver\n");
return RT_ERROR;
}
err = rt_device_open(device, RT_DEVICE_OFLAG_RDWR);
if (err != RT_EOK)
{
rt_kprintf("Open LCD driver fail\n");
return RT_ERROR;
}
/* set graphic device */
rtgui_graphic_set_device(device);
tid = rt_thread_create("mygui",
rt_gui_demo_entry, RT_NULL,
2048, 25, 10);
if (tid != RT_NULL)
rt_thread_startup(tid);
return 0;
}
INIT_APP_EXPORT(rt_gui_demo_init);
#endif /* RT_USING_GUIENGINE */
#include <rtthread.h>
#ifdef RT_USING_WIFI
#include "wlan_wiced.h"
int wifi_init(void)
{
wifi_hw_init();
}
INIT_ENV_EXPORT(wifi_init);
#endif
...@@ -109,16 +109,31 @@ if RT_USING_GUIENGINE ...@@ -109,16 +109,31 @@ if RT_USING_GUIENGINE
endif endif
endif endif
config RT_USING_ICODEC
default n
config RT_USING_AUDIO config RT_USING_AUDIO
bool "Using audio" bool "Using audio"
select RT_USING_ICODEC select RT_USING_ICODEC
default n default n
if RT_USING_AUDIO
config RT_USING_ICODEC
bool "Using internal codec for audio"
default y if BOARD_HALLEY2_REALBOARD_V2
default n
endif
config RT_USING_CPU_FFS config RT_USING_CPU_FFS
bool "Using CPU FFS" bool "Using CPU FFS"
default y default y
if PKG_USING_WLAN_WICED
choice
prompt "Broadcom Wi-Fi module"
default WIFI_USING_AP6212
config WIFI_USING_AP6212
bool "AP6212A module(bcm43438)"
config WIFI_USING_AP6181
bool "AP6181 module(bcm43362)"
endchoice
endif
...@@ -53,6 +53,33 @@ int cplusplus_system_init(void) ...@@ -53,6 +53,33 @@ int cplusplus_system_init(void)
} }
#endif #endif
#ifdef RT_USING_GUIENGINE
#include <rtgui/driver.h>
int lcd_hw_init(void)
{
rt_device_t device;
rt_err_t err;
device = rt_device_find("lcd");
if (device == RT_NULL)
{
rt_kprintf("Not found LCD driver\n");
return RT_ERROR;
}
err = rt_device_open(device, RT_DEVICE_OFLAG_RDWR);
if (err != RT_EOK)
{
rt_kprintf("Open LCD driver fail\n");
return RT_ERROR;
}
/* set graphic device */
rtgui_graphic_set_device(device);
}
INIT_ENV_EXPORT(lcd_hw_init);
#endif
void rt_hw_board_init(void) void rt_hw_board_init(void)
{ {
memcpy((void*)&_iramstart, (void*)&_iramcopy, (rt_uint32_t)&_iramend - (rt_uint32_t)&_iramstart); memcpy((void*)&_iramstart, (void*)&_iramcopy, (rt_uint32_t)&_iramend - (rt_uint32_t)&_iramstart);
......
...@@ -78,6 +78,7 @@ ...@@ -78,6 +78,7 @@
#define RT_USING_DFS #define RT_USING_DFS
#define DFS_USING_WORKDIR #define DFS_USING_WORKDIR
#define DFS_FILESYSTEMS_MAX 4 #define DFS_FILESYSTEMS_MAX 4
#define DFS_FILESYSTEM_TYPES_MAX 2
#define DFS_FD_MAX 4 #define DFS_FD_MAX 4
#define RT_USING_DFS_ELMFAT #define RT_USING_DFS_ELMFAT
...@@ -100,6 +101,7 @@ ...@@ -100,6 +101,7 @@
/* RT_USING_DFS_ROMFS is not set */ /* RT_USING_DFS_ROMFS is not set */
/* RT_USING_DFS_RAMFS is not set */ /* RT_USING_DFS_RAMFS is not set */
/* RT_USING_DFS_UFFS is not set */ /* RT_USING_DFS_UFFS is not set */
/* RT_USING_DFS_NFS is not set */
/* Device Drivers */ /* Device Drivers */
...@@ -107,49 +109,122 @@ ...@@ -107,49 +109,122 @@
#define RT_USING_SERIAL #define RT_USING_SERIAL
/* RT_USING_CAN is not set */ /* RT_USING_CAN is not set */
/* RT_USING_HWTIMER is not set */ /* RT_USING_HWTIMER is not set */
/* RT_USING_I2C is not set */ #define RT_USING_I2C
#define RT_USING_I2C_BITOPS
#define RT_USING_PIN #define RT_USING_PIN
#define RT_USING_MTD_NOR #define RT_USING_MTD_NOR
/* RT_USING_MTD_NAND is not set */ /* RT_USING_MTD_NAND is not set */
/* RT_USING_RTC is not set */ /* RT_USING_RTC is not set */
/* RT_USING_SDIO is not set */ #define RT_USING_SDIO
/* RT_USING_SPI is not set */ /* RT_USING_SPI is not set */
/* RT_USING_WDT is not set */ /* RT_USING_WDT is not set */
/* RT_USING_WIFI is not set */
/* Using USB */
/* RT_USING_USB_HOST is not set */ /* RT_USING_USB_HOST is not set */
/* RT_USING_USB_DEVICE is not set */ /* RT_USING_USB_DEVICE is not set */
/* POSIX layer and C standard library */ /* POSIX layer and C standard library */
#define RT_USING_LIBC #define RT_USING_LIBC
/* RT_USING_PTHREADS is not set */ #define RT_USING_PTHREADS
#define RT_USING_POSIX /* RT_USING_POSIX is not set */
/* RT_USING_POSIX_MMAP is not set */
/* RT_USING_POSIX_TERMIOS is not set */
/* Network stack */ /* Network stack */
/* light weight TCP/IP stack */ /* light weight TCP/IP stack */
/* RT_USING_LWIP is not set */ #define RT_USING_LWIP
/* RT_USING_LWIP141 is not set */
#define RT_USING_LWIP202
/* RT_USING_LWIP_IPV6 is not set */
/* RT_LWIP_IGMP is not set */
#define RT_LWIP_ICMP
/* RT_LWIP_SNMP is not set */
#define RT_LWIP_DNS
#define RT_LWIP_DHCP
#define IP_SOF_BROADCAST 1
#define IP_SOF_BROADCAST_RECV 1
/* Static IPv4 Address */
#define RT_LWIP_IPADDR "192.168.1.30"
#define RT_LWIP_GWADDR "192.168.1.1"
#define RT_LWIP_MSKADDR "255.255.255.0"
#define RT_LWIP_UDP
#define RT_LWIP_TCP
/* RT_LWIP_RAW is not set */
/* RT_LWIP_PPP is not set */
#define RT_MEMP_NUM_NETCONN 8
#define RT_LWIP_PBUF_NUM 16
#define RT_LWIP_RAW_PCB_NUM 4
#define RT_LWIP_UDP_PCB_NUM 4
#define RT_LWIP_TCP_PCB_NUM 4
#define RT_LWIP_TCP_SEG_NUM 40
#define RT_LWIP_TCP_SND_BUF 8196
#define RT_LWIP_TCP_WND 8196
#define RT_LWIP_TCPTHREAD_PRIORITY 10
#define RT_LWIP_TCPTHREAD_MBOX_SIZE 8
#define RT_LWIP_TCPTHREAD_STACKSIZE 2048
#define RT_LWIP_ETHTHREAD_PRIORITY 12
#define RT_LWIP_ETHTHREAD_STACKSIZE 1024
#define RT_LWIP_ETHTHREAD_MBOX_SIZE 8
#define RT_LWIP_REASSEMBLY_FRAG
#define LWIP_NETIF_STATUS_CALLBACK 1
#define SO_REUSE 1
#define LWIP_SO_RCVTIMEO 1
#define LWIP_SO_SNDTIMEO 1
#define LWIP_SO_RCVBUF 1
/* Modbus master and slave stack */ /* Modbus master and slave stack */
/* RT_USING_MODBUS is not set */ /* RT_USING_MODBUS is not set */
/* LWIP_USING_DHCPD is not set */
/* RT_USING_NETUTILS is not set */
/* RT-Thread UI Engine */ /* RT-Thread UI Engine */
/* RT_USING_GUIENGINE is not set */ #define RT_USING_GUIENGINE
#define RTGUI_NAME_MAX 16
/* RTGUI_USING_TTF is not set */
#define RTGUI_USING_FONT16
#define RTGUI_USING_FONT12
/* RTGUI_USING_FONTHZ is not set */
/* RTGUI_IMAGE_XPM is not set */
#define RTGUI_IMAGE_JPEG_NONE
/* RTGUI_IMAGE_JPEG is not set */
/* RTGUI_IMAGE_TJPGD is not set */
/* RTGUI_IMAGE_PNG_NONE is not set */
/* RTGUI_IMAGE_PNG is not set */
#define RTGUI_IMAGE_LODEPNG
/* RTGUI_IMAGE_BMP is not set */
#define RTGUI_IMAGE_CONTAINER
#define RTGUI_USING_DEMO
/* VBUS(Virtual Software BUS) */ /* VBUS(Virtual Software BUS) */
/* RT_USING_VBUS is not set */ /* RT_USING_VBUS is not set */
/* Utilities */
/* RT_USING_LOGTRACE is not set */
/* RT_USING_RYM is not set */
/* RT-Thread Senior Membership Packages */
/* system packages */
/* PKG_USING_FTL_SRC is not set */
/* RT-Thread online packages */ /* RT-Thread online packages */
/* system packages */ /* system packages */
/* PKG_USING_PARTITION is not set */ /* PKG_USING_PARTITION is not set */
/* PKG_USING_PERSIMMON is not set */
/* PKG_USING_SQLITE is not set */ /* PKG_USING_SQLITE is not set */
/* PKG_USING_RTI is not set */
/* IoT - internet of things */ /* IoT - internet of things */
...@@ -159,31 +234,37 @@ ...@@ -159,31 +234,37 @@
/* PKG_USING_WEBTERMINAL is not set */ /* PKG_USING_WEBTERMINAL is not set */
/* PKG_USING_CJSON is not set */ /* PKG_USING_CJSON is not set */
/* PKG_USING_EZXML is not set */ /* PKG_USING_EZXML is not set */
/* PKG_USING_NANOPB is not set */
/* Marvell WiFi */
/* PKG_USING_MARVELLWIFI is not set */
/* security packages */ /* security packages */
/* PKG_USING_MBEDTLS is not set */ /* PKG_USING_MBEDTLS is not set */
/* PKG_USING_libsodium is not set */
/* PKG_USING_TINYCRYPT is not set */
/* language packages */ /* language packages */
/* PKG_USING_JERRYSCRIPT is not set */ /* PKG_USING_JERRYSCRIPT is not set */
/* PKG_USING_MICROPYTHON is not set */
/* multimedia packages */ /* multimedia packages */
/* PKG_USING_FASTLZ is not set */ /* PKG_USING_OPENMV is not set */
/* tools packages */ /* tools packages */
/* PKG_USING_CMBACKTRACE is not set */ /* PKG_USING_CMBACKTRACE is not set */
/* PKG_USING_EASYLOGGER is not set */ /* PKG_USING_EASYLOGGER is not set */
/* PKG_USING_SYSTEMVIEW is not set */ /* PKG_USING_SYSTEMVIEW is not set */
/* PKG_USING_IPERF is not set */
/* miscellaneous packages */ /* miscellaneous packages */
/* PKG_USING_FASTLZ is not set */
/* PKG_USING_MINILZO is not set */
/* example package: hello */
/* PKG_USING_HELLO is not set */ /* PKG_USING_HELLO is not set */
#define BOARD_X1000_REALBOARD #define BOARD_X1000_REALBOARD
/* RT_USING_HARD_FLOAT is not set */ /* RT_USING_HARD_FLOAT is not set */
...@@ -195,7 +276,25 @@ ...@@ -195,7 +276,25 @@
/* RT_USING_UART0 is not set */ /* RT_USING_UART0 is not set */
/* RT_USING_UART1 is not set */ /* RT_USING_UART1 is not set */
#define RT_USING_UART2 #define RT_USING_UART2
#define RT_USING_MSC0
#define RT_USING_MSC1
#define RT_MMCSD_STACK_SIZE 2048
#define RT_USING_I2C0
/* RT_USING_I2C1 is not set */
/* RT_USING_I2C2 is not set */
#define RT_USING_SLCD
#define RT_USING_ILI9488
/* RT_USING_ILI9341 is not set */
/* RT_USING_OTM4802 is not set */
/* RT_USING_TRULY_TFT240240 is not set */
#define RT_USING_TOUCH
#define RT_USING_GT9XX
/* RT_USING_FT6x06 is not set */
#define RT_TOUCH_THREAD_PRIORITY 10
#define RT_USING_AUDIO #define RT_USING_AUDIO
#define RT_USING_ICODEC
#define RT_USING_CPU_FFS #define RT_USING_CPU_FFS
/* WIFI_USING_AP6212 is not set */
/* WIFI_USING_AP6181 is not set */
#endif #endif
...@@ -150,13 +150,12 @@ int dfs_device_fs_open(struct dfs_fd *file) ...@@ -150,13 +150,12 @@ int dfs_device_fs_open(struct dfs_fd *file)
struct device_dirent *root_dirent; struct device_dirent *root_dirent;
rt_uint32_t count = 0; rt_uint32_t count = 0;
extern struct rt_object_information rt_object_container[];
/* lock scheduler */ /* lock scheduler */
rt_enter_critical(); rt_enter_critical();
/* traverse device object */ /* traverse device object */
information = &rt_object_container[RT_Object_Class_Device]; information = rt_object_get_information(RT_Object_Class_Device);
RT_ASSERT(information != RT_NULL);
for (node = information->object_list.next; node != &(information->object_list); node = node->next) for (node = information->object_list.next; node != &(information->object_list); node = node->next)
{ {
count ++; count ++;
......
...@@ -20,6 +20,7 @@ ...@@ -20,6 +20,7 @@
* Change Logs: * Change Logs:
* Date Author Notes * Date Author Notes
* 2005-02-22 Bernard The first version. * 2005-02-22 Bernard The first version.
* 2017-12-11 Bernard Use rt_free to instead of free in fd_is_open().
*/ */
#include <dfs.h> #include <dfs.h>
...@@ -219,7 +220,7 @@ int fd_is_open(const char *pathname) ...@@ -219,7 +220,7 @@ int fd_is_open(const char *pathname)
if (fs == NULL) if (fs == NULL)
{ {
/* can't find mounted file system */ /* can't find mounted file system */
free(fullpath); rt_free(fullpath);
return -1; return -1;
} }
......
...@@ -67,8 +67,6 @@ long version(void) ...@@ -67,8 +67,6 @@ long version(void)
FINSH_FUNCTION_EXPORT(version, show RT-Thread version information); FINSH_FUNCTION_EXPORT(version, show RT-Thread version information);
MSH_CMD_EXPORT(version, show RT-Thread version information); MSH_CMD_EXPORT(version, show RT-Thread version information);
extern struct rt_object_information rt_object_container[];
static int object_name_maxlen(struct rt_list_node *list) static int object_name_maxlen(struct rt_list_node *list)
{ {
struct rt_list_node *node; struct rt_list_node *node;
...@@ -135,7 +133,10 @@ static long _list_thread(struct rt_list_node *list) ...@@ -135,7 +133,10 @@ static long _list_thread(struct rt_list_node *list)
long list_thread(void) long list_thread(void)
{ {
return _list_thread(&rt_object_container[RT_Object_Class_Thread].object_list); struct rt_object_information *info;
info = rt_object_get_information(RT_Object_Class_Thread);
return _list_thread(&info->object_list);
} }
FINSH_FUNCTION_EXPORT(list_thread, list thread); FINSH_FUNCTION_EXPORT(list_thread, list thread);
MSH_CMD_EXPORT(list_thread, list thread); MSH_CMD_EXPORT(list_thread, list thread);
...@@ -195,7 +196,11 @@ static long _list_sem(struct rt_list_node *list) ...@@ -195,7 +196,11 @@ static long _list_sem(struct rt_list_node *list)
long list_sem(void) long list_sem(void)
{ {
return _list_sem(&rt_object_container[RT_Object_Class_Semaphore].object_list); struct rt_object_information *info;
info = rt_object_get_information(RT_Object_Class_Semaphore);
return _list_sem(&info->object_list);
} }
FINSH_FUNCTION_EXPORT(list_sem, list semaphone in system); FINSH_FUNCTION_EXPORT(list_sem, list semaphone in system);
MSH_CMD_EXPORT(list_sem, list semaphore in system); MSH_CMD_EXPORT(list_sem, list semaphore in system);
...@@ -237,7 +242,10 @@ static long _list_event(struct rt_list_node *list) ...@@ -237,7 +242,10 @@ static long _list_event(struct rt_list_node *list)
long list_event(void) long list_event(void)
{ {
return _list_event(&rt_object_container[RT_Object_Class_Event].object_list); struct rt_object_information *info;
info = rt_object_get_information(RT_Object_Class_Event);
return _list_event(&info->object_list);
} }
FINSH_FUNCTION_EXPORT(list_event, list event in system); FINSH_FUNCTION_EXPORT(list_event, list event in system);
MSH_CMD_EXPORT(list_event, list event in system); MSH_CMD_EXPORT(list_event, list event in system);
...@@ -270,7 +278,11 @@ static long _list_mutex(struct rt_list_node *list) ...@@ -270,7 +278,11 @@ static long _list_mutex(struct rt_list_node *list)
long list_mutex(void) long list_mutex(void)
{ {
return _list_mutex(&rt_object_container[RT_Object_Class_Mutex].object_list); struct rt_object_information *info;
info = rt_object_get_information(RT_Object_Class_Mutex);
return _list_mutex(&info->object_list);
} }
FINSH_FUNCTION_EXPORT(list_mutex, list mutex in system); FINSH_FUNCTION_EXPORT(list_mutex, list mutex in system);
MSH_CMD_EXPORT(list_mutex, list mutex in system); MSH_CMD_EXPORT(list_mutex, list mutex in system);
...@@ -321,7 +333,10 @@ static long _list_mailbox(struct rt_list_node *list) ...@@ -321,7 +333,10 @@ static long _list_mailbox(struct rt_list_node *list)
long list_mailbox(void) long list_mailbox(void)
{ {
return _list_mailbox(&rt_object_container[RT_Object_Class_MailBox].object_list); struct rt_object_information *info;
info = rt_object_get_information(RT_Object_Class_MailBox);
return _list_mailbox(&info->object_list);
} }
FINSH_FUNCTION_EXPORT(list_mailbox, list mail box in system); FINSH_FUNCTION_EXPORT(list_mailbox, list mail box in system);
MSH_CMD_EXPORT(list_mailbox, list mail box in system); MSH_CMD_EXPORT(list_mailbox, list mail box in system);
...@@ -370,7 +385,10 @@ static long _list_msgqueue(struct rt_list_node *list) ...@@ -370,7 +385,10 @@ static long _list_msgqueue(struct rt_list_node *list)
long list_msgqueue(void) long list_msgqueue(void)
{ {
return _list_msgqueue(&rt_object_container[RT_Object_Class_MessageQueue].object_list); struct rt_object_information *info;
info = rt_object_get_information(RT_Object_Class_MessageQueue);
return _list_msgqueue(&info->object_list);
} }
FINSH_FUNCTION_EXPORT(list_msgqueue, list message queue in system); FINSH_FUNCTION_EXPORT(list_msgqueue, list message queue in system);
MSH_CMD_EXPORT(list_msgqueue, list message queue in system); MSH_CMD_EXPORT(list_msgqueue, list message queue in system);
...@@ -404,7 +422,10 @@ static long _list_memheap(struct rt_list_node *list) ...@@ -404,7 +422,10 @@ static long _list_memheap(struct rt_list_node *list)
long list_memheap(void) long list_memheap(void)
{ {
return _list_memheap(&rt_object_container[RT_Object_Class_MemHeap].object_list); struct rt_object_information *info;
info = rt_object_get_information(RT_Object_Class_MemHeap);
return _list_memheap(&info->object_list);
} }
FINSH_FUNCTION_EXPORT(list_memheap, list memory heap in system); FINSH_FUNCTION_EXPORT(list_memheap, list memory heap in system);
MSH_CMD_EXPORT(list_memheap, list memory heap in system); MSH_CMD_EXPORT(list_memheap, list memory heap in system);
...@@ -453,7 +474,10 @@ static long _list_mempool(struct rt_list_node *list) ...@@ -453,7 +474,10 @@ static long _list_mempool(struct rt_list_node *list)
long list_mempool(void) long list_mempool(void)
{ {
return _list_mempool(&rt_object_container[RT_Object_Class_MemPool].object_list); struct rt_object_information *info;
info = rt_object_get_information(RT_Object_Class_MemPool);
return _list_mempool(&info->object_list);
} }
FINSH_FUNCTION_EXPORT(list_mempool, list memory pool in system) FINSH_FUNCTION_EXPORT(list_mempool, list memory pool in system)
MSH_CMD_EXPORT(list_mempool, list memory pool in system); MSH_CMD_EXPORT(list_mempool, list memory pool in system);
...@@ -490,7 +514,10 @@ static long _list_timer(struct rt_list_node *list) ...@@ -490,7 +514,10 @@ static long _list_timer(struct rt_list_node *list)
long list_timer(void) long list_timer(void)
{ {
return _list_timer(&rt_object_container[RT_Object_Class_Timer].object_list); struct rt_object_information *info;
info = rt_object_get_information(RT_Object_Class_Timer);
return _list_timer(&info->object_list);
} }
FINSH_FUNCTION_EXPORT(list_timer, list timer in system); FINSH_FUNCTION_EXPORT(list_timer, list timer in system);
MSH_CMD_EXPORT(list_timer, list timer in system); MSH_CMD_EXPORT(list_timer, list timer in system);
...@@ -550,7 +577,10 @@ static long _list_device(struct rt_list_node *list) ...@@ -550,7 +577,10 @@ static long _list_device(struct rt_list_node *list)
long list_device(void) long list_device(void)
{ {
return _list_device(&rt_object_container[RT_Object_Class_Device].object_list); struct rt_object_information *info;
info = rt_object_get_information(RT_Object_Class_Device);
return _list_device(&info->object_list);
} }
FINSH_FUNCTION_EXPORT(list_device, list device in system); FINSH_FUNCTION_EXPORT(list_device, list device in system);
MSH_CMD_EXPORT(list_device, list device in system); MSH_CMD_EXPORT(list_device, list device in system);
...@@ -564,8 +594,10 @@ int list_module(void) ...@@ -564,8 +594,10 @@ int list_module(void)
int maxlen; int maxlen;
struct rt_module *module; struct rt_module *module;
struct rt_list_node *list, *node; struct rt_list_node *list, *node;
struct rt_object_information *info;
list = &rt_object_container[RT_Object_Class_Module].object_list; info = rt_object_get_information(RT_Object_Class_Module);
list = &info->object_list;
maxlen = object_name_maxlen(list); maxlen = object_name_maxlen(list);
......
...@@ -55,10 +55,6 @@ config RT_USING_LWIP ...@@ -55,10 +55,6 @@ config RT_USING_LWIP
config IP_SOF_BROADCAST_RECV config IP_SOF_BROADCAST_RECV
int "SOF broadcast recv" int "SOF broadcast recv"
default 1 default 1
config LWIP_USING_DHCPD
bool "Enable DHCP server"
default n
endif endif
menu "Static IPv4 Address" menu "Static IPv4 Address"
...@@ -91,14 +87,16 @@ config RT_USING_LWIP ...@@ -91,14 +87,16 @@ config RT_USING_LWIP
bool "PPP protocol" bool "PPP protocol"
default n default n
config RT_LWIP_PPPOE if RT_LWIP_PPP
bool "PPPoE protocol" config RT_LWIP_PPPOE
default n bool "PPPoE protocol"
default n
config RT_LWIP_PPPOS
bool "PPPoS protocol" config RT_LWIP_PPPOS
default n bool "PPPoS protocol"
default n
endif
config RT_MEMP_NUM_NETCONN config RT_MEMP_NUM_NETCONN
int "the number of struct netconns" int "the number of struct netconns"
default 8 default 8
...@@ -187,6 +185,11 @@ endmenu ...@@ -187,6 +185,11 @@ endmenu
source "$RTT_DIR/components/net/freemodbus/Kconfig" source "$RTT_DIR/components/net/freemodbus/Kconfig"
if RT_USING_LWIP if RT_USING_LWIP
config LWIP_USING_DHCPD
bool "Enable DHCP server"
default n
config RT_USING_NETUTILS config RT_USING_NETUTILS
bool "Enable net utils" bool "Enable net utils"
default n default n
......
...@@ -41,8 +41,6 @@ static void tcpip_init_done_callback(void *arg) ...@@ -41,8 +41,6 @@ static void tcpip_init_done_callback(void *arg)
struct rt_object* object; struct rt_object* object;
struct rt_object_information *information; struct rt_object_information *information;
extern struct rt_object_information rt_object_container[];
LWIP_ASSERT("invalid arg.\n",arg); LWIP_ASSERT("invalid arg.\n",arg);
IP4_ADDR(&gw, 0,0,0,0); IP4_ADDR(&gw, 0,0,0,0);
...@@ -53,7 +51,9 @@ static void tcpip_init_done_callback(void *arg) ...@@ -53,7 +51,9 @@ static void tcpip_init_done_callback(void *arg)
rt_enter_critical(); rt_enter_critical();
/* for each network interfaces */ /* for each network interfaces */
information = &rt_object_container[RT_Object_Class_Device]; information = rt_object_get_information(RT_Object_Class_Device);
RT_ASSERT(information != RT_NULL);
for (node = information->object_list.next; node != &(information->object_list); node = node->next) for (node = information->object_list.next; node != &(information->object_list); node = node->next)
{ {
object = rt_list_entry(node, struct rt_object, list); object = rt_list_entry(node, struct rt_object, list);
......
...@@ -72,8 +72,6 @@ static void tcpip_init_done_callback(void *arg) ...@@ -72,8 +72,6 @@ static void tcpip_init_done_callback(void *arg)
struct rt_object* object; struct rt_object* object;
struct rt_object_information *information; struct rt_object_information *information;
extern struct rt_object_information rt_object_container[];
LWIP_ASSERT("invalid arg.\n",arg); LWIP_ASSERT("invalid arg.\n",arg);
IP4_ADDR(&gw, 0,0,0,0); IP4_ADDR(&gw, 0,0,0,0);
...@@ -84,7 +82,8 @@ static void tcpip_init_done_callback(void *arg) ...@@ -84,7 +82,8 @@ static void tcpip_init_done_callback(void *arg)
rt_enter_critical(); rt_enter_critical();
/* for each network interfaces */ /* for each network interfaces */
information = &rt_object_container[RT_Object_Class_Device]; information = rt_object_get_information(RT_Object_Class_Device);
RT_ASSERT(information != RT_NULL);
for (node = information->object_list.next; for (node = information->object_list.next;
node != &(information->object_list); node != &(information->object_list);
node = node->next) node = node->next)
......
...@@ -74,8 +74,6 @@ static void tcpip_init_done_callback(void *arg) ...@@ -74,8 +74,6 @@ static void tcpip_init_done_callback(void *arg)
struct rt_object* object; struct rt_object* object;
struct rt_object_information *information; struct rt_object_information *information;
extern struct rt_object_information rt_object_container[];
LWIP_ASSERT("invalid arg.\n",arg); LWIP_ASSERT("invalid arg.\n",arg);
IP4_ADDR(&gw, 0,0,0,0); IP4_ADDR(&gw, 0,0,0,0);
...@@ -86,7 +84,8 @@ static void tcpip_init_done_callback(void *arg) ...@@ -86,7 +84,8 @@ static void tcpip_init_done_callback(void *arg)
rt_enter_critical(); rt_enter_critical();
/* for each network interfaces */ /* for each network interfaces */
information = &rt_object_container[RT_Object_Class_Device]; information = rt_object_get_information(RT_Object_Class_Device);
RT_ASSERT(information != RT_NULL);
for (node = information->object_list.next; for (node = information->object_list.next;
node != &(information->object_list); node != &(information->object_list);
node = node->next) node = node->next)
......
...@@ -620,10 +620,10 @@ void *rt_malloc(rt_size_t size) ...@@ -620,10 +620,10 @@ void *rt_malloc(rt_size_t size)
struct rt_list_node *node; struct rt_list_node *node;
struct rt_memheap *heap; struct rt_memheap *heap;
struct rt_object_information *information; struct rt_object_information *information;
extern struct rt_object_information rt_object_container[];
/* try to allocate on other memory heap */ /* try to allocate on other memory heap */
information = &rt_object_container[RT_Object_Class_MemHeap]; information = rt_object_get_information(RT_Object_Class_MemHeap);
RT_ASSERT(information != RT_NULL);
for (node = information->object_list.next; for (node = information->object_list.next;
node != &(information->object_list); node != &(information->object_list);
node = node->next) node = node->next)
......
...@@ -750,14 +750,13 @@ rt_thread_t rt_thread_find(char *name) ...@@ -750,14 +750,13 @@ rt_thread_t rt_thread_find(char *name)
struct rt_object *object; struct rt_object *object;
struct rt_list_node *node; struct rt_list_node *node;
extern struct rt_object_information rt_object_container[];
/* enter critical */ /* enter critical */
if (rt_thread_self() != RT_NULL) if (rt_thread_self() != RT_NULL)
rt_enter_critical(); rt_enter_critical();
/* try to find device object */ /* try to find device object */
information = &rt_object_container[RT_Object_Class_Thread]; information = rt_object_get_information(RT_Object_Class_Thread);
RT_ASSERT(information != RT_NULL);
for (node = information->object_list.next; for (node = information->object_list.next;
node != &(information->object_list); node != &(information->object_list);
node = node->next) node = node->next)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册