一种基于BIOS的WINCE启动方法
db ′ ′ ;7C36
…
从磁盘中查找BLDR.BIN文件并装入内存
…
;Put the media type, drive number, and data start LBA into registers that are passed to the bootloader.
MOV CH,[MediaDesc]
MOV DL,[DriveId]
MOV BX,WORD PTR [_7C3E+0BH] ;根据BPB表计算得出
MOV AX,WORD PTR [_7C3E+0DH] ;根据BPB表计算得出
;jump to bootloader image
DB 00EAH
DW LOAD_ADDRESS ;BLDR.BIN 在内存中的地址0000:1000
DW 0000H
2 WINCE启动新方法
本文中介绍的方法是在BIOS Boot Loader基础上改进而来,通过修改BIOS,为使用X86平台的WINCE用户提供方便。此方法不需要使用"mkdisk"制作启动盘,只需要把磁盘(如硬盘、CF卡等)格式化为FAT16,把NK.BIN文件存放到磁盘活动分区的根目录即可。
2.1 实现步骤
下面介绍这种方法的实现。BIOS的修改主要包括以下三个部分:
(1)把WINCE的加载程序BLDR.BIN存放到BIOS中。首先分配一个ID号,然后作为一个模块添加到BIOS中,由于存放BIOS的Flash空间有限,所以需要对其进行压缩。在BIOS编译完成以后,通过BIOS工具可以看到这一模块,并且和其他模块一样可以更新,也就是说可以升级BLDR.BIN。
(2)在BIOS启动选项里增加WINCE启动项。启动过程中判断用户的设置,如果从WINCE启动,则把BLDR模块解压后存放到某个内存空间中等待调用。
(3)修改BIOS INT19调用的过程。在INT19的服务程序中,当BIOS把磁盘的MBR读入到内存0000:7C00之后取得控制权,把前面解压后的BLDR转移到内存0000:1000,通过读取MBR的分区表信息(位置如图2所示)查找当前磁盘活动分区。第一个字节为80H的是活动分区,然后读取活动分区引导扇区的BPB表,参照Bsect.img中的方法把BLDR所需的四个参数准备好,最后移交控制权到BLDR。
2.2 启动过程及结果
经过这样修改以后,WINCE的启动过程如图3所示。由此可以看出,启动过程主要在BIOS中完成。经过不同的平台测试可知,这种方法与原有BIOS Boot Loader的启动速度差不多。表1是两种方法启动速度的对比,记录时间为系统上电到BLDR开始加载NK.BIN。
3 实际应用
目前研祥的多款主板的BIOS都支持此种功能,在BIOS的设置中有一个选项来选择是否从WINCE启动。在使用其他系统时选择"disable",便可以从其他系统正常启动;使用WINCE时选择"enable",便从WINCE启动。把编译好的nk.bin文件拷贝到磁盘的活动分区根目录,系统上电后可以直接启动到WINCE,不需要制作专用的启动盘,为用户使用WINCE系统带来了方便。此种启动方法同样适合于其他的嵌入式操作系统,如Linux等。
BIOS WINCE启动 Boot Loader 相关文章:
- 采用Linux与DSP/BIOS RTOS实施双OS信号处理技术(02-13)
- 基于DSP/BIOS的数字电视传输流网络采集系统设计(04-12)
- 基于DSP BIOS的数字电视传输流网络采集系统设计(05-13)
- VxWorks for x86系统中实时时钟的应用(07-06)
- 基于DSP/BIOS的门禁系统设计与实现(07-10)
- 中断在TMS320C54x系列DSP中的应用(10-01)