新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 嵌入式微處理器的嵌入式操作系統-uClinux

        嵌入式微處理器的嵌入式操作系統-uClinux

        ——
        作者:michael Hennerich 時間:2007-03-15 來源:ADI公司 收藏
        序言

        在過去的兩年中,隨著嵌入式設備的發展改進,Linux操作系統受到了越來越多的青睞,尤其是用于消費產品、電訊路由器和交換機、網絡產品、工業和汽車等應用。

        最近,一些大的消費電子公司達成協作,建立消費者電子Linux論壇(CELF),以進一步開發家庭數字電子設備的Linux平臺。CELF的發起者(Matsushita Electric、Sony、Hitachi、NEC、Royal Philips Electronics、Samsung、Sharp和Toshiba)將重點放在Linux的改進上,使之成為消費電子設備的開放源代碼平臺。同樣,他們對開放源代碼協會的精神也給予了積極的支持和發揚( 要獲得更多信息,請訪問www.celinuxforum.org) 。

        嵌入式Linux的優點在于它的版權免費、源碼開放、結構緊湊,這為日益增長的應用軟件基礎提供了堅實的后盾。Linux是一個全功能的操作系統,支持各種網絡和文件處理協議,這對來說是很重要的,因為它必須"在任何時間任何地點進行計算"。Linux采用模塊化結構,通過去除中不必要的實用程序、工具和其它系統服務,它
        可以很方便地實現結構精簡。在嵌入式設備市場中,采用Linux的公司可以更迅速地將產品推向市場,更快地增強產品的可靠性。對開發者來說,AD的Blackfin?處理器和的結合也許很有吸引力。Blackfin?處理器集合了DSP的計算能力和微控制器的功能,滿足了數字音頻、視頻和通信方面的應用需求。

        我們在單塊芯片上結合一流的DSP內核和傳統微控制器的體系結構,避免了其它傳統復合處理器系統的限制性、復雜性和高成本的問題。在已有的外部設備(SPI、帶IrDa? 功能的UART、定時器、實時時鐘(RTC)、看門狗(watchdog)和事件控制器(event controller))的基礎上,所有Blackfin處理器家族提供雙通道串行接口(SPORTs)---每個串行接口支持4個立體聲I2S通道,數據速率達100 MBits/s。而且Blackfin處理器家族的最新成員(ADSP-BF531、ADSP-BF532、ADSP-BF533和ADSP-BF561) 提供并行外部接口(PPI),實現TFT平板顯示器和視頻轉換器(CCIR-656, 27 MHz)的無縫連接,或者作為AD/DA轉換器的并行接口,速率達65MSPS。

        表1:Blackfin處理器家族

        其它封裝也是可選的

        所有的Blackfin處理器都藝術地將最先進的信號處理引擎和清晰正交的類RISC器指令集以及支持SIMD單指令多數據的多媒體功能復合成一套單指令集的結構,稱之為微信號結構(MSA)。該內核是調整的雙-MAC Harvard 結構,這種結構旨在實現音頻和視頻算法的非并行計算,以及實現操作系統中標準的程序流和常用的仲裁操作。

        Blackfin 的ADSP-BF531/BF532/BF533處理器有兩個大的片內存儲器塊,提供通往內核的高速通道。這些內存塊可以適應處理器內核的最高速度。它們位于內核的旁邊,稱為L1存儲器,可以配置為數據或指令靜態處理器(SRAM)或高速緩沖存儲器。當配置為高速緩存時,處理外部SDRAM的代碼的速度非常接近內部存儲器直接處理的速度。這個特征特別適用于內核的運行,因為它沒辦法被全部裝入內部存儲器。而且,當使用c語言編程時,可以通過使用高速緩存來最大優化外部存儲器到內核之間的存取。

        Blackfin處理器采用低電壓,低功耗的設計,具備動態電源管理功能。完全滿足目前的移動和電池供電需求,其它的處理器都無法做到這一點。Blackfin處理器配有多重的、高度靈活和獨立的直接存取控制器(DMA),用來支持自動數據傳輸,并使處理器內核受到的間接影響達到最小。

        DMA 的傳輸操作可以發生在ADSP-BF531/BF532/BF533處理器的內部存儲器到與有DMA能力的外部設備之間。而且,DMA傳輸也能夠在DMA外部設備和連接到外部存儲器接口的外部設備(包括SDRAM控制器和異步存儲控制器)之間進行。
         
        Linux和的區別?

        由于Linux和UNIX相似,是多用戶、多任務的操作系統,內核必須采取特殊的防范措施,以保證同一系統內來自不同用戶的上千個操作正確安全地運行。UNIX的安全模型(即Linux之前的設計)能夠保護每個用戶操作的自身環境和地址空間。每個用戶操作都受到保護,防止被其它用戶喚醒,而且,虛擬內存(VM)系統對現代CPU還有另外的要求,比如在個人處理內存中實現動態內存分配和隨機內存區域規劃。有一些設備,如Blackfin 處理器,沒有提供全功能的MMU內存管理單元,因為開發者的應用程序并不使用操作系統,通常也不需要MMU,而且,Blackfin的弱MMU的處理器往往具有更高的效率,其價格也明顯低于其它產品。

        為使Linux與這些設備相適應,必須進行一些改動:
        1. 沒有實際的存儲器保護(一個錯誤的環節可以讓整個系統停機)
        2. 沒有交叉(fork)系統調用
        3. 只有簡單的內存分配
        4. 其它一些較小的區別

        存儲器保護對大多數來說不是很大的問題。Linux是一個很穩定的平臺,尤其是在嵌入式系統中,軟件崩潰的情況很少發生。

        第二點的問題要大一些。在為UNIX和Linux編寫的軟件中,開發者常常使用fork系統調用來實現并行處理,fork調用可以準確拷貝原始程序并同時予以執行。為了提高效率,它使用MMU將父程序映射到子程序,并只拷貝寫入子程序的內存區。因此uClinux不能提供fork系統調用。它提供vfork,一種特殊版本的fork,在vfork程序中當子程序執行時父程序即會終止。 因此,使用fork系統的軟件在使用uClinux支持的vfork或線程時必須重寫,因為他們使用相同的內存空間,包括堆棧。

        就第三點來說
        ,一般情況下支持uClinux的malloc系統不會有問題,但是,有些時候必須進行小的調整。大部分適用于UNIX和uClinux的軟件(可在http://freshmeat.net上找到此類軟件)能夠直接在uClinux上編譯,其它的則可使用微小的移植或調整(tweaking)。 只有很少的應用軟件不能在uClinux上運行,其中大部分不能作為嵌入式應用軟件。

        在uClinux上開發

        在選擇開發硬件時,開發者不應只考慮價格和可用性方面,同時也應考慮源代碼驅動和文檔的易獲取性。 一個uClinux Blackfin處理器開發環境包括GNU編譯器、(gcc交叉編譯器 cross Compiler) 和 binutils (鏈接器linker、匯編器assembler等)。一些GNU工具諸如awk、sed、make、bash . 還有plus tcl/tk是必須的,盡管他們通常在桌面linux的安裝套件中。 安裝好uClinux安裝包的桌面環境和解壓后,開發工作就可以進行了。

        第一步,開發者利用圖形配置軟件,為目標硬件選擇合適的板極支持包。開發者要利用自己的硬件,以便在EZ-KIT Lite?評估板 或STAMP硬件板上進行開發(訪問www.blackfin.uclinux.org獲取原理圖和產品文件)。然后他們可以開始編寫驅動程序,通過拷貝已有的BSP并調整一些參數來制作BSP。

        大多數的開發工作包括選擇合適的驅動程序,去除項目不需要的內核特征,然后選擇特征庫和用戶程序空間。 

        uClinux的安裝套件中提供廣泛的實用程序和電腦程序供選擇。他們是根據大小和效率的要求特別設計的,例如busybox(www.busybox.net),一種多重調用二進位,該程序包括一系列小程序,用正確的名字調用它們時就能發揮相應的作用。例如:如果busybox鏈接到/s(DOS中的目錄命令)并包含/s代碼,那么它的作用就和/s一樣。這樣做的優點是busybox節省了唯一二進位的管理費用,并且那些小的模塊可以共享相同的代碼。

        在所有的選項均選取并且正確編譯后,可以在VisualDSP++?.的幫助下,將Linux內核和ramdisc圖像調到目標硬件中。操作成功后就可進行下一步開發了。

        下一步是使用串口或網絡激活的bootloader取代JTAG界面來調入。

        例如,U-boot (http://blackfin.uclinux.org/projects/uboot/)提供一系列的特征,可以用于嵌入式閃存(flash on-board )存儲器設備。對于那些不能承擔Analog 在線模擬設備的用戶,可以選擇低價的JTAG硬件和軟件操作  (http://blackfin.uclinux.org/projects/jtagtools/)。這可以用來在程序開始時將bootloader裝入到目標存儲設備之中。但是要注意到該工作環境不能提供VisualDSP++ 的調試和模擬功能。一旦該內核投入運行,可使用GDB來調試用戶應用程序。

        下一步是為目標硬件開發特殊應用軟件或附加軟件端口。

        一些開發可使用shell腳本或其他語言如Perl 或 Python來完成。當必須使用c語言編程時,linux帶有特別的協議和設備驅動支持,能提供強有力的開發環境。

        從圖2可以看出AC'97音頻CODEC和Blackfin 處理器的接線是相當容易的,它不需要任何附加的硬件設備。

        下面是從codec中讀取數據的一個簡單的程序(假設AC'97的驅動已經編譯到內核中)。

        為什么在嵌入式硬件上使用Linux?

        盡管Linux最初并不是為嵌入式系統而設計,但是卻在很多嵌入式設備中得到應用。自從2.0.x版本內核發布后,Linux版嵌入式處理器得到商業支持以來,帶操作系統的嵌入式設備出現了爆炸式的增長。幾乎每天都會有使用Linux作為操作系統的新設備或器件出現。大部分情況下終端用戶是不知道的。 今天大部分寬帶路由器,防火墻,終端讀取設備,甚至DVD播放器均使用Linux(要獲取更多信息,請參考 http://www.linuxdevices.org)。
        AD1885接線圖
        圖2:AD1885接線圖


        程序


        Linux和uClinux提供一系列驅動程序,支持所有的硬件和協議,加上Linux是不收版權費的,所以開發者使用Linux進行開發的原因就很清楚了。

        為什么在DSP上使用Linux

        過去,DSP被用在在很多應用程序中,包括聲卡、調制解調器、電訊設備、醫療設備、軍事設備和其他的純信號處理設備。那些DSP設備一般是為那些應用軟件專門設計的,并且因為成本和規模的限制,只具備基本的功能。當DSP變得更加強大和靈活時,就能夠為軍事,醫療,通訊等領域的用
        戶提供更高級的服務。但是它們仍然缺乏運行高級操作系統的能力。傳統的DSP功能強大、靈活,但是價格很高。他們經常用在特別的信號處理硬件上,這里不需要像Linux這樣的在DSP上運行的操作系統。因為在那些系統中,DSP從附近的中央處理單元獲取數據,只需要將基本的系統軟件寫入DSP即可。

        隨著多媒體的日益集中和多媒體及通訊設備的增長,新型的DSP有著巨大的市場。目前在市場中廣泛使用的常規處理器和用傳統DSP作為輔助處理器。這種情況下,操作系統在主處理器上運行,而信號在DSP上處理。這種類型的雙處理器不是很理想,因為其在費用、功耗、和大小上均不是很有效。

         uClinux的實時性

        由于最初是為服務器和桌面用戶而設計,它沒有像其他同等規模和復雜性的操作系統一樣嚴格的實時能力。然而Linux特別是uClinux具有"軟實時"能力,這意味著盡管Linux或uClinux不能保證一些中斷或調度程序時間,他們同樣具有很好的性能特點。如果需要"硬實時"系統來保證調度程序和中斷latency時間,可通過下面方法來實現:

        使用另外的操作系統,有很多滿足要求的RTOS系統可供選擇((VisualDSP++ kernel、 Nucleus PLUS、ThreadX、uITRON)。

        通過實時內核RT-Linux (http://www.rtlinux.org) 或 RTAI (http://www.rtai.org).來提供實時能力。兩種內核均使用小的實時內核,其作為具有低優先級的實時任務運行Linux。那些需要運行在實時內核上的程序則由特別的編碼實現。其他的任務和服務在Linux內核上運行,并可使用Linux提供的一切功能。這種方法可保證確定中斷等待時間,同時保留Linux的靈活性。

        改變Linux的內核可改善硬實時中斷的等待時間,Bernhard Kuhn開發了一個Linux內核的補丁,可以在(http://linuxdevices.com/articles/AT6105045931.html)上獲取。將來有可能加到uClinux Blackfin的目錄結構上。

        在很多情況下,硬實時不是必要的,特別是對于多媒體應用程序來說,其時間約束由用戶在識別音頻或視頻中的微小錯誤的能力來規定。這些可被檢測的時間約束要在小達幾十毫秒的范圍內監測到--這對于像Blackfin處理器這樣的高端商業芯片來說不是問題。嚴格的時間需求可以通過微小調整(tweaking)和調度程序的簡單變化來獲得。在2.6.x內核中,新的穩定內核已經改進了新的O(1)調度程序和內核搶占權。

        表2和3列出了流行的多媒體通信設備在未使用操作系統的Blackfin處理器上的運行時間。

        很多情況下,有足夠的剩余處理能力來保證調度程序有足夠的時間來處理通常運行在此類設備上的數字信號程序。 因此,在web servers、snmp、ppp 或pppoe、firewall上使用Perl、Python、和PHP等語言程序是沒有問題的,運行程序的同時進行音頻和視頻解碼。

        所以,沒有必要采用硬實時操作系統,它沒有Linux這樣功能強大的操作系統所提供的高級特性。
          
        Blackfin處理器的uClinux資源

        所有在Blackfin處理器上創建uClinux內核所需的資源和工具(compiler、binutils)都可以從http://www.blackfin.uclinux.org上獲得。為了使用binary rpm,你需要帶有Linux安裝套件(如Red Hat 或 SuSE)的計算機。

        不能在windows環境下安裝Linux的計算機可調整如下:
        購買能夠運行Linux的計算機,該計算機能夠為公司的整個開發工作提供Linux服務。帶有xserver的windows計算機和samba的Linux計算機能夠無縫地集成到現有的windows開發工具上。Samba是開放的源代碼,所有的Linux安裝包里都有提供。免費的xserver可以從cygwin環境里獲得(http://www.cygwin.com)。

        在windows機器上使用UNIX:有很多程序允許在windows(2000, XP)環境上使用整個Linux安裝包。這些程序在windows操作系統上模擬一個PC,不用調整客戶端操作系統就可以執行。例如VMWare 和 Virtual PC。

        使用windows端口開發工具。
        可從http://www.blackfin.uClinux.org上下載最新的out-of-the-box解決方案。該端口利用cygwin環境并采用完全的Blackfin uClinux安裝套件,包括所有的用戶空間應用程序和圖形化window形式的安裝方式。

        系統要求PC配置至少為Windows 2000(NT也許可使用,但是沒有經過測試)。采用Uclinux安裝包的驅動器應該使用NTFS(FAT32也可使用,不過有一些速度限制)。

        前景展望與總結

        Blickfin處理器有很高的性價比(800 MMAC @ 400 MHz 批發價不超過 $5/片)。有高級的電源管理功能和小型BGA封裝。這意味著可以使用低功耗和高空間效率來實施大的項目。Blackfin的高級DSP和多媒體性能不僅適用于音頻、視頻應用程序,同樣可以用于工廠、汽車、通訊領域的各種設備。結合了uClinux的Blackfin處理器的另外一個優點是適用于廣泛的應用程序、驅動程序、協議,通常是充當開放資源和免費軟件。在大多數情況下,僅僅只有一些編輯或小的調整(tweaking)需要加載運行。將之與 Perl、Python、和PHP等寶貴的開發工具相集成,開發者就有機會在很短的時間內開發最多性能的應用程序,并留有足夠的剩余處理能力,為將來的改進作準備,滿足新的性能需求。

        最新的2.6.6版內核即將發布,它采用了新的gcc 3.3.3工具鏈。Blackfin補丁已經寫入uClinux的內核目錄結構,并且可以在ADSP-BF531/BF532/BF533 /ADSP-BF535系列Blackfin 處理器上使用。由于Blackfin是一個新結構的品牌,許多其它的單雙內核系列都將采用該結構(www.analog.com/processors/blackfin)。

        今年,Blackfin處理器家族將會增添一名帶有以太網MAC的新成員。一些人已經開始把uClinux移植到新的雙內核處理器ADSP-BF561上。這種做法意在讓uClinux在一個內核上運行,同時在另外一個內核上進行高性能的實時視頻編碼或解碼工作。


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 西宁市| 湘潭县| 综艺| 呼图壁县| 安丘市| 延寿县| 彰化县| 丹巴县| 乐陵市| 罗平县| 大洼县| 祁阳县| 昌都县| 丰台区| 鹰潭市| 江陵县| 新和县| 定日县| 喀喇| 昌吉市| 大港区| 贺兰县| 惠水县| 弥渡县| 勐海县| 南阳市| 长岭县| 密云县| 上林县| 安远县| 五家渠市| 铜梁县| 东丽区| 秦安县| 吴江市| 渝北区| 措勤县| 克什克腾旗| 宜阳县| 尼玛县| 湟中县|