新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 【E問E答】嵌入式項目中使用Linux有哪些技巧?

        【E問E答】嵌入式項目中使用Linux有哪些技巧?

        作者: 時間:2017-09-27 來源:網絡 收藏

          微控制器制造商的開發板,以及他們與開發板一起提供的軟件項目例程,在工程師著手一個新設計時可以提供很大幫助。但在設計項目完成其早期階段后,進一步設計時,制造商提供的軟件也可能會導致一些問題。

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

          使用實時操作系統作為應用程序代碼平臺的設計還面臨著許多挑戰,比如如何將功能分配給不同的并行任務、如何設計高可靠的進程間通信、以及如何在硬件上測試整個軟件包等問題。

          越來越多的OEM廠商發現,避免上述兩個問題的最好方式,是使用基于開源、經過驗證、可擴展、可運行在不同硬件平臺的操作系統開始新的設計。就已經被移植到各種計算機硬件平臺的操作系統的數量來說,首屈一指。的衍生版本已運行在非常廣泛的系統中,包括:網絡路由器、移動電話、建筑自動化控制、電視機和視頻游戲控制臺。

          雖然Linux被成功使用,但并不意味著它很容易使用。Linux包含的代碼超過一百萬行,其運作帶有鮮明的Linux方法論味道,初學者可能難以迅速掌握。

          因此,本文的主旨是為使用Linux的操作系統版本——μClinux,開始一個新的設計項目,該指南共分為五個步驟。為了說明該指南,本文介紹了在意法半導體的STM32F429微控制器(ARMCortex-M4內核,最高180MHz)上的一個μClinux項目實現,使用了Emcraft 的STM32F429DiscoveryLinux板支持包(BSP)。

          步驟1:Linux工具和項目布局

          每個軟件設計都從選擇合適的工具開始。

          工具鏈是一組連接(或鏈接)在一起的軟件開發工具,它包含諸如GNU編譯器集合(GCC)、binutils(一組包括連接器、匯編器和其它用于目標文件和檔案工具的開發工具)和glibc(提供系統調用和基本函數的C函數庫)等組件;在某些情況下,還可能包括編譯器和調試器等其它工具。

          用于嵌入式開發的工具鏈是一個交叉工具鏈,更常見的叫法是交叉編譯器。

          GNUBinutils是嵌入式Linux工具鏈的第一個組件。GNUBinutils包含兩款重要工具:

          ●“as”,匯編器,將匯編代碼(GCC所生成)轉換成二進制代碼

          ●“ld”,連接器,將離散目標代碼段連接到庫或形成可執行文件

          編譯器是工具鏈的第二個重要組成部分。在嵌入式Linux,它被稱為GCC,支持許多種微控制器和處理器架構。

          接下來是C函數庫。它實現Linux的傳統POSIX應用編程接口(API),該API可被用來開發用戶空間應用。它通過系統調用與內核對接,并提供高階服務。

          工程師有幾種C函數庫選擇:

          ●glibc是開源GNU項目提供的可用C函數庫。該庫是全功能、可移植的,它符合Linux標準。

          ●嵌入式GLIBC(EGLIBC)是一款針對嵌入式系統優化的衍生版。其代碼是精簡的,支持交叉編譯和交叉測試,其源代碼和二進制代碼與GLIBC的兼容。

          ●uClibc是另一款C函數庫,可在閃存空間有限、和/或內存占用必須最小的情況下使用。

          調試器通常也是工具鏈的一部分,因為在目標機上調試應用程序運行時,需要一個交叉調試器。在嵌入式Linux領域,GDB是常用調試器。

          上述工具是如此地不可或缺,但當它們各自為戰時,會花太長時間來編譯Linux源代碼并將其整合成最終映像(image)。幸運的是,Buildroot(自動生成交叉編譯工具的工具)會自動完成構建一個完整嵌入式系統的過程,并通過產生下述任一或所有任務,簡化了交叉編譯:

          ●交叉編譯工具鏈

          ●根文件系統

          ●內核映像

          ●引導映像

          對嵌入式系統設計師來說,還可以方便地使用一種工具(utility)聚合工具,如BusyBox,這種工具將通常最需要的工具整合在一起。根據 BusyBox的信息頁面介紹,“它將許多常用UNIX工具的微型版本整合成一個小的可執行文件。它提供了對大多數你通常會在GNUfileutils和 shellutils等工具中看到的工具的替代。BusyBox里的工具通常比其全功能GNU對應版本的選擇少;但所包含選項所提供的預期功能和行為則與對應的GNU所提供的幾無差別。對任何小或嵌入式系統來說,BusyBox提供的環境都是相當完整的。”

          最后一個重要工具是一款BSP,是為搭載了項目目標MCU或處理器的主板專門做的。

          BSP包括預先配置的工具,以及將操作系統加載到主板的引導加載程序。它還為內核和器件驅動器提供源代碼(見圖1)。

            

        1.jpg

         

          圖1:用于STM32F429Discovery板的EmcraftBSP的主要部件


        上一頁 1 2 下一頁

        關鍵詞: 嵌入式 Linux

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 定安县| 日照市| 定襄县| 丹阳市| 中阳县| 同心县| 呼伦贝尔市| 屯门区| 巴南区| 芮城县| 汕尾市| 察雅县| 城市| 广灵县| 隆回县| 祁阳县| 青神县| 桂东县| 井研县| 南雄市| 都昌县| 罗源县| 宁波市| 灵石县| 宜君县| 望江县| 阜宁县| 府谷县| 遂昌县| 清涧县| 栖霞市| 崇信县| 揭西县| 固镇县| 易门县| 瑞金市| 封开县| 神池县| 曲沃县| 泌阳县| 和政县|