Linux用於嵌入式

2022-08-24 17:00:15 字數 2108 閱讀 5521

步驟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)。

步驟2:引導序列、時鐘系統、儲存器和序列介面

典型的嵌入式linux啟動順序執行如下:

1)引導引導程式韌體(示例專案裡的u-boot)執行於目標mcu內建快閃儲存器(無需外部儲存器),並在上電/復位後,執行所有必需的初始化工作,包括設定串列埠和用於外部儲存器(ram)訪問的儲存器控制器。

2)u-boot可將linux映像從外部flash轉移到外部ram,並將控制交接到ram中的核心入口點。可壓縮linux映像以節省快閃儲存器空間,代價是在啟動時要付出解壓縮時間。

3)linux進行引導並安裝基於ram的檔案系統(initramfs)作為根檔案系統。在專案構建時,initramfs被填充以所需的檔案和目錄,然後被簡單地鏈結到核心。

4)在linux核心下,執行/sbin/init。/sbin/init程式按照/etc/inittab中配置檔案的描述對系統進行初始化。

5)一旦初始化程序完成執行級執行和/sbin/init裡的命令,它會啟動乙個登入程序。

6)殼初始化檔案/etc/profile的執行,標誌著啟動過程的完成。

通過使能就地執行(executeinplace——xip)可以顯著縮短啟動時間、提公升整體效能,xip是從快閃儲存器執行**的方法。通常,linux**是從快閃儲存器載入到外部儲存器,然後從外部儲存器執行。通過從快閃儲存器執行,因不再需複製這步,從而只需較少的儲存器,且唯讀儲存器不再佔程式空間。

嵌入式 linux 編譯

第二次換了編譯環境編譯時又提示 make 3 drivers video console vgacon.o 錯誤 1 在網上搜尋結果 根據資訊的大概意思是關於vga的支援問題,在這裡我直接把關於vga的配置選項去掉不選,即 在執行 make menuconfig 配置時 不選vga 驅動。devic...

linux嵌入式開發

我的環境 主機 ubuntu 64位 開發板 mini2440 6 makefile檔案修改 在 opt friendlyarm mini2440 linux 2.6.29下執行 sudo vi.makefile 搜尋arm linux得到乙個結果 cross compile?arm linux 然...

嵌入式 Linux介紹

嵌入式 linux介紹 一 嵌入式是一門it技術。嵌入式這門it技術是幹什麼的?他有什麼價值?專門生產功能專一的智慧型電子產品 電子裝置 什麼是電子裝置?通電的東西,嵌入式來搞定,而且沒通電的影象化介面屬於應用層的那種,嵌入式也可以搞定。二 嵌入式開發的分類 基於系統平台的開發 做出來的產品有搭載系...