<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > μC/OS-II在PC機上移植的設計與實(shí)現

μC/OS-II在PC機上移植的設計與實(shí)現

作者: 時(shí)間:2012-03-22 來(lái)源:網(wǎng)絡(luò ) 收藏

2.2 LOADER的設計

2.2.1

在DOS或Windows環(huán)境中,μC/OS-II使用BORLAND C++開(kāi)發(fā)工具,因此,μC/OS-II應用系統的文件采用DOS的EXE格式,在裝入μC/OS-II應用系統時(shí),引導程序將按的要求將內核加載到內存中。EXE文件由兩部分組成:文件首部和程序主體。文件首部包含重定位信息和控制信息,它由編譯器和連接程序自動(dòng)生成;程序主體包含代碼段、棧段、數據段等,它由EXE啟動(dòng)代碼和程序員編的程序構成,它是程序實(shí)際運行部分。EXE文件首部?jì)热萑绫?所示。

表1 EXE文件首部

偏 移

說(shuō) 明

00-01

EXE型程序標志“MZ”

02-03

文件長(cháng)度除以512的余數

04-05

文件長(cháng)度除512的商

06-07

重定位項數

08-09

文件首部長(cháng)度(單位為節,每16字節為一節)

0A-0B

程序裝入后要求高地址內存的最小節數

0C-0D

程序裝入后要求高地址內存的最大節數

0E-0F

堆棧段SS的值

10-11

SP的初值

12-13

文件校驗和

14-15

IP的初值

16-17

代碼段CS的值

18-19

第一個(gè)重定位項的位置

1A-1B

覆蓋號

1C-

保留

[18-19]-

重定位表

2.2.2 LOADER程序的設計

LOADER程序實(shí)現的主要功能是負責將內核裝入到內存指定位置。假定TEST.EXE為帶μC/OS-II內核的應用程序的文件名,LOADER 裝入程序將首先在磁盤(pán)中查找TEST.EXE文件,若找到,將其讀入內存地址0x10000開(kāi)始的空間中。LOADER根據EXE文件首部的重定位表對加載到內存中的程序進(jìn)行地址重定位后,初始化運行環(huán)境,然后轉到程序主體的入口處運行。LOADER程序算法描述如下:

(1) 軟驅復位,然后在軟盤(pán)目錄表中查找文件TEST.EXE,若找到轉(3);

(2) 在軟盤(pán)中沒(méi)有找到TEST.EXE文件,顯示信息“Kernel file do not exist!”,關(guān)閉軟驅馬達,程序進(jìn)入死循環(huán);

(3) 將TEST.EXE程序讀到內存0x10000h處;

(4) 根據重定位表對裝入內存中的TEST.EXE相關(guān)內容進(jìn)行調整;

(5) 初始化TEST.EXE的運行環(huán)境;

(6) 轉TEST.EXE入口處,開(kāi)始運行TEST.EXE;

(7) 結束。



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>