Browse Source

add devfs for at91sam9260

git-svn-id: https://rt-thread.googlecode.com/svn/trunk@1441 bbd45198-f89e-11dd-88c7-29a3b14d5316
luohui2320@gmail.com 14 years ago
parent
commit
12fba54f91
1 changed files with 88 additions and 5 deletions
  1. 88 5
      bsp/at91sam9260/application.c

+ 88 - 5
bsp/at91sam9260/application.c

@@ -19,10 +19,83 @@
 
 
 #include <rtthread.h>
 #include <rtthread.h>
 
 
+#ifdef RT_USING_DFS
+/* dfs init */
+#include <dfs_init.h>
+/* dfs filesystem:ELM FatFs filesystem init */
+#include <dfs_elm.h>
+/* dfs Filesystem APIs */
+#include <dfs_fs.h>
+#ifdef RT_USING_DFS_UFFS
+/* dfs filesystem:UFFS filesystem init */
+#include <dfs_uffs.h>
+#endif
+#endif
+
 #ifdef RT_USING_LED
 #ifdef RT_USING_LED
 #include "led.h"
 #include "led.h"
 #endif
 #endif
 
 
+#define RT_INIT_THREAD_STACK_SIZE (2*1024)
+
+#ifdef RT_USING_DFS_ROMFS
+#include <dfs_romfs.h>
+#endif
+
+void rt_init_thread_entry(void* parameter)
+{
+/* Filesystem Initialization */
+#ifdef RT_USING_DFS
+	{
+		/* init the device filesystem */
+		dfs_init();
+
+#if defined(RT_USING_DFS_ELMFAT)
+		/* init the elm chan FatFs filesystam*/
+		elm_init();
+#endif
+
+#if defined(RT_USING_DFS_ROMFS)
+		dfs_romfs_init();
+		if (dfs_mount(RT_NULL, "/rom", "rom", 0, &romfs_root) == 0)
+		{
+			rt_kprintf("ROM File System initialized!\n");
+		}
+		else
+			rt_kprintf("ROM File System initialzation failed!\n");
+#endif
+
+#if defined(RT_USING_DFS_DEVFS)
+		devfs_init();
+		if (dfs_mount(RT_NULL, "/dev", "devfs", 0, 0) == 0)
+			rt_kprintf("Device File System initialized!\n");
+		else
+			rt_kprintf("Device File System initialzation failed!\n");
+
+		#ifdef RT_USING_NEWLIB
+		/* init libc */
+		libc_system_init("uart0");
+		#endif
+#endif
+
+#if defined(RT_USING_DFS_UFFS)
+	{
+		/* init the uffs filesystem */
+		dfs_uffs_init();
+
+		/* mount flash device as flash directory */
+		if(dfs_mount("nand0", "/nand0", "uffs", 0, 0) == 0)
+			rt_kprintf("UFFS File System initialized!\n");
+		else
+			rt_kprintf("UFFS File System initialzation failed!\n");
+	}
+#endif
+	}
+#endif
+
+
+}
+
 #ifdef RT_USING_LED
 #ifdef RT_USING_LED
 void rt_led_thread_entry(void* parameter)
 void rt_led_thread_entry(void* parameter)
 {
 {
@@ -52,26 +125,36 @@ void rt_led_thread_entry(void* parameter)
 
 
 int rt_application_init()
 int rt_application_init()
 {
 {
+	rt_thread_t init_thread;
 #ifdef RT_USING_LED
 #ifdef RT_USING_LED
 	rt_thread_t led_thread;
 	rt_thread_t led_thread;
+#endif
 
 
 #if (RT_THREAD_PRIORITY_MAX == 32)
 #if (RT_THREAD_PRIORITY_MAX == 32)
-	
-
+	init_thread = rt_thread_create("init",
+								rt_init_thread_entry, RT_NULL,
+								RT_INIT_THREAD_STACK_SIZE, 8, 20);
+#ifdef RT_USING_LED
 	led_thread = rt_thread_create("led",
 	led_thread = rt_thread_create("led",
 								rt_led_thread_entry, RT_NULL,
 								rt_led_thread_entry, RT_NULL,
 								512, 20, 20);
 								512, 20, 20);
+#endif
 								
 								
 #else
 #else
-	
-
+	init_thread = rt_thread_create("init",
+								rt_init_thread_entry, RT_NULL,
+								RT_INIT_THREAD_STACK_SIZE, 80, 20);
+#ifdef RT_USING_LED
 	led_thread = rt_thread_create("led",
 	led_thread = rt_thread_create("led",
 								rt_led_thread_entry, RT_NULL,
 								rt_led_thread_entry, RT_NULL,
 								512, 200, 20);
 								512, 200, 20);
+#endif
 								
 								
 #endif
 #endif
 
 
-
+	if (init_thread != RT_NULL)
+		rt_thread_startup(init_thread);
+#ifdef RT_USING_LED
 	if(led_thread != RT_NULL)
 	if(led_thread != RT_NULL)
 		rt_thread_startup(led_thread);
 		rt_thread_startup(led_thread);
 #endif
 #endif