<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

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

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

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

          2.2 LOADER的設(shè)計(jì)

          2.2.1

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

          表1 EXE文件首部

          偏 移

          說(shuō) 明

          00-01

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

          02-03

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

          04-05

          文件長(zhǎng)度除512的商

          06-07

          重定位項(xiàng)數(shù)

          08-09

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

          0A-0B

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

          0C-0D

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

          0E-0F

          堆棧段SS的值

          10-11

          SP的初值

          12-13

          文件校驗(yàn)和

          14-15

          IP的初值

          16-17

          代碼段CS的值

          18-19

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

          1A-1B

          覆蓋號(hào)

          1C-

          保留

          [18-19]-

          重定位表

          2.2.2 LOADER程序的設(shè)計(jì)

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

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

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

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

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

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

          (6) 轉(zhuǎn)TEST.EXE入口處,開(kāi)始運(yùn)行TEST.EXE;

          (7) 結(jié)束。



          評(píng)論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();