summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorqiuyiuestc <[email protected]>2009-12-26 10:10:50 +0000
committerqiuyiuestc <[email protected]>2009-12-26 10:10:50 +0000
commit6d9100da2e6deb09d72c892fc5f376828f1d81bd (patch)
treeebb8fd9c7e64e0f3d3a8de880d62337f2a7907ae
parentd65e9dd6109a62e65ce24130dd9781bea3c48cd4 (diff)
support GCC compiler for LM3S platform
git-svn-id: https://rt-thread.googlecode.com/svn/trunk@233 bbd45198-f89e-11dd-88c7-29a3b14d5316
-rw-r--r--bsp/lm3s/Libraries/SConscript37
-rw-r--r--bsp/lm3s/project.Opt80
-rw-r--r--bsp/lm3s/project.Uv2140
-rw-r--r--bsp/lm3s/project_lwip_dfs.Opt38
-rw-r--r--bsp/lm3s/project_lwip_dfs.Uv24
-rw-r--r--filesystem/dfs/filesystems/efsl/src/base/debug.c182
-rw-r--r--filesystem/dfs/filesystems/efsl/src/base/include/debug.h68
-rw-r--r--filesystem/dfs/filesystems/efsl/src/base/include/ioman.h140
-rw-r--r--filesystem/dfs/filesystems/efsl/src/base/include/ioman_small.h93
-rw-r--r--filesystem/dfs/filesystems/efsl/src/base/include/plibc.h1
-rw-r--r--filesystem/dfs/filesystems/efsl/src/base/ioman.c600
-rw-r--r--filesystem/dfs/filesystems/efsl/src/base/ioman_small.c120
-rw-r--r--filesystem/dfs/filesystems/efsl/src/fs/vfat/fat.c9
-rw-r--r--filesystem/dfs/filesystems/efsl/src/fs/vfat/include/fat.h1
-rw-r--r--filesystem/dfs/filesystems/efsl/src/fs/vfat/include/file.h1
-rw-r--r--filesystem/dfs/filesystems/efsl/src/fs/vfat/include/fs.h1
-rw-r--r--libcpu/arm/lm3s/context_gcc.S164
-rw-r--r--libcpu/arm/lm3s/start_gcc.c242
18 files changed, 466 insertions, 1455 deletions
diff --git a/bsp/lm3s/Libraries/SConscript b/bsp/lm3s/Libraries/SConscript
new file mode 100644
index 0000000000..970278df80
--- /dev/null
+++ b/bsp/lm3s/Libraries/SConscript
@@ -0,0 +1,37 @@
+Import('env')
+Import('RTT_ROOT')
+
+# The set of source files associated with this SConscript file.
+src_local = Split("""
+ driverlib/adc.c
+ driverlib/can.c
+ driverlib/comp.c
+ driverlib/cpu.c
+ driverlib/epi.c
+ driverlib/ethernet.c
+ driverlib/flash.c
+ driverlib/gpio.c
+ driverlib/hibernate.c
+ driverlib/i2c.c
+ driverlib/i2s.c
+ driverlib/interrupt.c
+ driverlib/mpu.c
+ driverlib/pwm.c
+ driverlib/qei.c
+ driverlib/ssi.c
+ driverlib/sysctl.c
+ driverlib/systick.c
+ driverlib/timer.c
+ driverlib/uart.c
+ driverlib/udma.c
+ driverlib/usb.c
+ driverlib/watchdog.c
+""")
+
+path = [RTT_ROOT + '/bsp/lm3s/Libraries/inc', RTT_ROOT + '/bsp/lm3s/Libraries', RTT_ROOT + '/bsp/lm3s/Libraries/driverlib']
+
+env.Append(CPPPATH = path)
+
+obj = env.Object(src_local)
+
+Return('obj')
diff --git a/bsp/lm3s/project.Opt b/bsp/lm3s/project.Opt
deleted file mode 100644
index f200c39ef1..0000000000
--- a/bsp/lm3s/project.Opt
+++ /dev/null
@@ -1,80 +0,0 @@
-### uVision2 Project, (C) Keil Software
-### Do not modify !
-
- cExt (*.c)
- aExt (*.s*; *.src; *.a*)
- oExt (*.obj)
- lExt (*.lib)
- tExt (*.txt; *.h; *.inc)
- pExt (*.plm)
- CppX (*.cpp)
- DaveTm { 0,0,0,0,0,0,0,0 }
-
-Target (RT-Thread/LM3S), 0x0004 // Tools: 'ARM-ADS'
-GRPOPT 1,(Startup),1,0,0
-GRPOPT 2,(Kernel),0,0,0
-GRPOPT 3,(finsh),1,0,0
-GRPOPT 4,(LM3S),1,0,0
-GRPOPT 5,(driverlib),0,0,0
-
-OPTFFF 1,1,1,0,0,0,0,0,<.\application.c><application.c>
-OPTFFF 1,2,1,16777216,0,0,0,0,<.\board.c><board.c>
-OPTFFF 1,3,1,0,0,0,0,0,<.\startup.c><startup.c>
-OPTFFF 1,4,5,335544320,0,0,0,0,<.\rtconfig.h><rtconfig.h>
-OPTFFF 2,5,1,0,0,0,0,0,<..\..\src\clock.c><clock.c>
-OPTFFF 2,6,1,0,0,0,0,0,<..\..\src\device.c><device.c>
-OPTFFF 2,7,1,234881024,0,0,0,0,<..\..\src\idle.c><idle.c>
-OPTFFF 2,8,1,0,0,0,0,0,<..\..\src\ipc.c><ipc.c>
-OPTFFF 2,9,1,0,0,0,0,0,<..\..\src\irq.c><irq.c>
-OPTFFF 2,10,1,0,0,0,0,0,<..\..\src\mem.c><mem.c>
-OPTFFF 2,11,1,0,0,0,0,0,<..\..\src\mempool.c><mempool.c>
-OPTFFF 2,12,1,0,0,0,0,0,<..\..\src\object.c><object.c>
-OPTFFF 2,13,1,0,0,0,0,0,<..\..\src\scheduler.c><scheduler.c>
-OPTFFF 2,14,1,0,0,0,0,0,<..\..\src\slab.c><slab.c>
-OPTFFF 2,15,1,0,0,0,0,0,<..\..\src\thread.c><thread.c>
-OPTFFF 2,16,1,0,0,0,0,0,<..\..\src\timer.c><timer.c>
-OPTFFF 2,17,1,0,0,0,0,0,<..\..\src\kservice.c><kservice.c>
-OPTFFF 3,18,1,0,0,0,0,0,<..\..\finsh\symbol.c><symbol.c>
-OPTFFF 3,19,1,0,0,0,0,0,<..\..\finsh\cmd.c><cmd.c>
-OPTFFF 3,20,1,0,0,0,0,0,<..\..\finsh\finsh_compiler.c><finsh_compiler.c>
-OPTFFF 3,21,1,0,0,0,0,0,<..\..\finsh\finsh_error.c><finsh_error.c>
-OPTFFF 3,22,1,0,0,0,0,0,<..\..\finsh\finsh_heap.c><finsh_heap.c>
-OPTFFF 3,23,1,0,0,0,0,0,<..\..\finsh\finsh_init.c><finsh_init.c>
-OPTFFF 3,24,1,0,0,0,0,0,<..\..\finsh\finsh_node.c><finsh_node.c>
-OPTFFF 3,25,1,0,0,0,0,0,<..\..\finsh\finsh_ops.c><finsh_ops.c>
-OPTFFF 3,26,1,0,0,0,0,0,<..\..\finsh\finsh_parser.c><finsh_parser.c>
-OPTFFF 3,27,1,0,0,0,0,0,<..\..\finsh\finsh_token.c><finsh_token.c>
-OPTFFF 3,28,1,0,0,0,0,0,<..\..\finsh\finsh_var.c><finsh_var.c>
-OPTFFF 3,29,1,0,0,0,0,0,<..\..\finsh\finsh_vm.c><finsh_vm.c>
-OPTFFF 3,30,1,0,0,0,0,0,<..\..\finsh\shell.c><shell.c>
-OPTFFF 4,31,1,0,0,0,0,0,<..\..\libcpu\arm\lm3s\cpu.c><cpu.c>
-OPTFFF 4,32,1,0,0,0,0,0,<..\..\libcpu\arm\lm3s\interrupt.c><interrupt.c>
-OPTFFF 4,33,1,0,0,0,0,0,<..\..\libcpu\arm\lm3s\stack.c><stack.c>
-OPTFFF 4,34,2,0,0,157,157,0,<..\..\libcpu\arm\lm3s\context_rvds.S><context_rvds.S> { 44,0,0,0,0,0,0,0,1,0,0,0,255,255,255,255,255,255,255,255,252,255,255,255,226,255,255,255,88,0,0,0,116,0,0,0,222,2,0,0,106,1,0,0 }
-OPTFFF 4,35,2,0,0,0,0,0,<..\..\libcpu\arm\lm3s\start_rvds.S><start_rvds.S>
-OPTFFF 4,36,1,620756994,0,52,65,0,<..\..\libcpu\arm\lm3s\serial.c><serial.c> { 44,0,0,0,2,0,0,0,3,0,0,0,255,255,255,255,255,255,255,255,252,255,255,255,226,255,255,255,66,0,0,0,87,0,0,0,196,2,0,0,75,1,0,0 }
-OPTFFF 5,37,4,0,0,0,0,0,<.\driverlib\rvmdk\driverlib.lib><driverlib.lib>
-
-
-TARGOPT 1, (RT-Thread/LM3S)
- ADSCLK=6000000
- OPTTT 1,1,1,0
- OPTHX 1,65535,0,0,0
- OPTLX 79,66,8,<.\>
- OPTOX 16
- OPTLT 1,1,1,0,1,1,0,1,0,0,0,0
- OPTXL 1,1,1,1,1,1,1,0,0
- OPTFL 1,0,1
- OPTAX 0
- OPTDL (SARMCM3.DLL)()(DLM.DLL)(-pLM3S6918)(SARMCM3.DLL)()(TLM.DLL)(-pLM3S6918)
- OPTDBG 48125,7,()()()()()()()()()() (Segger\JL2CM3.dll)()()()
- OPTKEY 0,(DLGDARM)((1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(110=-1,-1,-1,-1,0)(100=-1,-1,-1,-1,0)(101=-1,-1,-1,-1,0)(102=-1,-1,-1,-1,0)(103=-1,-1,-1,-1,0)(104=-1,-1,-1,-1,0)(105=-1,-1,-1,-1,0)(106=-1,-1,-1,-1,0)(161=-1,-1,-1,-1,0)(162=-1,-1,-1,-1,0)(163=-1,-1,-1,-1,0)(164=-1,-1,-1,-1,0)(150=165,205,660,637,0)(151=-1,-1,-1,-1,0)(152=-1,-1,-1,-1,0)(1011=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0)(1014=-1,-1,-1,-1,0)(1016=-1,-1,-1,-1,0)(136=-1,-1,-1,-1,0))
- OPTKEY 0,(DLGTARM)((1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(110=-1,-1,-1,-1,0)(100=-1,-1,-1,-1,0)(101=-1,-1,-1,-1,0)(102=-1,-1,-1,-1,0)(103=-1,-1,-1,-1,0)(104=-1,-1,-1,-1,0)(105=-1,-1,-1,-1,0)(106=-1,-1,-1,-1,0)(161=-1,-1,-1,-1,0)(162=-1,-1,-1,-1,0)(163=-1,-1,-1,-1,0)(164=-1,-1,-1,-1,0)(150=-1,-1,-1,-1,0)(151=-1,-1,-1,-1,0)(152=-1,-1,-1,-1,0)(1011=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0)(1014=-1,-1,-1,-1,0)(1016=-1,-1,-1,-1,0)(136=-1,-1,-1,-1,0))
- OPTKEY 0,(ARMDBGFLAGS)(-T0)
- OPTKEY 0,(DLGUARM)((105=-1,-1,-1,-1,0)(106=-1,-1,-1,-1,0)(107=-1,-1,-1,-1,0))
- OPTKEY 0,(JL2CM3)(-U20090110 -O206 -S0 -C0 -JU1 -JI127.0.0.1 -JP0 -N00("ARM CoreSight SW-DP") -D00(3BA00477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0LM3S_256 -FS00 -FL040000)
- OPTDF 0x94
- OPTLE <>
- OPTLC <>
-EndOpt
-
diff --git a/bsp/lm3s/project.Uv2 b/bsp/lm3s/project.Uv2
deleted file mode 100644
index d8245d2569..0000000000
--- a/bsp/lm3s/project.Uv2
+++ /dev/null
@@ -1,140 +0,0 @@
-### uVision2 Project, (C) Keil Software
-### Do not modify !
-
-Target (RT-Thread/LM3S), 0x0004 // Tools: 'ARM-ADS'
-
-Group (Startup)
-Group (Kernel)
-Group (finsh)
-Group (LM3S)
-Group (driverlib)
-
-File 1,1,<.\application.c><application.c>
-File 1,1,<.\board.c><board.c>
-File 1,1,<.\startup.c><startup.c>
-File 1,5,<.\rtconfig.h><rtconfig.h>
-File 2,1,<..\..\src\clock.c><clock.c>
-File 2,1,<..\..\src\device.c><device.c>
-File 2,1,<..\..\src\idle.c><idle.c>
-File 2,1,<..\..\src\ipc.c><ipc.c>
-File 2,1,<..\..\src\irq.c><irq.c>
-File 2,1,<..\..\src\mem.c><mem.c>
-File 2,1,<..\..\src\mempool.c><mempool.c>
-File 2,1,<..\..\src\object.c><object.c>
-File 2,1,<..\..\src\scheduler.c><scheduler.c>
-File 2,1,<..\..\src\slab.c><slab.c>
-File 2,1,<..\..\src\thread.c><thread.c>
-File 2,1,<..\..\src\timer.c><timer.c>
-File 2,1,<..\..\src\kservice.c><kservice.c>
-File 3,1,<..\..\finsh\symbol.c><symbol.c>
-File 3,1,<..\..\finsh\cmd.c><cmd.c>
-File 3,1,<..\..\finsh\finsh_compiler.c><finsh_compiler.c>
-File 3,1,<..\..\finsh\finsh_error.c><finsh_error.c>
-File 3,1,<..\..\finsh\finsh_heap.c><finsh_heap.c>
-File 3,1,<..\..\finsh\finsh_init.c><finsh_init.c>
-File 3,1,<..\..\finsh\finsh_node.c><finsh_node.c>
-File 3,1,<..\..\finsh\finsh_ops.c><finsh_ops.c>
-File 3,1,<..\..\finsh\finsh_parser.c><finsh_parser.c>
-File 3,1,<..\..\finsh\finsh_token.c><finsh_token.c>
-File 3,1,<..\..\finsh\finsh_var.c><finsh_var.c>
-File 3,1,<..\..\finsh\finsh_vm.c><finsh_vm.c>
-File 3,1,<..\..\finsh\shell.c><shell.c>
-File 4,1,<..\..\libcpu\arm\lm3s\cpu.c><cpu.c>
-File 4,1,<..\..\libcpu\arm\lm3s\interrupt.c><interrupt.c>
-File 4,1,<..\..\libcpu\arm\lm3s\stack.c><stack.c>
-File 4,2,<..\..\libcpu\arm\lm3s\context_rvds.S><context_rvds.S>
-File 4,2,<..\..\libcpu\arm\lm3s\start_rvds.S><start_rvds.S>
-File 4,1,<..\..\libcpu\arm\lm3s\serial.c><serial.c>
-File 5,4,<.\driverlib\rvmdk\driverlib.lib><driverlib.lib>
-
-
-Options 1,0,0 // Target 'RT-Thread/LM3S'
- Device (LM3S6918)
- Vendor (Luminary Micro)
- Cpu (IRAM(0x20000000-0x2000FFFF) IROM(0-0x3FFFF) CLOCK(6000000) CPUTYPE("Cortex-M3"))
- FlashUt ()
- StupF ("STARTUP\Luminary\Startup.s" ("Luminary Startup Code"))
- FlashDR (UL2CM3(-UU0101L5E -O14 -S0 -C0 -N00("ARM Cortex-M3") -D00(1BA00477) -L00(4) -FO7 -FD20000000 -FC800 -FN1 -FF0LM3S_256 -FS00 -FL040000))
- DevID (4722)
- Rgf (LM3Sxxxx.H)
- Mem ()
- C ()
- A ()
- RL ()
- OH ()
- DBC_IFX ()
- DBC_CMS ()
- DBC_AMS ()
- DBC_LMS ()
- UseEnv=0
- EnvBin ()
- EnvInc ()
- EnvLib ()
- EnvReg (�Luminary\)
- OrgReg (�Luminary\)
- TgStat=16
- OutDir (.\obj\)
- OutName (rtthread-lm3s)
- GenApp=1
- GenLib=0
- GenHex=0
- Debug=1
- Browse=1
- LstDir (.\)
- HexSel=1
- MG32K=0
- TGMORE=0
- RunUsr 0 0 <>
- RunUsr 1 0 <>
- BrunUsr 0 0 <>
- BrunUsr 1 0 <>
- CrunUsr 0 0 <>
- CrunUsr 1 0 <>
- SVCSID <>
- GLFLAGS=1790
- ADSFLGA { 243,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }
- ACPUTYP ("Cortex-M3")
- RVDEV ()
- ADSTFLGA { 0,12,0,2,99,0,1,66,0,0,0,0,0,0,0,0,0,0,0,0 }
- OCMADSOCM { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }
- OCMADSIRAM { 0,0,0,0,32,0,0,1,0 }
- OCMADSIROM { 1,0,0,0,0,0,0,4,0 }
- OCMADSXRAM { 0,0,0,0,0,0,0,0,0 }
- OCR_RVCT { 1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,4,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,0,0,1,0,0,0,0,0,0,0,0,0,0 }
- RV_STAVEC ()
- ADSCCFLG { 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }
- ADSCMISC ()
- ADSCDEFN ()
- ADSCUDEF ()
- ADSCINCD (.;.\inc;..\..\include;..\..\libcpu\arm\lm3s;..\..\finsh)
- ADSASFLG { 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }
- ADSAMISC ()
- ADSADEFN ()
- ADSAUDEF ()
- ADSAINCD ()
- PropFld { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }
- IncBld=1
- AlwaysBuild=0
- GenAsm=0
- AsmAsm=0
- PublicsOnly=0
- StopCode=3
- CustArgs ()
- LibMods ()
- ADSLDFG { 17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }
- ADSLDTA (0x00000000)
- ADSLDDA (0x20000000)
- ADSLDSC ()
- ADSLDIB ()
- ADSLDIC ()
- ADSLDMC (--keep __fsym_* --keep __vsym_*)
- ADSLDIF ()
- ADSLDDW ()
- OPTDL (SARMCM3.DLL)()(DLM.DLL)(-pLM3S6918)(SARMCM3.DLL)()(TLM.DLL)(-pLM3S6918)
- OPTDBG 48125,7,()()()()()()()()()() (Segger\JL2CM3.dll)()()()
- FLASH1 { 9,0,0,0,1,0,0,0,5,16,0,0,0,0,0,0,0,0,0,0 }
- FLASH2 (Segger\JL2CM3.dll)
- FLASH3 ("" ())
- FLASH4 ()
-EndOpt
-
diff --git a/bsp/lm3s/project_lwip_dfs.Opt b/bsp/lm3s/project_lwip_dfs.Opt
index 3969bd1dde..e879594682 100644
--- a/bsp/lm3s/project_lwip_dfs.Opt
+++ b/bsp/lm3s/project_lwip_dfs.Opt
@@ -14,21 +14,21 @@ Target (RT-Thread/LM3S), 0x0004 // Tools: 'ARM-ADS'
GRPOPT 1,(Startup),1,0,0
GRPOPT 2,(Kernel),0,0,0
GRPOPT 3,(finsh),0,0,0
-GRPOPT 4,(LM3S),1,0,0
-GRPOPT 5,(driverlib),0,0,0
-GRPOPT 6,(Filesystem),0,0,0
-GRPOPT 7,(LwIP),1,0,0
+GRPOPT 4,(LM3S),0,0,0
+GRPOPT 5,(driverlib),1,0,0
+GRPOPT 6,(Filesystem),1,0,0
+GRPOPT 7,(LwIP),0,0,0
GRPOPT 8,(Utils),1,0,0
OPTFFF 1,1,1,201326592,0,0,0,0,<.\application.c><application.c>
-OPTFFF 1,2,1,520093698,0,46,58,0,<.\board.c><board.c> { 44,0,0,0,2,0,0,0,3,0,0,0,255,255,255,255,255,255,255,255,252,255,255,255,226,255,255,255,66,0,0,0,87,0,0,0,205,2,0,0,129,1,0,0 }
-OPTFFF 1,3,1,0,0,133,135,0,<.\startup.c><startup.c> { 44,0,0,0,0,0,0,0,1,0,0,0,255,255,255,255,255,255,255,255,252,255,255,255,226,255,255,255,44,0,0,0,58,0,0,0,214,2,0,0,38,1,0,0 }
-OPTFFF 1,4,5,0,0,1,1,0,<.\rtconfig.h><rtconfig.h> { 44,0,0,0,0,0,0,0,1,0,0,0,255,255,255,255,255,255,255,255,252,255,255,255,226,255,255,255,22,0,0,0,29,0,0,0,192,2,0,0,9,1,0,0 }
-OPTFFF 1,5,1,922746880,0,783,783,0,<.\sdcard.c><sdcard.c> { 44,0,0,0,0,0,0,0,1,0,0,0,255,255,255,255,255,255,255,255,252,255,255,255,226,255,255,255,66,0,0,0,87,0,0,0,236,2,0,0,67,1,0,0 }
-OPTFFF 1,6,1,0,0,38,46,0,<.\luminaryif.c><luminaryif.c> { 44,0,0,0,0,0,0,0,1,0,0,0,255,255,255,255,255,255,255,255,252,255,255,255,226,255,255,255,66,0,0,0,87,0,0,0,205,2,0,0,129,1,0,0 }
+OPTFFF 1,2,1,2,0,10,18,0,<.\board.c><board.c> { 44,0,0,0,2,0,0,0,3,0,0,0,255,255,255,255,255,255,255,255,252,255,255,255,226,255,255,255,22,0,0,0,29,0,0,0,161,2,0,0,71,1,0,0 }
+OPTFFF 1,3,1,0,0,0,0,0,<.\startup.c><startup.c>
+OPTFFF 1,4,5,0,0,0,0,0,<.\rtconfig.h><rtconfig.h>
+OPTFFF 1,5,1,922746880,0,0,0,0,<.\sdcard.c><sdcard.c>
+OPTFFF 1,6,1,0,0,0,0,0,<.\luminaryif.c><luminaryif.c>
OPTFFF 2,7,1,0,0,0,0,0,<..\..\src\clock.c><clock.c>
OPTFFF 2,8,1,0,0,0,0,0,<..\..\src\device.c><device.c>
-OPTFFF 2,9,1,0,0,57,60,0,<..\..\src\idle.c><idle.c> { 44,0,0,0,0,0,0,0,1,0,0,0,255,255,255,255,255,255,255,255,252,255,255,255,226,255,255,255,66,0,0,0,87,0,0,0,236,2,0,0,67,1,0,0 }
+OPTFFF 2,9,1,0,0,0,0,0,<..\..\src\idle.c><idle.c>
OPTFFF 2,10,1,0,0,0,0,0,<..\..\src\ipc.c><ipc.c>
OPTFFF 2,11,1,0,0,0,0,0,<..\..\src\irq.c><irq.c>
OPTFFF 2,12,1,0,0,0,0,0,<..\..\src\mem.c><mem.c>
@@ -56,18 +56,18 @@ OPTFFF 4,33,1,0,0,0,0,0,<..\..\libcpu\arm\lm3s\cpu.c><cpu.c>
OPTFFF 4,34,1,0,0,0,0,0,<..\..\libcpu\arm\lm3s\interrupt.c><interrupt.c>
OPTFFF 4,35,1,0,0,0,0,0,<..\..\libcpu\arm\lm3s\stack.c><stack.c>
OPTFFF 4,36,2,0,0,0,0,0,<..\..\libcpu\arm\lm3s\context_rvds.S><context_rvds.S>
-OPTFFF 4,37,2,0,0,28,32,0,<..\..\libcpu\arm\lm3s\start_rvds.S><start_rvds.S> { 44,0,0,0,0,0,0,0,1,0,0,0,255,255,255,255,255,255,255,255,252,255,255,255,226,255,255,255,66,0,0,0,87,0,0,0,205,2,0,0,129,1,0,0 }
+OPTFFF 4,37,2,0,0,0,0,0,<..\..\libcpu\arm\lm3s\start_rvds.S><start_rvds.S>
OPTFFF 4,38,1,0,0,0,0,0,<..\..\libcpu\arm\lm3s\serial.c><serial.c>
OPTFFF 4,39,1,0,0,0,0,0,<..\..\libcpu\arm\lm3s\fault.c><fault.c>
-OPTFFF 4,40,2,0,0,12,12,0,<..\..\libcpu\arm\lm3s\fault_rvds.S><fault_rvds.S> { 44,0,0,0,0,0,0,0,1,0,0,0,255,255,255,255,255,255,255,255,252,255,255,255,226,255,255,255,88,0,0,0,116,0,0,0,227,2,0,0,158,1,0,0 }
-OPTFFF 5,41,4,0,0,0,0,0,<.\driverlib\rvmdk\driverlib.lib><driverlib.lib>
+OPTFFF 4,40,2,0,0,0,0,0,<..\..\libcpu\arm\lm3s\fault_rvds.S><fault_rvds.S>
+OPTFFF 5,41,4,0,0,0,0,0,<E:\SVN-Google-Source\bsp\lm3s\Libraries\driverlib\rvmdk\driverlib.lib><driverlib.lib>
OPTFFF 6,42,1,1,0,0,0,0,<..\..\filesystem\dfs\src\dfs_init.c><dfs_init.c>
OPTFFF 6,43,1,0,0,0,0,0,<..\..\filesystem\dfs\src\dfs_fs.c><dfs_fs.c>
OPTFFF 6,44,1,0,0,0,0,0,<..\..\filesystem\dfs\src\dfs_raw.c><dfs_raw.c>
OPTFFF 6,45,1,0,0,0,0,0,<..\..\filesystem\dfs\src\dfs_util.c><dfs_util.c>
-OPTFFF 6,46,1,0,0,0,0,0,<..\..\filesystem\dfs\src\dfs_cache.c><dfs_cache.c>
+OPTFFF 6,46,1,0,0,1,1,0,<..\..\filesystem\dfs\src\dfs_cache.c><dfs_cache.c> { 44,0,0,0,0,0,0,0,1,0,0,0,255,255,255,255,255,255,255,255,252,255,255,255,226,255,255,255,0,0,0,0,0,0,0,0,135,2,0,0,41,1,0,0 }
OPTFFF 6,47,1,0,0,0,0,0,<..\..\filesystem\dfs\src\dfs_posix.c><dfs_posix.c>
-OPTFFF 6,48,1,0,0,160,168,0,<..\..\filesystem\dfs\filesystems\efsl\src\base\efs.c><efs.c> { 44,0,0,0,0,0,0,0,1,0,0,0,255,255,255,255,255,255,255,255,252,255,255,255,226,255,255,255,44,0,0,0,58,0,0,0,183,2,0,0,100,1,0,0 }
+OPTFFF 6,48,1,0,0,0,0,0,<..\..\filesystem\dfs\filesystems\efsl\src\base\efs.c><efs.c>
OPTFFF 6,49,1,0,0,0,0,0,<..\..\filesystem\dfs\filesystems\efsl\src\base\extract.c><extract.c>
OPTFFF 6,50,1,0,0,0,0,0,<..\..\filesystem\dfs\filesystems\efsl\src\base\partition.c><partition.c>
OPTFFF 6,51,1,0,0,0,0,0,<..\..\filesystem\dfs\filesystems\efsl\src\base\plibc.c><plibc.c>
@@ -115,16 +115,12 @@ OPTFFF 7,92,1,0,0,0,0,0,<..\..\net\lwip\src\arch\sys_arch.c><sys_arch.c>
OPTFFF 7,93,1,0,0,0,0,0,<..\..\net\lwip\src\api\sockets.c><sockets.c>
OPTFFF 7,94,1,0,0,0,0,0,<..\..\net\lwip\src\core\memp_tiny.c><memp_tiny.c>
OPTFFF 8,95,1,0,0,0,0,0,<..\..\net\apps\chargen.c><chargen.c>
-OPTFFF 8,96,1,0,0,548,558,0,<..\..\net\apps\ftpd.c><ftpd.c> { 44,0,0,0,0,0,0,0,1,0,0,0,255,255,255,255,255,255,255,255,252,255,255,255,226,255,255,255,44,0,0,0,58,0,0,0,214,2,0,0,38,1,0,0 }
+OPTFFF 8,96,1,0,0,0,0,0,<..\..\net\apps\ftpd.c><ftpd.c>
OPTFFF 8,97,1,0,0,0,0,0,<..\..\net\apps\sntp.c><sntp.c>
OPTFFF 8,98,1,0,0,0,0,0,<..\..\net\apps\tcpecho.c><tcpecho.c>
-OPTFFF 8,99,1,486539264,0,56,56,0,<..\..\net\apps\tftp.c><tftp.c> { 44,0,0,0,0,0,0,0,1,0,0,0,255,255,255,255,255,255,255,255,252,255,255,255,226,255,255,255,22,0,0,0,29,0,0,0,161,2,0,0,71,1,0,0 }
+OPTFFF 8,99,1,486539264,0,0,0,0,<..\..\net\apps\tftp.c><tftp.c>
OPTFFF 8,100,1,0,0,0,0,0,<..\..\net\apps\udpecho.c><udpecho.c>
-ExtF <E:\SVN-Google-Source\filesystem\dfs\include\dfs_def.h> 141,141,0,{ 44,0,0,0,0,0,0,0,1,0,0,0,255,255,255,255,255,255,255,255,252,255,255,255,226,255,255,255,66,0,0,0,87,0,0,0,236,2,0,0,67,1,0,0 }
-ExtF <E:\SVN-Google-Source\filesystem\dfs\dfs_config.h> 83,91,0,{ 44,0,0,0,0,0,0,0,1,0,0,0,255,255,255,255,255,255,255,255,252,255,255,255,226,255,255,255,0,0,0,0,0,0,0,0,170,2,0,0,236,0,0,0 }
-ExtF <E:\SVN-Google-Source\net\lwip\src\lwipopts.h> 144,148,0,{ 44,0,0,0,0,0,0,0,1,0,0,0,255,255,255,255,255,255,255,255,252,255,255,255,226,255,255,255,0,0,0,0,0,0,0,0,170,2,0,0,236,0,0,0 }
-ExtF <E:\SVN-Google-Source\src\kservice.h> 81,87,0,{ 44,0,0,0,0,0,0,0,1,0,0,0,255,255,255,255,255,255,255,255,252,255,255,255,226,255,255,255,0,0,0,0,0,0,0,0,170,2,0,0,236,0,0,0 }
TARGOPT 1, (RT-Thread/LM3S)
ADSCLK=6000000
diff --git a/bsp/lm3s/project_lwip_dfs.Uv2 b/bsp/lm3s/project_lwip_dfs.Uv2
index d0b45185e3..94bad23c27 100644
--- a/bsp/lm3s/project_lwip_dfs.Uv2
+++ b/bsp/lm3s/project_lwip_dfs.Uv2
@@ -52,7 +52,7 @@ File 4,2,<..\..\libcpu\arm\lm3s\start_rvds.S><start_rvds.S>
File 4,1,<..\..\libcpu\arm\lm3s\serial.c><serial.c>
File 4,1,<..\..\libcpu\arm\lm3s\fault.c><fault.c>
File 4,2,<..\..\libcpu\arm\lm3s\fault_rvds.S><fault_rvds.S>
-File 5,4,<.\driverlib\rvmdk\driverlib.lib><driverlib.lib>
+File 5,4,<E:\SVN-Google-Source\bsp\lm3s\Libraries\driverlib\rvmdk\driverlib.lib><driverlib.lib>
File 6,1,<..\..\filesystem\dfs\src\dfs_init.c><dfs_init.c>
File 6,1,<..\..\filesystem\dfs\src\dfs_fs.c><dfs_fs.c>
File 6,1,<..\..\filesystem\dfs\src\dfs_raw.c><dfs_raw.c>
@@ -172,7 +172,7 @@ Options 1,0,0 // Target 'RT-Thread/LM3S'
ADSCMISC ()
ADSCDEFN ()
ADSCUDEF ()
- ADSCINCD (.;.\inc;..\..\include;..\..\libcpu\arm\lm3s;..\..\finsh;..\..\filesystem\dfs;..\..\filesystem\dfs\include;..\..\net\lwip\src;..\..\net\lwip\src\include;..\..\net\lwip\src\arch\include;..\..\net\lwip\src\include\ipv4;..\..\filesystem\dfs\include;..\..\filesystem\dfs\filesystems\efsl\src\include;..\..\filesystem\dfs\filesystems\efsl\src\base\include;..\..\filesystem\dfs\filesystems\efsl\src\fs\vfat\include)
+ ADSCINCD (.;.\Libraries;..\..\include;..\..\libcpu\arm\lm3s;..\..\finsh;..\..\filesystem\dfs;..\..\filesystem\dfs\include;..\..\net\lwip\src;..\..\net\lwip\src\include;..\..\net\lwip\src\arch\include;..\..\net\lwip\src\include\ipv4;..\..\filesystem\dfs\include;..\..\filesystem\dfs\filesystems\efsl\src\include;..\..\filesystem\dfs\filesystems\efsl\src\base\include;..\..\filesystem\dfs\filesystems\efsl\src\fs\vfat\include)
ADSASFLG { 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }
ADSAMISC ()
ADSADEFN ()
diff --git a/filesystem/dfs/filesystems/efsl/src/base/debug.c b/filesystem/dfs/filesystems/efsl/src/base/debug.c
deleted file mode 100644
index 05962c6178..0000000000
--- a/filesystem/dfs/filesystems/efsl/src/base/debug.c
+++ /dev/null
@@ -1,182 +0,0 @@
-/*****************************************************************************\
-* EFSL - Embedded Filesystems Library *
-* ----------------------------------- *
-* *
-* Filename : debug.c *
-* Release : 0.3 - devel *
-* Description : These functions are used for debugging output on different *
-* environments *
-* *
-* This program is free software; you can redistribute it and/or *
-* modify it under the terms of the GNU General Public License *
-* as published by the Free Software Foundation; version 2 *
-* of the License. *
-* *
-* This program is distributed in the hope that it will be useful, *
-* but WITHOUT ANY WARRANTY; without even the implied warranty of *
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
-* GNU General Public License for more details. *
-* *
-* As a special exception, if other files instantiate templates or *
-* use macros or inline functions from this file, or you compile this *
-* file and link it with other works to produce a work based on this file, *
-* this file does not by itself cause the resulting work to be covered *
-* by the GNU General Public License. However the source code for this *
-* file must still be made available in accordance with section (3) of *
-* the GNU General Public License. *
-* *
-* This exception does not invalidate any other reasons why a work based *
-* on this file might be covered by the GNU General Public License. *
-* *
-* (c)2006 Lennart Yseboodt *
-* (c)2006 Michael De Nil *
-\*****************************************************************************/
-
-/* COMMENT REGARDING FUNCTION COMMENTS IN THIS FILE
- * Only the linuxfile debug functions are commented since all functions
- * perform the same logical task.
-*/
-
-/*****************************************************************************/
-#include "debug.h"
-/*****************************************************************************/
-
-
-/*****************************************************************************/
-#ifdef DEBUG
-#ifdef HW_ENDPOINT_LINUX_ALL
-/*****************************************************************************/
-
-/* ****************************************************************************
- * void debug(const eint8 *format, ...)
- * Description: This function prints debug output to the screen (target dependant)
- * and if DO_FUNC_DEBUG is defined also to a localfile.
- * Return value: void
-*/
-
-void debug(const eint8 *format, ...)
-{
- va_list ap;
- #ifdef DO_FUNC_DEBUG
- euint8 c;
- extern FILE* debugfile;
- extern volatile euint8 tw;
- #endif
-
- va_start(ap, format);
- vprintf(format,ap);
- #ifdef DO_FUNC_DEBUG
- for(c=0;c<tw+1;c++)
- {
- fprintf(debugfile," ");
- }
- vfprintf(debugfile,format,ap);
- #endif
- va_end(ap);
-}
-/*****************************************************************************/
-
-/* ****************************************************************************
- * void debug_funcin(const eint8 *format, ...)
- * Description: This function marks the entrance of a function, which
- * increments a tabfieldcounter. A tree like structure can the be found in the
- * debugging file.
- * Return value: void
-*/
-
-void debug_funcin(const eint8 *format, ...)
-{
- #ifdef DO_FUNC_DEBUG
- eint8 c;
- va_list ap;
- extern FILE* debugfile;
- extern volatile unsigned char tw;
-
- if(debugfile==RT_NULL)return;
-
- for(c=0;c<tw;c++){
- fprintf(debugfile," ");
- }
-
- va_start(ap, format);
- vfprintf(debugfile,format,ap);
- va_end(ap);
- fprintf(debugfile,"\n");
-
- tw++;
- #endif
-}
-/*****************************************************************************/
-
-/* ****************************************************************************
- * void debug_funcout(const eint8 *format, ...)
- * Description: Decrements the tabfieldcounter. This function is called everywhere
- * a function is left.
- * Return value: void
-*/
-
-void debug_funcout(const eint8 *format, ...)
-{
- #ifdef DO_FUNC_DEBUG
- eint8 c;
- va_list ap;
- extern FILE* debugfile;
- extern volatile euint8 tw;
-
- if(debugfile==RT_NULL)return;
-
- if(tw>0)tw--;
-
- for(c=0;c<tw;c++){
- fprintf(debugfile," ");
- }
-
- va_start(ap, format);
- vfprintf(debugfile,format,ap);
- va_end(ap);
- fprintf(debugfile,"\n");
- #endif
-}
-/*****************************************************************************/
-
-/* ****************************************************************************
- * void debug_init()
- * Description: This function optionally opens the debugfile, or does any other
- * initialisation to enable debugoutput.
- * Return value: void
-*/
-void debug_init()
-{
- #ifdef DO_FUNC_DEBUG
- extern FILE* debugfile;
- extern volatile unsigned char tw;
-
- debugfile=RT_NULL;
- tw=0;
-
- debugfile=fopen("DBG.OUT","w");
- #endif
-}
-/*****************************************************************************/
-
-/* ****************************************************************************
- * void debug_end()
- * Description: This function closes the debugfile.
- * Return value: void
-*/
-void debug_end()
-{
- #ifdef DO_FUNC_DEBUG
- extern FILE* debugfile;
-
- fflush(debugfile);
- fclose(debugfile);
- #endif
-}
-/*****************************************************************************/
-
-/*****************************************************************************/
-#endif
-#endif
-/*****************************************************************************/
-
diff --git a/filesystem/dfs/filesystems/efsl/src/base/include/debug.h b/filesystem/dfs/filesystems/efsl/src/base/include/debug.h
deleted file mode 100644
index 505e0466a6..0000000000
--- a/filesystem/dfs/filesystems/efsl/src/base/include/debug.h
+++ /dev/null
@@ -1,68 +0,0 @@
-/*****************************************************************************\
-* EFSL - Embedded Filesystems Library *
-* ----------------------------------- *
-* *
-* Filename : debug.h *
-* Release : 0.3 - devel *
-* Description : These functions are used for debugging output on different *
-* environments *
-* *
-* This program is free software; you can redistribute it and/or *
-* modify it under the terms of the GNU General Public License *
-* as published by the Free Software Foundation; version 2 *
-* of the License. *
-* *
-* This program is distributed in the hope that it will be useful, *
-* but WITHOUT ANY WARRANTY; without even the implied warranty of *
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
-* GNU General Public License for more details. *
-* *
-* As a special exception, if other files instantiate templates or *
-* use macros or inline functions from this file, or you compile this *
-* file and link it with other works to produce a work based on this file, *
-* this file does not by itself cause the resulting work to be covered *
-* by the GNU General Public License. However the source code for this *
-* file must still be made available in accordance with section (3) of *
-* the GNU General Public License. *
-* *
-* This exception does not invalidate any other reasons why a work based *
-* on this file might be covered by the GNU General Public License. *
-* *
-* (c)2006 Lennart Yseboodt *
-* (c)2006 Michael De Nil *
-\*****************************************************************************/
-
-#ifndef __DEBUG_H__
-#define __DEBUG_H__
-
-/*****************************************************************************/
-#include "types.h"
-#include "config.h"
-/*****************************************************************************/
-
-#ifndef DEBUG
- #define TXT(x) ;
- #define DBG(x) ;
- #define FUNC_IN(x) ;
- #define FUNC_OUT(x) ;
-#endif
-
-#ifdef DEBUG
-
- #ifdef HW_ENDPOINT_LINUX
- #include <stdio.h>
- #include <stdarg.h>
-
- #define TXT(x) x
- #define DBG(x) debug x
- #define FUNC_IN(x) debug_funcin(x)
- #define FUNC_OUT(x) debug_funcout(x)
- #endif
-
- void debug(const eint8 *format, ...);
- void debug_init();
- void debug_end();
-
-#endif
-
-#endif
diff --git a/filesystem/dfs/filesystems/efsl/src/base/include/ioman.h b/filesystem/dfs/filesystems/efsl/src/base/include/ioman.h
deleted file mode 100644
index 406ed5aff3..0000000000
--- a/filesystem/dfs/filesystems/efsl/src/base/include/ioman.h
+++ /dev/null
@@ -1,140 +0,0 @@
-/*****************************************************************************\
-* EFSL - Embedded Filesystems Library *
-* ----------------------------------- *
-* *
-* Filename : ioman.c *
-* Release : 0.3 - devel *
-* Description : The IO Manager receives all requests for sectors in a central *
-* allowing it to make smart decision regarding caching. *
-* The IOMAN_NUMBUFFER parameter determines how many sectors *
-* ioman can cache. ioman also supports overallocating and *
-* backtracking sectors. *
-* *
-* This program is free software; you can redistribute it and/or *
-* modify it under the terms of the GNU General Public License *
-* as published by the Free Software Foundation; version 2 *
-* of the License. *
-* *
-* This program is distributed in the hope that it will be useful, *
-* but WITHOUT ANY WARRANTY; without even the implied warranty of *
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
-* GNU General Public License for more details. *
-* *
-* As a special exception, if other files instantiate templates or *
-* use macros or inline functions from this file, or you compile this *
-* file and link it with other works to produce a work based on this file, *
-* this file does not by itself cause the resulting work to be covered *
-* by the GNU General Public License. However the source code for this *
-* file must still be made available in accordance with section (3) of *
-* the GNU General Public License. *
-* *
-* This exception does not invalidate any other reasons why a work based *
-* on this file might be covered by the GNU General Public License. *
-* *
-* (c)2006 Lennart Yseboodt *
-* (c)2006 Michael De Nil *
-\*****************************************************************************/
-
-#ifndef __IOMAN_H__
-#define __IOMAN_H__
-
-/*****************************************************************************/
-#include <rtthread.h>
-
-#include "error.h"
-#include "plibc.h"
-#include "debug.h"
-#include "types.h"
-#include "config.h"
-/*****************************************************************************/
-
-#define IOMAN_STATUS_ATTR_VALIDDATA 0
-#define IOMAN_STATUS_ATTR_USERBUFFER 1
-#define IOMAN_STATUS_ATTR_WRITE 2
-
-#define IOM_MODE_READONLY 1
-#define IOM_MODE_READWRITE 2
-#define IOM_MODE_EXP_REQ 4
-
-struct _IOManStack{
- euint32 sector;
- euint8 status;
- euint8 usage;
-};
-typedef struct _IOManStack IOManStack;
-
-struct _IOManager{
- rt_device_t device;
- euint8 *bufptr;
- euint16 numbuf;
- euint16 numit;
-
- IOMAN_ERR_EUINT8
-
- IOManStack stack[IOMAN_NUMBUFFER][IOMAN_NUMITERATIONS];
-
- euint32 sector[IOMAN_NUMBUFFER];
- euint8 status[IOMAN_NUMBUFFER];
- euint8 usage[IOMAN_NUMBUFFER];
- euint8 reference[IOMAN_NUMBUFFER];
- euint8 itptr[IOMAN_NUMBUFFER];
-#ifdef IOMAN_DO_MEMALLOC
- euint8 cache_mem[IOMAN_NUMBUFFER * 512];
-#endif
-};
-typedef struct _IOManager IOManager;
-
-#define IOBJ ioman
-
-#define ioman_isValid(bp) ioman_getAttr(IOBJ,bp,IOMAN_STATUS_ATTR_VALIDDATA)
-#define ioman_isUserBuf(bp) ioman_getAttr(IOBJ,bp,IOMAN_STATUS_ATTR_USERBUFFER)
-#define ioman_isWritable(bp) ioman_getAttr(IOBJ,bp,IOMAN_STATUS_ATTR_WRITE)
-
-#define ioman_setValid(bp) ioman_setAttr(IOBJ,bp,IOMAN_STATUS_ATTR_VALIDDATA,1)
-#define ioman_setUserBuf(bp) ioman_setAttr(IOBJ,bp,IOMAN_STATUS_ATTR_USERBUFFER,1)
-#define ioman_setWritable(bp) ioman_setAttr(IOBJ,bp,IOMAN_STATUS_ATTR_WRITE,1)
-
-#define ioman_setNotValid(bp) ioman_setAttr(IOBJ,bp,IOMAN_STATUS_ATTR_VALIDDATA,0)
-#define ioman_setNotUserBuf(bp) ioman_setAttr(IOBJ,bp,IOMAN_STATUS_ATTR_USERBUFFER,0)
-#define ioman_setNotWritable(bp) ioman_setAttr(IOBJ,bp,IOMAN_STATUS_ATTR_WRITE,0)
-
-#define ioman_isReqRo(mode) ((mode)&(IOM_MODE_READONLY))
-#define ioman_isReqRw(mode) ((mode)&(IOM_MODE_READWRITE))
-#define ioman_isReqExp(mode) ((mode)&(IOM_MODE_EXP_REQ))
-
-esint8 ioman_init(IOManager *ioman, euint8* bufferarea);
-void ioman_reset(IOManager *ioman);
-euint8* ioman_getBuffer(IOManager *ioman,euint8* bufferarea);
-void ioman_setAttr(IOManager *ioman,euint16 bufplace,euint8 attribute,euint8 val);
-euint8 ioman_getAttr(IOManager *ioman,euint16 bufplace,euint8 attribute);
-euint8 ioman_getUseCnt(IOManager *ioman,euint16 bufplace);
-void ioman_incUseCnt(IOManager *ioman,euint16 bufplace);
-void ioman_decUseCnt(IOManager *ioman,euint16 bufplace);
-void ioman_resetUseCnt(IOManager *ioman,euint16 bufplace);
-euint8 ioman_getRefCnt(IOManager *ioman,euint16 bufplace);
-void ioman_incRefCnt(IOManager *ioman,euint16 bufplace);
-void ioman_decRefCnt(IOManager *ioman,euint16 bufplace);
-void ioman_resetRefCnt(IOManager *ioman,euint16 bufplace);
-esint8 ioman_pop(IOManager *ioman,euint16 bufplace);
-esint8 ioman_push(IOManager *ioman,euint16 bufplace);
-euint8* ioman_getPtr(IOManager *ioman,euint16 bufplace);
-esint16 ioman_getBp(IOManager *ioman,euint8* buf);
-esint8 ioman_readSector(IOManager *ioman,euint32 address,euint8* buf);
-esint8 ioman_writeSector(IOManager *ioman, euint32 address, euint8* buf);
-void ioman_resetCacheItem(IOManager *ioman,euint16 bufplace);
-esint32 ioman_findSectorInCache(IOManager *ioman, euint32 address);
-esint32 ioman_findFreeSpot(IOManager *ioman);
-esint32 ioman_findUnusedSpot(IOManager *ioman);
-esint32 ioman_findOverallocableSpot(IOManager *ioman);
-esint8 ioman_putSectorInCache(IOManager *ioman,euint32 address, euint16 bufplace);
-esint8 ioman_flushSector(IOManager *ioman, euint16 bufplace);
-euint8* ioman_getSector(IOManager *ioman,euint32 address, euint8 mode);
-esint8 ioman_releaseSector(IOManager *ioman,euint8* buf);
-esint8 ioman_directSectorRead(IOManager *ioman,euint32 address, euint8* buf);
-esint8 ioman_directSectorWrite(IOManager *ioman,euint32 address, euint8* buf);
-esint8 ioman_flushRange(IOManager *ioman,euint32 address_low, euint32 address_high);
-esint8 ioman_flushAll(IOManager *ioman);
-
-void ioman_printStatus(IOManager *ioman);
-
-#endif
diff --git a/filesystem/dfs/filesystems/efsl/src/base/include/ioman_small.h b/filesystem/dfs/filesystems/efsl/src/base/include/ioman_small.h
deleted file mode 100644
index 5962f56c6e..0000000000
--- a/filesystem/dfs/filesystems/efsl/src/base/include/ioman_small.h
+++ /dev/null
@@ -1,93 +0,0 @@
-/*****************************************************************************\
-* EFSL - Embedded Filesystems Library *
-* ----------------------------------- *
-* *
-* Filename : ioman_small.c *
-* Release : 0.3 - devel *
-* Description : The IO Manager receives all requests for sectors in a central *
-* allowing it to make smart decision regarding caching. *
-* The IOMAN_NUMBUFFER parameter determines how many sectors *
-* ioman can cache. ioman also supports overallocating and *
-* backtracking sectors. *
-* This is the small version of IOMan, for systems with limited *
-* resources. It features only one fixed buffer, and has *
-* simplified operation *
-* *
-* This program is free software; you can redistribute it and/or *
-* modify it under the terms of the GNU General Public License *
-* as published by the Free Software Foundation; version 2 *
-* of the License. *
-* *
-* This program is distributed in the hope that it will be useful, *
-* but WITHOUT ANY WARRANTY; without even the implied warranty of *
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
-* GNU General Public License for more details. *
-* *
-* As a special exception, if other files instantiate templates or *
-* use macros or inline functions from this file, or you compile this *
-* file and link it with other works to produce a work based on this file, *
-* this file does not by itself cause the resulting work to be covered *
-* by the GNU General Public License. However the source code for this *
-* file must still be made available in accordance with section (3) of *
-* the GNU General Public License. *
-* *
-* This exception does not invalidate any other reasons why a work based *
-* on this file might be covered by the GNU General Public License. *
-* *
-* (c)2006 Lennart Yseboodt *
-* (c)2006 Michael De Nil *
-\*****************************************************************************/
-
-#include "error.h"
-#include "plibc.h"
-#include "debug.h"
-#include "types.h"
-#include "config.h"
-
-#define IOMAN_STATUS_ATTR_VALIDDATA 0
-#define IOMAN_STATUS_ATTR_USERBUFFER 1
-#define IOMAN_STATUS_ATTR_WRITE 2
-
-#define IOM_MODE_READONLY 1
-#define IOM_MODE_READWRITE 2
-#define IOM_MODE_EXP_REQ 4
-
-struct _IOManStack{
- euint32 sector;
- euint8 status;
-};
-typedef struct _IOManStack IOManStack;
-
-struct _IOManager{
- rt_device_t device; /* device handler */
- euint8 bufptr[512];
- IOMAN_ERR_EUINT8
- euint32 sector;
- euint8 status;
- euint8 itptr;
- IOManStack stack;
-};
-typedef struct _IOManager IOManager;
-
-#define IOBJ ioman
-
-#define ioman_isValid() ioman_getAttr(IOBJ,IOMAN_STATUS_ATTR_VALIDDATA)
-#define ioman_isUserBuf() ioman_getAttr(IOBJ,IOMAN_STATUS_ATTR_USERBUFFER)
-#define ioman_isWritable() ioman_getAttr(IOBJ,IOMAN_STATUS_ATTR_WRITE)
-
-#define ioman_setValid() ioman_setAttr(IOBJ,IOMAN_STATUS_ATTR_VALIDDATA,1)
-#define ioman_setUserBuf() ioman_setAttr(IOBJ,IOMAN_STATUS_ATTR_USERBUFFER,1)
-#define ioman_setWritable() ioman_setAttr(IOBJ,IOMAN_STATUS_ATTR_WRITE,1)
-
-#define ioman_setNotValid() ioman_setAttr(IOBJ,IOMAN_STATUS_ATTR_VALIDDATA,0)
-#define ioman_setNotUserBuf() ioman_setAttr(IOBJ,IOMAN_STATUS_ATTR_USERBUFFER,0)
-#define ioman_setNotWritable() ioman_setAttr(IOBJ,IOMAN_STATUS_ATTR_WRITE,0)
-
-#define ioman_isReqRo(mode) ((mode)&(IOM_MODE_READONLY))
-#define ioman_isReqRw(mode) ((mode)&(IOM_MODE_READWRITE))
-#define ioman_isReqExp(mode) ((mode)&(IOM_MODE_EXP_REQ))
-
-esint8 ioman_init(IOManager *ioman, euint8* bufferarea);
-void ioman_reset(IOManager *ioman);
-void ioman_setAttr(IOManager *ioman,euint8 attribute,euint8 val);
-euint8 ioman_getAttr(IOManager *ioman,euint8 attribute);
diff --git a/filesystem/dfs/filesystems/efsl/src/base/include/plibc.h b/filesystem/dfs/filesystems/efsl/src/base/include/plibc.h
index 30d86bd60b..80dd11467d 100644
--- a/filesystem/dfs/filesystems/efsl/src/base/include/plibc.h
+++ b/filesystem/dfs/filesystems/efsl/src/base/include/plibc.h
@@ -35,7 +35,6 @@
#define __PLIBC_H__
/*****************************************************************************/
-#include "debug.h"
#include "types.h"
#include "config.h"
/*****************************************************************************/
diff --git a/filesystem/dfs/filesystems/efsl/src/base/ioman.c b/filesystem/dfs/filesystems/efsl/src/base/ioman.c
deleted file mode 100644
index 42fb664324..0000000000
--- a/filesystem/dfs/filesystems/efsl/src/base/ioman.c
+++ /dev/null
@@ -1,600 +0,0 @@
-/*****************************************************************************\
-* EFSL - Embedded Filesystems Library *
-* ----------------------------------- *
-* *
-* Filename : ioman.c *
-* Release : 0.3 - devel *
-* Description : The IO Manager receives all requests for sectors in a central *
-* allowing it to make smart decision regarding caching. *
-* The IOMAN_NUMBUFFER parameter determines how many sectors *
-* ioman can cache. ioman also supports overallocating and *
-* backtracking sectors. *
-* *
-* This program is free software; you can redistribute it and/or *
-* modify it under the terms of the GNU General Public License *
-* as published by the Free Software Foundation; version 2 *
-* of the License. *
-* *
-* This program is distributed in the hope that it will be useful, *
-* but WITHOUT ANY WARRANTY; without even the implied warranty of *
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
-* GNU General Public License for more details. *
-* *
-* As a special exception, if other files instantiate templates or *
-* use macros or inline functions from this file, or you compile this *
-* file and link it with other works to produce a work based on this file, *
-* this file does not by itself cause the resulting work to be covered *
-* by the GNU General Public License. However the source code for this *
-* file must still be made available in accordance with section (3) of *
-* the GNU General Public License. *
-* *
-* This exception does not invalidate any other reasons why a work based *
-* on this file might be covered by the GNU General Public License. *
-* *
-* (c)2006 Lennart Yseboodt *
-* (c)2006 Michael De Nil *
-\*****************************************************************************/
-
-/*****************************************************************************/
-#include "ioman.h"
-#include "efs.h"
-/*****************************************************************************/
-
-esint8 ioman_init(IOManager *ioman, euint8* bufferarea)
-{
- ioman->bufptr = ioman_getBuffer(ioman,bufferarea);
- ioman->numbuf = IOMAN_NUMBUFFER;
- ioman->numit = IOMAN_NUMITERATIONS;
-
- ioman_reset(ioman);
- return(0);
-}
-/*****************************************************************************/
-
-void ioman_reset(IOManager *ioman)
-{
- euint16 nb,ni;
-
- memClr(ioman->sector,sizeof(euint32)*ioman->numbuf);
- memClr(ioman->status,sizeof(euint8) *ioman->numbuf);
- memClr(ioman->usage ,sizeof(euint8) *ioman->numbuf);
- memClr(ioman->itptr ,sizeof(euint8) *ioman->numbuf);
- ioman_setError(ioman,IOMAN_NOERROR);
-
- for(nb=0;nb<ioman->numbuf;nb++){
- for(ni=0;ni<ioman->numit;ni++){
- ioman->stack[nb][ni].sector=0;
- ioman->stack[nb][ni].status=0;
- ioman->stack[nb][ni].usage =0;
- }
- }
-}
-/*****************************************************************************/
-
-euint8* ioman_getBuffer(IOManager *ioman,euint8* bufferarea)
-{
-#ifdef IOMAN_DO_MEMALLOC
- return(ioman->cache_mem);
-#else
- return(bufferarea);
-#endif
-}
-/*****************************************************************************/
-
-void ioman_setAttr(IOManager *ioman,euint16 bufplace,euint8 attribute,euint8 val)
-{
- if(bufplace>=ioman->numbuf){
- ioman_setError(ioman,IOMAN_ERR_SETATTROUTOFBOUNDS);
- return; /* Out of bounds */
- }
-
- if(val){
- ioman->status[bufplace]|=1<<attribute;
- }else{
- ioman->status[bufplace]&=~(1<<attribute);
- }
-}
-/*****************************************************************************/
-
-euint8 ioman_getAttr(IOManager *ioman,euint16 bufplace,euint8 attribute)
-{
- if(bufplace>=ioman->numbuf){
- ioman_setError(ioman,IOMAN_ERR_GETATTROUTOFBOUNDS);
- return(0xFF); /* Out of bounds */
- }
-
- return(ioman->status[bufplace]&(1<<attribute));
-}
-/*****************************************************************************/
-
-euint8 ioman_getUseCnt(IOManager *ioman,euint16 bufplace)
-{
- if(bufplace>=ioman->numbuf){
- ioman_setError(ioman,IOMAN_ERR_OPOUTOFBOUNDS);
- return(0x00);
- }
- return(ioman->usage[bufplace]);
-}
-/*****************************************************************************/
-
-
-void ioman_incUseCnt(IOManager *ioman,euint16 bufplace)
-{
- if(bufplace>=ioman->numbuf){
- ioman_setError(ioman,IOMAN_ERR_OPOUTOFBOUNDS);
- return;
- }
- if(ioman->usage[bufplace]==0xFF)return;
- else ioman->usage[bufplace]++;
-}
-/*****************************************************************************/
-
-void ioman_decUseCnt(IOManager *ioman,euint16 bufplace)
-{
- if(bufplace>=ioman->numbuf){
- ioman_setError(ioman,IOMAN_ERR_OPOUTOFBOUNDS);
- return;
- }
- if(ioman->usage[bufplace]==0x0)return;
- else ioman->usage[bufplace]--;
-}
-/*****************************************************************************/
-
-void ioman_resetUseCnt(IOManager *ioman,euint16 bufplace)
-{
- if(bufplace>=ioman->numbuf){
- ioman_setError(ioman,IOMAN_ERR_OPOUTOFBOUNDS);
- return;
- }
- ioman->usage[bufplace]=0x00;
-}
-/*****************************************************************************/
-
-euint8 ioman_getRefCnt(IOManager *ioman,euint16 bufplace)
-{
- if(bufplace>=ioman->numbuf){
- ioman_setError(ioman,IOMAN_ERR_OPOUTOFBOUNDS);
- return(0x00);
- }
- return(ioman->reference[bufplace]);
-}
-/*****************************************************************************/
-
-void ioman_incRefCnt(IOManager *ioman,euint16 bufplace)
-{
- if(bufplace>=ioman->numbuf){
- ioman_setError(ioman,IOMAN_ERR_OPOUTOFBOUNDS);
- return;
- }
- if(ioman->reference[bufplace]==0xFF)return;
- else ioman->reference[bufplace]++;
-}
-/*****************************************************************************/
-
-void ioman_decRefCnt(IOManager *ioman,euint16 bufplace)
-{
- if(bufplace>=ioman->numbuf){
- ioman_setError(ioman,IOMAN_ERR_OPOUTOFBOUNDS);
- return;
- }
- if(ioman->reference[bufplace]==0x00)return;
- else ioman->reference[bufplace]--;
-}
-/*****************************************************************************/
-
-void ioman_resetRefCnt(IOManager *ioman,euint16 bufplace)
-{
- if(bufplace>=ioman->numbuf){
- ioman_setError(ioman,IOMAN_ERR_OPOUTOFBOUNDS);
- return;
- }
- ioman->reference[bufplace]=0x00;
-}
-/*****************************************************************************/
-
-esint8 ioman_pop(IOManager *ioman,euint16 bufplace)
-{
- if(bufplace>=ioman->numbuf){
- ioman_setError(ioman,IOMAN_ERR_POPEMPTYSTACK);
- return(-1);
- }
- if(ioman->itptr[bufplace]==0 || ioman->itptr[bufplace]>IOMAN_NUMITERATIONS)return(-1);
- ioman->itptr[bufplace]--;
- ioman->sector[bufplace] = ioman->stack[bufplace][ioman->itptr[bufplace]].sector;
- ioman->status[bufplace] = ioman->stack[bufplace][ioman->itptr[bufplace]].status;
- ioman->usage[bufplace] = ioman->stack[bufplace][ioman->itptr[bufplace]].usage;
- return(0);
-}
-/*****************************************************************************/
-
-esint8 ioman_push(IOManager *ioman,euint16 bufplace)
-{
- if(bufplace>=ioman->numbuf){
- ioman_setError(ioman,IOMAN_ERR_OPOUTOFBOUNDS);
- return(-1);
- }
- if(ioman->itptr[bufplace]>=IOMAN_NUMITERATIONS){
- ioman_setError(ioman,IOMAN_ERR_PUSHBEYONDSTACK);
- return(-1);
- }
- ioman->stack[bufplace][ioman->itptr[bufplace]].sector = ioman->sector[bufplace];
- ioman->stack[bufplace][ioman->itptr[bufplace]].status = ioman->status[bufplace];
- ioman->stack[bufplace][ioman->itptr[bufplace]].usage = ioman->usage[bufplace];
- ioman->itptr[bufplace]++;
- return(0);
-}
-/*****************************************************************************/
-
-euint8* ioman_getPtr(IOManager *ioman,euint16 bufplace)
-{
- if(bufplace>=ioman->numbuf){
- ioman_setError(ioman,IOMAN_ERR_OPOUTOFBOUNDS);
- return(0);
- }
- return(ioman->bufptr+bufplace*512);
-}
-/*****************************************************************************/
-
-esint16 ioman_getBp(IOManager *ioman,euint8* buf)
-{
- if(buf<(ioman->bufptr) || buf>=( ioman->bufptr+(ioman->numbuf*512) )){
- ioman_setError(ioman,IOMAN_ERR_CACHEPTROUTOFRANGE);
- return(-1);
- }
- return((buf-(ioman->bufptr))/512);
-}
-/*****************************************************************************/
-
-esint8 ioman_readSector(IOManager *ioman,euint32 address,euint8* buf)
-{
- esint8 r;
-
- if(buf==0){
- return(-1);
- }
-
- r = efs_read_sectors(ioman->device, address, 1, buf);
-
- if(r!=1){
- ioman_setError(ioman,IOMAN_ERR_READFAIL);
- return(-1);
- }
- return(0);
-}
-/*****************************************************************************/
-
-esint8 ioman_writeSector(IOManager *ioman, euint32 address, euint8* buf)
-{
- esint8 r;
-
- if(buf==0)return(-1);
-
- r = efs_write_sectors(ioman->device, address, 1, buf);
-
- if(r!=1){
- ioman_setError(ioman,IOMAN_ERR_WRITEFAIL);
- return(-1);
- }
- return(0);
-}
-/*****************************************************************************/
-
-void ioman_resetCacheItem(IOManager *ioman,euint16 bufplace)
-{
- if(bufplace>=ioman->numbuf){
- ioman_setError(ioman,IOMAN_ERR_OPOUTOFBOUNDS);
- return;
- }
- ioman->sector[bufplace] = 0;
- ioman->status[bufplace] = 0;
- ioman->usage[bufplace] = 0;
- ioman->reference[bufplace] = 0;
-}
-/*****************************************************************************/
-
-esint32 ioman_findSectorInCache(IOManager *ioman, euint32 address)
-{
- euint16 c;
-
- for(c=0;c<ioman->numbuf;c++){
- if(ioman_isValid(c) && ioman->sector[c] == address)return(c);
- }
- return(-1);
-}
-/*****************************************************************************/
-
-esint32 ioman_findFreeSpot(IOManager *ioman)
-{
- euint16 c;
-
- for(c=0;c<ioman->numbuf;c++){
- if(!ioman_isValid(c))return(c);
- }
- return(-1);
-}
-/*****************************************************************************/
-
-esint32 ioman_findUnusedSpot(IOManager *ioman)
-{
- esint32 r=-1;
- euint16 c;
- euint8 fr=0,lr=0xFF;
-
- for(c=0;c<ioman->numbuf;c++){
- if(ioman_getUseCnt(ioman,c)==0){
- if(!ioman_isWritable(c) && !fr){
- fr=1;
- lr=0xFF;
- r=-1;
- }
- if(ioman_isWritable(c) && !fr){
- if(ioman_getRefCnt(ioman,c)<=lr){
- r=c;
- lr=ioman_getRefCnt(ioman,c);
- }
- }
- if(fr && !ioman_isWritable(c)){
- if(ioman_getRefCnt(ioman,c)<=lr){
- r=c;
- lr=ioman_getRefCnt(ioman,c);
- }
- }
- }
- }
- return(r);
-}
-/*****************************************************************************/
-
-esint32 ioman_findOverallocableSpot(IOManager *ioman)
-{
- euint8 points,lp=0xFF;
- euint16 c;
- esint32 r=-1;
-
- for(c=0;c<ioman->numbuf;c++){
- if(ioman->itptr[c]<ioman->numit){
- points = 0;
- if(ioman_isWritable(c))points+=0x7F;
- points += ((euint16)(ioman->itptr[c]*0x4D))/(ioman->numit);
- points += ((euint16)(ioman_getRefCnt(ioman,c)*0x33))/0xFF;
- if(points<lp){
- lp=points;
- r=c;
- }
- }
- }
- return(r);
-}
-/*****************************************************************************/
-
-esint8 ioman_putSectorInCache(IOManager *ioman, euint32 address, euint16 bufplace)
-{
- euint8* buf;
-
- if((buf = ioman_getPtr(ioman,bufplace))==0){
- ioman_setError(ioman,IOMAN_ERR_CACHEPTROUTOFRANGE);
- return(-1);
- }
- if((ioman_readSector(ioman,address,buf))){
- ioman_setError(ioman,IOMAN_ERR_READFAIL);
- return(-1);
- }
- ioman_setValid(bufplace);
- ioman->sector[bufplace]=address;
- return(0);
-}
-/***************** if(bufplace>=ioman->numbuf)return;
-************************************************************/
-
-esint8 ioman_flushSector(IOManager *ioman, euint16 bufplace)
-{
- euint8* buf;
-
- if((buf = ioman_getPtr(ioman,bufplace))==0){
- ioman_setError(ioman,IOMAN_ERR_CACHEPTROUTOFRANGE);
- return(-1);
- }
- if(!ioman_isWritable(bufplace)){
- ioman_setError(ioman,IOMAN_ERR_WRITEREADONLYSECTOR);
- return(-1);
- }
- if(ioman_writeSector(ioman,ioman->sector[bufplace],buf)){ /* ERROR HERE STILL TO BE FIXED -> ! must be removed! */
- ioman_setError(ioman,IOMAN_ERR_WRITEFAIL);
- return(-1);
- }
- if(ioman->usage[bufplace]==0)ioman_setNotWritable(bufplace);
- return(0);
-}
-/*****************************************************************************/
-
-esint8 ioman_flushRange(IOManager *ioman,euint32 address_low, euint32 address_high)
-{
- euint32 c;
-
- if(address_low>address_high){
- c=address_low; address_low=address_high;address_high=c;
- }
-
- for(c=0;c<ioman->numbuf;c++){
- if((ioman->sector[c]>=address_low) && (ioman->sector[c]<=address_high) && (ioman_isWritable(c))){
- if(ioman_flushSector(ioman,c)){
- return(-1);
- }
- if(ioman->usage[c]==0)ioman_setNotWritable(c);
- }
- }
- return(0);
-}
-/*****************************************************************************/
-
-esint8 ioman_flushAll(IOManager *ioman)
-{
- euint16 c;
-
- for(c=0;c<ioman->numbuf;c++){
- if(ioman_isWritable(c)){
- if(ioman_flushSector(ioman,c)){
- return(-1);
- }
- if(ioman->usage[c]==0)ioman_setNotWritable(c);
- }
- }
- return(0);
-}
-/*****************************************************************************/
-
-euint8* ioman_getSector(IOManager *ioman,euint32 address, euint8 mode)
-{
- esint32 bp;
-
- if((bp=ioman_findSectorInCache(ioman,address))!=-1){
- if(ioman_isReqRw(mode)){
- ioman_setWritable(bp);
- }
- ioman_incUseCnt(ioman,bp);
- if(!ioman_isReqExp(mode))ioman_incRefCnt(ioman,bp);
- return(ioman_getPtr(ioman,bp));
- }
-
- if((bp=ioman_findFreeSpot(ioman))==-1){
- if(((bp=ioman_findUnusedSpot(ioman))!=-1)&&(ioman_isWritable(bp))){
- ioman_flushSector(ioman,bp);
- }
- }
-
- if(bp!=-1){
- ioman_resetCacheItem(ioman,bp);
- if((ioman_putSectorInCache(ioman,address,bp))){
- return(0);
- }
- if(ioman_isReqRw(mode)){
- ioman_setWritable(bp);
- }
- ioman_incUseCnt(ioman,bp);
- if(!ioman_isReqExp(mode))ioman_incRefCnt(ioman,bp);
- return(ioman_getPtr(ioman,bp));
- }
-
- if((bp=ioman_findOverallocableSpot(ioman))!=-1){
- if(ioman_isWritable(bp)){
- ioman_flushSector(ioman,bp);
- }
- if(ioman_push(ioman,bp)){
- return(0);
- }
- ioman_resetCacheItem(ioman,bp);
- if((ioman_putSectorInCache(ioman,address,bp))){
- return(0);
- }
- if(ioman_isReqRw(mode)){
- ioman_setWritable(bp);
- }
- ioman_incUseCnt(ioman,bp);
- if(!ioman_isReqExp(mode))ioman_incRefCnt(ioman,bp);
- return(ioman_getPtr(ioman,bp));
- }
- ioman_setError(ioman,IOMAN_ERR_NOMEMORY);
- return(0);
-}
-/*****************************************************************************/
-
-esint8 ioman_releaseSector(IOManager *ioman,euint8* buf)
-{
- euint16 bp;
-
- bp=ioman_getBp(ioman,buf);
- ioman_decUseCnt(ioman,bp);
-
- if(ioman_getUseCnt(ioman,bp)==0)
- {
- if(ioman_isWritable(bp))
- {
- ioman_flushSector(ioman,bp);
- }
- if(ioman->itptr[bp]!=0)
- {
- ioman_pop(ioman,bp);
- ioman_putSectorInCache(ioman,ioman->sector[bp],bp);
- }
- }
-
- return(0);
-}
-/*****************************************************************************/
-
-esint8 ioman_directSectorRead(IOManager *ioman,euint32 address, euint8* buf)
-{
- euint8* ibuf;
- esint16 bp;
-
- if((bp=ioman_findSectorInCache(ioman,address))!=-1){
- ibuf=ioman_getPtr(ioman,bp);
- memCpy(ibuf,buf,512);
- return(0);
- }
-
- if((bp=ioman_findFreeSpot(ioman))!=-1){
- if((ioman_putSectorInCache(ioman,address,bp))){
- return(-1);
- }
- ibuf=ioman_getPtr(ioman,bp);
- memCpy(ibuf,buf,512);
- return(0);
- }
-
- if(ioman_readSector(ioman,address,buf)){
- return(-1);
- }
-
- return(0);
-}
-/*****************************************************************************/
-
-esint8 ioman_directSectorWrite(IOManager *ioman,euint32 address, euint8* buf)
-{
- euint8* ibuf;
- esint16 bp;
-
- if((bp=ioman_findSectorInCache(ioman,address))!=-1){
- ibuf=ioman_getPtr(ioman,bp);
- memCpy(buf,ibuf,512);
- ioman_setWritable(bp);
- return(0);
- }
-
- if((bp=ioman_findFreeSpot(ioman))!=-1){
- ibuf=ioman_getPtr(ioman,bp);
- memCpy(buf,ibuf,512);
- ioman_resetCacheItem(ioman,bp);
- ioman->sector[bp]=address;
- ioman_setWritable(bp);
- ioman_setValid(bp);
- return(0);
- }
-
- if(ioman_writeSector(ioman,address,buf)){
- return(-1);
- }
-
- return(0);
-}
-/*****************************************************************************/
-
-void ioman_printStatus(IOManager *ioman)
-{
- euint16 c;
-
- DBG((TXT("IO-Manager -- Report\n====================\n")));
- DBG((TXT("Buffer is %i sectors, from %p to %p\n"),
- ioman->numbuf,ioman->bufptr,ioman->bufptr+(ioman->numbuf*512)));
- for(c=0;c<ioman->numbuf;c++){
- if(ioman_isValid(c)){
- DBG((TXT("BP %3i\t SC %8li\t\t US %i\t RF %i\t %s %s\n"),
- c,ioman->sector[c],ioman_getUseCnt(ioman,c),ioman_getRefCnt(ioman,c),
- ioman_isUserBuf(c) ? "USRBUF" : " ",
- ioman_isWritable(c) ? "WRITABLE" : "READONLY"));
- }
- }
-}
-/*****************************************************************************/
-
diff --git a/filesystem/dfs/filesystems/efsl/src/base/ioman_small.c b/filesystem/dfs/filesystems/efsl/src/base/ioman_small.c
deleted file mode 100644
index 287e0e08a4..0000000000
--- a/filesystem/dfs/filesystems/efsl/src/base/ioman_small.c
+++ /dev/null
@@ -1,120 +0,0 @@
-/*****************************************************************************\
-* EFSL - Embedded Filesystems Library *
-* ----------------------------------- *
-* *
-* Filename : ioman_small.c *
-* Release : 0.3 - devel *
-* Description : The IO Manager receives all requests for sectors in a central *
-* allowing it to make smart decision regarding caching. *
-* The IOMAN_NUMBUFFER parameter determines how many sectors *
-* ioman can cache. ioman also supports overallocating and *
-* backtracking sectors. *
-* This is the small version of IOMan, for systems with limited *
-* resources. It features only one fixed buffer, and has *
-* simplified operation *
-* *
-* This program is free software; you can redistribute it and/or *
-* modify it under the terms of the GNU General Public License *
-* as published by the Free Software Foundation; version 2 *
-* of the License. *
-* *
-* This program is distributed in the hope that it will be useful, *
-* but WITHOUT ANY WARRANTY; without even the implied warranty of *
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
-* GNU General Public License for more details. *
-* *
-* As a special exception, if other files instantiate templates or *
-* use macros or inline functions from this file, or you compile this *
-* file and link it with other works to produce a work based on this file, *
-* this file does not by itself cause the resulting work to be covered *
-* by the GNU General Public License. However the source code for this *
-* file must still be made available in accordance with section (3) of *
-* the GNU General Public License. *
-* *
-* This exception does not invalidate any other reasons why a work based *
-* on this file might be covered by the GNU General Public License. *
-* *
-* (c)2006 Lennart Yseboodt *
-* (c)2006 Michael De Nil *
-\*****************************************************************************/
-
-#include "ioman_small.h"
-
-esint8 ioman_init(IOManager *ioman, euint8* bufferarea)
-{
- ioman_reset(ioman);
- return(0);
-}
-/*****************************************************************************/
-
-void ioman_reset(IOManager *ioman)
-{
- ioman->sector=ioman->status=ioman->itptr=0;
- ioman->stack.sector=ioman->stack.status=0;
-
- ioman_setError(ioman,IOMAN_NOERROR);
-
-}
-/*****************************************************************************/
-
-void ioman_setAttr(IOManager *ioman,euint8 attribute,euint8 val)
-{
- if(val){
- ioman->status|=1<<attribute;
- }else{
- ioman->status&=~(1<<attribute);
- }
-}
-/*****************************************************************************/
-
-euint8 ioman_getAttr(IOManager *ioman,euint8 attribute)
-{
- return(ioman->status&(1<<attribute));
-}
-/*****************************************************************************/
-
-
-euint8* ioman_getSector(IOManager *ioman,euint32 address, euint8 mode)
-{
- if(address==ioman->sector){
- if(mode==IOM_MODE_READWRITE)ioman_setWritable();
- return(ioman->bufptr);
- }
-
-}
-
-esint8 ioman_readSector(IOManager *ioman,euint32 address,euint8* buf)
-{
- esint8 r;
-
- if(buf==0){
- return(-1);
- }
-
- //r=if_readBuf(ioman->iface,address,buf);
- r = efs_read_sectors(ioman->device, address, 1, buf);
-
- if(r!=0){
- ioman_setError(ioman,IOMAN_ERR_READFAIL);
- return(-1);
- }
- return(0);
-}
-/*****************************************************************************/
-
-esint8 ioman_writeSector(IOManager *ioman, euint32 address, euint8* buf)
-{
- esint8 r;
-
- if(buf==0)return(-1);
-
- //r=if_writeBuf(ioman->iface,address,buf);
- r = efs_write_sectors(ioman->device, address, 1, buf);
-
- if(r<=0){
- ioman_setError(ioman,IOMAN_ERR_WRITEFAIL);
- return(-1);
- }
- return(0);
-}
-/*****************************************************************************/
diff --git a/filesystem/dfs/filesystems/efsl/src/fs/vfat/fat.c b/filesystem/dfs/filesystems/efsl/src/fs/vfat/fat.c
index 4f9a3f4752..eea76446cb 100644
--- a/filesystem/dfs/filesystems/efsl/src/fs/vfat/fat.c
+++ b/filesystem/dfs/filesystems/efsl/src/fs/vfat/fat.c
@@ -51,9 +51,9 @@ euint32 fat_getSectorAddressFatEntry(FileSystem *fs,euint32 cluster_addr)
res=(cluster_addr*3/1024);
if(res>=fs->FatSectorCount){
return(0);
- }
+ }
return(base+res);
-
+
case FAT16:
res=cluster_addr/256;
if(res>=fs->FatSectorCount){
@@ -64,7 +64,7 @@ euint32 fat_getSectorAddressFatEntry(FileSystem *fs,euint32 cluster_addr)
res=cluster_addr/128;
if(res>=fs->FatSectorCount){
return(0);
- }
+ }
return(base+res);
}
return(0);
@@ -142,8 +142,7 @@ void fat_setNextClusterAddress(FileSystem *fs,euint32 cluster_addr,euint32 next_
euint32 sector;
sector=fat_getSectorAddressFatEntry(fs,cluster_addr);
- if(fs->FatSectorCount<sector){
- DBG((TXT("HARDERROR:::fat_getNextClusterAddress READ PAST FAT BOUNDARY\n")));
+ if(fs->FatSectorCount<sector){
return;
}
diff --git a/filesystem/dfs/filesystems/efsl/src/fs/vfat/include/fat.h b/filesystem/dfs/filesystems/efsl/src/fs/vfat/include/fat.h
index 3a3b169660..fb7c70fd2a 100644
--- a/filesystem/dfs/filesystems/efsl/src/fs/vfat/include/fat.h
+++ b/filesystem/dfs/filesystems/efsl/src/fs/vfat/include/fat.h
@@ -39,7 +39,6 @@
#include "config.h"
#include "error.h"
#include "file.h"
-#include "debug.h"
#include "types.h"
/*****************************************************************************/
diff --git a/filesystem/dfs/filesystems/efsl/src/fs/vfat/include/file.h b/filesystem/dfs/filesystems/efsl/src/fs/vfat/include/file.h
index d389ccdf20..a5a89e7a23 100644
--- a/filesystem/dfs/filesystems/efsl/src/fs/vfat/include/file.h
+++ b/filesystem/dfs/filesystems/efsl/src/fs/vfat/include/file.h
@@ -42,7 +42,6 @@
#include "fs.h"
#include "dir.h"
#include "plibc.h"
-#include "debug.h"
#include "types.h"
#include "fat.h"
/*****************************************************************************/
diff --git a/filesystem/dfs/filesystems/efsl/src/fs/vfat/include/fs.h b/filesystem/dfs/filesystems/efsl/src/fs/vfat/include/fs.h
index 21cc3c0852..5779ffd5f1 100644
--- a/filesystem/dfs/filesystems/efsl/src/fs/vfat/include/fs.h
+++ b/filesystem/dfs/filesystems/efsl/src/fs/vfat/include/fs.h
@@ -41,7 +41,6 @@
#include "types.h"
#include "error.h"
#include "partition.h"
-#include "debug.h"
#include "tm.h"
#include "extract.h"
/*****************************************************************************/
diff --git a/libcpu/arm/lm3s/context_gcc.S b/libcpu/arm/lm3s/context_gcc.S
new file mode 100644
index 0000000000..04d45c1327
--- /dev/null
+++ b/libcpu/arm/lm3s/context_gcc.S
@@ -0,0 +1,164 @@
+/*
+ * File : context_gcc.S
+ * This file is part of RT-Thread RTOS
+ * COPYRIGHT (C) 2009, RT-Thread Development Team
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rt-thread.org/license/LICENSE
+ *
+ * Change Logs:
+ * Date Author Notes
+ * 2009-10-11 Bernard first version
+ */
+
+/**
+ * @addtogroup STM32
+ */
+/*@{*/
+
+.cpu cortex-m3
+.fpu softvfp
+.syntax unified
+.thumb
+.text
+
+.equ NVIC_INT_CTRL, 0xE000ED04 /* interrupt control state register */
+.equ NVIC_SYSPRI2, 0xE000ED20 /* system priority register (2) */
+.equ NVIC_PENDSV_PRI, 0x00FF0000 /* PendSV priority value (lowest) */
+.equ NVIC_PENDSVSET, 0x10000000 /* value to trigger PendSV exception */
+
+/*
+ * rt_base_t rt_hw_interrupt_disable();
+ */
+.global rt_hw_interrupt_disable
+.type rt_hw_interrupt_disable, %function
+rt_hw_interrupt_disable:
+ MRS r0, PRIMASK
+ CPSID I
+ BX LR
+
+/*
+ * void rt_hw_interrupt_enable(rt_base_t level);
+ */
+.global rt_hw_interrupt_enable
+.type rt_hw_interrupt_enable, %function
+rt_hw_interrupt_enable:
+ MSR PRIMASK, r0
+ BX LR
+
+/*
+ * void rt_hw_context_switch(rt_uint32 from, rt_uint32 to);
+ * r0 --> from
+ * r1 --> to
+ */
+.global rt_hw_context_switch_interrupt
+.type rt_hw_context_switch_interrupt, %function
+.global rt_hw_context_switch
+.type rt_hw_context_switch, %function
+
+rt_hw_context_switch_interrupt:
+rt_hw_context_switch:
+ /* set rt_thread_switch_interrput_flag to 1 */
+ LDR r2, =rt_thread_switch_interrput_flag
+ LDR r3, [r2]
+ CMP r3, #1
+ BEQ _reswitch
+ MOV r3, #1
+ STR r3, [r2]
+
+ LDR r2, =rt_interrupt_from_thread /* set rt_interrupt_from_thread */
+ STR r0, [r2]
+
+_reswitch:
+ LDR r2, =rt_interrupt_to_thread /* set rt_interrupt_to_thread */
+ STR r1, [r2]
+
+ LDR r0, =NVIC_INT_CTRL /* trigger the PendSV exception (causes context switch) */
+ LDR r1, =NVIC_PENDSVSET
+ STR r1, [r0]
+ BX LR
+
+/* r0 --> swith from thread stack
+ * r1 --> swith to thread stack
+ * psr, pc, lr, r12, r3, r2, r1, r0 are pushed into [from] stack
+ */
+.global rt_hw_pend_sv
+.type rt_hw_pend_sv, %function
+rt_hw_pend_sv:
+ /* disable interrupt to protect context switch */
+ MRS r2, PRIMASK
+ CPSID I
+
+ /* get rt_thread_switch_interrupt_flag */
+ LDR r0, =rt_thread_switch_interrput_flag
+ LDR r1, [r0]
+ CBZ r1, pendsv_exit /* pendsv already handled */
+
+ /* clear rt_thread_switch_interrput_flag to 0 */
+ MOV r1, #0x00
+ STR r1, [r0]
+
+ LDR r0, =rt_interrupt_from_thread
+ LDR r1, [r0]
+ CBZ r1, swtich_to_thread /* skip register save at the first time */
+
+ MRS r1, psp /* get from thread stack pointer */
+ STMFD r1!, {r4 - r11} /* push r4 - r11 register */
+ LDR r0, [r0]
+ STR r1, [r0] /* update from thread stack pointer */
+
+swtich_to_thread:
+ LDR r1, =rt_interrupt_to_thread
+ LDR r1, [r1]
+ LDR r1, [r1] /* load thread stack pointer */
+
+ LDMFD r1!, {r4 - r11} /* pop r4 - r11 register */
+ MSR psp, r1 /* update stack pointer */
+
+pendsv_exit:
+ /* restore interrupt */
+ MSR PRIMASK, r2
+
+ ORR lr, lr, #0x04
+ BX lr
+
+/*
+ * void rt_hw_context_switch_to(rt_uint32 to);
+ * r0 --> to
+ */
+.global rt_hw_context_switch_to
+.type rt_hw_context_switch_to, %function
+rt_hw_context_switch_to:
+ LDR r1, =rt_interrupt_to_thread
+ STR r0, [r1]
+
+ /* set from thread to 0 */
+ LDR r1, =rt_interrupt_from_thread
+ MOV r0, #0x0
+ STR r0, [r1]
+
+ /* set interrupt flag to 1 */
+ LDR r1, =rt_thread_switch_interrput_flag
+ MOV r0, #1
+ STR r0, [r1]
+
+ /* set the PendSV exception priority */
+ LDR r0, =NVIC_SYSPRI2
+ LDR r1, =NVIC_PENDSV_PRI
+ STR r1, [r0]
+
+ LDR r0, =NVIC_INT_CTRL /* trigger the PendSV exception (causes context switch) */
+ LDR r1, =NVIC_PENDSVSET
+ STR r1, [r0]
+
+ CPSIE I /* enable interrupts at processor level */
+
+ /* never reach here! */
+
+/* compatible with old version */
+.global rt_hw_interrupt_thread_switch
+.type rt_hw_interrupt_thread_switch, %function
+rt_hw_interrupt_thread_switch:
+ BX lr
+ NOP
diff --git a/libcpu/arm/lm3s/start_gcc.c b/libcpu/arm/lm3s/start_gcc.c
new file mode 100644
index 0000000000..fa1398e35c
--- /dev/null
+++ b/libcpu/arm/lm3s/start_gcc.c
@@ -0,0 +1,242 @@
+//*****************************************************************************
+//
+// startup.c - Boot code for Stellaris.
+//
+// Copyright (c) 2005-2008 Luminary Micro, Inc. All rights reserved.
+//
+// Software License Agreement
+//
+// Luminary Micro, Inc. (LMI) is supplying this software for use solely and
+// exclusively on LMI's microcontroller products.
+//
+// The software is owned by LMI and/or its suppliers, and is protected under
+// applicable copyright laws. All rights are reserved. You may not combine
+// this software with "viral" open-source software in order to form a larger
+// program. Any use in violation of the foregoing restrictions may subject
+// the user to criminal sanctions under applicable laws, as well as to civil
+// liability for the breach of the terms and conditions of this license.
+//
+// THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED
+// OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF
+// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.
+// LMI SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR
+// CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
+//
+// This is part of revision 2752 of the Stellaris Peripheral Driver Library.
+//
+//*****************************************************************************
+
+//*****************************************************************************
+//
+// Forward declaration of the default fault handlers.
+//
+//*****************************************************************************
+void ResetISR(void);
+static void NmiSR(void);
+static void FaultISR(void);
+static void IntDefaultHandler(void);
+
+//*****************************************************************************
+//
+// The entry point for the application.
+//
+//*****************************************************************************
+extern int main(void);
+
+//*****************************************************************************
+//
+// Reserve space for the system stack.
+//
+//*****************************************************************************
+#ifndef STACK_SIZE
+#define STACK_SIZE 64
+#endif
+static unsigned long pulStack[STACK_SIZE];
+
+//*****************************************************************************
+//
+// The minimal vector table for a Cortex M3. Note that the proper constructs
+// must be placed on this to ensure that it ends up at physical address
+// 0x0000.0000.
+//
+//*****************************************************************************
+__attribute__ ((section(".isr_vector")))
+void (* const g_pfnVectors[])(void) =
+{
+ (void (*)(void))((unsigned long)pulStack + sizeof(pulStack)),
+ // The initial stack pointer
+ ResetISR, // The reset handler
+ NmiSR, // The NMI handler
+ FaultISR, // The hard fault handler
+ IntDefaultHandler, // The MPU fault handler
+ IntDefaultHandler, // The bus fault handler
+ IntDefaultHandler, // The usage fault handler
+ 0, // Reserved
+ 0, // Reserved
+ 0, // Reserved
+ 0, // Reserved
+ IntDefaultHandler, // SVCall handler
+ IntDefaultHandler, // Debug monitor handler
+ 0, // Reserved
+ IntDefaultHandler, // The PendSV handler
+ IntDefaultHandler, // The SysTick handler
+ IntDefaultHandler, // GPIO Port A
+ IntDefaultHandler, // GPIO Port B
+ IntDefaultHandler, // GPIO Port C
+ IntDefaultHandler, // GPIO Port D
+ IntDefaultHandler, // GPIO Port E
+ IntDefaultHandler, // UART0 Rx and Tx
+ IntDefaultHandler, // UART1 Rx and Tx
+ IntDefaultHandler, // SSI Rx and Tx
+ IntDefaultHandler, // I2C Master and Slave
+ IntDefaultHandler, // PWM Fault
+ IntDefaultHandler, // PWM Generator 0
+ IntDefaultHandler, // PWM Generator 1
+ IntDefaultHandler, // PWM Generator 2
+ IntDefaultHandler, // Quadrature Encoder
+ IntDefaultHandler, // ADC Sequence 0
+ IntDefaultHandler, // ADC Sequence 1
+ IntDefaultHandler, // ADC Sequence 2
+ IntDefaultHandler, // ADC Sequence 3
+ IntDefaultHandler, // Watchdog timer
+ IntDefaultHandler, // Timer 0 subtimer A
+ IntDefaultHandler, // Timer 0 subtimer B
+ IntDefaultHandler, // Timer 1 subtimer A
+ IntDefaultHandler, // Timer 1 subtimer B
+ IntDefaultHandler, // Timer 2 subtimer A
+ IntDefaultHandler, // Timer 2 subtimer B
+ IntDefaultHandler, // Analog Comparator 0
+ IntDefaultHandler, // Analog Comparator 1
+ IntDefaultHandler, // Analog Comparator 2
+ IntDefaultHandler, // System Control (PLL, OSC, BO)
+ IntDefaultHandler, // FLASH Control
+ IntDefaultHandler, // GPIO Port F
+ IntDefaultHandler, // GPIO Port G
+ IntDefaultHandler, // GPIO Port H
+ IntDefaultHandler, // UART2 Rx and Tx
+ IntDefaultHandler, // SSI1 Rx and Tx
+ IntDefaultHandler, // Timer 3 subtimer A
+ IntDefaultHandler, // Timer 3 subtimer B
+ IntDefaultHandler, // I2C1 Master and Slave
+ IntDefaultHandler, // Quadrature Encoder 1
+ IntDefaultHandler, // CAN0
+ IntDefaultHandler, // CAN1
+ IntDefaultHandler, // CAN2
+ IntDefaultHandler, // Ethernet
+ IntDefaultHandler, // Hibernate
+ IntDefaultHandler, // USB0
+ IntDefaultHandler, // PWM Generator 3
+ IntDefaultHandler, // uDMA Software Transfer
+ IntDefaultHandler // uDMA Error
+};
+
+//*****************************************************************************
+//
+// The following are constructs created by the linker, indicating where the
+// the "data" and "bss" segments reside in memory. The initializers for the
+// for the "data" segment resides immediately following the "text" segment.
+//
+//*****************************************************************************
+extern unsigned long _etext;
+extern unsigned long _sdata;
+extern unsigned long _edata;
+extern unsigned long _sbss;
+extern unsigned long _ebss;
+
+//*****************************************************************************
+//
+// This is the code that gets called when the processor first starts execution
+// following a reset event. Only the absolutely necessary set is performed,
+// after which the application supplied main() routine is called. Any fancy
+// actions (such as making decisions based on the reset cause register, and
+// resetting the bits in that register) are left solely in the hands of the
+// application.
+//
+//*****************************************************************************
+void
+ResetISR(void)
+{
+ unsigned long *pulSrc, *pulDest;
+
+ //
+ // Copy the data segment initializers from flash to SRAM.
+ //
+ pulSrc = &_etext;
+ for(pulDest = &_sdata; pulDest < &_edata; )
+ {
+ *pulDest++ = *pulSrc++;
+ }
+
+ //
+ // Zero fill the bss segment. This is done with inline assembly since this
+ // will clear the value of pulDest if it is not kept in a register.
+ //
+ __asm(" ldr r0, =_sbss\n"
+ " ldr r1, =_ebss\n"
+ " mov r2, #0\n"
+ " .thumb_func\n"
+ "zero_loop:\n"
+ " cmp r0, r1\n"
+ " it lt\n"
+ " strlt r2, [r0], #4\n"
+ " blt zero_loop");
+
+ //
+ // Call the application's entry point.
+ //
+ main();
+}
+
+//*****************************************************************************
+//
+// This is the code that gets called when the processor receives a NMI. This
+// simply enters an infinite loop, preserving the system state for examination
+// by a debugger.
+//
+//*****************************************************************************
+static void
+NmiSR(void)
+{
+ //
+ // Enter an infinite loop.
+ //
+ while(1)
+ {
+ }
+}
+
+//*****************************************************************************
+//
+// This is the code that gets called when the processor receives a fault
+// interrupt. This simply enters an infinite loop, preserving the system state
+// for examination by a debugger.
+//
+//*****************************************************************************
+static void
+FaultISR(void)
+{
+ //
+ // Enter an infinite loop.
+ //
+ while(1)
+ {
+ }
+}
+
+//*****************************************************************************
+//
+// This is the code that gets called when the processor receives an unexpected
+// interrupt. This simply enters an infinite loop, preserving the system state
+// for examination by a debugger.
+//
+//*****************************************************************************
+static void
+IntDefaultHandler(void)
+{
+ //
+ // Go into an infinite loop.
+ //
+ while(1)
+ {
+ }
+}