關 閉

        新聞中心

        EEPW首頁 > 工控自動化 > 設計應用 > 現場總線的開關量I/O模塊設計:操作系統移植與驅動開發

        現場總線的開關量I/O模塊設計:操作系統移植與驅動開發

        作者: 時間:2013-05-27 來源:網絡 收藏

        5.1常用的嵌入式

        本文引用地址:http://www.104case.com/article/159342.htm

        當前常見的嵌入式主要有嵌入式Linux、Windows CE及VxWorks,在各個領域得到廣泛應用,具有各自的特性與優勢:

        ①從系統性能比較

        Linux是一個成熟而穩定的網絡,為嵌入式操作系統提供了一個極有吸引力的選擇,它是個和Unix相似、以核心為基礎的、完全內存保護、多任務、多進程的操作系統,支持廣泛的計算機硬件,包括X86 ,Alpha、MIPS、PPC、ARM、NEC、MOTOROLA等現有的大部分芯片,可以定制,其系統內核最小只有約134K B,在信息家電、工控等領域有廣泛應用。

        WinCE是一個軟實時系統,具有化、結構化和基于Win32應用程序接口和與處理器無關等特點,主要用于對實時性要求不高,但對界面要求較高的領域,在PDA、手機、顯示儀表等領域得到非常廣泛應用。

        VxWorks操作系統是美國WindRiver公司于1983年的一種嵌入式實時操作系統(RTOS),具有多達1800個功能強大的應用程序接口(API ) ,它以其良好的可靠性和卓越的實時性被廣泛地應用在通信、軍事、航空、航天等高精尖技術及實時性要求極高的領域中。

        ②從角度比較

        Linux程序源碼全部公開,任何人可以修改并在GNU通用公共許可證下發行,這樣,人員可以對操作系統進行定制。同時由于有GPL (General Public License )的控制,大家開發的東西大都相互兼容。Linux用戶遇到問題時可以通過Internet向網上成千上萬的Linux開發者請教,這使最困難的問題也有辦法解決。Linux帶有Unix用戶熟悉的完善的開發工具,幾乎所有的Unix系統的應用軟件都已到了Linux上。Linux還提供了強大的網絡功能,有多種可選擇窗口管理(Xwindows )。其強大的語言編譯器gcc、g++等也可以很容易得到。目前正在開發的嵌人式系統中,49%的項目選擇Linux作為嵌入式操作系統。

        就VxWorks與Win CE而言,廠商不但提供了穩定可靠方便的集成開發環境,而且提供了大量針對具體應用的完整解決方案,為具體開發帶來極大便捷,但系統開發成本較昂貴。

        本論文最終采用嵌入式Linux作為系統開發軟件平臺。

        5.2 BOOTLOADER

        引導加載程序Bootloader是系統加電后運行的第一段代碼。Bootloader就是在操作系統內核或應用程序運行之前的一段程序。通過這段小程序,可以初始化硬件設備、建立內存空間的映射圖,從而將系統的軟硬件環境帶到一個合適的狀態,以便為最終調用操作系統內核或用戶應用程序準備好正確的環境。Bootloader是依賴于硬件而實現的,特別是在嵌入式系統中。不同的體系結構需求的Bootloader是不同的;除了體系結構,Bootloader還依賴于具體的嵌入式板級設備的配置。

        5.2.1 U-Boot簡介

        U-Boot全稱為Universal Bootloader,是遵循GPL條款的開放源碼項目。從FADSROM、8xxROM、PPCBOOT逐步發展演化而來。其源碼目錄、編譯形式與Linux內核很相似,事實上,不少U-Boot源碼就是相應的Linux內核源程序的簡化,尤其是一些設備的程序。

        選擇U-Boot的理由:

        開放源碼;

        支持多種嵌入式操作系統內核,如Linux、NetBSD、VxWorks、QNX、RTEMS、ARTOS、LynxOS;

        支持多個處理器系列,如PowerPC、ARM、x86、MIPS、XScale;

        較高的可靠性和穩定性;高度靈活的功能設置,適合U-Boot調試、操作系統不同引導要求、產品發布等;

        豐富的設備源碼,如串口、以太網、SDRAM、FLASH、LCD、NVRAM、EEPROM、RTC、鍵盤等;

        較為豐富的開發調試文檔與強大的網路技術支持;

        5.2.2 U-Boot運行過程分析

        U-Boot編譯后的代碼定義一般不超過100 KB,并且這100KB又分為兩個階段來執行。第一階段的代碼在start.s中定義,大小不超過10KB,它包括從系統上電后在0x00000000地址開始執行的部分。這部分代碼運行在Flash中,它包括對S3C2440的一些寄存器的初始化和將U-Boot的第二段代碼從Flash復制到SDRAM中。第二段的起始地址是在第一段代碼中指定的,被復制到SDRAM后,就第一段跳到這個入口地址開始執行剩余部分代碼。第二段主要是進行一些BSS段的設置、堆棧的初始化等工作,最后會跳轉到main -loop函數中,接收命令并進行命令處理。

        5.2.3 U-Boot

        本系統用到的U-Boot版本為1.3.2.它不僅提供了對ARM-920T內核的支持,而且直接提供了對于S3C2440的板級支持,這使移植工作量相對減少。

        (1) U-Boot版本1.3.2,gccversion4.1.2

        (2)在Makefile中加入

        zq2440_config:u nconfig @$(MKCONFIG ) $(@ :_config=) arm arm920t zq2440 NULL S3C24x0把板子起名為zq2440

        (3)建立board/zq2440目錄,復制board/smdk2410下的文件到board/zq2440目錄,將smdk2410.c更名為zq2440.c.

        (4)cp include/configs/smdk2410.h include/configs/zq2440.h

        (5 )添加arm-softfloat-linux-gnu-到Makefile的CROSS_COMPILE=

        (6)編譯 make zq2440_config

        make

        (7)通過JTAG口將U-Boot燒寫到Flash中,就可以從Nand Flash啟動了。

        Uboot在超級終端下運行結果如圖5.1所示:

        Uboot在超級終端下運行結果

        5.3嵌入式Linux內核的移植

        5.3.1嵌入式Linux簡介

        嵌入式Linux是將日益流行的Linux操作系統進行裁剪、修改,使之能在嵌入式計算機系統上運行的一種操作系統。

        嵌入式系統的軟件和硬件往往只需針對某種特別的應用定制,因此嵌入式操作系統需要量體裁衣,除去冗余,同時盡可能發揮系統的潛力。Linux最初目標是一個通用的操作系統,因此必須對其進行面向嵌入式系統和應用環境的改造,以適應嵌入式系統的特殊要求。

        嵌入式Linux系統包括內核和應用程序兩部分。內核為應用程序提供一個虛擬的硬件平臺,以統一的方式對資源進行訪問,并且透明地支持多任務。嵌入式Linux內核可以分為六部分:進程調度,內存管理,文件系統,進程間通信,網絡,設備。應用程序負責系統的部分初始化,基本的人機界面,必要的命令等內容。

        從Linux2.6內核版本開始了實時性革命。Linux內核本身也已經特別注重了向嵌入式系統的應用,Linux2.6內核已經把uCLinux的大部分并入主流內核功能中,同時加入提高中斷性能和調度響應時間的改進,有三個最顯著的改進:采用可搶占內核、更加有效的調度算法以及同步性的提高。Linux2.6內核在一定程度上是可搶占的,即當有比正在運行的進程優先級更高的進程就緒時,系統可強行剝奪正在運行進程的CPU,提供給具有更高優先級的進程使用,比Linux2.4內核具備更好的實時響應性(不是所有的內核代碼段都可以被搶占)。Linux2.6內核加入了多種微控制器的支持,無MM U的處理器已經整合進了新的內核中,而且在無MM U控制器上仍舊支持多任務處理,但沒有內存保護功能。對于WLAN、Bluetooth、GPRS、CDMA和WiFi等最新出現的無線網絡協議和設備,Linux2.6內核重建了驅動的體系層次和編程模型,可以方便的適應這些網絡設備的變化,而且特別提出了NAPI(NewAPI)等模型提高網絡處理效率。

        5.3.2嵌入式Linux的優勢

        嵌入式Linux的開發和研究是操作系統領域中的一個熱點,目前已經開發成功的嵌入式系統中,大約有一半使用的是Linux.Linux之所以能在嵌入式系統市場上取得如此輝煌的成果,與其自身的優良特性是分不開的。

        (1)開放的源碼,豐富的軟件資源

        Linux是自由的操作系統,它的開放源碼使用戶獲得了最大的自由度。Linux上的軟件資源十分豐富,每一種通用程序在Linux上都可以找到。

        (2)功能強大的內核,性能高效、穩定,多任務

        Linux的內核非常穩定,它的高效和穩定性已經在各個領域,尤其在網絡服務器領域,得到了事實的驗證。Linux內核小巧靈活,易于裁減,這使得它很適合嵌入式系統的應用。

        (3)支持多種體系結構,如X86、ARM、MIPS、PowerPC、SPARC等

        目前,Linux已經被移植到數十種硬件平臺上,幾乎支持所有流行的CPU.

        (4)完善的網絡通訊、圖形、文件管理機制

        Linux自產生之日起就與網絡密不可分,網絡是Linux的強項。另外,Linux還支持多種文件和圖形系統。

        (5)支持大量的周邊硬件設備

        Linux上的驅動已經非常豐富了,它們支持各種主流硬件設備和最新硬件技術。

        (6)大小、功能都可定制

        Linux秉承Unix的優秀思想,非常靈活,各部分的可定制性都很強。

        (7)良好的開發環境,不斷發展的開發工具集

        Linux有著非常優秀的完整開發工具鏈,有十幾種集成開發環境,其中很多是免費的,大大降低了開發費用。

        (8)軟件開發者的廣泛支持

        Linux的自由精神吸引了成千上萬的程序員投入到Linux的開發和測試中來,這使得Linux在短時間內就成為一個功能強大的操作系統。

        (9)價格低廉

        有效降低產品成本,對成本敏感的嵌入式系統來說至關重要,Linux恰好具有這一特性。

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

        linux相關文章:linux教程



        上一頁 1 2 3 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 古交市| 揭阳市| 额尔古纳市| 砚山县| 绥中县| 周口市| 铜陵市| 高邮市| 黎城县| 汽车| 喀喇| 五台县| 化德县| 伊金霍洛旗| 东兴市| 达日县| 禹城市| 甘南县| 德安县| 沙坪坝区| 房产| 利川市| 芦溪县| 尤溪县| 东明县| 龙州县| 盖州市| 屯留县| 连南| 红安县| 肥乡县| 广东省| 清河县| 宜兰县| 平顶山市| 正蓝旗| 瑞昌市| 漾濞| 化州市| 衡阳市| 密山市|