maple_wasp
驱动牛犊
驱动牛犊
  • 注册日期2003-10-02
  • 最后登录2009-03-09
  • 粉丝0
  • 关注0
  • 积分100分
  • 威望22点
  • 贡献值0点
  • 好评度22点
  • 原创分0分
  • 专家分0分
阅读:2926回复:2

x86下 vxld 如何工作!

楼主#
更多 发布于:2005-05-30 23:13
x86系统上电后由BOIS装载MBR,然后再从MBR中找到Active分区,接着找到DBR. 然后把DBR装到0x7c00处,然后从0x7c3e处开始执行vxld程序,vxld装载bootrom.sys。若装载成功,那么程序跳转到0x8000处执行,即跳转到romInit()处开始执行bootrom.sys 。

1:把vxld反汇编来看看,可是看不太懂!我想问的是vxld怎么在没有文件系统的情况下怎么把硬盘中的bootrom.sys装到内存中执行的?vxld使用什么好的软件编的,当然我想汇编是不会少的。有没有什么好的软件可以参考一下?

2:我想从FAT32分区中引导vxworks系统(bootrom.sys + vxworks),该如何修改vxld。当然,bootrom可能也要做一定的修改!请各位大牛指点!

chenyufenghc
驱动牛犊
驱动牛犊
  • 注册日期2005-07-11
  • 最后登录2008-01-02
  • 粉丝0
  • 关注0
  • 积分47分
  • 威望7点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-08-11 10:31
1。vxld使用文件系统的,vxld后的4个扇区是放bootrom。sys的,它会用BIOS中断调用把这几个扇区读到0x8000中,然后调到此运行,使命就结束了,BIOS的使命也结束了
这个小工具只要是支持x86汇编(16位)的工具都可以做的,MASM,TASM,GAS等
2。这个比较郁闷,VXWORKs好像只支持DOS文件系统,FAT32好像不支持也。这个是文件系统的问题了,与vxld无关
finalseraph
驱动牛犊
驱动牛犊
  • 注册日期2001-03-23
  • 最后登录2018-05-30
  • 粉丝0
  • 关注0
  • 积分-11分
  • 威望146点
  • 贡献值0点
  • 好评度24点
  • 原创分0分
  • 专家分0分
  • 社区居民
板凳#
发布于:2007-01-03 19:40
FAT的问题不由vxld考虑,因为vxld利用了BIOS提供的INT13H中断来读取bootrom的数据。vxld本身是由MBR读入内存的。vxld的代码实际上是在vxsys.com中的。当然,跟直接dump出来的512字节扇区是一样的...vxsys就用MASM类似的编译器编译...vxld 1.2 vxld 1.6在实现上有一定的差异,具体使用中发现U盘引导必须用vkld 1.6的引导扇区

过程应该是BIOS INT 19H -> DISK MBR -> DISK DBR (vxld所在扇区,由vxsys.com写入) -> 由vxld中的BIOS INT 13H调用将bootrom.sys读入内存。(默认为连续存放,这也是在mkboot时需要chkdsk的原因,否则会反复重启)
游客

返回顶部