1. 程式人生 > >嵌入式Linux應用開發① | 嵌入式LInux介紹及開發環境搭建

嵌入式Linux應用開發① | 嵌入式LInux介紹及開發環境搭建

1.嵌入式Linux

嵌入式Linux是對執行在嵌入式裝置上的Linux的統稱,它們都是經過高度裁剪、具備特定功能的嵌入式Linux作業系統。
嵌入式裝置效能、資源有限,所以不能將標準的Linux應用到嵌入式和裝置上,所以對標準的Linux進行核心裁剪,針對某一個特定的功能進行完善,就可以應用到嵌入式裝置上,主要有兩種:

  • 小型化:針對大小進行改進,eg.ETLinux、uLinux、ThinLinux等
  • 實時化:針對實時性進行改進,eg.RTLinux、RTAI等

2.嵌入式Linux的開發方向

嵌入式Linux的開發主要有以下三個:

  • 核心開發:裁剪Linux,適配驅動,目的是可以執行起來Linux;
  • 應用開發:在執行起來Linux的基礎上,進行應用開發;

這裡我們先從應用開發入手,待學會基本開發再學習核心開發也不遲~

3.嵌入式Linux的開發模型

  • 宿主機用來開發程式
  • 目標板用來執行程式

4.嵌入式Linux應用開發硬體環境

  • 已經執行起來Linux的開發板
  • 串列埠:用於Linux終端
  • 網口:用於SSH、檔案傳輸、遠端除錯程式

這裡我使用的硬體平臺是NXP的iMX287。

5.嵌入式Linux應用開發軟體環境

5.1.交叉編譯工具鏈

宿主機執行的是標準Linux作業系統,編譯出的程式卻需要在目標機的Linux上跑,這就叫交叉編譯,需要使用交叉編譯器,之前我們已經使用過arm-none-eabi-gcc

編譯STM32的程式,這個編譯器的目標系統是ARM,不執行作業系統,僅執行前後臺程式,這裡我們ARM開發板運行了Linux作業系統,所以不能使用這個編譯器,需要使用arm-none-linux-gnueabi-gcc交叉編譯器。

5.2.安裝交叉編譯器

arm-none-linux-gnueabi-gcc下載
下載解壓版:
在這裡插入圖片描述

解壓:

tar -jxvf arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2

移動到/usr下面:

進入目錄檢視,bin下存放著我們需要的工具:

將這個位置新增到使用者環境變數,使用vim ~/.bashrc

,然後再最後新增:

export PATH=$PATH:/usr/arm-2014.05/bin

然後使用命令source ~/.bashrc更新系統路徑,使新增的環境變數立即生效:

然後輸入arm-none-linux,連按tab,檢查是否可以自動補全,如果可以,則安裝成功:

如果是64位作業系統,這個時候還不能使用,只能自動補全,但不能執行:

解決方案 —— 安裝庫:

sudo apt-get install libc6-i386

再次檢視gcc版本,成功:

5.3.使用交叉編譯器

arm-none-linux-gnueabi-gcc和之前的gcc使用無太大差異,示例如下。
先編輯檔案:

然後使用交叉工具鏈編譯:

編譯完成後,接下來我們配置網路環境,通過網路將生成的可執行檔案傳遞到目標板上執行。

6.嵌入式Linux應用開發串列埠環境

  • 將開發板命令列輸出串列埠連線到電腦上(通過USB轉串列埠);
  • 電腦上使用終端軟體連線串列埠(不建議使用串列埠助手);

7.嵌入式Linux應用開發網路環境

參考之前這篇Ubuntu遠端訪問和檔案傳輸 | 配置SSH和VNC服務

7.1.前提

1.開發板已連線上可以正常上網的路由器
使用udhcpc開啟自動獲取ip:

然後使用ifconfig檢視網路狀態:

使用route檢視路由表:

ping一下百度(61.135.169.105),測試是否可以連線外網:

2.開發板和windows互ping,檢測網路:
在windows命令列中使用ipconfig檢視ip地址,然後ping開發板:

開發板ping windows主機:

  1. 配置虛擬機器網路使用橋接模式(必須,使用NAT模式無法連線開發板
    在這裡插入圖片描述

檢視虛擬機器ip地址:

7.2.使用SSH進行遠端登入和檔案傳輸

  1. 首先使用sshd命令檢視開發板sshd狀態(如圖表示開啟):

  2. 在windows主機上使用xshell登入開發板

如果不想使用這種建立的方式,也可以直接使用命令:

ssh <使用者名稱>@<ip地址>

  1. 在windows主機上使用winscp通過ssh進行檔案傳輸

這樣就可以在windows主機和開發板之間傳遞檔案了(同樣,可以在windows主機和虛擬機器之間傳檔案)。

  1. 在虛擬機器Linux上使用ssh登入開發板

  2. 在虛擬機器Linux上使用ssh傳送檔案到開發板

7.3.使用NFS進行搭建網路檔案系統

7.4.使用TFTP進行檔案傳輸