|
Evelent
初级用户
积分 38
发帖 8
注册 2005-8-9
状态 离线
|
『楼 主』:
请问DOS下怎么才能让系统自动运行用户自己的应用程序?
我想在DOS下移植一个操作系统(UC/OS),一但CPU上电起动后,DOS起动完后,让移植好的操作系统自动运行起来,不用在DOS命令提示符下用操作命令调出应用程序。但是我现在不知道怎么才能让DOS启动后自动运行用户应用程序?是不是在AUTOEXEC.BAT中可以更改加入自己的应用程序就可以?请大家执教!
[ Last edited by Evelent on 2005-8-10 at 09:35 ]
|
|
2005-8-9 21:52 |
|
|
Michael
钻石会员
积分 10046
发帖 3039
注册 2002-11-11
状态 离线
|
『第
2 楼』:
是的。
|
简单就是美 |
|
2005-8-9 21:59 |
|
|
Evelent
初级用户
积分 38
发帖 8
注册 2005-8-9
状态 离线
|
『第
3 楼』:
谢谢!
非常感谢,那我就往这个方向去看看,以后有问题还请多指教!有类似的例子?
|
|
2005-8-9 22:12 |
|
|
Michael
钻石会员
积分 10046
发帖 3039
注册 2002-11-11
状态 离线
|
『第
4 楼』:
其实我对你说的uc/os一无所知。我只是回答你的最后一句话,不要被我误导了,呵呵。
|
简单就是美 |
|
2005-8-9 22:16 |
|
|
Evelent
初级用户
积分 38
发帖 8
注册 2005-8-9
状态 离线
|
『第
5 楼』:
没关系:)
我用的那个UC/OS是一种源代码开放的操作系统。我想移植过去应该没什么问题,然后在C编译通过生成一个可执行文件,最后DOS启动就能执行生成的可执行文件就可以。现在看了些关于修改autoexex.bat方面的知识,但还不是很明白。有相关把自己的应用程序加到autoexec.bat中的例子吗?
|
|
2005-8-10 09:33 |
|
|
taowentao
高级用户
积分 739
发帖 111
注册 2004-11-30 来自 辽宁沈阳
状态 离线
|
『第
6 楼』:
试试看吧
在freedos\utils下,有个文件exeflat.c,编译成可执行文件exeflat.exe;
假设你编译通过生成的自己的应用程序可执行文件名为UC_OS.exe;
如下操作:
exeflat UC_OS.exe kernel.sys 96;
然后将kernel.sys拷贝到freedos根目录下(覆盖原来的文件);重新启动freedos,就加载你的程序,而不会有其他程序加载到内存,UC_OS.exe基本是裸机执行(除了BIOS和BOOT LOADER);
注意:如果UC_OS.exe 是使用BC3.1编译的,一般没问题,BC5.02则不一定好用
[ Last edited by taowentao on 2005-8-10 at 12:20 ]
|
|
2005-8-10 12:10 |
|
|
Michael
钻石会员
积分 10046
发帖 3039
注册 2002-11-11
状态 离线
|
『第
7 楼』:
原来如此,照此说来,autoexec.bat可做不到。系统运行autoexec.bat时,已经加载了若干程序了。
|
简单就是美 |
|
2005-8-10 19:43 |
|
|
taowentao
高级用户
积分 739
发帖 111
注册 2004-11-30 来自 辽宁沈阳
状态 离线
|
『第
8 楼』:
去掉UC_OS.exe 启动代码中的DOS调用
如果UC_OS.exe 的启动地址是0000:0000,并且去掉启动代码中的DOS调用的话,freedos的BOOT LOADER肯定能成功加载并执行UC_OS.exe 。
BC3.1编译结果一般都有DOS调用,不过你可以修改它的启动代码:BORLANDC\LIB\STARTUP\C0.ASM,并重新编译它,以达到此目的。
执行exeflat后,UC_OS.exe 的启动地址是0060:0000。freedos的BOOT LOADER将跳至此处执行。
实际上此时的UC_OS.exe 已经是个执行系统(不能叫操作系统)。
[ Last edited by taowentao on 2005-8-11 at 09:07 ]
|
|
2005-8-11 08:52 |
|