电子发烧友App

硬声App

0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示
电子发烧友网>电子资料下载>嵌入式开发>基于BIOS的WINCE启动方法解析

基于BIOS的WINCE启动方法解析

2017-10-31 | rar | 0.2 MB | 次下载 | 1积分

资料介绍

Windows CE.NET是微软公司嵌入式领域推出的一款操作系统。它最大程度继承了桌面版Windows操作系统的丰富功能,同时又赋予了许多新特性,以适应嵌入式领域的实际要求。无论是商业应用还是多媒体消费需求,都能被采用CE操作系统的设备轻松满足。最新的.NET版本较之3.0版本,在实时性和稳定性上有大幅度提高,并广泛地被平板电脑数码相机、彩屏手机、PDA等多种高性能产品所采用,同时工业控制中的用户也在不断增多。
  1 WINCE启动方法
  WINCE并不是一个通用的安装版操作系统,在各种嵌入式硬件设备中,一款CE系统通常只会针对某一种硬件平台生成。Boot Loader是定制Windows CE操作系统过程中一个重要的开发环节。在整个系统正常启动后,Boot Loader通过不同的方式加载CE的内核文件nk.bin。当Boot Loader把nk.bin解压到RAM后就把CPU控制权交给CE内核。在X86平台下,有三种Boot Loader:x86 ROM Boot Loader,x86 BIOS Boot Loader和MSDOS+Loadcepc。其中,x86 ROM Boot Loader因为要代替BIOS完成平台的初始化工作,需要CE开发者读懂它的源码并根据不同的平台修改,难度比较大。对于MSDOS+Loadcepc,首先启动到MSDOS,再执行loadcepc.exe,让loadcepc加载nk.bin到内存,再把CPU控制权交给CE内核程序。这种方法需要DOS系统的支持。
  1.1 BIOS Boot Loader启动过程
  这里着重介绍BIOS Boot Loader。它的引导顺序是:系统上电后BIOS执行完硬件初始化和配置,然后检查引导设备的启动顺序。如果引导设备是硬盘、CF卡、DOC(Disk-On-Chip)一类的存储设备,则就加载这些存储器上的主引导扇区(Master Boot Sector)中的实模式代码到内存,并执行这些代码。这里提到的代码被称为主引导记录(MBR)。MBR首先在分区表(同样位于主引导扇区)中寻找活动分区,如果存在活动分区,则加载位于这个活动分区的第一个扇区上的代码到内存,然后执行这些代码。这里提到的活动分区的第一个扇区被称为引导扇区(Boot Sector)。引导扇区上的代码的功能是找到并且加载BIOS Boot Loader,BIOS Boot Loader再加载nk.bin。使用BIOS Boot Loader方式,需要制作启动盘,Bsect.img和BLDR.BIN分别为引导扇区文件和WINCE的加载文件。执行“mkdisk C:”批处理命令将这两个文件写到磁盘上。mkdisk会设置Boot Loader的隐藏属性,这样在列出根目录下所有文件时不会显示Boot Loader的文件。这种方法的优点是不需要DOS系统就可以直接启动系统,这是一种常用的启动WINCE的方法;缺点是需要通过专门的工具制作启动盘,操作相对复杂,如果要更换不同的存储设备,则都要进行这一系列的操作才能完成。具体引导过程如图1所示。
  基于BIOS的WINCE启动方法解析
  1.2 BIOS Boot Loader启动代码分析
  通过上面的分析,BIOS Boot Loader的工作的过程已经清楚,下面分析启动过程中需要的文件。
  首先分析引导扇区(BootSector)文件Bsect.img。其主要包括一个引导程序和一个称作BPB(Bios Parameter Block)的本分区参数记录表。BPB表记录着本分区的起始扇区、结束扇区、文件存储格式、硬盘介质描述符、根目录大小、FAT个数、分配单元的大小等重要参数。引导程序是Bsect.img的关键部分,通过“mkdisk C:”替换原有引导扇区的主要目的是改变引导程序。
  下面是Bsect.img的BPB和引导程序的部分代码,包括参数的传递以及控制权移交给BLDR,这也是加载NK.BIN的最后一步。
  …
  ;BIOS parameter block(BPB)
  VerId db ′ ′ ;7C03
  BytePerSect dw 0000 ;7C0B
  SectPerClust db 00 ;7C0D
  RsvdSects dw 0000 ;7C0E
  NumFATs db 00 ;7C10
  NumRootEntrys dw 0000 ;7C11
  SectPerPart dw 0000 ;7C13
  MediaDesc db 00 ;7C15
  SectPerFAT dw 0000 ;7C16
  SectPerTrack dw 0000 ;7C18
  NumHeads dw 0000 ;7C1A
  NumHiddenSectL dw 0000 ;7C1C
  NumHiddenSectH dw 0000 ;7C1E
  TotalSectorsL dw 0000 ;7C20
  TotalSectorsH dw 0000 ;7C22
  DriveId db 00 ;7C24
  TempVal db 00 ;7C25
  ExtRecordSig db 00 ;7C26
  VolSerNumL dw 0000 ;7C27
  VolSerNumH dw 0000 ;7C29
  VolLabel db ′ ′ ;7C2B
  TypeFAT 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。
  
