• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > μC/OS-II在PC機(jī)上移植的設(shè)計與實現(xiàn)

    μC/OS-II在PC機(jī)上移植的設(shè)計與實現(xiàn)

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

    2.2 LOADER的設(shè)計

    2.2.1

    在DOS或Windows環(huán)境中,μC/OS-II使用BORLAND C++開發(fā)工具,因此,μC/OS-II應(yīng)用系統(tǒng)的文件采用DOS的EXE格式,在裝入μC/OS-II應(yīng)用系統(tǒng)時,引導(dǎo)程序?qū)?a class="contentlabel" href="http://www.czjhyjcfj.com/news/listbylabel/label/EXE文件格式">EXE文件格式的要求將內(nèi)核加載到內(nèi)存中。EXE文件由兩部分組成:文件首部和程序主體。文件首部包含重定位信息和控制信息,它由編譯器和連接程序自動生成;程序主體包含代碼段、棧段、數(shù)據(jù)段等,它由EXE啟動代碼和程序員編的程序構(gòu)成,它是程序?qū)嶋H運行部分。EXE文件首部內(nèi)容如表1所示。

    表1 EXE文件首部

    偏 移

    說 明

    00-01

    EXE型程序標(biāo)志“MZ”

    02-03

    文件長度除以512的余數(shù)

    04-05

    文件長度除512的商

    06-07

    重定位項數(shù)

    08-09

    文件首部長度(單位為節(jié),每16字節(jié)為一節(jié))

    0A-0B

    程序裝入后要求高地址內(nèi)存的最小節(jié)數(shù)

    0C-0D

    程序裝入后要求高地址內(nèi)存的最大節(jié)數(shù)

    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程序的設(shè)計

    LOADER程序?qū)崿F(xiàn)的主要功能是負(fù)責(zé)將內(nèi)核裝入到內(nèi)存指定位置。假定TEST.EXE為帶μC/OS-II內(nèi)核的應(yīng)用程序的文件名,LOADER 裝入程序?qū)⑹紫仍诖疟P中查找TEST.EXE文件,若找到,將其讀入內(nèi)存地址0x10000開始的空間中。LOADER根據(jù)EXE文件首部的重定位表對加載到內(nèi)存中的程序進(jìn)行地址重定位后,初始化運行環(huán)境,然后轉(zhuǎn)到程序主體的入口處運行。LOADER程序算法描述如下:

    (1) 軟驅(qū)復(fù)位,然后在軟盤目錄表中查找文件TEST.EXE,若找到轉(zhuǎn)(3);

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

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

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

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

    (6) 轉(zhuǎn)TEST.EXE入口處,開始運行TEST.EXE;

    (7) 結(jié)束。



    評論


    相關(guān)推薦

    技術(shù)專區(qū)

    關(guān)閉
    主站蜘蛛池模板: 绥滨县| 通海县| 刚察县| 香格里拉县| 鲁山县| 十堰市| 喀喇沁旗| 大理市| 平遥县| 什邡市| 佛教| 承德市| 尚义县| 体育| 双桥区| 深圳市| 敖汉旗| 武强县| 松阳县| 宜丰县| 惠东县| 舞阳县| 乐业县| 乃东县| 夹江县| 龙山县| 常宁市| 庆安县| 应用必备| 乃东县| 三亚市| 东山县| 东平县| 玛纳斯县| 台州市| 玉田县| 石城县| 五峰| 阳原县| 法库县| 虹口区|