summaryrefslogtreecommitdiff
path: root/components
diff options
context:
space:
mode:
Diffstat (limited to 'components')
-rw-r--r--components/dfs/filesystems/devfs/devfs.h1
-rw-r--r--components/finsh/msh_cmd.c4
-rw-r--r--components/libc/armlibc/stubs.c3
-rw-r--r--components/libc/minilibc/stdlib.c2
-rw-r--r--components/libc/newlib/libc.c14
-rw-r--r--components/utilities/ymodem/ymodem.c13
-rw-r--r--components/utilities/ymodem/ymodem.h10
7 files changed, 42 insertions, 5 deletions
diff --git a/components/dfs/filesystems/devfs/devfs.h b/components/dfs/filesystems/devfs/devfs.h
index ef320b78c8..97b025634e 100644
--- a/components/dfs/filesystems/devfs/devfs.h
+++ b/components/dfs/filesystems/devfs/devfs.h
@@ -27,5 +27,6 @@
#include <rtthread.h>
int devfs_init(void);
+void rt_console_init(const char* device_name);
#endif
diff --git a/components/finsh/msh_cmd.c b/components/finsh/msh_cmd.c
index a5ccf538b8..a1e1786ae2 100644
--- a/components/finsh/msh_cmd.c
+++ b/components/finsh/msh_cmd.c
@@ -211,7 +211,11 @@ int cmd_free(int argc, char** argv)
{
extern void list_mem(void);
+#ifdef RT_USING_MEMHEAP_AS_HEAP
+ list_memheap();
+#else
list_mem();
+#endif
return 0;
}
FINSH_FUNCTION_EXPORT_ALIAS(cmd_free, __cmd_free, Show the memory usage in the system.);
diff --git a/components/libc/armlibc/stubs.c b/components/libc/armlibc/stubs.c
index 1c79ce2861..4ca7cf056f 100644
--- a/components/libc/armlibc/stubs.c
+++ b/components/libc/armlibc/stubs.c
@@ -168,7 +168,8 @@ int _sys_write(FILEHANDLE fh, const unsigned char *buf, unsigned len, int mode)
console_device = rt_console_get_device();
if (console_device != 0) rt_device_write(console_device, 0, buf, len);
- return len;
+
+ return 0;
#endif
}
diff --git a/components/libc/minilibc/stdlib.c b/components/libc/minilibc/stdlib.c
index 51cb07fee0..e29ae9bc2e 100644
--- a/components/libc/minilibc/stdlib.c
+++ b/components/libc/minilibc/stdlib.c
@@ -54,6 +54,7 @@ long int atol(const char* s)
return sign?-v:v;
}
+#ifdef RT_USING_HEAP
void *malloc(size_t size)
{
return rt_malloc(size);
@@ -73,5 +74,6 @@ void *calloc(size_t nelem, size_t elsize)
{
return rt_calloc(nelem, elsize);
}
+#endif
#endif
diff --git a/components/libc/newlib/libc.c b/components/libc/newlib/libc.c
index f7bb8e3f9b..73270969b8 100644
--- a/components/libc/newlib/libc.c
+++ b/components/libc/newlib/libc.c
@@ -9,6 +9,15 @@
#include <pthread.h>
#endif
+#ifdef RT_USING_DFS
+#include <dfs_posix.h>
+
+#ifdef RT_USING_DFS_DEVFS
+#include <devfs.h>
+#endif
+
+#endif
+
void libc_system_init(const char* tty_name)
{
#ifdef RT_USING_DFS
@@ -18,13 +27,16 @@ void libc_system_init(const char* tty_name)
#error Please enable devfs by defining RT_USING_DFS_DEVFS in rtconfig.h
#endif
- /* init console device */
+ /* initialize console device */
rt_console_init(tty_name);
/* open console as stdin/stdout/stderr */
fd = open("/dev/console", O_RDONLY, 0); /* for stdin */
fd = open("/dev/console", O_WRONLY, 0); /* for stdout */
fd = open("/dev/console", O_WRONLY, 0); /* for stderr */
+
+ /* skip warning */
+ fd = fd;
#endif
/* set PATH and HOME */
diff --git a/components/utilities/ymodem/ymodem.c b/components/utilities/ymodem/ymodem.c
index 3af1528024..e4d909e90f 100644
--- a/components/utilities/ymodem/ymodem.c
+++ b/components/utilities/ymodem/ymodem.c
@@ -174,6 +174,18 @@ static rt_err_t _rym_trans_data(
return -RYM_ERR_SEQ;
}
+ /* As we are sending C continuously, there is a chance that the
+ * sender(remote) receive an C after sending the first handshake package.
+ * So the sender will interpret it as NAK and re-send the package. So we
+ * just ignore it and proceed. */
+ if (ctx->stage == RYM_STAGE_ESTABLISHED && ctx->buf[1] == 0x00)
+ {
+ *code = RYM_CODE_NONE;
+ return RT_EOK;
+ }
+
+ ctx->stage = RYM_STAGE_TRANSMITTING;
+
/* sanity check */
recv_crc = (rt_uint16_t)(*(ctx->buf+tsz-1) << 8) | *(ctx->buf+tsz);
if (recv_crc != CRC16(ctx->buf+3, data_sz))
@@ -214,7 +226,6 @@ static rt_err_t _rym_do_trans(struct rym_ctx *ctx)
default:
return -RYM_ERR_CODE;
};
- ctx->stage = RYM_STAGE_TRANSMITTING;
err = _rym_trans_data(ctx, data_sz, &code);
if (err != RT_EOK)
diff --git a/components/utilities/ymodem/ymodem.h b/components/utilities/ymodem/ymodem.h
index daed61d15f..fe22bd8135 100644
--- a/components/utilities/ymodem/ymodem.h
+++ b/components/utilities/ymodem/ymodem.h
@@ -52,7 +52,12 @@ enum rym_code {
#endif
/* how many ticks between two handshake code. */
#ifndef RYM_CHD_INTV_TICK
-#define RYM_CHD_INTV_TICK (RT_TICK_PER_SECOND / 4)
+#define RYM_CHD_INTV_TICK (RT_TICK_PER_SECOND * 3)
+#endif
+
+/* how many CAN be sent when user active end the session. */
+#ifndef RYM_END_SESSION_SEND_CAN_NUM
+#define RYM_END_SESSION_SEND_CAN_NUM 0x07
#endif
enum rym_stage {
@@ -61,7 +66,8 @@ enum rym_stage {
RYM_STAGE_ESTABLISHING,
/* set when we've got the packet 0 and sent ACK and second C */
RYM_STAGE_ESTABLISHED,
- /* set when the sender respond to our second C */
+ /* set when the sender respond to our second C and recviever got a real
+ * data packet. */
RYM_STAGE_TRANSMITTING,
/* set when the sender send a EOT */
RYM_STAGE_FINISHING,