下载该资料的人也在下载 下载该资料的人还在阅读
更多 >

评论

查看更多

下载排行

本周

  1. 1TC358743XBG评估板参考手册
  2. 1.36 MB  |  330次下载  |  免费
  3. 2开关电源基础知识
  4. 5.73 MB  |  6次下载  |  免费
  5. 3100W短波放大电路图
  6. 0.05 MB  |  4次下载  |  3 积分
  7. 4嵌入式linux-聊天程序设计
  8. 0.60 MB  |  3次下载  |  免费
  9. 5基于FPGA的光纤通信系统的设计与实现
  10. 0.61 MB  |  2次下载  |  免费
  11. 6基于FPGA的C8051F单片机开发板设计
  12. 0.70 MB  |  2次下载  |  免费
  13. 751单片机窗帘控制器仿真程序
  14. 1.93 MB  |  2次下载  |  免费
  15. 8基于51单片机的RGB调色灯程序仿真
  16. 0.86 MB  |  2次下载  |  免费

本月

  1. 1OrCAD10.5下载OrCAD10.5中文版软件
  2. 0.00 MB  |  234315次下载  |  免费
  3. 2555集成电路应用800例(新编版)
  4. 0.00 MB  |  33564次下载  |  免费
  5. 3接口电路图大全
  6. 未知  |  30323次下载  |  免费
  7. 4开关电源设计实例指南
  8. 未知  |  21548次下载  |  免费
  9. 5电气工程师手册免费下载(新编第二版pdf电子书)
  10. 0.00 MB  |  15349次下载  |  免费
  11. 6数字电路基础pdf(下载)
  12. 未知  |  13750次下载  |  免费
  13. 7电子制作实例集锦 下载
  14. 未知  |  8113次下载  |  免费
  15. 8《LED驱动电路设计》 温德尔著
  16. 0.00 MB  |  6653次下载  |  免费

总榜

  1. 1matlab软件下载入口
  2. 未知  |  935054次下载  |  免费
  3. 2protel99se软件下载(可英文版转中文版)
  4. 78.1 MB  |  537796次下载  |  免费
  5. 3MATLAB 7.1 下载 (含软件介绍)
  6. 未知  |  420026次下载  |  免费
  7. 4OrCAD10.5下载OrCAD10.5中文版软件
  8. 0.00 MB  |  234315次下载  |  免费
  9. 5Altium DXP2002下载入口
  10. 未知  |  233046次下载  |  免费
  11. 6电路仿真软件multisim 10.0免费下载
  12. 340992  |  191185次下载  |  免费
  13. 7十天学会AVR单片机与C语言视频教程 下载
  14. 158M  |  183278次下载  |  免费
  15. 8proe5.0野火版下载(中文版免费下载)
  16. 未知  |  138040次下载  |  免费