嵌入式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
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主機:
- 配置虛擬機器網路使用橋接模式(必須,使用NAT模式無法連線開發板)
檢視虛擬機器ip地址:
7.2.使用SSH進行遠端登入和檔案傳輸
-
首先使用
sshd
命令檢視開發板sshd狀態(如圖表示開啟):
-
在windows主機上使用xshell登入開發板
如果不想使用這種建立的方式,也可以直接使用命令:
ssh <使用者名稱>@<ip地址>
- 在windows主機上使用winscp通過ssh進行檔案傳輸
這樣就可以在windows主機和開發板之間傳遞檔案了(同樣,可以在windows主機和虛擬機器之間傳檔案)。
-
在虛擬機器Linux上使用ssh登入開發板
-
在虛擬機器Linux上使用ssh傳送檔案到開發板