Browse Source

[mini2440]use long filename feature

git-svn-id: https://rt-thread.googlecode.com/svn/trunk@655 bbd45198-f89e-11dd-88c7-29a3b14d5316
qiuyiuestc 15 years ago
parent
commit
1f42e27ece

+ 5 - 1
bsp/mini2440/rtconfig.h

@@ -3,7 +3,7 @@
 #define __RTTHREAD_CFG_H__
 
 /* RT_NAME_MAX*/
-#define RT_NAME_MAX	8
+#define RT_NAME_MAX	32
 
 /* RT_ALIGN_SIZE*/
 #define RT_ALIGN_SIZE	4
@@ -91,6 +91,10 @@
 /* using DFS support */
 #define RT_USING_DFS
 #define RT_USING_DFS_ELMFAT
+/* use long file name feature 			*/
+#define RT_DFS_ELM_USE_LFN			1
+/* the max number of file length 			*/
+#define RT_DFS_ELM_MAX_LFN		32		
 /* #define RT_USING_DFS_YAFFS2 */
 
 /* #define DFS_USING_WORKDIR */

+ 4 - 2
bsp/mini2440/rtconfig.py

@@ -30,6 +30,8 @@ if rtconfig_ns.has_key('RT_USING_DFS'):
 
     if rtconfig_ns.has_key('RT_USING_DFS_ELMFAT'):
         RT_USING_DFS_ELMFAT = True
+    if rtconfig_ns.has_key('RT_DFS_ELM_USE_LFN'):
+        RT_DFS_ELM_USE_LFN = True			
     if rtconfig_ns.has_key('RT_USING_DFS_YAFFS2'):
         RT_USING_DFS_YAFFS2 = True
 
@@ -107,7 +109,7 @@ elif PLATFORM == 'armcc':
     LFLAGS = DEVICE + ' --strict --info sizes --info totals --info unused --info veneers --list rtthread-mini2440.map --ro-base 0x30000000 --entry Entry_Point --first Entry_Point'
 
     CFLAGS += ' -I"' + EXEC_PATH + '/ARM/RV31/INC"'
-    LFLAGS += ' --libpath "' + EXEC_PATH + '/ARM/RV31/LIB"'
+    LFLAGS += ' --libpath "' + EXEC_PATH + '/ARM/RV31/LIB"' + ' --keep __RTMsym_*'
 
     EXEC_PATH += '/arm/bin40/'
 
@@ -134,4 +136,4 @@ elif PLATFORM == 'iar':
 
     CFLAGS = ''
     AFLAGS = ''
-    LFLAGS = ''
+    LFLAGS = ''

+ 4 - 1
components/dfs/SConscript

@@ -56,10 +56,13 @@ if rtconfig.RT_USING_DFS_YAFFS2:
     src_local = src_local + yaffs2_main + yaffs2_comm
     path = path + [RTT_ROOT + '/components/dfs/filesystems/yaffs2', RTT_ROOT + '/components/dfs/filesystems/yaffs2/direct']
 
+if rtconfig.RT_DFS_ELM_USE_LFN:
+    elmfat += ['filesystems/elmfat/option/cc936.c']
+
 if rtconfig.RT_USING_DFS_ELMFAT:
     src_local = src_local + elmfat
     # path = path + [RTT_ROOT + '/components/dfs/filesystems/elmfat']
-
+		
 # group definitions
 group = {}
 group['name'] = 'Filesystem'

+ 6 - 1
components/dfs/filesystems/elmfat/ffconf.h

@@ -84,9 +84,14 @@
 /	1    - ASCII only (Valid for non LFN cfg.)
 */
 
-
+#ifdef RT_DFS_ELM_USE_LFN
+#define _USE_LFN RT_DFS_ELM_USE_LFN
+#define _MAX_LFN RT_DFS_ELM_MAX_LFN
+#else
 #define	_USE_LFN	0		/* 0, 1 or 2 */
 #define	_MAX_LFN	255		/* Maximum LFN length to handle (12 to 255) */
+#endif
+
 /* The _USE_LFN option switches the LFN support.
 /
 /   0: Disable LFN. _MAX_LFN and _LFN_UNICODE have no effect.

+ 14 - 14
include/rtthread.h

@@ -93,27 +93,27 @@ void rt_timer_timeout_sethook(void (*hook)(struct rt_timer* timer));
 /*
  * thread interface
  */
-RTT_API rt_err_t rt_thread_init(struct rt_thread* thread,
+rt_err_t rt_thread_init(struct rt_thread* thread,
 	const char* name,
 	void (*entry)(void* parameter), void* parameter,
 	void* stack_start, rt_uint32_t stack_size,
 	rt_uint8_t priority, rt_uint32_t tick);
-RTT_API rt_err_t rt_thread_detach(rt_thread_t thread);
-RTT_API rt_thread_t rt_thread_create (const char* name,
+rt_err_t rt_thread_detach(rt_thread_t thread);
+rt_thread_t rt_thread_create (const char* name,
 	void (*entry)(void* parameter), void* parameter,
 	rt_uint32_t stack_size,
 	rt_uint8_t priority, rt_uint32_t tick);
-RTT_API rt_thread_t rt_thread_self(void);
-RTT_API rt_thread_t rt_thread_find(char* name);
-RTT_API rt_err_t rt_thread_startup(rt_thread_t thread);
-RTT_API rt_err_t rt_thread_delete(rt_thread_t thread);
-
-RTT_API rt_err_t rt_thread_yield(void);
-RTT_API rt_err_t rt_thread_delay(rt_tick_t tick);
-RTT_API rt_err_t rt_thread_control(rt_thread_t thread, rt_uint8_t cmd, void* arg);
-RTT_API rt_err_t rt_thread_suspend(rt_thread_t thread);
-RTT_API rt_err_t rt_thread_resume(rt_thread_t thread);
-RTT_API void rt_thread_timeout(void* parameter);
+rt_thread_t rt_thread_self(void);
+rt_thread_t rt_thread_find(char* name);
+rt_err_t rt_thread_startup(rt_thread_t thread);
+rt_err_t rt_thread_delete(rt_thread_t thread);
+
+rt_err_t rt_thread_yield(void);
+rt_err_t rt_thread_delay(rt_tick_t tick);
+rt_err_t rt_thread_control(rt_thread_t thread, rt_uint8_t cmd, void* arg);
+rt_err_t rt_thread_suspend(rt_thread_t thread);
+rt_err_t rt_thread_resume(rt_thread_t thread);
+void rt_thread_timeout(void* parameter);
 
 /*
  * idle thread interface