日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > 嵌入式 > 嵌入式硬件
[導(dǎo)讀]1 引言μC/OS-II是專門(mén)為嵌入式系統(tǒng)應(yīng)用而設(shè)計(jì)的嵌入式實(shí)時(shí)操作系統(tǒng),人們?cè)趯W(xué)習(xí)μC/OS-II時(shí),一開(kāi)始往往在基于PC機(jī)的DOS或 Windows環(huán)境下進(jìn)行分析與研究。在這種環(huán)境

1 引言

μC/OS-II是專門(mén)為嵌入式系統(tǒng)應(yīng)用而設(shè)計(jì)的嵌入式實(shí)時(shí)操作系統(tǒng),人們?cè)趯W(xué)習(xí)μC/OS-II時(shí),一開(kāi)始往往在基于PC機(jī)的DOS或 Windows環(huán)境下進(jìn)行分析與研究。在這種環(huán)境中,帶有μC/OS-II內(nèi)核的應(yīng)用系統(tǒng)(簡(jiǎn)稱μC/OS-II應(yīng)用系統(tǒng))的運(yùn)行,讓人覺(jué)得它好像是一個(gè) DOS程序,人們無(wú)法真實(shí)地領(lǐng)略實(shí)時(shí)操作系統(tǒng)的面貌。實(shí)際上,在PC機(jī)的DOS或Windows環(huán)境中,μC/OS-II應(yīng)用系統(tǒng)確實(shí)是一個(gè)DOS可執(zhí)行程序,它的運(yùn)行離不開(kāi)DOS或Windows環(huán)境。為了讓更多的人掌握和理解μC/OS-II實(shí)時(shí)操作系統(tǒng),筆者對(duì)μC/OS-II進(jìn)行移植,使其完全脫離DOS或Windows環(huán)境而運(yùn)行。首先設(shè)計(jì)Bootloader引導(dǎo)程序,由它來(lái)裝入μC/OS-II應(yīng)用系統(tǒng);其次修改BORLAND C++編譯器中的EXE啟動(dòng)代碼,剝?nèi)ヅcDOS相關(guān)的代碼;最后修改μC/OS-II內(nèi)核代碼中與硬件平臺(tái)相關(guān)部分的代碼,使其能正常運(yùn)行和正常退出。

2 bootloader的設(shè)計(jì)

Bootloader引導(dǎo)程序的設(shè)計(jì)是嵌入式系統(tǒng)軟件開(kāi)發(fā)的一個(gè)重要環(huán)節(jié),它把操作系統(tǒng)和硬件平臺(tái)銜接在一起,通過(guò)初始化硬件設(shè)備、建立內(nèi)存空間映射,為最終加載操作系統(tǒng)內(nèi)核建立正確的環(huán)境。由于Bootloader的實(shí)現(xiàn)依賴于CPU的體系結(jié)構(gòu),因此大多數(shù)初始化引導(dǎo)程序分為兩部分,第一部分主要包含依賴于CPU體系結(jié)構(gòu)的硬件初始化代碼,第二部分實(shí)現(xiàn)的功能比第一部分更多更復(fù)雜,它為內(nèi)核程序準(zhǔn)備運(yùn)行的環(huán)境,將內(nèi)核裝入到指定位置,并轉(zhuǎn)到內(nèi)核處運(yùn)行。本文設(shè)計(jì)的Bootloader也是由兩部分構(gòu)成,一部分稱作BOOT的引導(dǎo)記錄,另一部分是LOADER裝入程序。BOOT的大小固定為512個(gè)字節(jié),作為引導(dǎo)記錄存放在軟盤(pán)的0面0磁道1扇區(qū),它所實(shí)現(xiàn)的功能是在軟盤(pán)的目錄區(qū)中尋找LOADER文件,并將LOADER裝入到內(nèi)存中,然后由 LOADER負(fù)責(zé)初始化工作環(huán)境并引導(dǎo)內(nèi)核的運(yùn)行。

軟盤(pán)采用FAT文件系統(tǒng),并對(duì)它進(jìn)行格式化,使用工具將BOOT寫(xiě)到0面0磁道1扇區(qū)中,將LOADER和μC/OS-II應(yīng)用系統(tǒng)程序復(fù)制到軟盤(pán)中,然后用軟盤(pán)啟動(dòng)系統(tǒng),就能觀察到μC/OS-II實(shí)時(shí)操作系統(tǒng)的運(yùn)行情況,它完全脫離了DOS運(yùn)行環(huán)境。同樣,也可以通過(guò)Bochs、QEMU或 VMware等虛擬機(jī)做一個(gè)磁盤(pán)映像文件,用BOOT替換該映像文件的前512個(gè)字節(jié),將LOADER和μC/OS-II應(yīng)用系統(tǒng)復(fù)制到該映像文件中,然后就可以在虛擬機(jī)中完成系統(tǒng)的啟動(dòng)。這樣,在每次修改程序后,不需要重新啟動(dòng)機(jī)器來(lái)驗(yàn)證系統(tǒng)的正確性,而只需要調(diào)整映像文件,在虛擬機(jī)中重啟系統(tǒng)即可,使用虛擬機(jī)使內(nèi)核的修改和調(diào)試變得十分容易。

