diff --git a/bsp/dev3210/application.c b/bsp/dev3210/application.c index 0d2fe9cbdf..5791d6eaa1 100644 --- a/bsp/dev3210/application.c +++ b/bsp/dev3210/application.c @@ -12,43 +12,19 @@ * 2010-06-25 Bernard first version */ -/** - * @addtogroup Loongson SoC3210 - */ -/*@{*/ #include #include -struct rt_thread thread; -ALIGN(4) -rt_uint8_t thread_stack[1024]; - -#include -void thread_entry(void* parameter) -{ - int i = 0; - - while (1) - { - rt_kprintf("i = %d, cause: 0x%08x, config: 0x%08x\n", i++, read_c0_cause(), read_c0_config()); - rt_kprintf("HSB_MISC_CFG 0x%08x\n", HSB_MISC_REG); - rt_thread_delay(100); - } -} -void thread_test() -{ - rt_err_t result = rt_thread_init(&thread, - "tid", - thread_entry, RT_NULL, - &thread_stack, sizeof(thread_stack), - 200, - 5); - if (result == RT_EOK) - rt_thread_startup(&thread); - else - rt_kprintf("init thread failed\n"); -} -FINSH_FUNCTION_EXPORT(thread_test, test thread!!); +#ifdef RT_USING_DFS +#include +#include +#ifdef RT_USING_DFS_ROMFS +#include +#endif +#ifdef RT_USING_DFS_DEVFS +#include +#endif +#endif #ifdef RT_USING_RTGUI #include @@ -56,32 +32,87 @@ FINSH_FUNCTION_EXPORT(thread_test, test thread!!); #include #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_ROMFS) + dfs_romfs_init(); + if (dfs_mount(RT_NULL, "/", "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_ELMFAT) + /* init the elm chan FatFs filesystam*/ + elm_init(); + /* mount sd card fat partition 1 as root directory */ + if (dfs_mount("sd0", "/sd", "elm", 0, 0) == 0) + { + rt_kprintf("File System initialized!\n"); + } + else + rt_kprintf("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("uart"); + rt_kprintf("libc init done\n"); + #endif +#endif + } +#endif + +#ifdef RT_USING_RTGUI + { + rtgui_rect_t rect; + + rtgui_system_server_init(); + + /* register dock panel */ + rect.x1 = 0; + rect.y1 = 0; + rect.x2 = 400; + rect.y2 = 480; + rtgui_panel_register("panel", &rect); + + /* register main panel */ + rect.x1 = 400; + rect.y1 = 0; + rect.x2 = 800; + rect.y2 = 480; + rtgui_panel_register("main", &rect); + rtgui_panel_set_default_focused("main"); + + rt_hw_lcd_init(); + } +#endif +} + int rt_application_init() { -#ifdef RT_USING_RTGUI - rtgui_rect_t rect; + rt_thread_t tid; - rtgui_system_server_init(); - - /* register dock panel */ - rect.x1 = 0; - rect.y1 = 0; - rect.x2 = 400; - rect.y2 = 480; - rtgui_panel_register("panel", &rect); - - /* register main panel */ - rect.x1 = 400; - rect.y1 = 0; - rect.x2 = 800; - rect.y2 = 480; - rtgui_panel_register("main", &rect); - rtgui_panel_set_default_focused("main"); - - rt_hw_lcd_init(); -#endif + /* create initialization thread */ + tid = rt_thread_create("init", + rt_init_thread_entry, RT_NULL, + 4096, 8, 20); + if (tid != RT_NULL) rt_thread_startup(tid); return 0; } - -/*@}*/ diff --git a/bsp/dev3210/rtconfig.h b/bsp/dev3210/rtconfig.h index 9b507d266b..945affa405 100644 --- a/bsp/dev3210/rtconfig.h +++ b/bsp/dev3210/rtconfig.h @@ -53,6 +53,7 @@ /* Using SLAB MM */ #define RT_USING_SLAB +/* #define RT_USING_SMALL_MEM */ /* SECTION: Device System */ /* Using Device System */ @@ -68,8 +69,8 @@ /* SECTION: the runtime libc library */ /* the runtime libc library */ -#define RT_USING_NEWLIB -#define RT_USING_PTHREADS +/* #define RT_USING_NEWLIB */ +/* #define RT_USING_PTHREADS */ /* SECTION: finsh, a C-Express shell */ /* Using FinSH as Shell*/ @@ -81,8 +82,9 @@ /* SECTION: device filesystem support */ #define RT_USING_DFS -#define RT_USING_DFS_ELMFAT +/* #define RT_USING_DFS_ELMFAT */ #define RT_USING_DFS_ROMFS +/* #define RT_USING_DFS_DEVFS */ /* the max number of mounted filesystem */ #define DFS_FILESYSTEMS_MAX 2 @@ -90,6 +92,8 @@ #define DFS_FD_MAX 4 /* the max number of cached sector */ #define DFS_CACHE_MAX_NUM 4 +/* Using working directory */ +#define DFS_USING_WORKDIR /* SECTION: lwip, a lighwight TCP/IP protocol stack */ /* #define RT_USING_LWIP */ diff --git a/bsp/dev3210/startup.c b/bsp/dev3210/startup.c index 8b38099c6f..5312814582 100644 --- a/bsp/dev3210/startup.c +++ b/bsp/dev3210/startup.c @@ -29,20 +29,6 @@ extern unsigned char __bss_end; extern int rt_application_init(void); -void dump_mem(const unsigned char* addr) -{ - int size; - rt_kprintf("---- memory: 0x%08x ----\n", addr); - for (size = 0; size < 32 * 4; size ++) - { - rt_kprintf("%02x ", (*addr) & 0xff); - addr ++; - if ((size + 1) % 16 == 0) - rt_kprintf("\n"); - } - rt_kprintf("\n"); -} - extern void tlb_refill_exception(void); extern void general_exception(void); extern void irq_exception(void);