Browse Source

Prepare for RT-Thread 1.2.4 release.

bernard 10 years ago
parent
commit
8e439999e8

+ 1 - 0
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

+ 4 - 0
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.);

+ 2 - 1
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
     }
 

+ 2 - 0
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

+ 13 - 1
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 */

+ 12 - 1
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)

+ 8 - 2
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,

+ 1 - 1
include/rtdef.h

@@ -50,7 +50,7 @@ extern "C" {
 /* RT-Thread version information */
 #define RT_VERSION                      1L              /**< major version number */
 #define RT_SUBVERSION                   2L              /**< minor version number */
-#define RT_REVISION                     3L              /**< revise version number */
+#define RT_REVISION                     4L              /**< revise version number */
 
 /* RT-Thread version */
 #define RTTHREAD_VERSION                ((RT_VERSION * 10000) + \

+ 2 - 0
src/memheap.c

@@ -517,6 +517,8 @@ void rt_memheap_free(void *ptr)
 
     /* check magic */
     RT_ASSERT((header_ptr->magic & RT_MEMHEAP_MASK) == RT_MEMHEAP_MAGIC);
+    /* check whether this block of memory has been over-written. */
+    RT_ASSERT((header_ptr->next->magic & RT_MEMHEAP_MASK) == RT_MEMHEAP_MAGIC);
 
     /* get pool ptr */
     heap = header_ptr->pool_ptr;

+ 1 - 1
src/module.c

@@ -82,7 +82,7 @@ static struct rt_module_symtab *_rt_module_symtab_end   = RT_NULL;
  */
 int rt_system_module_init(void)
 {
-#ifdef __GNUC__
+#if defined(__GNUC__) && !defined(__CC_ARM)
     extern int __rtmsymtab_start;
     extern int __rtmsymtab_end;