




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、目目 錄錄 摘摘 要要.3 abstract.4 1 選題背景選題背景.5 1.1 課題的來源.5 1.2 題目的理論目的意義.5 1.3 方案選擇與論證.6 1.4 指導思想.10 2 嵌入式操作系統(tǒng)的移植嵌入式操作系統(tǒng)的移植.11 2.1 嵌入式操作系統(tǒng)的發(fā)展.11 2.2 嵌入式操作系統(tǒng)及其特點.12 2.3 常用的嵌入式操作系統(tǒng).12 2.3.1 windows ce .net.12 2.3.2 嵌入式 linux .12 2.3.3 vxworks.13 2.3.4 t-kernel.14 2.3.5 uc/os-ii.15 2.4 uc/os-ii 移植原理.16 2.4.1 編譯
2、器的選擇.16 2.4.2 移植 uc/os-ii.16 2.4.3 編寫 os_cpu.h.17 2.4.4 編寫 os_cpu_c.c 文件.18 2.4.5 編寫 os_cpu_a.s 文件.20 2.4.6 中斷與時鐘節(jié)拍.21 3 基于基于 isp1161a1 的的 usb host 驅(qū)動驅(qū)動.23 3.1 usb 總線傳輸協(xié)議.23 3.1.1 包的格式.23 3.1.2 usb 總線數(shù)據(jù)傳輸類型.24 3.2 isp1161a1 介紹.25 3.2.1 isp1161x芯片介紹.25 3.2.2 isp1161x 軟件模塊.26 3.2.3 isp1161x 硬件模塊.27 3.
3、2.4 isp1161x 軟件系統(tǒng)結(jié)構(gòu).28 3.2.5 主機堆棧系統(tǒng)結(jié)構(gòu).28 3.2.6 編程 isp1161x 的主機控制器.29 3.3 usb 驅(qū)動的軟件實現(xiàn).37 4 以太網(wǎng)連接以太網(wǎng)連接.43 4.1 以太網(wǎng)控制器 enc28j60 .43 4.2 enc28j60 驅(qū)動的軟件實現(xiàn).46 4.3 基于 enc28j60 以太網(wǎng)卡的以太網(wǎng)傳輸?shù)募軜?gòu) .48 5 實驗電路與結(jié)果實驗電路與結(jié)果.50 5.1 系統(tǒng)設計的電路實物圖.50 5.2 部分實驗結(jié)果.51 6 總總 結(jié)結(jié).54 6.1 畢業(yè)設計中遇到的困難及解決辦法.54 6.1.1 操作系統(tǒng)移植部分.54 6.1.2 usb
4、接口芯片 isp1161 的驅(qū)動開發(fā)調(diào)試部分.54 6.2 收獲與展望.56 致致 謝謝.58 參考文獻參考文獻.59 摘 要 本文提出一種多路復合視頻信號的采集與傳輸?shù)脑O計方案。該方案在 lpc2138 微處 理器上移植 ucos-ii 操作系統(tǒng),采用 usb 接口芯片 isp1161a1 的 host 方式連接 usb 攝像頭進行視頻數(shù)據(jù)的采集,然后,通過以太網(wǎng)接口芯片 enc28j60 接入以太網(wǎng),進行多 路復合視頻信號的網(wǎng)絡傳輸。本方案包括 usb host 驅(qū)動的開發(fā)、usb 驅(qū)動層 usbd 的 開發(fā)、以太網(wǎng)接口芯片 enc28j60 的介紹以及底層硬件驅(qū)動的開發(fā)、tcp/udp/
5、ip 協(xié)議的 應用,對整個系統(tǒng)的設計進行了比較全面的論述。針對目前的情況,對一些難點技術(shù)進 行深入學習,主要討論以下幾個方面的問題: 如何將一個 ucos-ii 操作系統(tǒng)移植到微處理 器上;如何編寫 usb 接口芯片的 hc 驅(qū)動程序;怎樣設計 usbd 層;以及以太網(wǎng)傳輸?shù)?構(gòu)建。 關(guān)鍵字:ucos-ii 操作系統(tǒng),usb host,以太網(wǎng)傳輸,ip 協(xié)議棧 abstract this paper presents a multi-channel composite video signal acquisition and transmission design. the program t
6、ransplants ucos-ii operating system on the lpc2138 microprocessor, using the host isp1161a1 as usb interface chip connected usb camera for video data acquisition, and then through the ethernet interface chip enc28j60 access to ethernet, for multi-channel composite video signal transmission network.
7、the program includes a usb host-driven development, usb driver layer usbd development, enc28j60 ethernet interface chip on the bottom and hardware-driven development, tcp / udp / ip protocol to the applicat - ion of the whole system design of a more comprehensive exposition. in view of the current s
8、ituation, through some technical depth study, discuss on the following areas : how would one transplanted ucos-ii operating system to the microprocessor; how to prepare the usb interface chip hc driver; how to design usbd layer; ethernet transmission and construction. keywords: ucos-ii operating sys
9、tem, usb host, ethernet transfer, ip protocol stack 1 選題背景選題背景 1.1 課題的來源課題的來源 usb(universal serial bus ,通用串行總線) 是最近幾年逐步在pc 領(lǐng)域廣為應用的新型 接口技術(shù)。作為計算機外圍設備的一種標準接口,他以支持熱插拔、接口通用性好、實時 性強、傳輸方式多樣、較高的傳輸速率、成本低、易于擴展且便于使用這些優(yōu)點而受到 許多硬件廠商的青睞,各種類型的usb 設備產(chǎn)品,包括攝像頭、鍵盤、鼠標、掃描儀、打 印機以及存儲設備大量涌入市場,應用如火如荼。但是要使這些設備像在windows 中一樣, 運
10、行在嵌入式系統(tǒng)中,就需要編寫相應操作系統(tǒng)下的驅(qū)動程序,也叫bsp(板級支持包) 。 在許多的應用中,多媒體相關(guān)的應用更是倍受人們關(guān)注,尤其是視頻的相關(guān)技術(shù)。一般 情況下可以采用攝像頭或視頻采集卡來完成視頻的采集工作,由于使 usb 接口的攝像頭 在 pc 上的應用已經(jīng)很廣泛,而且成本低廉,所以在嵌入式 ucos-ii 系統(tǒng)中開發(fā)使用 usb 攝像頭來采集視頻是很好的選擇。 為了能夠進行基于下位機的視頻采集與傳輸?shù)脑O計學習與研究,增進本人對電子信 息科學專業(yè)相關(guān)的較為常見的產(chǎn)品開發(fā)設計的興趣與了解,促進對嵌入式操作系統(tǒng)移植 的學習,尤其是為了增加對usb攝像頭的驅(qū)動、以太網(wǎng)絡傳輸?shù)燃夹g(shù)開發(fā)流程的
11、了解與 熟悉,故選擇了本設計題目。 1.2 題目的理論目的意義題目的理論目的意義 視頻信號的采集與傳輸是安全監(jiān)控、生產(chǎn)線控制、信息監(jiān)測等視頻信息處理領(lǐng)域的 技術(shù)基礎。本設計主要是配合實現(xiàn)教室監(jiān)控系統(tǒng)的下位機終端多路視頻采集與傳輸控制 部分,將視頻數(shù)據(jù)傳輸?shù)缴衔粰C由上位機進行分析處理,然后上位機將控制信息發(fā)回下 位機,由下位機控制教室的照明燈,實現(xiàn)節(jié)能的目的。它主要有驅(qū)動 usb 攝像頭進行視 頻圖像采集、數(shù)據(jù)與處理、網(wǎng)絡傳輸技術(shù)等多方面的內(nèi)容。需要綜合考慮視頻信號采集、 傳輸及控制等實現(xiàn)情況。本設計主要集中在 usb 協(xié)議的軟件編寫,usb 攝像頭驅(qū)動的軟 件編寫和以太網(wǎng)傳輸?shù)拈_發(fā)部分,工作量
12、和開發(fā)難度大,能夠真正鍛煉自己的水平,將 自己四年所學提高到一個新的臺階。 1.3 方案選擇與論證方案選擇與論證 多路視頻信號的采集與傳輸有很多應用場合,并且基于 usb 攝像頭的視頻采集理論 研究己經(jīng)取得了一定的成果。系統(tǒng)主要有兩大難題,第一是 usb 接口芯片應當選擇具有 host 主機模式的芯片,而大部分接口芯片多用作從機模式,usb 主機模式的驅(qū)動編程要 比從機模式復雜的多;第二是 usb 攝像頭驅(qū)動開發(fā)難度大,因為大部分攝像頭廠商因為 商業(yè)原因,攝像頭驅(qū)動開發(fā)需要的內(nèi)部資料都保密;第三是多路信號的網(wǎng)絡傳輸問題, 因為視頻信號實時性較強并且數(shù)據(jù)量較大,所以,既要實現(xiàn)多路信號的傳輸實現(xiàn),
13、又要 實現(xiàn)實時性網(wǎng)絡傳輸。因此,關(guān)于多路復合視頻信號采集與傳輸系統(tǒng)的研究仍在不斷進 行,其可行方案也多種多樣。 在選擇設計方案時,我的認識是一個逐步提高的過程,但也走了很多彎路,在 usb 接口芯片選擇方面主要可選方案有 pdiusbd12、cypress 公司的 ez-usb 系列芯片、 lpc214x 集成 usb 功能的 arm 芯片以 isp1161 芯片等;在網(wǎng)絡傳輸?shù)姆桨高x擇上依次 經(jīng)歷了:采用 485 總線協(xié)議進行傳輸、采用常用的 rtl8239 系列基于 pci 協(xié)議的網(wǎng)卡傳 輸以及現(xiàn)在采用的基于 spi 總線協(xié)議 enc28j60 以太網(wǎng)卡接口芯片方案。 方案一方案一: 本方
14、案采用 usb 攝像頭進行視頻數(shù)據(jù)采集、 以單片機作為終端核心處理器將采集 的視頻數(shù)據(jù)向上位機傳輸,供上位機進行圖像分析處理,并且接收上位機的命令進行相 關(guān)控制操作。 (1) 攝像頭的選擇:攝像頭的選擇: 攝像頭為整個系統(tǒng)的數(shù)據(jù)傳輸、分析、處理提供原始視頻數(shù)據(jù),因此攝像頭的選擇關(guān) 系到之后對視頻數(shù)據(jù)分析處理的好壞程度,極為重要;同時又考慮到本系統(tǒng)設計的目的 是為教室照明燈的自動控制提供前端處理、傳輸以及最終控制,技術(shù)要求僅限于對圖像 的分析控制,而非圖像的精確識別,因此對視頻圖像清晰度的要求不是非常嚴格,只需 做到區(qū)域模糊識別的程度;同時,降低成本也是必須考慮的因素之一,如果采用帶有數(shù) 據(jù)采集
15、卡的攝像頭,不僅成本高,而且對視頻精度的應用也是一種浪費;綜上,本系統(tǒng) 采用帶有usb接口的攝像頭進行視頻數(shù)據(jù)的采集。 (2) 通信接口:通信接口: 采用rs-485,rs-485是一個多引出線串行通信接口,該接口可以最多負載128個驅(qū)動 器和接收器,可以實現(xiàn)一臺上位機與多臺下位機之間的串行通信,最長傳輸距離可達 1200m,適合于遠距離傳輸。pc機與rs-485總線之間的接口可以采用s2-485標準轉(zhuǎn)換芯 片實現(xiàn);單片機與485總線的接口可以采用max48x/49x系列收發(fā)器組成差分平衡系統(tǒng), 抗干擾能力強,適合于遠距離傳輸。系統(tǒng)總體示意圖見圖1。 (3) 通信協(xié)議設計:通信協(xié)議設計: 幀格
16、式:包括呼叫幀、應答幀和數(shù)據(jù)幀。 呼叫幀由上位機發(fā)出。格式為起始字符、下位機、地址和校驗位。上位機通過呼叫幀 來輪詢各臺下位機的狀態(tài)或者關(guān)閉輪詢,同一時間內(nèi)只與一臺下位機進行通信。二者之 間通過數(shù)據(jù)幀進行一對一的數(shù)據(jù)通信。 應答幀:只能由下位機發(fā)出。當下位機收到呼叫幀后,便將本機地址以及當前狀態(tài)發(fā) 送給上位機。 數(shù)據(jù)幀:上下位機都可以發(fā)送數(shù)據(jù),數(shù)據(jù)幀是上下位機間進行大量數(shù)據(jù)傳輸?shù)幕靖?式,在發(fā)數(shù)據(jù)幀之前上下位機之間已經(jīng)建立的一對一的連接,為了通信的可靠性,進行 數(shù)據(jù)傳輸時,仍然保留下位機的地址,因此數(shù)據(jù)幀的格式可以定義見表1。 表1-1 數(shù)據(jù)幀格式 類 型 起始字符下位機地址 命令字段 數(shù)據(jù)
17、序列 異或校驗 占用位數(shù)/bit 8 8 8 8*8 8 (4) 通信模式:通信模式: 用標準異步串行通信模式,格式為1位起始位、8位數(shù)據(jù)位、1位停止位。 圖1-1485總線通信模式圖 (5)差錯控制:差錯控制: 用于傳輸數(shù)據(jù)的錯誤檢查和錯誤糾正,以保證數(shù)據(jù)傳輸?shù)臏蚀_性。 呼叫階段:當上位機發(fā)送呼叫幀后,如果在規(guī)定時間內(nèi)沒有收到下位機的應答幀, 則上位機認為幀丟失并重發(fā)呼叫幀;如果連發(fā)送三次仍沒有收到應答幀,則系統(tǒng)認為該 下位機處于關(guān)機狀態(tài),上位機便開始執(zhí)行其他任務。 數(shù)據(jù)傳輸階段:差錯控制采用應答方式,即接收方向發(fā)送方回發(fā)特殊的控制命令碼, 作為正確與錯誤的確認標志;發(fā)送方接收到確認信息后就
18、可以確定數(shù)據(jù)是否已經(jīng)正確發(fā) 送,是否需要重新發(fā)送。特別情況下,當數(shù)據(jù)傳輸過程中幀完全丟失,則發(fā)送方會無休 止的等待接收方的確認信息,為了解決這一問題,可以采用看門狗定時器,當發(fā)送方發(fā) 送數(shù)據(jù)后超過一定時間沒有收到確認信息,就認為是數(shù)據(jù)丟失,自動重發(fā)數(shù)據(jù)。同時, 最大重發(fā)次數(shù)設定為 3 次,超過 3 次就認為是串行通信線路出現(xiàn)故障,上位機進行故障 報警。 本方案采用 485 總線傳輸數(shù)據(jù),最多可以達到 128 路數(shù)據(jù),但是數(shù)據(jù)傳輸速率較慢, rs-485 總線 r1r2 s2- 485 pc 機 max48x/49 x 終端 1 max48x/49 x 終端 2 max48x/49 x 終端 n
19、 不能很好地滿足視頻數(shù)據(jù)的實時性傳輸?shù)囊?,因此本方案沒被采用。 方案二方案二: 本方案與方案一的不同之處主要在于網(wǎng)絡傳輸部分,本方案決定采用以太網(wǎng)進行數(shù) 據(jù)傳輸,網(wǎng)絡傳輸協(xié)議主要采用 tcp/udp/ip 協(xié)議,網(wǎng)卡主要采用基于 pci 協(xié)議的 rtl8239 網(wǎng)卡。 本架構(gòu)的優(yōu)點是可以采用通用 pci 接口網(wǎng)卡,成本低,維護簡單,如果網(wǎng)卡出現(xiàn)問 題,可以輕易的更換網(wǎng)卡;更重要的是較之方案一,實現(xiàn)了通用的以太網(wǎng)傳輸功能, ucos-ii 操作系統(tǒng) rtl8239 以太網(wǎng)卡 ip 層 tcp/udp 層 rtl8239 網(wǎng)卡驅(qū)動 以太網(wǎng)傳輸管理層 以太網(wǎng) 圖 1-3 以太網(wǎng)傳輸?shù)募軜?gòu)圖 傳輸路
20、數(shù)多,借助交換機、路由器等工具傳輸距離遠,可以與主機進行實時通信,并且 由于以太網(wǎng)的飛速發(fā)展,傳輸速率正不斷提高,可擴展的空間較大,單就目前的速率來 看,傳輸速率已經(jīng)很快了。但是也存在著開發(fā)的不足之處,該網(wǎng)卡是基于 pci 總線協(xié)議 的網(wǎng)卡,而 pci 總線驅(qū)動在所有總線驅(qū)動之中開發(fā)難度是最大的,在畢業(yè)設計這有限的 時間里,很難做好。鑒于以上原因,本方案也未被采用。 方案三:方案三: 本方案與方案二唯一的不同之處就是,采用 microchip 公司新生產(chǎn)的 10 base-t 的 enc28j60 以太網(wǎng)卡接口芯片,該芯片集成 mac 地址,采用最高速度可達 10 mb/s 的 spi 接口設
21、計,與方案二相比,spi 接口驅(qū)動的開發(fā)難度小,開發(fā)周期短,而且成本低。 因此,本設計決定采用該方案。 enc28j60lpc2138 cs miso mosi sck int2 tx/rx 緩沖器 mac phy 以太 網(wǎng)變 壓器 rj45 圖 1-4 enc28j60 與 lpc2138 接口圖 本方案的總體硬件結(jié)構(gòu)如圖 1-5: 系統(tǒng)硬件結(jié)構(gòu):系統(tǒng)硬件結(jié)構(gòu): usb 攝像 頭 isp1161 usb 接 口芯片 微處理器 lpc2138 enc28j60 以太網(wǎng)卡 以太網(wǎng) 圖 1-5 系統(tǒng)硬件結(jié)構(gòu)圖 系統(tǒng)軟件實現(xiàn)結(jié)構(gòu):系統(tǒng)軟件實現(xiàn)結(jié)構(gòu): isp1161 硬件 enc28j60 硬件 uc
22、os-ii 操作系統(tǒng) isp1161 驅(qū)動 enc28j60 驅(qū)動 usb 協(xié)議棧 攝像頭驅(qū)動 視頻采集管理 tcp/udp/ip 協(xié)議棧 網(wǎng)絡傳輸管理 圖 1-6 系統(tǒng)軟件實現(xiàn)圖 1.4 指導思想指導思想 綜上所述系統(tǒng)的實現(xiàn)應該在移植 ucos-ii 操作系統(tǒng)前提下,以 usb2.0 協(xié)議為指導, 繼承現(xiàn)有以太網(wǎng)傳輸協(xié)議 ip 協(xié)議棧技術(shù)基礎上,從硬件芯片設備的選取,usb 接口芯片 驅(qū)動開發(fā),usb 驅(qū)動開發(fā),攝像頭驅(qū)動開發(fā),網(wǎng)卡驅(qū)動開發(fā)等五個主要方面進行。由于 是結(jié)合硬件設備的來設計的。著重解決以下問題: 1)基于 isp1161a1 usb 接口芯片的驅(qū)動開發(fā),對異步傳輸?shù)?ptd 頭
23、以及 atl 緩沖 區(qū)的編程實現(xiàn),尤其是對同步傳輸?shù)?ptd 頭以及 itl 緩沖區(qū)的軟件編程實現(xiàn)。從而實現(xiàn) isp1161 驅(qū)動與 usb 協(xié)議的融合。 2)攝像頭驅(qū)動程序的開發(fā),是本設計中的重點與難點,工作量大,關(guān)鍵是各個攝像頭 生產(chǎn)廠商對攝像頭資料保密,驅(qū)動開發(fā)難度大,應通過大量實驗解決。 3)基于 enc28j60 芯片的網(wǎng)卡驅(qū)動程序編寫是網(wǎng)絡傳輸?shù)幕A,只有實現(xiàn)了底層 驅(qū)動才能實現(xiàn)多路復合數(shù)據(jù)的網(wǎng)絡傳輸功能,著重開發(fā)、調(diào)試底層網(wǎng)卡驅(qū)動。 2 嵌入式操作系統(tǒng)的移植嵌入式操作系統(tǒng)的移植 2.1 嵌入式操作系統(tǒng)的發(fā)展嵌入式操作系統(tǒng)的發(fā)展 嵌入式系統(tǒng)的出現(xiàn)至今已經(jīng)有 30 多年的歷史??v觀嵌
24、入式技術(shù)的發(fā)展過程,大致經(jīng) 歷了四個階段。 (1)無操作系統(tǒng)的嵌入式算法階段 這一階段的嵌入式系統(tǒng)是以單芯片為核心的系統(tǒng),具有與一些監(jiān)測、伺服、指示設 備相配合的功能。一般沒有明顯的操作系統(tǒng)支持,而是通過匯編語言編程對系統(tǒng)進行直 接控制。主要特點是系統(tǒng)結(jié)構(gòu)和功能都相對單一,針對性強,無操作系統(tǒng)支持,幾乎沒 有用戶接口。 (2)簡單監(jiān)控式的實時操作系統(tǒng)階段 這一階段的嵌入式系統(tǒng)主要以嵌入式式器為基礎、以簡單監(jiān)控式操作系統(tǒng)為核心。 系統(tǒng)的特點是:處理器種類繁多,通用性比較弱;開銷小,效率高;一般配備系統(tǒng)仿真 器,具有一定的兼容性和擴展性;用戶界面不夠友好,主要用來控制系統(tǒng)負載以及監(jiān)控 應用程序運行
25、。 (3)通用的嵌入式實時操作系統(tǒng)階段 以通用型嵌入式實時操作系統(tǒng)為標志的嵌入式系統(tǒng),如 vxworks、psos、windows ce 就是這一階段的典型代表。這一階段嵌入式系統(tǒng)的特點是:能運行在各種不同的微處 理器上;具有強大的能用型操作系統(tǒng)的功能,如具備了文件和目錄管理、多任務、設備 驅(qū)動支持、網(wǎng)絡支持、圖形窗口以及用戶界面等功能;具有豐富的 api 和嵌入式應用軟 件。 (4)以 internet 為標志的嵌入式系統(tǒng) 伴隨著通用型嵌入式實時操作系統(tǒng)的發(fā)展,面向 internet 網(wǎng)絡和特定應用的嵌入式操 作系統(tǒng)正日益引起人們的重視,成為重要的發(fā)展方向。嵌入式系統(tǒng)與 internet 的
26、真正結(jié)合、 嵌入式操作系統(tǒng)與應用設備的無縫結(jié)合代表著嵌入式操作系統(tǒng)發(fā)展的未來。 2.2 嵌入式操作系統(tǒng)及其特點嵌入式操作系統(tǒng)及其特點 嵌入式系統(tǒng)是以嵌入式計算機為技術(shù)核心,面向用戶、面向產(chǎn)品、面向應用,軟硬 件可裁減的,適用于對功能、可靠性、成本、體積、功耗等綜合性能有嚴格要求的專用 計算機系統(tǒng)。嵌入式系統(tǒng)通常具有可裁剪性,實時性,可靠性等特點。即嵌人式系統(tǒng)具 有高可靠性;在惡劣的環(huán)境或突然斷電的情況下,系統(tǒng)仍然能夠正常工作;許多嵌人式 應用要求實時性,這就要求嵌入式操作系統(tǒng)具有實時處理能力;嵌入式系統(tǒng)和具體應用 有機地結(jié)臺在一起,它的升級換代也是和具體產(chǎn)品同步進行;嵌入式系統(tǒng)中的軟件代碼 要
27、求高質(zhì)量、高可靠性;一般都固化在只讀存儲器中或間存中,也就是說軟件要求固態(tài) 化存儲,而不是存儲在磁盤等載體中。 2.3 常用的嵌入式操作系統(tǒng)常用的嵌入式操作系統(tǒng) 2.3.1 windows ce .net windows ce .net 是一個功能強大的實時嵌入式操作系統(tǒng),也是微軟第一個能夠 全面支持中文的 windows ce 操作系統(tǒng),適用于快速構(gòu)建新一代內(nèi)存少體積小的智能 設備,例如手持式設備、智能電話、機頂盒、零售點設備和顯示器等。不僅如此, windows ce .net 也為構(gòu)建智能移動設備的開發(fā)人員提供了新一代的功能強大嵌入式 系統(tǒng)平臺,它允許開發(fā)人員優(yōu)化操作系統(tǒng)的內(nèi)存占用,最小
28、可以降至 200k 左右。為了使 開發(fā)人員能構(gòu)建功能最豐富的移動設備,windows ce .net 提供了對最新無線技術(shù)的 支持,例如藍牙技術(shù)和零配置的 802.11,而且它還通過 microsoft internet explorer 5.5、windows media (tm) 8 和 directx 8 提供了全面的多媒體和 web 瀏覽體驗。windows ce .net 支持各種處理器產(chǎn)品家族,包括 x86、xscale、arm、mips 和 sh 系列,因此它允許開發(fā)人員為他們自己的項目選擇 最理想的硬件。 2.3.2 嵌入式嵌入式 linux 隨著微處理器的產(chǎn)生,價格低廉、結(jié)構(gòu)
29、小巧的 cpu 和外設連接提供了穩(wěn)定可靠的硬 件架構(gòu),那么限制嵌入式系統(tǒng)發(fā)展的瓶頸就突出表現(xiàn)在了軟件方面。盡管從八十年代末 開始,陸續(xù)出現(xiàn)了一些嵌入式操作系統(tǒng),比較著名的有 vxwork、psos、neculeus 和 windows ce。但這些專用操作系統(tǒng)都是商業(yè)化產(chǎn)品,其高昂的價格使許多低端產(chǎn)品的小 公司望而卻步;而且,源代碼封閉性也大大限制了開發(fā)者的積極性。另外,結(jié)合國內(nèi)實 情,當前國家對自主操作系統(tǒng)的大力支持,也為源碼開放的 linux 的推廣提供的廣闊的 發(fā)展前景。還有,對上層應用開發(fā)者而言,嵌入式系統(tǒng)需要的是一套高度簡練、界面友 善、質(zhì)量可靠、應用廣泛、易開發(fā)、多任務,并且價格低
30、廉的操作系統(tǒng)。在不久的將來, 從冰箱到收音機都會內(nèi)置處理器。因為 linux 的開放性,許多人認為 linux 非常適合多數(shù) internet 設備。他們認為 linux 可以支持不同的設備,支持不同的配置。linux 對廠商不偏 不倚而且成本極低,能夠很快成為用于各種設備的操作系統(tǒng)。如今,業(yè)界已經(jīng)達成共識: 即嵌入式 linux 是大勢所趨,其巨大的市場潛力與醞釀的無限商機必然會吸引眾多的廠商 進入這一領(lǐng)域。 嵌入式操作系統(tǒng)主要有 palm os,windows ce,epoc, linuxce, qnx, ecos,lynx,高端嵌入式系統(tǒng)要求許多高級的功能,如圖形用戶界面和網(wǎng)絡支持 。很
31、 多高端 rtos 供應商已經(jīng)提供了這些功能,但其價格也很高端,一般人難以接受。微軟 的 windows ce 也有此類功能,卻不具備大多數(shù)嵌入式系統(tǒng)要求的實時性能,而且難以移 植,也曾經(jīng)有人想以 dos 為基礎用單獨的第三方工具拼湊一個系統(tǒng),但這種努力將是白 費?,F(xiàn)在需要的是一個便宜、成熟并且提供高端嵌入式系統(tǒng)所必須特性的操作系統(tǒng),嵌 入式 linux 操作系統(tǒng)以價格低廉、功能強大又易于移植而正在被廣泛采用,成為新興的力 量,所以,眾多商家紛紛轉(zhuǎn)向了嵌入式 linux。 linux 為嵌入操作系統(tǒng)提供了一個極有吸引力的選擇,它是個和 unix 相似、以核心 為基礎的、完全內(nèi)存保護、多任務多進
32、程的操作系統(tǒng)。支持廣泛的計算機硬件,包括 x86,alpha,sparc,mips,ppc,arm,nec,motorola 等現(xiàn)有的大部分蕊片。程式源碼全部 公開,任何人可以修改并在 gnu 通用公共許可證(gnu general public license)下發(fā)行,這 樣,開發(fā)人員可以對操作系統(tǒng)進行定制,再也不必擔心像 ms windows 操作系統(tǒng)中后門 的威脅。同時由于有 gpl 的控制,大家開發(fā)的東西大都相互兼容,不會走向分裂之路。 linux 用戶遇到問題時可以通過 internet 向網(wǎng)上成千上萬的 linux 開發(fā)者請教,這使最困難 的問題也有辦法解決。linux 帶有 un
33、ix 用戶熟悉的完善的開發(fā)工具,幾乎所有的 unix 系 統(tǒng)的應用軟件都已移植到了 linux 上。linux 還提供了強大的網(wǎng)絡功能,有多種可選擇窗 口管理器(x windows) 。其強大的語言編譯器 gcc、g+等也可以很容易得到。不但成熟 完善、而且使用方便。 2.3.3 vxworks vxworks 是專門為實時嵌入式系統(tǒng)設計開發(fā)的操作系統(tǒng)內(nèi)核,為程序員提供了高效 的實時多任務調(diào)度、中斷管理,實時的系統(tǒng)資源以及實時的任務間通信。在各種 cpu 平 臺上提供了統(tǒng)一的編程接口和一致的運行特性,盡可能的屏蔽了不同 cpu 之間的底層差 異。應用程序員可以將盡可能多的精力放在應用程序本身,
34、而不必再去關(guān)心系統(tǒng)資源的 管理。基于 vxworks 操作系統(tǒng)的應用程序可以在不同 cpu 平臺上輕松移植。 vxworks 是美國 wind river system 公司( 以下簡稱風河公司 ,即 wrs 公司) 推出的一個實時操作系統(tǒng)。wrs 公司組建于 1981 年,是一個專門從事實時操作系統(tǒng)開 發(fā)與生產(chǎn)的軟件公司,該公司在實時操作系統(tǒng)領(lǐng)域被世界公認為是最具有領(lǐng)導作用的公 司。 vxworks 是一個運行在目標機上的高性能、可裁減的嵌入式實時操作系統(tǒng)。它以其 良好的可靠性和卓越的實時性被廣泛地應用在通信、軍事、航空、航天等高精尖技術(shù)及 實時性要求極高的領(lǐng)域中,如衛(wèi)星通訊、軍事演習、彈道
35、制導、飛機導航等。在美國的 f-16、fa-18 戰(zhàn)斗機、b-2 隱形轟炸機和愛國者導彈上,1997 年 4 月在火星表面登陸的 火星探路者上也使用了 vxworks。 vxworks 是一種功能強大而且比較復雜的操作系統(tǒng),包括了進程管理、存儲管理、 設備管理、文件系統(tǒng)管理、網(wǎng)絡協(xié)議及系統(tǒng)應用等幾個部分。vxworks 只占用了很小的 存儲空間,并可高度裁減,保證了系統(tǒng)能以較高的效率運行。所以,僅僅依靠人工編程 調(diào)試,很難發(fā)揮它的功能并設計出可靠、高效的嵌入式系統(tǒng),必須要有與之相適應的開 發(fā)工具。tornadoii 就是為開發(fā) vxworks 應用系統(tǒng)提供的集成開發(fā)環(huán)境,tornadoii 中
36、包 含的工程管理軟件,可以將用戶自己的代碼與 vxworks 的核心有效的組合起來,可以按 用戶的需要裁剪配置 vxworks 內(nèi)核;vxsim 原型仿真器可以讓程序員不用目標機的情況 下,直接開發(fā)系統(tǒng)原型,作出系統(tǒng)評估;功能強大的 crosswind 調(diào)試器可以提供任務級 和系統(tǒng)級的調(diào)試模式,可以進行多目標機的聯(lián)調(diào);優(yōu)化分析工具可以幫助程序員從多種 方式真正地觀察、跟蹤系統(tǒng)的運行,排除錯誤,優(yōu)化性能。 2.3.4 t-kernel t-kernel 源自于日本東京大學坂村健博士于 1984 年提出的計算機操作系統(tǒng)規(guī)范 tron(the real-time operating system n
37、ucleus) 。iron 的目的是想構(gòu)筑一種理想的計算 機結(jié)構(gòu),實現(xiàn)新的計算體系“泛在計算環(huán)境”(ubiquitous computing) 。即將微型計算 機嵌入到日常生活中的所有機器、設備、工具中,通過網(wǎng)絡相互通信,協(xié)調(diào)運行,以實 現(xiàn)高度計算機化的社會環(huán)境。 通過 20 年的發(fā)展,全球微處理器操作系統(tǒng)系統(tǒng)市場上大約 60%的份額被 tron 占據(jù)。 為了實現(xiàn)更為理想的實時操作系統(tǒng)的嵌入式計算結(jié)構(gòu),tron 項目啟動了 t-engine 項目 計劃。 “t-engine”是為在短時間內(nèi)高效開發(fā)實時嵌入式系統(tǒng)而設計的,由標準化硬件結(jié)構(gòu) (t-engine)與標準開源實時操作系統(tǒng)核心(t-ke
38、rnel)組成的嵌入式系統(tǒng)的開放式標準 平臺。 在 t-engine 開發(fā)過程中,搭載的 cpu 為可變的,而規(guī)定了其硬件結(jié)構(gòu)規(guī)范、操作系 統(tǒng)核心界面規(guī)范、對象數(shù)據(jù)格式規(guī)范等要素,使 tron 在標準化的基礎結(jié)構(gòu)上,具備充 分的外圍資源及開發(fā)環(huán)境。從而將 cpu 從基礎結(jié)構(gòu)中獨立出來,在 t-kernel 上開發(fā)的中 間件可不依存于 cpu 結(jié)構(gòu)而移植。 這樣,通過使用高質(zhì)量的標準化硬件和軟件,使得 系統(tǒng)穩(wěn)定,尺寸小,易于開發(fā)和調(diào)試,很容易使其直接成為商品,可在短時間內(nèi)投向市 場。 t-kernel 整個系統(tǒng)是基于子系統(tǒng)的微內(nèi)核結(jié)構(gòu)。系統(tǒng)中的每一個模塊都是一個獨立的 子系統(tǒng)。這使 t-kern
39、el 中的功能模塊易于擴展和裁減而不會相互影響,基于這種結(jié)構(gòu), 在 t-kernel 之上開發(fā)易于移植的標準中間件成為可能。 為了適應于大規(guī)模的嵌入式軟件開發(fā),2006 年 11 月,t-engine forum 推出了 t- kernel/standard extend 的源碼和規(guī)范,在 t-kernel 的基礎上擴展了進程管理,文件系統(tǒng) 和網(wǎng)絡協(xié)議棧等功能模塊,在 t-kernel 高實時性的內(nèi)核上,加強了處理信息和數(shù)據(jù)的能 力。 2.3.5 uc/os-ii c/os-ii 的前射是 c/os,最早出自于 1992 年美國嵌入式系統(tǒng)專家 jean j.labrosse 在嵌入式系統(tǒng)編程雜
40、志的 5 月和 6 月刊上刊登的文章連載,并把 c/os 的源碼發(fā)布 在該雜志的 bbs 上。當時就有 500 多人下載了這份源碼。世界上數(shù)以千計的工程技術(shù)人 員將 c/os 應用到了各個領(lǐng)域,如照相機業(yè)、發(fā)動機控制、網(wǎng)絡接入設備、高速公路電 話系統(tǒng)、atm 機和工業(yè)機器人等。許多大學用 c/os 作教材,用于實時系統(tǒng)教學。1998 年,作者決定出版 c/os 的第二本書c/os-ii the real time kernel ,并設立了正式的 網(wǎng)站:www. c/os-ii.com,給 c/os-ii 增加了一些新的功能,并且增加了約 200 頁的 解釋。 c/os 和 c/os-ii 是專
41、門為計算機的嵌入式應用設計的,絕大部分代碼是用 c 語言 編寫的。cpu 硬件相關(guān)部分是用匯編語言編寫的、總量約 200 行的匯編語言部分被壓縮 到最低限度,為的是便于移植到任何一種其它的 cpu 上。只要有標準的 ansi 的 c 交叉 編譯器,有匯編器、連接器等軟件工具,就可以將 c/os 嵌入到開發(fā)的產(chǎn)品中。 c/os 具有執(zhí)行效率高、占用空間小、實時性能優(yōu)良和可擴展性能等特點,最小內(nèi) 核可編譯至 2kb。c/os-ii 已經(jīng)移植到了幾乎所有知名的 cpu 上。 c/os-ii 是一個可移植、固化、裁減的占先式實時多任務內(nèi)核,它使用標準的 ansic 語言編寫,并包含一段匯編語言代碼,使
42、之可供不同架構(gòu)的微處理器使用。它的 主要特點如下: c/os-ii 的每個任務都有自己單獨的棧,使用 c/os-ii 的占空間校驗函數(shù),可確定 每個任務到底需要多少??臻g。 優(yōu)先級可剝奪的實時多任務操作系統(tǒng)。 可處理和調(diào)度 56 個用戶任務,任務的優(yōu)先級可以動態(tài)調(diào)整。 提供任務間通信、同步使用的信號量、郵箱和消息隊列。 具有良好的可裁剪性,可減小系統(tǒng)的 rom 和 ram 大小。 中斷管理,中斷可以使正在執(zhí)行的任務暫時掛起。如果優(yōu)先級高的任務被中斷喚醒, 則高優(yōu)先級的任務在中斷嵌套全部退出后立即執(zhí)行。中斷嵌套層數(shù)可達 255 層。 本方案的操作系統(tǒng)的選擇本方案的操作系統(tǒng)的選擇 c/os-ii
43、操作系統(tǒng)是源碼公開的實時操作系統(tǒng),通過對各種操作系統(tǒng)各自的特點和 性能進行分析和比較,c/os-ii 為一種合適的 rtos 操作系統(tǒng),c/os-ii 支持當前流行 的大部分嵌入式 cpu,具有很好的可移植特性。c/os-ii 支持從 8 位到 32 位的 cpu 移 植。c/os-ii 由于本身內(nèi)核就很小,經(jīng)過裁剪后的代碼最小可以小于 2kb,所需的最小 數(shù)據(jù) ram 空間可以為 4kb,因此它們對硬件的要求很低,具有極高的經(jīng)濟性。因此本設 計移植 c/os-ii 操作系統(tǒng)。 2.4 uc/os-ii 移植原理移植原理 所謂移植就是使一個實時內(nèi)核能在某個微處理器或微控制器上運行。c/os-i
44、i 中任 務的定義接近線程的概念,它是一個獨立的按優(yōu)先級運行的處理過程。c/os-ii 實現(xiàn)了 對任務的可剝奪式的調(diào)度管理,內(nèi)核會最先運行最高優(yōu)先級的任務,其它的任務會依據(jù) 自身的優(yōu)先級來完成任務調(diào)度。在這個過程中,當前運行的任務會被優(yōu)先級更高的就緒 任務搶占以獲得處理器時間,從而更好地實現(xiàn)了實時系統(tǒng)功能。 2.4.1 編譯器的選擇編譯器的選擇 目前,針對 arm 處理器核的 c 語言編譯器有很多,如 sdt、ads、iar、tasking 和 gcc 等。sdt 和 ads 均為 arm 公司自己開發(fā),ads 為 sdt 的升級版,gcc 雖然支 持廣泛,但與 ads 相比編譯效率較低,對充
45、分發(fā)揮芯片性能很不利。因此,本設計決定 采用 ads 編譯程序和調(diào)試。 2.4.2 移植移植 uc/os-ii c/os-ii 的軟件體系結(jié)構(gòu)包括應用程序軟件、與應用相關(guān)的代碼、與處理器無關(guān)和 相關(guān)的代碼。應用程序軟件是用戶根據(jù)需求來編寫的代碼。要使同一個內(nèi)核能適用于不 同硬件體系,就需要在內(nèi)核和硬件之間有一個中間層,這就是與處理器相關(guān)的代碼,處理器 不同,這部分代碼也不同。 移植操作系統(tǒng)需要用 c 和匯編語言編寫與處理器相關(guān)的代碼,產(chǎn)生可重入代碼要求。 用 c 語言編寫六個簡單的函數(shù)(os_cpu_c.c),移植一系列的類型定義以確保其可移植性, 在結(jié)構(gòu)常量 os_stk_growth 中指
46、定堆棧的生長方式、復用系統(tǒng)服務代碼、增加軟中 斷服務接口來協(xié)調(diào)移植代碼之間的通訊等功能。 c/os-ii 的軟件體系結(jié)構(gòu)如圖 1 所示: os_cpu_a 為處理器相關(guān)代碼的移植文件,采用 arm 的匯編語言描述。 os_cpu_c 為系統(tǒng)管理代碼的移植文件,采用 c 語言描述。 os_cpu_h 為系統(tǒng)通用量設置的移植文件,采用 c 語言描述。 其中 os_cpu_a.asm 在某些情況下不需要,但極其罕見。而且移植代碼往往也會使 用部分匯編語言來提高移植代碼的效率。移植需要在 os_cpu.h 包含幾個類型的定義和 幾個常數(shù)的定義;在 os_cpu_c 和 os_cpu_a.asm 中包含
47、幾個函數(shù)的定義和時鐘節(jié)拍 中斷服務程序的代碼。每個應用都包含獨特的 includes.h 文件。 核心代碼(處理器相關(guān)) s_core.c核心代碼 os_mbox.c消息隊列 os_mem.c存儲管理 os_mutex.c互斥管理 os_q.c消息管理 os_sem.c信號量 os_task.c任務管理 os_time.c時間管理 設置代碼(應用相關(guān)) os_flag.c includes.h os_cpu_a.asm os_cpu.c os_cpu.h 應用程序 圖 2-1 c/os-ii 的軟件體系結(jié)構(gòu)圖 2.4.3 編寫編寫 os_cpu.h (1) 不依賴編譯的數(shù)據(jù)類型不依賴編譯的數(shù)據(jù)
48、類型 c/os-ii 不使用 c 語言中的 short、int、long 等數(shù)據(jù)類型的定義,因為他們與微處理 器類型有關(guān),隱含著不可移植性。用移植性強的整數(shù)數(shù)據(jù)類型代替,代碼如下: typedef unsigned char boolean; /* 布爾變量 */ typedef unsigned char int8u; /* 無符號 8 位整型變量 */ typedef signed char int8s; /* 有符號 8 位整型變量 */ typedef unsigned short int16u; /* 無符號 16 位整型變量 */ typedef signed short int1
49、6s; /* 有符號 16 位整型變量 */ typedef unsigned int int32u; /* 無符號 32 位整型變量 */ typedef signed int int32s ; /* 有符號 32 位整型變量 */ typedef float fp32; /* 單精度浮點數(shù)(32 位長度)*/ typedef double fp64; /* 雙精度浮點數(shù)(64 位長度)*/ typedef int32u os_stk; /* 堆棧是 32 位寬度 */ (2) 使用軟件中斷使用軟件中斷 swi 作為底層接口作為底層接口 帶 t 變量的 arm7 處理器核具有兩個指令集,用戶
50、任務可以使用良種處理器模式: 用戶模式和系統(tǒng)模式,結(jié)合起來具有 4 種方式,各種方式對系統(tǒng)資源有不同的訪問控制 權(quán)限。為了使底層接口函數(shù)與處理器狀態(tài)無關(guān),同時在任務調(diào)用相應的函數(shù)時不需要知 道函數(shù)位置,本移植使用軟件中斷指令 swi 作為底層接口,并使用不同的功能好區(qū)分不 同的函數(shù)。用軟中斷作為操作系統(tǒng)得底層接口,就需要在 c 語言中使用 swi 指令。在 ads 中,有個關(guān)鍵字_swi,用它聲明一個不存在的函數(shù)。如果調(diào)用這個函數(shù),就在調(diào)用這 個函數(shù)的地方插入一條 swi 指令,并且可以指定功能號。同時,這個函數(shù)也可以有參數(shù) 和返回值,其傳遞規(guī)則與一般函數(shù)一樣。其代碼程序如下: _swi(0
51、x00) void os_task_sw(void); /* 任務級任務切換函數(shù) */ _swi(0 x01) void _osstarthighrdy(void); /* 運行優(yōu)先級最高的任務 */ _swi(0 x02) void os_enter_critical(void); /* 關(guān)中斷 */ _swi(0 x03) void os_exit_critical(void); /* 開中斷 */ _swi(0 x40) void *getosfunctionaddr(int index); /* 獲取系統(tǒng)服務函數(shù)入口 */ _swi(0 x41) void *getusrfunctio
52、naddr(int index); /* 獲取自定義服務函數(shù)入口 */ _swi(0 x42) void osisrbegin(void); /* 中斷開始處理 */ _swi(0 x43) int osisrneedswap(void); /* 判斷中斷是否需要切換 */ _swi(0 x80) void changetosysmode(void); /* 任務切換到系統(tǒng)模式 */ _swi(0 x81) void changetousrmode(void); /* 任務切換到用戶模式 */ _swi(0 x82) void taskisarm(int8u prio); /* 任務代碼是 a
53、rm 代碼 */ _swi(0 x83) void taskisthumb(int8u prio); /* 任務代碼是 thumb */ (3) os_stk_growth3 c/os-ii 使用結(jié)構(gòu)常量 os_stk_growth 中指定堆棧的生長方向: 置 os_stk_growth 為 0,表示堆棧從下往上生長; 置 os_stk_growth 為 1,表示堆棧從上往下生長; 雖然 arm 處理器核對以上兩種方式均支持,但 ads 的 c 語言編譯器僅支持一種方 式,即從上往下生長,并且必須是滿遞減堆棧,所以 os_stk_growth 的值為 1。代碼 程序如下: #define os
54、_stk_growth 1 /* 堆棧是從上往下長的 */ 2.4.4 編寫編寫 os_cpu_c.c 文件文件 (1) ostaskstkinit() os_stk *ostaskstkinit (void (*task)(void *pd), void *pdata, os_stk *ptos, int16u opt) os_stk *stk; opt = opt; /* opt 沒有使用。作用是避免編譯器警告 */ stk = ptos; /* 獲取堆棧指針 */ /* 建立任務環(huán)境,ads1.2 使用滿遞減堆棧 */ *stk = (os_stk) task; /* pc */ *-s
55、tk = (os_stk) task; /* lr */ *-stk = 0; /* r12 */ *-stk = 0; /* r11 */ *-stk = 0; /* r10 */ *-stk = 0; /* r9 */ *-stk = 0; /* r8 */ *-stk = 0; /* r7 */ *-stk = 0; /* r6 */ *-stk = 0; /* r5 */ *-stk = 0; /* r4 */ *-stk = 0; /* r3 */ *-stk = 0; /* r2 */ *-stk = 0; /* r1 */ *-stk = (unsigned int) pdata
56、; /* r0,第一個參數(shù)使用 r0 傳遞 */ *-stk = (user_using_mode|0 x00); /* spsr,允許 irq, fiq 中斷 */ *-stk = 0; /* 關(guān)中斷計數(shù)器 osentersum; */ return (stk); 堆棧中有一個變量 osentersum,它不是 cpu 的寄存器,而是自己定義的 一個全局變 量,用來保存關(guān)中斷的次數(shù),這樣關(guān)中斷和開中斷就可以嵌套了。在調(diào)用 os_enter_critical()時,它的值增加,同時關(guān)中斷;在調(diào)用 os_exit_critical()時, 它的值減少,同時開中斷。每個任務有獨立的 osenter
57、sum,在任務切換時保存和恢復各自 的 osentersum。這樣,各個任務開關(guān)中斷的狀態(tài)可以不同,任務不必過分考慮關(guān)中斷對 其它任務的影響。 (2) 軟件中斷異常軟件中斷異常 swi 服務程序服務程序 c 語言部分語言部分 void swi_exception(int swi_num, int *regs) os_tcb *ptcb; switch(swi_num) /case 0 x00: /* 任務切換函數(shù) os_task_sw,參考 os_cpu_s.s 文件 */ / break; /case 0 x01: /* 啟動任務函數(shù) osstarthighrdy,參考 os_cpu_s.s
58、 文件 */ / break; case 0 x02: /* 關(guān)中斷函數(shù) os_enter_critical(),參考 os_cpu.h 文件 */ _asm mrs r0, spsr orr r0, r0, #noint msr spsr_c, r0 osentersum+; break; case 0 x03: /* 開中斷函數(shù) os_exit_critical(),參考 os_cpu.h 文件 */ /*略 */ 其中參數(shù) swi_num 為功能號,而 regs 為指向隊戰(zhàn)中保存寄存器的值的位置。程序 結(jié)構(gòu)較簡單,用一個 switch 語句把各個功能分隔開,各個功能相對獨立。其中軟中斷的
59、 0、1 號功能并沒有在這里實現(xiàn)。它們在 os_cpu_a.s 中實現(xiàn)。 (3) osstarthighrdy c/os-ii 的啟動多任務環(huán)境的函數(shù)叫做 osstart(),在調(diào)用之前,必須已經(jīng)建立了一個 或更多的任務。該函數(shù)最終調(diào)用 osstarthighrdy()運行多任務啟動前優(yōu)先級最高的任務。 2.4.5 編寫編寫 os_cpu_a.s 文件文件 (1) 軟中斷的匯編接口 softwareinterrupt ldr sp, stacksvc ; 重新設置堆棧指針 stmfd sp!, r0-r3, r12, lr mov r1, sp ; r1 指向參數(shù)存儲位置 mrs r3, sp
60、sr tst r3, #t_bit ; 中斷前是否是 thumb 狀態(tài) ldrneh r0, lr,#-2 ; 是: 取得 thumb 狀態(tài) swi 號 bicne r0, r0, #0 xff00 ldreq r0, lr,#-4 ; 否: 取得 arm 狀態(tài) swi 號 biceq r0, r0, #0 xff000000 ; r0 = swi 號,r1 指向參數(shù)存儲位置 cmp r0, #1 ldrlo pc, =osintctxsw ldreq pc, =_osstarthighrdy ; swi 0 x01 為第一次任務切換 bl swi_exception ldmfd sp!, r
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 統(tǒng)編版三年級語文下冊第六單元達標測試卷(含答案)
- 關(guān)于食品gmp的單選試題及答案
- 2019-2025年消防設施操作員之消防設備基礎知識押題練習試題B卷含答案
- 2019-2025年軍隊文職人員招聘之軍隊文職管理學與服務自我檢測試卷A卷附答案
- 酒店保潔合同(2篇)
- 2025年全國碩士研究生考試《政治》模擬試卷一
- H2H行業(yè)虛擬現(xiàn)實技術(shù)研究與應用方案
- 智慧之書少兒版讀后感
- 火鍋店合伙人協(xié)議書
- 童年記憶繪本故事賞析與創(chuàng)作啟示
- 消防安全治本攻堅三年行動方案
- 濟南版八年級生物下冊生態(tài)系統(tǒng)的自我調(diào)節(jié)課件
- 個人在公司的成長歷程
- 珍珠的質(zhì)量分級及評估
- 低壓電器基礎-固態(tài)繼電器(電氣控制課件)
- 港口散裝液體危險化學品港口經(jīng)營人的裝卸管理人員從業(yè)資格考試
- 供應商年度評價內(nèi)容及評分表
- 公務用車申請表
- 分層過程審核(LPA)檢查表
- 學生信息登記表
- 標準作業(yè)指導書模板(SOP)
評論
0/150
提交評論