Global Sources
電子工程專輯
 
電子工程專輯 > 嵌入式技術
 
 
嵌入式技術  

在嵌入式專案中使用Linux的技巧

上網時間: 2015年08月07日     打印版  Bookmark and Share  字型大小:  

關鍵字:嵌入式  Linux  編譯器  嵌入式系統 

步驟3:在主機上安裝Linux

為了打造一個嵌入式Linux專案,一台Linux主機不可或缺。針對Windows PC,最好是安裝Oracle VirtualBox,以建立一台512Mb RAM和16Gb硬碟的新虛擬機。

有許多Linux版本可用,例如Debian就是一款匹配VirtualBox環境的版本。這款Linux主機必須能夠存取網際網路,以便下載針對這款ARM Cortex-M目標MCU的GNU交叉編譯工具。設計者將建立一個類似圖1所示的樹形結構,並將交叉建構工具提取到/tools資料夾。

在此必須建立一個ACTIVATE.sh腳本。只需使用以下程式碼就可實現。(<......>是指向提取GNU工具資料夾的路徑):

export INSTALL_ROOT=<.......>

export PATH=$INSTALL_ROOT/bin:$PATH

export CROSS_COMPILE=arm-uclinuxeabiexport

CROSS_COMPILE_APPS=arm-uclinuxeabiexport

MCU=STMDISCO

export ARCH=arm

將GNU工具安裝於乾淨的Linux系統中,但其使用並非自給自足,實際上還需要其它系統的配合。其執行作業實際上取決於若干其它系統元件(如主機C/C++編譯器、標準C函式程式庫標題檔,以及一些系統工具)。獲得這些必要元件的一種方法是安裝用於C的Eclipse整合式開發環境(IDE)。除了解決這種燃眉之急的問題外,Eclipse IDE還可在開發過程中提供其它方面的諸多協助,不過,詳述Eclipse IDE的特性並非本文目的。

現在,是啟用Linux終端工具的時候了:點選‘應用程式’(Applications),接著‘附屬應用程式’(Accessories)以及‘終端’(Terminal),如圖2。


圖2:Linux包含‘Terminal’工具和‘Files’、一種類似Windows Explorer的圖形化工具

‘Terminal’是用於配置Linux主機和建構嵌入式Linux應用程式的主要工具。鍵入以下指令來安裝Eclipse和其它所需工具:

su [輸入根使用者密碼]

apt-get install eclipse-cdt

apt-get install genromfs

apt-get install libncurses5-dev

apt-get install git

apt-get install mc

準備該Linux專案的最後步驟是下載STM32F429 Discovery Buildroot,並解壓到/uclinux資料夾。

步驟4:用Buildroot建構μClinux

現在必須關閉先前使用根使用者設定檔的終端,並啟動一個新的終端。在指令列中輸入‘mc’,並使用瀏覽器進入‘Documents”,然後輸入‘uClinux’指令。按Ctrl+O並啟動Linux ARM Cortex-M開發部份,並執行‘.ACTIVATE.sh’指令。再次按下Ctrl+O並進入‘stm32f429-linux-builder-master’資料夾。

用戶現在有兩個選擇。如果使用VirtualBox中的範例專案,請遵循‘make clean”和‘make all’指令序列。如果準備一個全新環境,使用‘make’指令。約30分鐘後,新的μClinux映射將可用,如下所示:

out\uboot\u-boot.bin

out\kernel\arch\arm\boot\ xipuImage.bin

out\romfs.bin

將這些新的映射寫入Flash。如果使用Windows和ST-LINK工具,以下的程式碼將可作業:

ST-LINK_CLI.exe -ME

ST-LINK_CLI.exe -P “u-boot.bin” 0x08000000

ST-LINK_CLI.exe -P “xipuImage.bin” 0x08020000

ST-LINK_CLI.exe -P “romfs.bin” 0x08120000

