鮑尚東 王杰
摘 要:針對嵌入式系統的特點,本文較詳細的給出了嵌入式linux系統的構建流程和方法。主要分為開發環境的建立,linux的安裝和編譯器的制作。bootloader、linux內核、文件系統的移植以及驅動程序編寫。
關鍵詞:linux;bootloader;根文件系統;驅動程序
DOI:10.16640/j.cnki.37-1222/t.2019.05.144
企業對嵌入式linux工程師的需求量大,所以嵌入式linux的開發是一門熱門的領域。嵌入式linux系統的開發涉及到硬件電路的設計、操作系統的移植、驅動程序的編寫、應用程序的開發等主要方面。本文研究了基于S3C2410X的嵌入式linux系統的構建。
1 系統總體硬件設計
硬件系統采用模塊化的設計思想,核心部分是三星公司的S3C2410X處理器。外圍擴展有LCD液晶顯示屏、UART通道、以太網、鍵盤、主從USB,總線接口等主要器件。
2 開發環境的建立
2.1 宿主機linux的安裝
嵌入式linux開發需要在計算機上安裝linux操作系統提供編譯開發環境,通常稱為宿主機。有多種方案可行,一是直接在計算機上安裝雙操作系統,二是建立獨立的linux服務器,三是在windows環境下安裝WMware虛擬機(linux)的方式,本文采用第三種方案適合初學者。在WMware中安裝Red Hat9操作系統[1]。
2.2 構建交叉開發工具鏈
交叉工具鏈俗稱編譯器,一是直接從相關網站下載,二是分步式構建交叉工具鏈,三是通過crosstool腳本工具集構建,這里采用的是crosstool-0.43版本,查看crosstool里的匹配文本,從相關網站下載工具鏈所需要的軟件包,主要包含gcc、binutils、glibc、linux內核頭文件。所有文本無需解壓直接放在相關目錄里,利用vi編輯器打開demo-arm9tdmi.sh文件進行修改,修改完后運行該腳本程序,最終在宿主機的linux系統相關目錄里生成gcc編譯器。
3 bootloader的移植
啟動引導程序bootloader主要完成系統啟動時的硬件初始化工作并能夠將操作系統給啟動引導起來,另外其包含必要的驅動程序和命令,能與宿主機進行通信執行下載等現關操作。u-boot可以針對多種處理器并不是為某一處理器而開發的,適用范圍更廣,但其在使用前需要針對特定硬件平臺做修改,完成移植工作。vivi是韓國mizi公司針對三星的ARM系列處理器開發的一款bootloader具有專用性,使用方便等特點。網上也有該bootloader的變種,功能更強大。利用vivi編輯器打開Makefile文件,修改ARCH=arm,CROSS_COMPILE=gcc的絕對路徑。執行make menuconfig執行相關的配置,最后運行make生成可執行文件vivi 。
4 Linux-2.6內核的移植
linux內核是整個系統的核心與靈魂。它是一種開源軟件,可以從相關網站下載,目前主流的處理器均能支持。在移植之前需要對其進行修改,首先要針對特定硬件平臺的軟件部分進行修改,由于linux社區的維護工作,這部分工作已經大大減輕,修改Makefile文件,輸入make menuconfig對linux-2.6內核進行必要的配置,該項工作很重要,關系到可執行內核的大小和實用性。
5 根文件系統的構建
文件系統是計算機對數據進行某種組織和管理的方式,根文件系統是linux啟動后掛載的第一個文件系統[2]。首先制作根目錄例如etc、dev、sbin、bin等目錄,盡可能按著文件系統標準來制作目錄。linux是類似于unix的命令系統,在嵌入式開發中可以通過busybox來制作相關的命令。編寫etc目錄下的腳步配置文件,例如rcS、inittab、profile等腳步程序。
6 驅動程序的編寫
驅動程序的編寫屬于底層開發,其工作量相對較小,但難度較大,要求開發者具有較深厚的硬件,C語言和數據結構基礎。Linux驅動程序分為字符驅動,快驅動和網絡驅動。字符驅動是我們經常要編寫的驅動程序,所有要理解字符驅動的編寫規則。驅動程序稱為設備文件,字符驅動通過open()函數打開,read()、write()等對其讀寫,所有這些操作函數都是通過file_operations這個數據結構對其進行訪問[3]。
7 結論
本文針對S3C2410X處理器構建了linux系統,該系統是一個完整的嵌入式系統,屬于底層開發,能夠可靠運行,能支持后續多種應用程序的開發。
參考文獻:
[1]陳賾等.ARM嵌入式技術原理與應用[M].北京:北京航空航天大學出版社,2011:288-290.
[2]文宇波.構建和移植嵌入式Linux的根文件系統[J].微計算機信息,2010年26-5-2:65-67.
[3]韋東山.嵌入式Linux應用開發安全手冊[M].北京:人民郵電出版社,2008:384-389.
基金項目:國家級大學生創新創業項目:基于ARM的嵌入式linux研究(編號:201810383059)
作者簡介:鮑尚東(1980-),男,安徽巢湖人,碩士研究生,助教,研究方向:嵌入式系統。