2.1 BOOT的設(shè)計(jì)

當(dāng)PC機(jī)加電后,首先進(jìn)行自檢,然后尋找啟動(dòng)盤(pán),如果從軟盤(pán)啟動(dòng),計(jì)算機(jī)讀取軟盤(pán)的0面0磁道1扇區(qū)的內(nèi)容,若該扇區(qū)最后兩個(gè)字節(jié)是0x55、 0xaa,則其為引導(dǎo)扇區(qū),計(jì)算機(jī)將其內(nèi)容裝入到內(nèi)存地址0x7c00開(kāi)始處,并轉(zhuǎn)到該處運(yùn)行。因BOOT只能占用一個(gè)扇區(qū),其大小固定為512個(gè)字節(jié),其實(shí)現(xiàn)的功能受到限制,所以BOOT的主要功能是在磁盤(pán)的目錄區(qū)中尋找LOADER程序,并將其裝入到內(nèi)存中,最后將CPU的控制權(quán)交給LOADER,其后的任務(wù)就由LOADER完成。BOOT程序的算法描述如下:

(1) 在顯示屏上顯示“Booting...”提示信息,同時(shí)使軟驅(qū)復(fù)位;

(2) 在磁盤(pán)的目錄區(qū)中尋找LOADER文件;

(3) 若LOADER文件存在,則轉(zhuǎn)(5);

(4) LOADER文件不存在,顯示提示信息“Boot fail!”,關(guān)閉軟驅(qū)馬達(dá),程序進(jìn)入死循環(huán);

(5) 將LOADER讀到內(nèi)存0x90000處;

(6) CPU轉(zhuǎn)到0x90000處運(yùn)行,即將CPU的控制權(quán)交給LOADER。

這段程序用匯編語(yǔ)言編寫(xiě),它經(jīng)過(guò)匯編連接后,使用工具軟件,比如debug將其寫(xiě)到軟盤(pán)的0面0道1扇區(qū)。

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

2.2.1 EXE文件格式

在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ū)碋XE文件格式的要求將內(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文件首部

 

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é)束。

 

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動(dòng)電源

在工業(yè)自動(dòng)化蓬勃發(fā)展的當(dāng)下,工業(yè)電機(jī)作為核心動(dòng)力設(shè)備,其驅(qū)動(dòng)電源的性能直接關(guān)系到整個(gè)系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動(dòng)勢(shì)抑制與過(guò)流保護(hù)是驅(qū)動(dòng)電源設(shè)計(jì)中至關(guān)重要的兩個(gè)環(huán)節(jié),集成化方案的設(shè)計(jì)成為提升電機(jī)驅(qū)動(dòng)性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機(jī) 驅(qū)動(dòng)電源

LED 驅(qū)動(dòng)電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個(gè)照明設(shè)備的使用壽命。然而,在實(shí)際應(yīng)用中,LED 驅(qū)動(dòng)電源易損壞的問(wèn)題卻十分常見(jiàn),不僅增加了維護(hù)成本,還影響了用戶體驗(yàn)。要解決這一問(wèn)題,需從設(shè)計(jì)、生...

關(guān)鍵字: 驅(qū)動(dòng)電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動(dòng)電源的公式,電感內(nèi)電流波動(dòng)大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計(jì) 驅(qū)動(dòng)電源

電動(dòng)汽車(chē)(EV)作為新能源汽車(chē)的重要代表,正逐漸成為全球汽車(chē)產(chǎn)業(yè)的重要發(fā)展方向。電動(dòng)汽車(chē)的核心技術(shù)之一是電機(jī)驅(qū)動(dòng)控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機(jī)驅(qū)動(dòng)系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動(dòng)汽車(chē)的動(dòng)力性能和...

關(guān)鍵字: 電動(dòng)汽車(chē) 新能源 驅(qū)動(dòng)電源

在現(xiàn)代城市建設(shè)中,街道及停車(chē)場(chǎng)照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進(jìn)步,高亮度白光發(fā)光二極管(LED)因其獨(dú)特的優(yōu)勢(shì)逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動(dòng)電源 LED

LED通用照明設(shè)計(jì)工程師會(huì)遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動(dòng)電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動(dòng)電源的電磁干擾(EMI)問(wèn)題成為了一個(gè)不可忽視的挑戰(zhàn)。電磁干擾不僅會(huì)影響LED燈具的正常工作,還可能對(duì)周?chē)娮釉O(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來(lái)解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動(dòng)電源

開(kāi)關(guān)電源具有效率高的特性,而且開(kāi)關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機(jī)重量也有所下降,所以,現(xiàn)在的LED驅(qū)動(dòng)電源

關(guān)鍵字: LED 驅(qū)動(dòng)電源 開(kāi)關(guān)電源

LED驅(qū)動(dòng)電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動(dòng)LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動(dòng)電源
關(guān)閉