將序列主控台連接到目標電路板(外部RX=>PC10、外部TX=>PC11、115200bits/s、8個資料位元、無同位元、1個停止位元模式),然後按下重設按鈕,該μClinux專案將啟動執行。開機輸出將顯示在串列除錯器上,顯示幕將出現Linux的企鵝標識。

步驟5:創建‘Hello, world’應用

現在,按照程式碼範例和以下的說明,將一個用戶應用添加到μClinux專案中。

創建:‘stm32f429-linux-builder-master/user/src/hello.c’文件:

#include

int main() {

printf(“Hello, world\n”);

return 0;

}

必要時使用Tab鍵,創建:‘stm32f429-linux-builder-master/user/Makefile’文件:

CC = $(CROSS_COMPILE)gcc

LDFLAGS ?=$(CFLAGS)

target_out ?= out

all: checkdirs

[Tab] $(CC) $(LDFLAGS) src/hello/hello.c -o $(target_out)/bin/

hello $(LDLIBS)

[Tab] -rm -rf $(target_out)/bin/*.gdb

checkdirs:

[Tab] mkdir -p $(target_out)/bin

clean:

[Tab] -rm -rf $(target_out)

透過activate.sh腳本,無需啟動交叉編譯環境即可進行主機測試‘Hello, world’應用。

在/user資料夾下,輸入:

make all

./out/bin/hello

為了將hello.c嵌入到Linux Buildroot的腳本,修改mk/rootf.mak檔,必要時使用Tab鍵。(粗體字表示新行開始處):

. . .

user_hello:

[Tab] make -C $(user_dir) CROSS_COMPILE=$(CROSS_

COMPILE) CFLAGS=$(ROOTFS_CFLAGS) target_

out=$(target_out_user)

$(rootfs_target): $(rootfs_dir) $(target_out_busybox)/.config

user_hello

[Tab] cp -af $(rootfs_dir)/* $(target_out_romfs)

[Tab] cp -f $(target_out_kernel)/fs/ext2/ext2.ko $(target_out_romfs)/lib/modules

[Tab] cp -f $(target_out_kernel)/fs/mbcache.ko $(target_out_romfs)/lib/modules

[Tab] cp -f $(target_out_user)/bin/* $(target_out_romfs)/usr/bin

現在還必須對mk/defs.mak檔進行最後修改。加入以下幾行指令:

. . .

user_dir := $(root_dir)/user

target_out_user := $(target_out)/user

user_dir := $(root_dir)/user

target_out_user := $(target_out)/user

一旦在目標MCU上建立、下載並執行映射,就可以在/usr/bin目錄中找到該應用程式以及其它既有的應用程式。在連接到Discovery板的終端上鍵入‘hello[輸入]’,即可對該應用進行測試。

結語

本文在於說明任何工程師都能輕鬆地用幾個步驟展開一項簡單的μClinux專案。範例中的專案為更複雜的Linux設計提供了一個很好的起點。現有的開放源碼與專案為工程師帶來了巨大的優勢,使其得以擴展個人能力,以及在複雜的軟硬體環境中快速學習建置設計。


 First Page Previous Page 1 • 2



投票數:   加入我的最愛
我來評論 - 在嵌入式專案中使用Linux的技巧
評論:  
*  您還能輸入[0]個字
*驗證碼:
 
論壇熱門主題 熱門下載
 •   將邁入40歲的你...存款多少了  •  深入電容觸控技術就從這個問題開始
 •  我有一個數位電源的專利...  •  磷酸鋰鐵電池一問
 •   關於設備商公司的工程師(廠商)薪資前景  •  計算諧振轉換器的同步整流MOSFET功耗損失
 •   Touch sensor & MEMS controller  •  針對智慧電表PLC通訊應用的線路驅動器
 •   下週 深圳 llC 2012 關於PCB免費工具的研討會  •  邏輯閘的應用


EE人生人氣排行
 
返回頁首