summaryrefslogtreecommitdiff
path: root/components
diff options
context:
space:
mode:
authorarmink <[email protected]>2019-03-14 20:37:30 +0800
committerarmink <[email protected]>2019-03-14 20:37:30 +0800
commitdba2b47d45d8b46a960110d1d7d0549d40d17abb (patch)
tree66b0104ff833d11ed24f1791a0939b6c5ae38527 /components
parent4a34b41dd682b2f3b0132713dff7bd61cc80def9 (diff)
Sync from master (fc5cfe0a5e5709878f50b904df7c3355078941dd)
Diffstat (limited to 'components')
-rwxr-xr-xcomponents/cplusplus/crt_init.c27
-rw-r--r--components/dfs/include/dfs_private.h4
-rw-r--r--components/dfs/src/dfs_file.c2
-rw-r--r--components/drivers/misc/adc.c2
-rw-r--r--components/drivers/sdio/block_dev.c4
-rw-r--r--components/drivers/sdio/mmc.c2
-rw-r--r--components/drivers/sdio/mmcsd_core.c2
-rw-r--r--components/drivers/sdio/sd.c2
-rw-r--r--components/drivers/sdio/sdio.c2
-rw-r--r--components/drivers/sensors/sensor.c7
-rw-r--r--components/drivers/sensors/sensor.h6
-rw-r--r--components/drivers/sensors/sensor_cmd.c16
-rw-r--r--components/drivers/serial/serial.c7
-rw-r--r--components/drivers/spi/spi_flash_sfud.c130
-rw-r--r--components/drivers/spi/spi_flash_sfud.h11
-rw-r--r--components/drivers/wlan/wlan_cfg.c2
-rw-r--r--components/drivers/wlan/wlan_dev.c2
-rw-r--r--components/drivers/wlan/wlan_lwip.c2
-rw-r--r--components/drivers/wlan/wlan_mgnt.c5
-rw-r--r--components/drivers/wlan/wlan_prot.c2
-rw-r--r--components/drivers/wlan/wlan_workqueue.c2
-rw-r--r--components/finsh/SConscript9
-rw-r--r--components/libc/compilers/armlibc/SConscript2
-rw-r--r--components/libc/compilers/armlibc/stubs.c2
-rw-r--r--components/libc/libdl/dlelf.c2
-rw-r--r--components/libc/libdl/dlmodule.c2
-rw-r--r--components/net/at/Kconfig4
-rw-r--r--components/net/at/include/at_log.h3
-rw-r--r--components/net/lwip-1.4.1/src/arch/sys_arch.c4
-rw-r--r--components/net/lwip-1.4.1/src/include/netif/ethernetif.h40
-rw-r--r--components/net/lwip-1.4.1/src/netif/ethernetif.c4
-rw-r--r--components/net/lwip-2.0.2/src/include/netif/ethernetif.h40
-rw-r--r--components/net/lwip-2.0.2/src/netif/ethernetif.c4
-rw-r--r--components/net/lwip-2.1.0/src/arch/sys_arch.c6
-rw-r--r--components/net/lwip-2.1.0/src/include/netif/ethernetif.h40
-rw-r--r--components/net/lwip-2.1.0/src/netif/ethernetif.c14
-rw-r--r--components/net/sal_socket/socket/net_sockets.c62
-rw-r--r--components/net/sal_socket/src/sal_socket.c4
-rw-r--r--components/utilities/Kconfig6
-rw-r--r--components/utilities/ulog/ulog.c5
-rw-r--r--components/utilities/ulog/ulog_def.h2
-rw-r--r--components/utilities/utest/utest.c4
-rw-r--r--components/utilities/utest/utest_log.h4
-rw-r--r--components/utilities/ymodem/ymodem.c14
44 files changed, 306 insertions, 210 deletions
diff --git a/components/cplusplus/crt_init.c b/components/cplusplus/crt_init.c
index e67939feeb..3294b51a40 100755
--- a/components/cplusplus/crt_init.c
+++ b/components/cplusplus/crt_init.c
@@ -13,10 +13,10 @@
#include <rtthread.h>
-#ifdef __CC_ARM
+#if defined(__CC_ARM) || defined(__CLANG_ARM)
extern void $Super$$__cpp_initialize__aeabi_(void);
/* we need to change the cpp_initialize order */
-void $Sub$$__cpp_initialize__aeabi_(void)
+RT_WEAK void $Sub$$__cpp_initialize__aeabi_(void)
{
/* empty */
}
@@ -34,19 +34,9 @@ RT_WEAK void *__dso_handle = 0;
#endif
-RT_WEAK
-int cplusplus_system_init(void)
+RT_WEAK int cplusplus_system_init(void)
{
-#if defined(__GNUC__) && !defined(__CC_ARM)
- typedef void (*pfunc) ();
- extern pfunc __ctors_start__[];
- extern pfunc __ctors_end__[];
- pfunc *p;
-
- for (p = __ctors_start__; p < __ctors_end__; p++)
- (*p)();
-
-#elif defined(__CC_ARM)
+#if defined(__CC_ARM) || defined(__CLANG_ARM)
/* If there is no SHT$$INIT_ARRAY, calling
* $Super$$__cpp_initialize__aeabi_() will cause fault. At least until Keil5.12
* the problem still exists. So we have to initialize the C++ runtime by ourself.
@@ -63,9 +53,16 @@ int cplusplus_system_init(void)
PROC *proc = (PROC*)((const char*)base + *base);
(*proc)();
}
+#elif defined(__GNUC__)
+ typedef void(*pfunc) ();
+ extern pfunc __ctors_start__[];
+ extern pfunc __ctors_end__[];
+ pfunc *p;
+
+ for (p = __ctors_start__; p < __ctors_end__; p++)
+ (*p)();
#endif
return 0;
}
INIT_COMPONENT_EXPORT(cplusplus_system_init);
-
diff --git a/components/dfs/include/dfs_private.h b/components/dfs/include/dfs_private.h
index e20680d9df..bfc71b3b35 100644
--- a/components/dfs/include/dfs_private.h
+++ b/components/dfs/include/dfs_private.h
@@ -12,10 +12,8 @@
#include <dfs.h>
-// #define DBG_ENABLE
#define DBG_SECTION_NAME "DFS"
-#define DBG_COLOR
-#define DBG_LEVEL DBG_LOG
+#define DBG_LEVEL DBG_INFO
#include <rtdbg.h>
#define NO_WORKING_DIR "system does not support working directory\n"
diff --git a/components/dfs/src/dfs_file.c b/components/dfs/src/dfs_file.c
index b924b00d3f..b4f115ffc2 100644
--- a/components/dfs/src/dfs_file.c
+++ b/components/dfs/src/dfs_file.c
@@ -111,7 +111,7 @@ int dfs_file_open(struct dfs_fd *fd, const char *path, int flags)
fd->flags |= DFS_F_DIRECTORY;
}
- LOG_I("open successful");
+ LOG_D("open successful");
return 0;
}
diff --git a/components/drivers/misc/adc.c b/components/drivers/misc/adc.c
index 83e789a6e4..b2fd9ba430 100644
--- a/components/drivers/misc/adc.c
+++ b/components/drivers/misc/adc.c
@@ -15,10 +15,8 @@
#include <string.h>
#include <stdlib.h>
-#define DBG_ENABLE
#define DBG_SECTION_NAME "adc"
#define DBG_LEVEL DBG_INFO
-#define DBG_COLOR
#include <rtdbg.h>
static rt_size_t _adc_read(rt_device_t dev, rt_off_t pos, void *buffer, rt_size_t size)
diff --git a/components/drivers/sdio/block_dev.c b/components/drivers/sdio/block_dev.c
index 23be319fc6..dcfbc0ca7b 100644
--- a/components/drivers/sdio/block_dev.c
+++ b/components/drivers/sdio/block_dev.c
@@ -13,14 +13,12 @@
#include <drivers/mmcsd_core.h>
-#define DBG_ENABLE
#define DBG_SECTION_NAME "SDIO"
#ifdef RT_SDIO_DEBUG
#define DBG_LEVEL DBG_LOG
#else
#define DBG_LEVEL DBG_INFO
#endif /* RT_SDIO_DEBUG */
-#define DBG_COLOR
#include <rtdbg.h>
static rt_list_t blk_devices = RT_LIST_OBJECT_INIT(blk_devices);
@@ -369,7 +367,7 @@ rt_int32_t rt_mmcsd_blk_probe(struct rt_mmcsd_card *card)
return err;
}
- LOG_I("probe mmcsd block device!");
+ LOG_D("probe mmcsd block device!");
/* get the first sector to read partition table */
sector = (rt_uint8_t *)rt_malloc(SECTOR_SIZE);
diff --git a/components/drivers/sdio/mmc.c b/components/drivers/sdio/mmc.c
index bbf0ff838c..5f9259ef52 100644
--- a/components/drivers/sdio/mmc.c
+++ b/components/drivers/sdio/mmc.c
@@ -11,14 +11,12 @@
#include <drivers/mmcsd_core.h>
#include <drivers/mmc.h>
-#define DBG_ENABLE
#define DBG_SECTION_NAME "SDIO"
#ifdef RT_SDIO_DEBUG
#define DBG_LEVEL DBG_LOG
#else
#define DBG_LEVEL DBG_INFO
#endif /* RT_SDIO_DEBUG */
-#define DBG_COLOR
#include <rtdbg.h>
static const rt_uint32_t tran_unit[] =
diff --git a/components/drivers/sdio/mmcsd_core.c b/components/drivers/sdio/mmcsd_core.c
index d1f5978374..1618585f69 100644
--- a/components/drivers/sdio/mmcsd_core.c
+++ b/components/drivers/sdio/mmcsd_core.c
@@ -14,14 +14,12 @@
#include <drivers/mmc.h>
#include <drivers/sdio.h>
-#define DBG_ENABLE
#define DBG_SECTION_NAME "SDIO"
#ifdef RT_SDIO_DEBUG
#define DBG_LEVEL DBG_LOG
#else
#define DBG_LEVEL DBG_INFO
#endif /* RT_SDIO_DEBUG */
-#define DBG_COLOR
#include <rtdbg.h>
#ifndef RT_MMCSD_STACK_SIZE
diff --git a/components/drivers/sdio/sd.c b/components/drivers/sdio/sd.c
index 69a4561fb0..f4e925507c 100644
--- a/components/drivers/sdio/sd.c
+++ b/components/drivers/sdio/sd.c
@@ -11,14 +11,12 @@
#include <drivers/mmcsd_core.h>
#include <drivers/sd.h>
-#define DBG_ENABLE
#define DBG_SECTION_NAME "SDIO"
#ifdef RT_SDIO_DEBUG
#define DBG_LEVEL DBG_LOG
#else
#define DBG_LEVEL DBG_INFO
#endif /* RT_SDIO_DEBUG */
-#define DBG_COLOR
#include <rtdbg.h>
static const rt_uint32_t tran_unit[] =
diff --git a/components/drivers/sdio/sdio.c b/components/drivers/sdio/sdio.c
index 6045c4ade8..b0516704fd 100644
--- a/components/drivers/sdio/sdio.c
+++ b/components/drivers/sdio/sdio.c
@@ -12,14 +12,12 @@
#include <drivers/sdio.h>
#include <drivers/sd.h>
-#define DBG_ENABLE
#define DBG_SECTION_NAME "SDIO"
#ifdef RT_SDIO_DEBUG
#define DBG_LEVEL DBG_LOG
#else
#define DBG_LEVEL DBG_INFO
#endif /* RT_SDIO_DEBUG */
-#define DBG_COLOR
#include <rtdbg.h>
#ifndef RT_SDIO_STACK_SIZE
diff --git a/components/drivers/sensors/sensor.c b/components/drivers/sensors/sensor.c
index 0c21f04b6f..ec1ad98fb6 100644
--- a/components/drivers/sensors/sensor.c
+++ b/components/drivers/sensors/sensor.c
@@ -10,10 +10,8 @@
#include "sensor.h"
-#define DBG_ENABLE
#define DBG_LEVEL DBG_INFO
#define DBG_SECTION_NAME "sensor"
-#define DBG_COLOR
#include <rtdbg.h>
#include <string.h>
@@ -45,6 +43,11 @@ void rt_sensor_cb(rt_sensor_t sen)
{
return;
}
+
+ if (sen->irq_handle != RT_NULL)
+ {
+ sen->irq_handle(sen);
+ }
/* The buffer is not empty. Read the data in the buffer first */
if (sen->data_len > 0)
diff --git a/components/drivers/sensors/sensor.h b/components/drivers/sensors/sensor.h
index fd437e4e09..94650ea886 100644
--- a/components/drivers/sensors/sensor.h
+++ b/components/drivers/sensors/sensor.h
@@ -68,6 +68,7 @@ extern "C" {
#define RT_SENSOR_UNIT_HZ (9) /* Frequency unit: HZ */
#define RT_SENSOR_UNIT_ONE (10) /* Dimensionless quantity unit: 1 */
#define RT_SENSOR_UNIT_BPM (11) /* Heart rate unit: bpm */
+#define RT_SENSOR_UNIT_MM (12) /* Distance unit: mm */
/* Sensor communication interface types */
@@ -131,6 +132,8 @@ struct rt_sensor_config
rt_int32_t range; /* sensor range of measurement */
};
+typedef struct rt_sensor_device *rt_sensor_t;
+
struct rt_sensor_device
{
struct rt_device parent; /* The standard device */
@@ -144,8 +147,9 @@ struct rt_sensor_device
const struct rt_sensor_ops *ops; /* The sensor ops */
struct rt_sensor_module *module; /* The sensor module */
+
+ rt_err_t (*irq_handle)(rt_sensor_t sensor); /* Called when an interrupt is generated, registered by the driver */
};
-typedef struct rt_sensor_device *rt_sensor_t;
struct rt_sensor_module
{
diff --git a/components/drivers/sensors/sensor_cmd.c b/components/drivers/sensors/sensor_cmd.c
index b6dd471988..4658a42722 100644
--- a/components/drivers/sensors/sensor_cmd.c
+++ b/components/drivers/sensors/sensor_cmd.c
@@ -10,10 +10,8 @@
#include "sensor.h"
-#define DBG_ENABLE
#define DBG_LEVEL DBG_INFO
#define DBG_SECTION_NAME "sensor.cmd"
-#define DBG_COLOR
#include <rtdbg.h>
#include <stdlib.h>
@@ -46,6 +44,9 @@ static void sensor_show_data(rt_size_t num, rt_sensor_t sensor, struct rt_sensor
case RT_SENSOR_CLASS_STEP:
LOG_I("num:%3d, step:%5d, timestamp:%5d", num, sensor_data->data.step, sensor_data->timestamp);
break;
+ case RT_SENSOR_CLASS_PROXIMITY:
+ LOG_I("num:%3d, distance:%5d, timestamp:%5d", num, sensor_data->data.proximity, sensor_data->timestamp);
+ break;
default:
break;
}
@@ -98,6 +99,12 @@ static void sensor_fifo(int argc, char **argv)
return;
}
sensor = (rt_sensor_t)dev;
+
+ if (rt_device_open(dev, RT_DEVICE_FLAG_FIFO_RX) != RT_EOK)
+ {
+ LOG_E("open device failed!");
+ return;
+ }
if (sensor_rx_sem == RT_NULL)
{
@@ -119,11 +126,6 @@ static void sensor_fifo(int argc, char **argv)
rt_device_set_rx_indicate(dev, rx_callback);
- if (rt_device_open(dev, RT_DEVICE_FLAG_FIFO_RX) != RT_EOK)
- {
- LOG_E("open device failed!");
- return;
- }
rt_device_control(dev, RT_SENSOR_CTRL_SET_ODR, (void *)20);
}
#ifdef FINSH_USING_MSH
diff --git a/components/drivers/serial/serial.c b/components/drivers/serial/serial.c
index a03e4a719e..13bf54e721 100644
--- a/components/drivers/serial/serial.c
+++ b/components/drivers/serial/serial.c
@@ -28,10 +28,8 @@
#include <rtthread.h>
#include <rtdevice.h>
-// #define DEBUG_ENABLE
-#define DEBUG_LEVEL DBG_LOG
+#define DBG_LEVEL DBG_INFO
#define DBG_SECTION_NAME "UART"
-#define DEBUG_COLOR
#include <rtdbg.h>
#ifdef RT_USING_POSIX
@@ -882,6 +880,7 @@ static int _get_baudrate(speed_t speed)
static void _tc_flush(struct rt_serial_device *serial, int queue)
{
+ rt_base_t level;
int ch = -1;
struct rt_serial_rx_fifo *rx_fifo = RT_NULL;
struct rt_device *device = RT_NULL;
@@ -901,10 +900,12 @@ static void _tc_flush(struct rt_serial_device *serial, int queue)
if((device->open_flag & RT_DEVICE_FLAG_INT_RX) || (device->open_flag & RT_DEVICE_FLAG_DMA_RX))
{
RT_ASSERT(RT_NULL != rx_fifo);
+ level = rt_hw_interrupt_disable();
rt_memset(rx_fifo->buffer, 0, serial->config.bufsz);
rx_fifo->put_index = 0;
rx_fifo->get_index = 0;
rx_fifo->is_full = RT_FALSE;
+ rt_hw_interrupt_enable(level);
}
else
{
diff --git a/components/drivers/spi/spi_flash_sfud.c b/components/drivers/spi/spi_flash_sfud.c
index 4f9b7abd57..7fa7de6ad5 100644
--- a/components/drivers/spi/spi_flash_sfud.c
+++ b/components/drivers/spi/spi_flash_sfud.c
@@ -46,7 +46,7 @@ static char log_buf[RT_CONSOLEBUF_SIZE];
void sfud_log_debug(const char *file, const long line, const char *format, ...);
static rt_err_t rt_sfud_control(rt_device_t dev, int cmd, void *args) {
- RT_ASSERT(dev != RT_NULL);
+ RT_ASSERT(dev);
switch (cmd) {
case RT_DEVICE_CTRL_BLK_GETGEOME: {
@@ -93,6 +93,10 @@ static rt_err_t rt_sfud_control(rt_device_t dev, int cmd, void *args) {
static rt_size_t rt_sfud_read(rt_device_t dev, rt_off_t pos, void* buffer, rt_size_t size) {
struct spi_flash_device *rtt_dev = (struct spi_flash_device *) (dev->user_data);
sfud_flash *sfud_dev = (sfud_flash *) (rtt_dev->user_data);
+
+ RT_ASSERT(dev);
+ RT_ASSERT(rtt_dev);
+ RT_ASSERT(sfud_dev);
/* change the block device's logic address to physical address */
rt_off_t phy_pos = pos * rtt_dev->geometry.bytes_per_sector;
rt_size_t phy_size = size * rtt_dev->geometry.bytes_per_sector;
@@ -107,6 +111,10 @@ static rt_size_t rt_sfud_read(rt_device_t dev, rt_off_t pos, void* buffer, rt_si
static rt_size_t rt_sfud_write(rt_device_t dev, rt_off_t pos, const void* buffer, rt_size_t size) {
struct spi_flash_device *rtt_dev = (struct spi_flash_device *) (dev->user_data);
sfud_flash *sfud_dev = (sfud_flash *) (rtt_dev->user_data);
+
+ RT_ASSERT(dev);
+ RT_ASSERT(rtt_dev);
+ RT_ASSERT(sfud_dev);
/* change the block device's logic address to physical address */
rt_off_t phy_pos = pos * rtt_dev->geometry.bytes_per_sector;
rt_size_t phy_size = size * rtt_dev->geometry.bytes_per_sector;
@@ -126,6 +134,10 @@ static sfud_err spi_write_read(const sfud_spi *spi, const uint8_t *write_buf, si
sfud_err result = SFUD_SUCCESS;
sfud_flash *sfud_dev = (sfud_flash *) (spi->user_data);
struct spi_flash_device *rtt_dev = (struct spi_flash_device *) (sfud_dev->user_data);
+
+ RT_ASSERT(spi);
+ RT_ASSERT(sfud_dev);
+ RT_ASSERT(rtt_dev);
#ifdef SFUD_USING_QSPI
struct rt_qspi_device *qspi_dev = RT_NULL;
#endif
@@ -180,7 +192,12 @@ static sfud_err qspi_read(const struct __sfud_spi *spi, uint32_t addr, sfud_qspi
sfud_flash *sfud_dev = (sfud_flash *) (spi->user_data);
struct spi_flash_device *rtt_dev = (struct spi_flash_device *) (sfud_dev->user_data);
struct rt_qspi_device *qspi_dev = (struct rt_qspi_device *) (rtt_dev->rt_spi_device);
-
+
+ RT_ASSERT(spi);
+ RT_ASSERT(sfud_dev);
+ RT_ASSERT(rtt_dev);
+ RT_ASSERT(qspi_dev);
+
/* set message struct */
message.instruction.content = qspi_read_cmd_format->instruction;
message.instruction.qspi_lines = qspi_read_cmd_format->instruction_lines;
@@ -201,11 +218,11 @@ static sfud_err qspi_read(const struct __sfud_spi *spi, uint32_t addr, sfud_qspi
message.parent.cs_release = 1;
message.parent.cs_take = 1;
message.qspi_data_lines = qspi_read_cmd_format->data_lines;
-
+
if (rt_qspi_transfer_message(qspi_dev, &message) != read_size) {
result = SFUD_ERR_TIMEOUT;
}
-
+
return result;
}
#endif
@@ -214,6 +231,10 @@ static void spi_lock(const sfud_spi *spi) {
sfud_flash *sfud_dev = (sfud_flash *) (spi->user_data);
struct spi_flash_device *rtt_dev = (struct spi_flash_device *) (sfud_dev->user_data);
+ RT_ASSERT(spi);
+ RT_ASSERT(sfud_dev);
+ RT_ASSERT(rtt_dev);
+
rt_mutex_take(&(rtt_dev->lock), RT_WAITING_FOREVER);
}
@@ -221,6 +242,10 @@ static void spi_unlock(const sfud_spi *spi) {
sfud_flash *sfud_dev = (sfud_flash *) (spi->user_data);
struct spi_flash_device *rtt_dev = (struct spi_flash_device *) (sfud_dev->user_data);
+ RT_ASSERT(spi);
+ RT_ASSERT(sfud_dev);
+ RT_ASSERT(rtt_dev);
+
rt_mutex_release(&(rtt_dev->lock));
}
@@ -270,6 +295,8 @@ void sfud_log_info(const char *format, ...) {
sfud_err sfud_spi_port_init(sfud_flash *flash) {
sfud_err result = SFUD_SUCCESS;
+ RT_ASSERT(flash);
+
/* port SPI device interface */
flash->spi.wr = spi_write_read;
#ifdef SFUD_USING_QSPI
@@ -285,7 +312,7 @@ sfud_err sfud_spi_port_init(sfud_flash *flash) {
flash->retry.delay = retry_delay_100us;
/* 60 seconds timeout */
flash->retry.times = 60 * 10000;
-
+
return result;
}
@@ -361,7 +388,7 @@ rt_spi_flash_device_t rt_sfud_flash_probe(const char *spi_flash_dev_name, const
rt_qspi_configure(qspi_dev, &qspi_cfg);
}
else
-#endif
+#endif
rt_spi_configure(rtt_dev->rt_spi_device, &cfg);
}
/* SFUD flash device initialize */
@@ -461,27 +488,46 @@ sfud_flash_t rt_sfud_flash_find(const char *spi_dev_name)
rt_spi_flash_device_t rtt_dev = RT_NULL;
struct rt_spi_device *rt_spi_device = RT_NULL;
sfud_flash_t sfud_dev = RT_NULL;
-
+
rt_spi_device = (struct rt_spi_device *) rt_device_find(spi_dev_name);
- if (rt_spi_device == RT_NULL || rt_spi_device->parent.type != RT_Device_Class_SPIDevice)
- {
+ if (rt_spi_device == RT_NULL || rt_spi_device->parent.type != RT_Device_Class_SPIDevice) {
rt_kprintf("ERROR: SPI device %s not found!\n", spi_dev_name);
- goto error;
+ goto __error;
}
- rtt_dev = (rt_spi_flash_device_t)(rt_spi_device->user_data);
- if (rtt_dev && rtt_dev->user_data)
- {
- sfud_dev = (sfud_flash_t)(rtt_dev->user_data);
+ rtt_dev = (rt_spi_flash_device_t) (rt_spi_device->user_data);
+ if (rtt_dev && rtt_dev->user_data) {
+ sfud_dev = (sfud_flash_t) (rtt_dev->user_data);
return sfud_dev;
+ } else {
+ rt_kprintf("ERROR: SFUD flash device not found!\n");
+ goto __error;
}
- else
- {
+
+__error:
+ return RT_NULL;
+}
+
+sfud_flash_t rt_sfud_flash_find_by_dev_name(const char *flash_dev_name)
+{
+ rt_spi_flash_device_t rtt_dev = RT_NULL;
+ sfud_flash_t sfud_dev = RT_NULL;
+
+ rtt_dev = (rt_spi_flash_device_t) rt_device_find(flash_dev_name);
+ if (rtt_dev == RT_NULL || rtt_dev->flash_device.type != RT_Device_Class_Block) {
+ rt_kprintf("ERROR: Flash device %s not found!\n", flash_dev_name);
+ goto __error;
+ }
+
+ if (rtt_dev->user_data) {
+ sfud_dev = (sfud_flash_t) (rtt_dev->user_data);
+ return sfud_dev;
+ } else {
rt_kprintf("ERROR: SFUD flash device not found!\n");
- goto error;
+ goto __error;
}
-error:
+__error:
return RT_NULL;
}
@@ -491,6 +537,8 @@ error:
static void sf(uint8_t argc, char **argv) {
+#define __is_print(ch) ((unsigned int)((ch) - ' ') < 127u - ' ')
+#define HEXDUMP_WIDTH 16
#define CMD_PROBE_INDEX 0
#define CMD_READ_INDEX 1
#define CMD_WRITE_INDEX 2
@@ -501,7 +549,7 @@ static void sf(uint8_t argc, char **argv) {
sfud_err result = SFUD_SUCCESS;
static const sfud_flash *sfud_dev = NULL;
static rt_spi_flash_device_t rtt_dev = NULL, rtt_dev_bak = NULL;
- size_t i = 0;
+ size_t i = 0, j = 0;
const char* sf_help_info[] = {
[CMD_PROBE_INDEX] = "sf probe [spi_device] - probe and init SPI flash by given 'spi_device'",
@@ -528,12 +576,12 @@ static void sf(uint8_t argc, char **argv) {
} else {
char *spi_dev_name = argv[2];
rtt_dev_bak = rtt_dev;
-
+
/* delete the old SPI flash device */
if(rtt_dev_bak) {
rt_sfud_flash_delete(rtt_dev_bak);
}
-
+
rtt_dev = rt_sfud_flash_probe("sf_cmd", spi_dev_name);
if (!rtt_dev) {
return;
@@ -557,8 +605,8 @@ static void sf(uint8_t argc, char **argv) {
rt_kprintf("Usage: %s.\n", sf_help_info[CMD_READ_INDEX]);
return;
} else {
- addr = atol(argv[2]);
- size = atol(argv[3]);
+ addr = strtol(argv[2], NULL, 0);
+ size = strtol(argv[3], NULL, 0);
uint8_t *data = rt_malloc(size);
if (data) {
result = sfud_read(sfud_dev, addr, size, data);
@@ -566,14 +614,24 @@ static void sf(uint8_t argc, char **argv) {
rt_kprintf("Read the %s flash data success. Start from 0x%08X, size is %ld. The data is:\n",
sfud_dev->name, addr, size);
rt_kprintf("Offset (h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F\n");
- for (i = 0; i < size; i++) {
- if (i % 16 == 0) {
- rt_kprintf("[%08X] ", addr + i);
+ for (i = 0; i < size; i += HEXDUMP_WIDTH)
+ {
+ rt_kprintf("[%08X] ", addr + i);
+ /* dump hex */
+ for (j = 0; j < HEXDUMP_WIDTH; j++) {
+ if (i + j < size) {
+ rt_kprintf("%02X ", data[i + j]);
+ } else {
+ rt_kprintf(" ");
+ }
}
- rt_kprintf("%02X ", data[i]);
- if (((i + 1) % 16 == 0) || i == size - 1) {
- rt_kprintf("\n");
+ /* dump char for hex */
+ for (j = 0; j < HEXDUMP_WIDTH; j++) {
+ if (i + j < size) {
+ rt_kprintf("%c", __is_print(data[i + j]) ? data[i + j] : '.');
+ }
}
+ rt_kprintf("\n");
}
rt_kprintf("\n");
}
@@ -587,12 +645,12 @@ static void sf(uint8_t argc, char **argv) {
rt_kprintf("Usage: %s.\n", sf_help_info[CMD_WRITE_INDEX]);
return;
} else {
- addr = atol(argv[2]);
+ addr = strtol(argv[2], NULL, 0);
size = argc - 3;
uint8_t *data = rt_malloc(size);
if (data) {
for (i = 0; i < size; i++) {
- data[i] = atoi(argv[3 + i]);
+ data[i] = strtol(argv[3 + i], NULL, 0);
}
result = sfud_write(sfud_dev, addr, size, data);
if (result == SFUD_SUCCESS) {
@@ -614,8 +672,8 @@ static void sf(uint8_t argc, char **argv) {
rt_kprintf("Usage: %s.\n", sf_help_info[CMD_ERASE_INDEX]);
return;
} else {
- addr = atol(argv[2]);
- size = atol(argv[3]);
+ addr = strtol(argv[2], NULL, 0);
+ size = strtol(argv[3], NULL, 0);
result = sfud_erase(sfud_dev, addr, size);
if (result == SFUD_SUCCESS) {
rt_kprintf("Erase the %s flash data success. Start from 0x%08X, size is %ld.\n", sfud_dev->name,
@@ -630,8 +688,8 @@ static void sf(uint8_t argc, char **argv) {
rt_kprintf("The %s flash status register current value is 0x%02X.\n", sfud_dev->name, status);
}
} else if (argc == 4) {
- bool is_volatile = atoi(argv[2]);
- uint8_t status = atoi(argv[3]);
+ bool is_volatile = strtol(argv[2], NULL, 0);
+ uint8_t status = strtol(argv[3], NULL, 0);
result = sfud_write_status(sfud_dev, is_volatile, status);
if (result == SFUD_SUCCESS) {
rt_kprintf("Write the %s flash status register to 0x%02X success.\n", sfud_dev->name, status);
@@ -696,7 +754,7 @@ static void sf(uint8_t argc, char **argv) {
rt_kprintf("Data check ERROR! Please check you flash by other command.\n");
result = SFUD_ERR_READ;
}
-
+
if (result != SFUD_SUCCESS) {
break;
}
diff --git a/components/drivers/spi/spi_flash_sfud.h b/components/drivers/spi/spi_flash_sfud.h
index af1ed58790..490f2feadb 100644
--- a/components/drivers/spi/spi_flash_sfud.h
+++ b/components/drivers/spi/spi_flash_sfud.h
@@ -36,7 +36,7 @@ rt_spi_flash_device_t rt_sfud_flash_probe(const char *spi_flash_dev_name, const
rt_err_t rt_sfud_flash_delete(rt_spi_flash_device_t spi_flash_dev);
/**
- * Find sfud flash device
+ * Find sfud flash device by SPI device name
*
* @param spi_dev_name using SPI device name
*
@@ -44,4 +44,13 @@ rt_err_t rt_sfud_flash_delete(rt_spi_flash_device_t spi_flash_dev);
*/
sfud_flash_t rt_sfud_flash_find(const char *spi_dev_name);
+/**
+ * Find sfud flash device by flash device name
+ *
+ * @param flash_dev_name using flash device name
+ *
+ * @return sfud flash device if success, otherwise return RT_NULL
+ */
+sfud_flash_t rt_sfud_flash_find_by_dev_name(const char *flash_dev_name);
+
#endif /* _SPI_FLASH_SFUD_H_ */
diff --git a/components/drivers/wlan/wlan_cfg.c b/components/drivers/wlan/wlan_cfg.c
index 27da9bc24e..00e9dbc83e 100644
--- a/components/drivers/wlan/wlan_cfg.c
+++ b/components/drivers/wlan/wlan_cfg.c
@@ -11,14 +11,12 @@
#include <rtthread.h>
#include <wlan_cfg.h>
-#define DBG_ENABLE
#ifdef RT_WLAN_CFG_DEBUG
#define DBG_LEVEL DBG_LOG
#else
#define DBG_LEVEL DBG_INFO
#endif
#define DBG_SECTION_NAME "WLAN.cfg"
-#define DBG_COLOR
#include <rtdbg.h>
#define WLAN_CFG_LOCK() (rt_mutex_take(&cfg_mutex, RT_WAITING_FOREVER))
diff --git a/components/drivers/wlan/wlan_dev.c b/components/drivers/wlan/wlan_dev.c
index eac1d0f975..3f4adf35ad 100644
--- a/components/drivers/wlan/wlan_dev.c
+++ b/components/drivers/wlan/wlan_dev.c
@@ -13,14 +13,12 @@
#include <wlan_dev.h>
#include <wlan_prot.h>
-#define DBG_ENABLE
#ifdef RT_WLAN_DEV_DEBUG
#define DBG_LEVEL DBG_LOG
#else
#define DBG_LEVEL DBG_INFO
#endif
#define DBG_SECTION_NAME "WLAN.dev"
-#define DBG_COLOR
#include <rtdbg.h>
#ifndef RT_DEVICE
diff --git a/components/drivers/wlan/wlan_lwip.c b/components/drivers/wlan/wlan_lwip.c
index 2f8bcefd0d..052c2afd2e 100644
--- a/components/drivers/wlan/wlan_lwip.c
+++ b/components/drivers/wlan/wlan_lwip.c
@@ -21,14 +21,12 @@
#include <dhcp_server.h>
#endif
-#define DBG_ENABLE
#ifdef RT_WLAN_LWIP_DEBUG
#define DBG_LEVEL DBG_LOG
#else
#define DBG_LEVEL DBG_INFO
#endif
#define DBG_SECTION_NAME "WLAN.lwip"
-#define DBG_COLOR
#include <rtdbg.h>
#ifndef IPADDR_STRLEN_MAX
diff --git a/components/drivers/wlan/wlan_mgnt.c b/components/drivers/wlan/wlan_mgnt.c
index bdddac1fa2..ced5bfa1c2 100644
--- a/components/drivers/wlan/wlan_mgnt.c
+++ b/components/drivers/wlan/wlan_mgnt.c
@@ -16,14 +16,13 @@
#include <wlan_prot.h>
#include <wlan_workqueue.h>
-#define DBG_ENABLE
+
#ifdef RT_WLAN_MGNT_DEBUG
#define DBG_LEVEL DBG_LOG
#else
#define DBG_LEVEL DBG_INFO
#endif
#define DBG_SECTION_NAME "WLAN.mgnt"
-#define DBG_COLOR
#include <rtdbg.h>
#ifndef RT_WLAN_DEVICE
@@ -1800,7 +1799,7 @@ rt_err_t rt_wlan_register_event_handler(rt_wlan_event_t event, rt_wlan_event_han
}
RT_WLAN_LOG_D("%s is run event:%d", __FUNCTION__, event);
- MGNT_UNLOCK();
+ MGNT_LOCK();
/* Registering Callbacks */
level = rt_hw_interrupt_disable();
event_tab[event].handler = handler;
diff --git a/components/drivers/wlan/wlan_prot.c b/components/drivers/wlan/wlan_prot.c
index ec5e419bc4..48adbc48f3 100644
--- a/components/drivers/wlan/wlan_prot.c
+++ b/components/drivers/wlan/wlan_prot.c
@@ -13,14 +13,12 @@
#include <wlan_dev.h>
#include <wlan_prot.h>
-#define DBG_ENABLE
#ifdef RT_WLAN_PROT_DEBUG
#define DBG_LEVEL DBG_LOG
#else
#define DBG_LEVEL DBG_INFO
#endif
#define DBG_SECTION_NAME "WLAN.prot"
-#define DBG_COLOR
#include <rtdbg.h>
#if RT_WLAN_PROT_NAME_LEN < 4
diff --git a/components/drivers/wlan/wlan_workqueue.c b/components/drivers/wlan/wlan_workqueue.c
index f65ac95d08..23823afae0 100644
--- a/components/drivers/wlan/wlan_workqueue.c
+++ b/components/drivers/wlan/wlan_workqueue.c
@@ -13,10 +13,8 @@
#include <wlan_workqueue.h>
#include <ipc/workqueue.h>
-#define DBG_ENABLE
#define DBG_LEVEL DBG_INFO
#define DBG_SECTION_NAME "WLAN.work"
-#define DBG_COLOR
#include <rtdbg.h>
struct rt_wlan_work
diff --git a/components/finsh/SConscript b/components/finsh/SConscript
index 639cbebd4a..e1e2b3bbdb 100644
--- a/components/finsh/SConscript
+++ b/components/finsh/SConscript
@@ -28,19 +28,12 @@ msh_file.c
''')
CPPPATH = [cwd]
-if rtconfig.CROSS_TOOL == 'keil':
- LINKFLAGS = ' --keep *.o(FSymTab)'
-
- if not GetDepend('FINSH_USING_MSH_ONLY'):
- LINKFLAGS = LINKFLAGS + ' --keep *.o(VSymTab) '
-else:
- LINKFLAGS = ''
if GetDepend('FINSH_USING_MSH'):
src = src + msh_src
if not GetDepend('FINSH_USING_MSH_ONLY'):
src = src + fsh_src
-group = DefineGroup('finsh', src, depend = ['RT_USING_FINSH'], CPPPATH = CPPPATH, LINKFLAGS = LINKFLAGS)
+group = DefineGroup('finsh', src, depend = ['RT_USING_FINSH'], CPPPATH = CPPPATH)
Return('group')
diff --git a/components/libc/compilers/armlibc/SConscript b/components/libc/compilers/armlibc/SConscript
index 081efa7358..52f7a6d93a 100644
--- a/components/libc/compilers/armlibc/SConscript
+++ b/components/libc/compilers/armlibc/SConscript
@@ -14,7 +14,7 @@ if GetDepend('RT_USING_DFS') == False:
if GetDepend('RT_USING_MODULE') == False:
SrcRemove(src, ['libc_syms.c'])
-if rtconfig.PLATFORM == 'armcc':
+if rtconfig.PLATFORM == 'armcc' or rtconfig.PLATFORM == 'armclang':
group = DefineGroup('libc', src, depend = ['RT_USING_LIBC'],
CPPPATH = CPPPATH, CPPDEFINES = CPPDEFINES)
diff --git a/components/libc/compilers/armlibc/stubs.c b/components/libc/compilers/armlibc/stubs.c
index 555108f712..b6ffb37b0f 100644
--- a/components/libc/compilers/armlibc/stubs.c
+++ b/components/libc/compilers/armlibc/stubs.c
@@ -251,7 +251,7 @@ void _ttywrch(int ch)
#endif
}
-void _sys_exit(int return_code)
+RT_WEAK void _sys_exit(int return_code)
{
/* TODO: perhaps exit the thread which is invoking this function */
while (1);
diff --git a/components/libc/libdl/dlelf.c b/components/libc/libdl/dlelf.c
index 6d83424b80..4557ee3458 100644
--- a/components/libc/libdl/dlelf.c
+++ b/components/libc/libdl/dlelf.c
@@ -12,9 +12,7 @@
#include "dlelf.h"
#define DBG_SECTION_NAME "DLMD"
-#define DBG_ENABLE // enable debug macro
#define DBG_LEVEL DBG_INFO
-#define DBG_COLOR
#include <rtdbg.h> // must after of DEBUG_ENABLE or some other options
rt_err_t dlmodule_load_shared_object(struct rt_dlmodule* module, void *module_ptr)
diff --git a/components/libc/libdl/dlmodule.c b/components/libc/libdl/dlmodule.c
index 61ffbfc772..0029c01728 100644
--- a/components/libc/libdl/dlmodule.c
+++ b/components/libc/libdl/dlmodule.c
@@ -17,9 +17,7 @@
#include <dfs_posix.h>
#define DBG_SECTION_NAME "DLMD"
-#define DBG_ENABLE // enable debug macro
#define DBG_LEVEL DBG_INFO
-#define DBG_COLOR
#include <rtdbg.h> // must after of DEBUG_ENABLE or some other options
static struct rt_module_symtab *_rt_module_symtab_begin = RT_NULL;
diff --git a/components/net/at/Kconfig b/components/net/at/Kconfig
index a1f1b8199d..b1909f86bf 100644
--- a/components/net/at/Kconfig
+++ b/components/net/at/Kconfig
@@ -74,6 +74,10 @@ if RT_USING_AT
config AT_PRINT_RAW_CMD
bool "Enable print RAW format AT command communication data"
default n
+
+ config AT_CMD_MAX_LEN
+ int "The maximum lenght of AT Commonds buffer"
+ default 128
endif
diff --git a/components/net/at/include/at_log.h b/components/net/at/include/at_log.h
index 278763d30e..fe8766ba95 100644
--- a/components/net/at/include/at_log.h
+++ b/components/net/at/include/at_log.h
@@ -12,9 +12,6 @@
* NOTE: DO NOT include this file on the header file.
*/
-#define DBG_ENABLE
-#define DBG_COLOR
-
#ifndef LOG_TAG
#define DBG_SECTION_NAME "at"
#else
diff --git a/components/net/lwip-1.4.1/src/arch/sys_arch.c b/components/net/lwip-1.4.1/src/arch/sys_arch.c
index 45c09e6137..dc20ee97a1 100644
--- a/components/net/lwip-1.4.1/src/arch/sys_arch.c
+++ b/components/net/lwip-1.4.1/src/arch/sys_arch.c
@@ -500,7 +500,9 @@ u32_t sys_arch_mbox_fetch(sys_mbox_t *mbox, void **msg, u32_t timeout)
ret = rt_mb_recv(*mbox, (rt_uint32_t *)msg, t);
if(ret == -RT_ETIMEOUT)
+ {
return SYS_ARCH_TIMEOUT;
+ }
else
{
LWIP_ASSERT("rt_mb_recv returned with error!", ret == RT_EOK);
@@ -531,7 +533,9 @@ u32_t sys_arch_mbox_tryfetch(sys_mbox_t *mbox, void **msg)
ret = rt_mb_recv(*mbox, (rt_uint32_t *)msg, 0);
if(ret == -RT_ETIMEOUT)
+ {
return SYS_ARCH_TIMEOUT;
+ }
else
{
if (ret == RT_EOK)
diff --git a/components/net/lwip-1.4.1/src/include/netif/ethernetif.h b/components/net/lwip-1.4.1/src/include/netif/ethernetif.h
index bdad32ec20..1c969e6e25 100644
--- a/components/net/lwip-1.4.1/src/include/netif/ethernetif.h
+++ b/components/net/lwip-1.4.1/src/include/netif/ethernetif.h
@@ -17,27 +17,35 @@
struct eth_device
{
- /* inherit from rt_device */
- struct rt_device parent;
+ /* inherit from rt_device */
+ struct rt_device parent;
- /* network interface for lwip */
- struct netif *netif;
- struct rt_semaphore tx_ack;
+ /* network interface for lwip */
+ struct netif *netif;
+ struct rt_semaphore tx_ack;
- rt_uint16_t flags;
- rt_uint8_t link_changed;
- rt_uint8_t link_status;
+ rt_uint16_t flags;
+ rt_uint8_t link_changed;
+ rt_uint8_t link_status;
- /* eth device interface */
- struct pbuf* (*eth_rx)(rt_device_t dev);
- rt_err_t (*eth_tx)(rt_device_t dev, struct pbuf* p);
+ /* eth device interface */
+ struct pbuf* (*eth_rx)(rt_device_t dev);
+ rt_err_t (*eth_tx)(rt_device_t dev, struct pbuf* p);
};
-rt_err_t eth_device_ready(struct eth_device* dev);
-rt_err_t eth_device_init(struct eth_device * dev, char *name);
-rt_err_t eth_device_init_with_flag(struct eth_device *dev, char *name, rt_uint16_t flag);
-rt_err_t eth_device_linkchange(struct eth_device* dev, rt_bool_t up);
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+ rt_err_t eth_device_ready(struct eth_device* dev);
+ rt_err_t eth_device_init(struct eth_device * dev, const char *name);
+ rt_err_t eth_device_init_with_flag(struct eth_device *dev, const char *name, rt_uint16_t flag);
+ rt_err_t eth_device_linkchange(struct eth_device* dev, rt_bool_t up);
-int eth_system_device_init(void);
+ int eth_system_device_init(void);
+
+#ifdef __cplusplus
+}
+#endif
#endif /* __NETIF_ETHERNETIF_H__ */
diff --git a/components/net/lwip-1.4.1/src/netif/ethernetif.c b/components/net/lwip-1.4.1/src/netif/ethernetif.c
index 943d95f9ed..506f15b44c 100644
--- a/components/net/lwip-1.4.1/src/netif/ethernetif.c
+++ b/components/net/lwip-1.4.1/src/netif/ethernetif.c
@@ -177,7 +177,7 @@ static err_t eth_netif_device_init(struct netif *netif)
}
/* Keep old drivers compatible in RT-Thread */
-rt_err_t eth_device_init_with_flag(struct eth_device *dev, char *name, rt_uint16_t flags)
+rt_err_t eth_device_init_with_flag(struct eth_device *dev, const char *name, rt_uint16_t flags)
{
struct netif* netif;
@@ -242,7 +242,7 @@ rt_err_t eth_device_init_with_flag(struct eth_device *dev, char *name, rt_uint16
return RT_EOK;
}
-rt_err_t eth_device_init(struct eth_device * dev, char *name)
+rt_err_t eth_device_init(struct eth_device * dev, const char *name)
{
rt_uint16_t flags = NETIF_FLAG_BROADCAST | NETIF_FLAG_ETHARP;
diff --git a/components/net/lwip-2.0.2/src/include/netif/ethernetif.h b/components/net/lwip-2.0.2/src/include/netif/ethernetif.h
index bdad32ec20..1c969e6e25 100644
--- a/components/net/lwip-2.0.2/src/include/netif/ethernetif.h
+++ b/components/net/lwip-2.0.2/src/include/netif/ethernetif.h
@@ -17,27 +17,35 @@
struct eth_device
{
- /* inherit from rt_device */
- struct rt_device parent;
+ /* inherit from rt_device */
+ struct rt_device parent;
- /* network interface for lwip */
- struct netif *netif;
- struct rt_semaphore tx_ack;
+ /* network interface for lwip */
+ struct netif *netif;
+ struct rt_semaphore tx_ack;
- rt_uint16_t flags;
- rt_uint8_t link_changed;
- rt_uint8_t link_status;
+ rt_uint16_t flags;
+ rt_uint8_t link_changed;
+ rt_uint8_t link_status;
- /* eth device interface */
- struct pbuf* (*eth_rx)(rt_device_t dev);
- rt_err_t (*eth_tx)(rt_device_t dev, struct pbuf* p);
+ /* eth device interface */
+ struct pbuf* (*eth_rx)(rt_device_t dev);
+ rt_err_t (*eth_tx)(rt_device_t dev, struct pbuf* p);
};
-rt_err_t eth_device_ready(struct eth_device* dev);
-rt_err_t eth_device_init(struct eth_device * dev, char *name);
-rt_err_t eth_device_init_with_flag(struct eth_device *dev, char *name, rt_uint16_t flag);
-rt_err_t eth_device_linkchange(struct eth_device* dev, rt_bool_t up);
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+ rt_err_t eth_device_ready(struct eth_device* dev);
+ rt_err_t eth_device_init(struct eth_device * dev, const char *name);
+ rt_err_t eth_device_init_with_flag(struct eth_device *dev, const char *name, rt_uint16_t flag);
+ rt_err_t eth_device_linkchange(struct eth_device* dev, rt_bool_t up);
-int eth_system_device_init(void);
+ int eth_system_device_init(void);
+
+#ifdef __cplusplus
+}
+#endif
#endif /* __NETIF_ETHERNETIF_H__ */
diff --git a/components/net/lwip-2.0.2/src/netif/ethernetif.c b/components/net/lwip-2.0.2/src/netif/ethernetif.c
index 8b05e592d4..c22951186a 100644
--- a/components/net/lwip-2.0.2/src/netif/ethernetif.c
+++ b/components/net/lwip-2.0.2/src/netif/ethernetif.c
@@ -205,7 +205,7 @@ static err_t eth_netif_device_init(struct netif *netif)
}
/* Keep old drivers compatible in RT-Thread */
-rt_err_t eth_device_init_with_flag(struct eth_device *dev, char *name, rt_uint16_t flags)
+rt_err_t eth_device_init_with_flag(struct eth_device *dev, const char *name, rt_uint16_t flags)
{
struct netif* netif;
@@ -269,7 +269,7 @@ rt_err_t eth_device_init_with_flag(struct eth_device *dev, char *name, rt_uint16
return RT_EOK;
}
-rt_err_t eth_device_init(struct eth_device * dev, char *name)
+rt_err_t eth_device_init(struct eth_device * dev, const char *name)
{
rt_uint16_t flags = NETIF_FLAG_BROADCAST | NETIF_FLAG_ETHARP;
diff --git a/components/net/lwip-2.1.0/src/arch/sys_arch.c b/components/net/lwip-2.1.0/src/arch/sys_arch.c
index ee96249bec..17ebdfbacf 100644
--- a/components/net/lwip-2.1.0/src/arch/sys_arch.c
+++ b/components/net/lwip-2.1.0/src/arch/sys_arch.c
@@ -49,6 +49,8 @@
#include "lwip/dhcp.h"
#include "lwip/inet.h"
+#include "netif/etharp.h"
+
#include <string.h>
#include <stdio.h>
@@ -75,6 +77,10 @@ static err_t netif_device_init(struct netif *netif)
/* copy device flags to netif flags */
netif->flags = ethif->flags;
+ netif->mtu = ETHERNET_MTU;
+
+ /* set output */
+ netif->output = etharp_output;
return ERR_OK;
}
diff --git a/components/net/lwip-2.1.0/src/include/netif/ethernetif.h b/components/net/lwip-2.1.0/src/include/netif/ethernetif.h
index bdad32ec20..1c969e6e25 100644
--- a/components/net/lwip-2.1.0/src/include/netif/ethernetif.h
+++ b/components/net/lwip-2.1.0/src/include/netif/ethernetif.h
@@ -17,27 +17,35 @@
struct eth_device
{
- /* inherit from rt_device */
- struct rt_device parent;
+ /* inherit from rt_device */
+ struct rt_device parent;
- /* network interface for lwip */
- struct netif *netif;
- struct rt_semaphore tx_ack;
+ /* network interface for lwip */
+ struct netif *netif;
+ struct rt_semaphore tx_ack;
- rt_uint16_t flags;
- rt_uint8_t link_changed;
- rt_uint8_t link_status;
+ rt_uint16_t flags;
+ rt_uint8_t link_changed;
+ rt_uint8_t link_status;
- /* eth device interface */
- struct pbuf* (*eth_rx)(rt_device_t dev);
- rt_err_t (*eth_tx)(rt_device_t dev, struct pbuf* p);
+ /* eth device interface */
+ struct pbuf* (*eth_rx)(rt_device_t dev);
+ rt_err_t (*eth_tx)(rt_device_t dev, struct pbuf* p);
};
-rt_err_t eth_device_ready(struct eth_device* dev);
-rt_err_t eth_device_init(struct eth_device * dev, char *name);
-rt_err_t eth_device_init_with_flag(struct eth_device *dev, char *name, rt_uint16_t flag);
-rt_err_t eth_device_linkchange(struct eth_device* dev, rt_bool_t up);
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+ rt_err_t eth_device_ready(struct eth_device* dev);
+ rt_err_t eth_device_init(struct eth_device * dev, const char *name);
+ rt_err_t eth_device_init_with_flag(struct eth_device *dev, const char *name, rt_uint16_t flag);
+ rt_err_t eth_device_linkchange(struct eth_device* dev, rt_bool_t up);
-int eth_system_device_init(void);
+ int eth_system_device_init(void);
+
+#ifdef __cplusplus
+}
+#endif
#endif /* __NETIF_ETHERNETIF_H__ */
diff --git a/components/net/lwip-2.1.0/src/netif/ethernetif.c b/components/net/lwip-2.1.0/src/netif/ethernetif.c
index 910d7c3470..5a8e9d6149 100644
--- a/components/net/lwip-2.1.0/src/netif/ethernetif.c
+++ b/components/net/lwip-2.1.0/src/netif/ethernetif.c
@@ -156,6 +156,9 @@ static err_t eth_netif_device_init(struct netif *netif)
/* copy device flags to netif flags */
netif->flags = (ethif->flags & 0xff);
netif->mtu = ETHERNET_MTU;
+
+ /* set output */
+ netif->output = etharp_output;
#if LWIP_IPV6
netif->output_ip6 = ethip6_output;
@@ -207,7 +210,7 @@ static err_t eth_netif_device_init(struct netif *netif)
}
/* Keep old drivers compatible in RT-Thread */
-rt_err_t eth_device_init_with_flag(struct eth_device *dev, char *name, rt_uint16_t flags)
+rt_err_t eth_device_init_with_flag(struct eth_device *dev, const char *name, rt_uint16_t flags)
{
struct netif* netif;
@@ -239,6 +242,9 @@ rt_err_t eth_device_init_with_flag(struct eth_device *dev, char *name, rt_uint16
/* maximum transfer unit */
netif->mtu = ETHERNET_MTU;
+ /* set linkoutput */
+ netif->linkoutput = ethernetif_linkoutput;
+
/* get hardware MAC address */
rt_device_control(&(dev->parent), NIOCTL_GADDR, netif->hwaddr);
@@ -262,16 +268,12 @@ rt_err_t eth_device_init_with_flag(struct eth_device *dev, char *name, rt_uint16
IP4_ADDR(&netmask, 0, 0, 0, 0);
#endif
netifapi_netif_add(netif, &ipaddr, &netmask, &gw, dev, eth_netif_device_init, tcpip_input);
-
- /* set output */
- netif->output = etharp_output;
- netif->linkoutput = ethernetif_linkoutput;
}
return RT_EOK;
}
-rt_err_t eth_device_init(struct eth_device * dev, char *name)
+rt_err_t eth_device_init(struct eth_device * dev, const char *name)
{
rt_uint16_t flags = NETIF_FLAG_BROADCAST | NETIF_FLAG_ETHARP;
diff --git a/components/net/sal_socket/socket/net_sockets.c b/components/net/sal_socket/socket/net_sockets.c
index 232b87ba1e..12024c8173 100644
--- a/components/net/sal_socket/socket/net_sockets.c
+++ b/components/net/sal_socket/socket/net_sockets.c
@@ -78,29 +78,39 @@ RTM_EXPORT(bind);
int shutdown(int s, int how)
{
- int socket;
+ int error = 0;
+ int socket = -1;
struct dfs_fd *d;
+ socket = dfs_net_getsocket(s);
+ if (socket < 0)
+ {
+ rt_set_errno(-ENOTSOCK);
+ return -1;
+ }
+
d = fd_get(s);
if (d == NULL)
{
rt_set_errno(-EBADF);
-
return -1;
}
-
- socket = dfs_net_getsocket(s);
+
if (sal_shutdown(socket, how) == 0)
{
- /* socket has been closed, delete it from file system fd */
- fd_put(d);
- fd_put(d);
-
- return 0;
+ error = 0;
+ }
+ else
+ {
+ rt_set_errno(-ENOTSOCK);
+ error = -1;
}
- return -1;
+ /* socket has been closed, delete it from file system fd */
+ fd_put(d);
+ fd_put(d);
+ return error;
}
RTM_EXPORT(shutdown);
@@ -228,7 +238,7 @@ int socket(int domain, int type, int protocol)
rt_set_errno(-ENOMEM);
- return -1;
+ return -1;
}
/* release the ref-count of fd */
@@ -240,25 +250,39 @@ RTM_EXPORT(socket);
int closesocket(int s)
{
- int socket = dfs_net_getsocket(s);
+ int error = 0;
+ int socket = -1;
struct dfs_fd *d;
+ socket = dfs_net_getsocket(s);
+ if (socket < 0)
+ {
+ rt_set_errno(-ENOTSOCK);
+ return -1;
+ }
+
d = fd_get(s);
- if(!d)
+ if (d == RT_NULL)
{
+ rt_set_errno(-EBADF);
return -1;
}
if (sal_closesocket(socket) == 0)
{
- /* socket has been closed, delete it from file system fd */
- fd_put(d);
- fd_put(d);
-
- return 0;
+ error = 0;
+ }
+ else
+ {
+ rt_set_errno(-ENOTSOCK);
+ error = -1;
}
- return -1;
+ /* socket has been closed, delete it from file system fd */
+ fd_put(d);
+ fd_put(d);
+
+ return error;
}
RTM_EXPORT(closesocket);
diff --git a/components/net/sal_socket/src/sal_socket.c b/components/net/sal_socket/src/sal_socket.c
index dba8e66254..771a56f061 100644
--- a/components/net/sal_socket/src/sal_socket.c
+++ b/components/net/sal_socket/src/sal_socket.c
@@ -19,10 +19,8 @@
#endif
#include <sal.h>
-#define DBG_ENABLE
-#define DBG_SECTION_NAME "SAL_SOC"
+#define DBG_SECTION_NAME "SAL_SKT"
#define DBG_LEVEL DBG_INFO
-#define DBG_COLOR
#include <rtdbg.h>
#define SOCKET_TABLE_STEP_LEN 4
diff --git a/components/utilities/Kconfig b/components/utilities/Kconfig
index 1175006a58..504a56691d 100644
--- a/components/utilities/Kconfig
+++ b/components/utilities/Kconfig
@@ -222,12 +222,6 @@ config RT_USING_ULOG
select ULOG_OUTPUT_TIME
select ULOG_USING_FILTER
default n
-
- config ULOG_SW_VERSION_NUM
- hex
- default 0x00101
- help
- sfotware module version number
endif
config RT_USING_UTEST
diff --git a/components/utilities/ulog/ulog.c b/components/utilities/ulog/ulog.c
index b813678ecd..87d0932506 100644
--- a/components/utilities/ulog/ulog.c
+++ b/components/utilities/ulog/ulog.c
@@ -315,7 +315,10 @@ RT_WEAK rt_size_t ulog_formater(char *log_buf, rt_uint32_t level, const char *ta
/* is not in interrupt context */
if (rt_interrupt_get_nest() == 0)
{
- log_len += ulog_strcpy(log_len, log_buf + log_len, rt_thread_self()->name);
+ rt_size_t name_len = rt_strnlen(rt_thread_self()->name, RT_NAME_MAX);
+
+ rt_strncpy(log_buf + log_len, rt_thread_self()->name, name_len);
+ log_len += name_len;
}
else
{
diff --git a/components/utilities/ulog/ulog_def.h b/components/utilities/ulog/ulog_def.h
index e7c033f71c..40b39de972 100644
--- a/components/utilities/ulog/ulog_def.h
+++ b/components/utilities/ulog/ulog_def.h
@@ -47,7 +47,7 @@ extern "C" {
#define DBG_INFO LOG_LVL_INFO
#define DBG_LOG LOG_LVL_DBG
#define dbg_log(level, ...) \
- if ((level) <= DBG_LEVEL) \
+ if ((level) <= LOG_LVL) \
{ \
ulog_output(level, LOG_TAG, RT_FALSE, __VA_ARGS__);\
}
diff --git a/components/utilities/utest/utest.c b/components/utilities/utest/utest.c
index f7348b3be4..7bc2c93656 100644
--- a/components/utilities/utest/utest.c
+++ b/components/utilities/utest/utest.c
@@ -17,17 +17,13 @@
#undef DBG_SECTION_NAME
#undef DBG_LEVEL
-#undef DBG_COLOR
-#undef DBG_ENABLE
-#define DBG_ENABLE
#define DBG_SECTION_NAME "utest"
#ifdef UTEST_DEBUG
#define DBG_LEVEL DBG_LOG
#else
#define DBG_LEVEL DBG_INFO
#endif
-#define DBG_COLOR
#include <rtdbg.h>
#if RT_CONSOLEBUF_SIZE < 256
diff --git a/components/utilities/utest/utest_log.h b/components/utilities/utest/utest_log.h
index 9f38d3f9c8..c4bd25a80b 100644
--- a/components/utilities/utest/utest_log.h
+++ b/components/utilities/utest/utest_log.h
@@ -17,17 +17,13 @@
#undef DBG_SECTION_NAME
#undef DBG_LEVEL
-#undef DBG_COLOR
-#undef DBG_ENABLE
-#define DBG_ENABLE
#define DBG_SECTION_NAME "testcase"
#ifdef UTEST_DEBUG
#define DBG_LEVEL DBG_LOG
#else
#define DBG_LEVEL DBG_INFO
#endif
-#define DBG_COLOR
#include <rtdbg.h>
#define UTEST_LOG_ALL (1u)
diff --git a/components/utilities/ymodem/ymodem.c b/components/utilities/ymodem/ymodem.c
index c98c7f6cb6..716c702328 100644
--- a/components/utilities/ymodem/ymodem.c
+++ b/components/utilities/ymodem/ymodem.c
@@ -125,6 +125,7 @@ static rt_err_t _rym_do_handshake(
rt_size_t i;
rt_uint16_t recv_crc, cal_crc;
rt_size_t data_sz;
+ rt_tick_t tick;
ctx->stage = RYM_STAGE_ESTABLISHING;
/* send C every second, so the sender could know we are waiting for it. */
@@ -149,8 +150,17 @@ static rt_err_t _rym_do_handshake(
return -RYM_ERR_TMO;
}
- i = _rym_read_data(ctx, data_sz-1);
- if (i != (data_sz-1))
+ /* receive all data */
+ i = 0;
+ /* automatic exit after receiving specified length data, timeout: 100ms */
+ tick = rt_tick_get();
+ while (rt_tick_get() <= (tick + rt_tick_from_millisecond(100)) && i < (data_sz-1))
+ {
+ i += _rym_read_data(ctx, data_sz - 1);
+ rt_thread_mdelay(5);
+ }
+
+ if (i != (data_sz - 1))
return -RYM_ERR_DSZ;
/* sanity check */