diff --git a/bsp/mini2440/SConstruct b/bsp/mini2440/SConstruct index e450c49ee154727206e1ca56356b51c96d931b01..462e20a79e9a8e64eadd80a4abaa00999f00df71 100644 --- a/bsp/mini2440/SConstruct +++ b/bsp/mini2440/SConstruct @@ -17,6 +17,8 @@ AddOption('--target', if GetOption('target'): SetOption('no_exec', 1) +TARGET = target + '.' + rtconfig.TARGET_EXT + env = Environment(tools = ['mingw'], AS = rtconfig.AS, ASFLAGS = rtconfig.AFLAGS, CC = rtconfig.CC, CCFLAGS = rtconfig.CFLAGS, @@ -28,6 +30,38 @@ Export('env') Export('RTT_ROOT') Export('rtconfig') Export('projects') +Export('TARGET') + +if env['PLATFORM'] == 'win32' and rtconfig.PLATFORM == 'gcc': + import win32file + import win32event + import win32process + import win32security + + def my_spawn(sh, escape, cmd, args, spawnenv): + for var in spawnenv: + spawnenv[var] = spawnenv[var].encode('ascii', 'replace') + + sAttrs = win32security.SECURITY_ATTRIBUTES() + StartupInfo = win32process.STARTUPINFO() + newargs = ' '.join(map(escape, args[1:])) + cmdline = cmd + " " + newargs + + # check for any special operating system commands + if cmd == 'del': + for arg in args[1:]: + win32file.DeleteFile(arg) + exit_code = 0 + else: + # otherwise execute the command. + hProcess, hThread, dwPid, dwTid = win32process.CreateProcess(None, cmdline, None, None, 1, 0, spawnenv, None, StartupInfo) + win32event.WaitForSingleObject(hProcess, win32event.INFINITE) + exit_code = win32process.GetExitCodeProcess(hProcess) + win32file.CloseHandle(hProcess); + win32file.CloseHandle(hThread); + return exit_code + + env['SPAWN'] = my_spawn objs = SConscript(RTT_ROOT + '/src/SConscript', variant_dir='build/src', duplicate=0) objs = objs + SConscript(RTT_ROOT + '/libcpu/SConscript', variant_dir='build/libcpu', duplicate=0) @@ -45,7 +79,6 @@ objs = objs + SConscript('SConscript', variant_dir='build/bsp', duplicate=0) Repository(RTT_ROOT) objs = objs + SConscript('components/SConscript') -TARGET = target + '.' + rtconfig.TARGET_EXT env.Program(TARGET, objs) env.AddPostAction(TARGET, rtconfig.POST_ACTION) diff --git a/bsp/mini2440/run_module.c b/bsp/mini2440/run_module.c index 274fd31ef04f22efd369a58d612b671cb98ba1a8..30e2cfaa7ca9706cce9b3724054b8b2d4ecdf9f0 100644 --- a/bsp/mini2440/run_module.c +++ b/bsp/mini2440/run_module.c @@ -27,7 +27,7 @@ void run_module(const char* filename) int fd, length; char *module_name; struct rt_module* module; - struct dfs_stat s; + struct _stat s; char *buffer; stat(filename, &s); @@ -45,7 +45,7 @@ void run_module(const char* filename) module = rt_module_load((void *)buffer, ++module_name); if(module != RT_NULL) { - rt_module_run(module); + // rt_module_run(module); } close(fd); diff --git a/bsp/mini2440/startup.c b/bsp/mini2440/startup.c index 466f6743d0784edd795d10371ab40c5120f2e81a..7ee032c56a36109205a6e56dd426450546d64c93 100644 --- a/bsp/mini2440/startup.c +++ b/bsp/mini2440/startup.c @@ -141,7 +141,7 @@ void rtthread_startup(void) #ifdef RT_USING_MODULE /* init module system */ - rt_system_module_init(); + // rt_system_module_init(); #endif /* init application */