新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > μC/OS-II在PC机上移植的设计与实现

μC/OS-II在PC机上移植的设计与实现

作者: 时间:2012-03-22 来源:网络 收藏

2.2 LOADER的设计

2.2.1

在DOS或Windows环境中,μC/OS-II使用BORLAND C++开发工具,因此,μC/OS-II应用系统的文件采用DOS的EXE格式,在装入μC/OS-II应用系统时,引导程序将按的要求将内核加载到内存中。EXE文件由两部分组成:文件首部和程序主体。文件首部包含重定位信息和控制信息,它由编译器和连接程序自动生成;程序主体包含代码段、栈段、数据段等,它由EXE启动代码和程序员编的程序构成,它是程序实际运行部分。EXE文件首部内容如表1所示。

表1 EXE文件首部

偏 移

说 明

00-01

EXE型程序标志“MZ”

02-03

文件长度除以512的余数

04-05

文件长度除512的商

06-07

重定位项数

08-09

文件首部长度(单位为节,每16字节为一节)

0A-0B

程序装入后要求高地址内存的最小节数

0C-0D

程序装入后要求高地址内存的最大节数

0E-0F

堆栈段SS的值

10-11

SP的初值

12-13

文件校验和

14-15

IP的初值

16-17

代码段CS的值

18-19

第一个重定位项的位置

1A-1B

覆盖号

1C-

保留

[18-19]-

重定位表

2.2.2 LOADER程序的设计

LOADER程序实现的主要功能是负责将内核装入到内存指定位置。假定TEST.EXE为带μC/OS-II内核的应用程序的文件名,LOADER 装入程序将首先在磁盘中查找TEST.EXE文件,若找到,将其读入内存地址0x10000开始的空间中。LOADER根据EXE文件首部的重定位表对加载到内存中的程序进行地址重定位后,初始化运行环境,然后转到程序主体的入口处运行。LOADER程序算法描述如下:

(1) 软驱复位,然后在软盘目录表中查找文件TEST.EXE,若找到转(3);

(2) 在软盘中没有找到TEST.EXE文件,显示信息“Kernel file do not exist!”,关闭软驱马达,程序进入死循环;

(3) 将TEST.EXE程序读到内存0x10000h处;

(4) 根据重定位表对装入内存中的TEST.EXE相关内容进行调整;

(5) 初始化TEST.EXE的运行环境;

(6) 转TEST.EXE入口处,开始运行TEST.EXE;

(7) 结束。



评论


相关推荐

技术专区

关闭