<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è) > 嵌入式系統 > 設計應用 > 實(shí)時(shí)操作系統到Linux系統的移植

實(shí)時(shí)操作系統到Linux系統的移植

作者: 時(shí)間:2011-05-11 來(lái)源:網(wǎng)絡(luò ) 收藏
編程模型的內部編譯的可靠性

本文引用地址:http://dyxdggzs.com/article/150768.htm

  作為一個(gè)unix兼容的操作代表著(zhù)一個(gè)更加強大的應用和編程模型。應用程序執行在他們受保護的地址空間,因為它們之間的地址相互是不可見(jiàn)的,并且它們通過(guò)硬件的MMU來(lái)預防覆蓋掉他們自己的代碼,MMU出現在多數現代化的32位64位的處理器中。

  當他們共享內核的虛擬地址空間時(shí),他們不能夠覆蓋內核代碼或數據。既然進(jìn)程不能夠相互看到,他們就不能夠相互破壞數據或代碼

  API和

  在開(kāi)源標準以前,RTOS的制作者定義了他們自己的調用或API,這對于每個(gè)RTOS的制作者來(lái)說(shuō)都是獨一無(wú)二的。接口函數是為流行的編程語(yǔ)言而提供的,諸如c、c++,這使得API函數對于使用高級語(yǔ)言的程序員是合適的。

  在過(guò)去的十年中,盡管只有POSIX規范的一部分和嵌入式應用程序相關(guān),大多數的RTOS制作者還是給標準的POSIX提供了兼容庫。很多客戶(hù)使用他們自己的API集使本地RTOS接口分層以獲得獨立性和便捷性,而不是想被鎖定成為一個(gè)私有的特殊版權的接口。

  開(kāi)發(fā)人員使用標準的API建立應用程序來(lái)獲得兩個(gè)另外的目的:允許代碼被成像Linux那樣的標準以及允許以后同樣的代碼在這樣的一個(gè)環(huán)境下比使用私有的API更加容易。

  很多包括標準調用的商業(yè)RTOS以POSIX或者BSD來(lái)設定,但是那些API經(jīng)常只存在于windows下。特別是一個(gè)內核私有的API是最常被使用的,就是這些API鎖定了項目到一個(gè)特殊的平臺或者解決方案。

  如果開(kāi)發(fā)人員正在標準的代碼或者考慮哪個(gè)API運用到新的代碼中,那么理解在Linux和其他中使用的最普遍的標準是非常重要的。

  POSIX

  POSIX流行在基于UNIX的開(kāi)源系統中、政府和軍事舞臺。然而POSIX對于傳統的嵌入式系統幾乎沒(méi)有影響。POSIX標準家族起源于美國國家標準與技術(shù)研究所,現在有被歸入IEEE、IEEE1003和其他標準的預兆。在過(guò)去的十年中,POSIX經(jīng)歷了多次的修訂,最近的一次是在2000年。

  兼容性和一致性是兩個(gè)關(guān)于POSIX的重要觀(guān)點(diǎn)。兼容性意味著(zhù)一個(gè)特定的平臺貫徹標準的一些子集,這種貫徹是備有文件證明的。甚至那些執行微小子集的平臺能夠兼容于POSIX標準。POSIX的一致性,相反的,代表了更加嚴格的標準,意味著(zhù)一個(gè)操作系統服從于過(guò)去的已證明測試。

  SVR4,BSD和其他UNIX的API

  事實(shí)上SVR4和UNIX的BSD版本是流行的系統標準,這些標準對于Linux的影響是巨大的。Linux貫徹了那些UNIX API的大的子集(舉個(gè)例子,對于共享內存、隊列、信號量、BSD套接口和TCP/IP堆的Linux的ipc系統調用)。

  熟悉SVR4、BSD,或者像AIX,HP-UX等其他通用的UNIX的開(kāi)發(fā)人員對于Linux他們也能夠很快的掌握。

  c語(yǔ)言庫

  在嵌入式設計、RTOS或其他方面,很多API僅僅是標準c庫,這些庫或者是直接執行函數或者是作為系統調用的包裝。Linux有熟悉的libc/glibc,盡管尺寸很大,但易于理解。

  glibc的運行時(shí)間是對嵌入式應用程序內存尺寸的挑戰。很多Linux的供應商為對于尺寸敏感的應用程序提供了經(jīng)過(guò)裁減了的庫。

  RTOS接口層

  RTOS的核心是對于進(jìn)程間通訊調用的使用,這種調用提供了在任務(wù)中同步和通訊的機制。

  表1提供了在典型的RTOS進(jìn)程間通訊調用和同等的Linux調用之間的映射總結。

  盡管在RTOS的調用和同等的Linux調用之間的映射是直接的,但是移植的工作量會(huì )被增加,如果使用仿真庫,這種仿真庫為其他RTOS移植過(guò)來(lái)的Linux應用程序提供了同樣的調用接口。

  對于Xenomai開(kāi)源項目,這樣的一個(gè)仿真技術(shù)是適用的。而這里,不同的仿真層提供給POSIX、VxWorks、VRTX和Itron這些被廣泛使用的RTOS。注意,像很多開(kāi)源項目,Xenomai和它的外殼是正在進(jìn)行的工作,他們可能還沒(méi)有完成或者還要進(jìn)行修改。不過(guò),它代表了一個(gè)在移植過(guò)程中潛在的高價(jià)值的出發(fā)點(diǎn)。

  舉個(gè)例子,POSIX模塊主要是用來(lái)提供PSE51兼容的API.為了幫助移植其他PSE51兼容

  API的應用程序,它包含了一些對于POSIX規范的擴展。

  POSIX外殼已經(jīng)包含了以下這些基本的特色:

  線(xiàn)程

  互斥量

  信號量

  條件變量

  信號的支持

  放棄和放棄處理

  特殊線(xiàn)程數據

  消息隊列

  定時(shí)器支持

  共享內存

  POSIX外殼創(chuàng )建實(shí)時(shí)線(xiàn)程,他們或是運行在Linux內核模塊或者在用戶(hù)空間的周期應用程序中。

  實(shí)時(shí)內核的API允許內核和用戶(hù)空間的編程。開(kāi)發(fā)人員通常更喜歡在用戶(hù)空間編程,因為他們之間的延遲小,特別是在硬件上,MMU的切換開(kāi)銷(xiāo)很小。目前為止在用戶(hù)空間編程比直接從內核空間運行應用程序更為容易。在用戶(hù)空間編程帶來(lái)了內存保護和在這個(gè)環(huán)境中調試實(shí)時(shí)應用程序的GNU調試器的支持。

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)

電磁爐相關(guān)文章:電磁爐原理



上一頁(yè) 1 2 下一頁(yè)

評論


相關(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>