『壹』 嵌入式系統開發為什麼要採用交叉編譯的方式
由於嵌入式系統資源匱乏,一般不能像PC一樣安裝本地編譯器和調試器,不能在本地編寫、編譯和調試自身運行的程序,而需藉助其它系統如PC來完成這些工作,這樣的系統通常被稱為宿主機。宿主機通常是linux系統,並安裝交叉編譯器、調試器等工具;宿主機也可以是Windows系統,安裝嵌入式Linux集成開發環境。在宿主機上編寫和編譯代碼,通過串口、網口或者硬體調試器將程序下載到目標系統裡面運行。所謂的交叉編譯,就是在宿主機平台上使用某種特定的交叉編譯器,為某種與宿主機不同平台的目標系統編譯程序,得到的程序在目標系統上運行而非在宿主機本地運行。這里的平台包含兩層含義:一是核心處理器的架構,二是所運行的系統,這樣,交叉編譯有3種情形:(1)目標系統與宿主機處理器相同,運行不同的系統;(2)目標系統與宿主機處理器不同,運行相同的系統;(3)目標系統與宿主機處理器不同,運行不同的系統。實際上,在PC機上進行非Linux的嵌入式開發,哪怕使用IDE集成環境如Keil、ADS、Realview,都是交叉編譯和調試的過程,只是IDE工具隱藏了細節,沒有明確提出這個概念而已。
『貳』 如何建立Linux系統下交叉編譯環境
基於Linux操作系統的應用開發環境一般是由目標系統硬體(開發板)和宿主PC機所構成。目標硬體開發板用於運行操作系統和系統應用軟體,而目標板所用到的操作系統的內核編譯、應用程序的開發和調試則需要通過宿主PC機來完成(所以稱為交叉編譯)。雙方之間一般通過串口,並口或乙太網介面建立連接關系。 但在此我建議構建如下的交叉編譯環境,適合個人或研發小組使用:單獨拿出一台PC機(PII以上即可,就用以前淘汰的舊機器就可以),在該PC上安裝桌面的Linux操作系統(如Red Hat Linux 8.0及以上),可以採用默認的安裝選項(注意要包含FTP服務),這台PC作為Linux伺服器,除管理員以外,一般不直接讓其他人去操作。 將該Linux伺服器接入區域網,並新建一些合法用戶,以便其他的PC機(在此我們將其稱為工作站)的合法用戶能訪問到Linux伺服器。而其他的PC機(工作站)仍然使用Windows操作系統,原來幹啥繼續幹啥。 需要的軟體工具包括: 1、FTP客戶端程序(如Cuteftp,可到網上下載)。 2、Telnet工具(如SecureCRT,可到網上下載)。 3、移植到某一特定ARM平台的Linux操作系統內核源碼(一般由銷售商整理提供)。
『叄』 怎樣編寫單片機的串口通信的程序,一般的步驟是怎麼樣
編寫串口通訊程序步驟為:
1、設置波特率
2、設置串口工作方式
3、收發數據。
比如:
main()
{
unsignedchardat;
TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
TR1=1;
SCON=0x50;
while(1)
{
while(RI==0);
RI=0;
dat=SBUF;
SBUF=~dat;
while(TI==0)
TI=0;
}
}
『肆』 如何構建交叉編譯環境。
你說的是我下面的回答嗎?下面就一些問題作一個說明,以期拋磚引玉。
基於Linux操作系統的應用開發環境一般是由目標系統硬體(開發板)和宿主PC機所構成。目標硬體開發板用於運行操作系統和系統應用軟體,而目標板所用到的操作系統的內核編譯、應用程序的開發和調試則需要通過宿主PC機來完成(所以稱為交叉編譯)。雙方之間一般通過串口,並口或乙太網介面建立連接關系。
但在此我建議構建如下的交叉編譯環境,適合個人或研發小組使用:單獨拿出一台PC機(PII以上即可,就用以前淘汰的舊機器就可以),在該PC上安裝桌面的Linux操作系統(如Red Hat Linux 8.0及以上),可以採用默認的安裝選項(注意要包含FTP服務),這台PC作為Linux伺服器,除管理員以外,一般不直接讓其他人去操作。
將該Linux伺服器接入區域網,並新建一些合法用戶,以便其他的PC機(在此我們將其稱為工作站)的合法用戶能訪問到Linux伺服器。而其他的PC機(工作站)仍然使用Windows操作系統,原來幹啥繼續幹啥。
需要的軟體工具包括:
1、FTP客戶端程序(如Cuteftp,可到網上下載)。
2、Telnet工具(如SecureCRT,可到網上下載)。
3、移植到某一特定ARM平台的Linux操作系統內核源碼(一般由銷售商整理提供)。
4、GNU編譯工具,可由相關網站下載,或由銷售商整理提供。
在工作站安裝:
在某工作站PC上安裝FTP客戶端程序和Telnet工具,安裝完畢後應該可以在該工作站PC和Linux伺服器之間進行文件的傳輸,並在工作站PC可以通過Telnet登陸到Linux伺服器(可能需要將Linux伺服器的防火牆服務關閉才能完成)。
在Linux伺服器安裝:
將工作站PC上的Linux操作系統內核源碼壓縮包和GNU編譯工具通過FTP傳送到Linux伺服器的某個目錄(如合法的用戶目錄),然後在該目錄下解壓,並將GNU編譯工具安裝到默認的工作目錄即可,以上工作通過在工作站PC使用Telnet工具完成,而不需要在Linux伺服器上進行。
Linux操作系統內核的編譯:
Linux操作系統內核的編譯一般有一個比較固定的步驟,會根據MakeFile文件的不同而略有差異,可參考相關文檔,編譯的工作在工作站PC使用Telnet工具完成。
『伍』 c語言怎麼實現串口通信
編程原理
程序1為查詢通信方式介面程序,為一典型的數據採集常式。其中bioscom()函數初始化COM1(此函數實際調用BIOS
INT
14H中斷0號功能)。這樣在程序中就避免了具體設置波特率因子等繁瑣工作,只需直接訪問發送/接收寄存器(3F8H)和線路狀態寄存
『陸』 vmware虛擬機如何使用串口
如何開啟VMware串口
先前在玩GEC2410時,有個想法,就是在linux下進行調試,由於目標板上電或復位時會發送信息給PC機的串口,這已在windows下實現過,於是想在linux下看看效果,可是當時我在linux下設好串口後,發現一點反應都沒有,當時以為是自己沒有安裝交叉編譯環境,於是昨天晚上把嵌入式 linux下的交叉編譯環境裝好後,心想這下應該可以拉,沒想到我上電目標板,linux下的串口一直沒有反應,郁悶,怎麼這樣呢,既然不適交叉編譯環境的原因,總得有個原因吧,於是我上網搜,先前我也夠笨的,怎麼就不知道上網查呢,呵呵,原來是我沒有把VMware的串口打開,呵呵,馬上關機[關虛擬機下的系統],在VM->Setting......->點擊ADD,把串口加進來,呵呵設置時盡量不要用自動檢測,要選中串口,反正即使你的虛擬系統啟動後可以隨便改的,同時要把串口設為啟動時就連接拉,這樣,linux下的串口在目標板上電或復位後收到和windows下一樣的數據,哈哈,爽!
環境:
宿主機:Windows7 VMware7.1
虛擬機:Fedora12
VMware的串口:
一個虛擬機最多可以添加四個虛擬串口,有如下幾個方法配置虛擬串口:
連接一個虛擬串口到宿主機的物理串口。
連接一個虛擬串口到宿主機上的一個文件。
在兩個虛擬機之間建立一個直接的連接,或者將虛擬機的串口與宿主機的應用程序連接。
為虛擬機添加串口
首先要保證虛擬機處於關機(power off)狀態,選擇菜單中的VM -> Settings... ,在Hardware標簽頁中點擊Add按鈕,在Add Hardware Wizard對話框中選擇Serial Port,點擊next,如圖:
然後要選擇Serial port type,共有三種類型:
1.如果你要使用宿主機的物理串口設備,選擇Use physical serial port on the host,然後點擊next,選擇你要使用的物理串口即可。
2.如果想要將串口數據輸出到一個文件,選擇 Output to file,然後next,選擇輸出文件,該文件是一個txt文本文件。啟動虛擬機後做個測試,在命令行中執行:
echo "asdf" >> /dev/ttyS0,
然後打開輸出文件,即可看到串口輸出的字元串asdf。
3.使用named pipe可以實現兩個虛擬機或虛擬機與宿主機的應用程序通過串口連接。選擇Output to named pipe,點擊next,進入如下界面:
輸入管道名,對於windows宿主機,管道名格式為 //./pipe/ ,必須以 //./pipe/開頭。
輸出調試信息到宿主機上的應用程序:
第一個下拉菜單選擇This end is the server或This end isthe client,在第二個下拉菜單選擇The other end is an application。
輸出調試信息到另一個虛擬機:
第一個下拉菜單選擇This end is the server,第二個下拉菜單選擇The other end is an application。
將兩個虛擬機用串口連接:
在虛擬機上安裝Fedora12和ubuntu10.04,為兩個虛擬機添加串口,
Fedora12的串口設置為:
Ubuntu10.04的串口設置為:
這樣設置後Fedora的串口為serial port 1,設備名為ttyS0,ubuntu的串口為serial port 2,設備名為ttyS1。
測試:
在Fedora下執行:
cat < /dev/ttyS0
在ubuntu下執行:
echo hello > /dev/ttyS1
在Fedora里可以看到收到的字元串hello,說明ubuntu發送和Fedora接收正常,可以互換後做同樣的測試。
語 法
statserial[必要參數][設備]
功 能
statserial 命令:顯示各個接腳的狀態,常用來判斷串口是否正常,Ctrl+C退出
類似命令: stat
相似命令: linux命令
執行許可權: 超級用戶 普通用戶
命令屬性: 網路通訊
參數
必要參數
-n 不循環顯示
-d 十進制顯示
-x 十六進制顯示
選擇參數
無
範例
範例1:顯示串口狀態
[root@linux ~]# statserial /dev/tty1
範例2:只顯示一次串口狀態
[root@linux ~]# statserial -n /dev/tty1
『柒』 求怎麼實現在Linux操作系統下的Qt界面程序通過串口與STM32通信
1、可以
2、qt Creator只是一個集成開發工具,這個版本隨意,網上下就可以,qte不是用最新,而是最好用跟你在Linux開台開發一樣的。首先要在Linux下交叉編譯qte的庫,然後再將Lib這些文件移植在板子上,最後通過交叉編譯好的庫去編譯你在pc上編寫的程序,放到板子上運行!關於交叉編譯qt的文章,網上可以搜到很多。
3、WIN7平台的交叉編譯工具安裝比較麻煩,不推薦使用,直接在Linux去下一個別人交叉工具包,直接解壓就好。。去友善的官網,或其他網站下這類的工具
『捌』 如何交叉編譯應用程序,技巧,注意事項
如果你程序中需要讀取某個文件夾下的文件則須注意:
假如你的所有文件都放在一個名為test的文件夾下,當然也包括main.cpp,同時程序需要讀取test/input文件夾下的文件,比如說圖片,這時在程序中路徑你就需按如下寫:input/(請注意這個斜線的方向)
不知道為什麼OpenCV程序中如果有imwirte、waitKey函數(不知道是哪個的原因還是都有),雖然交叉編譯會通過,但當你把編譯好的二進制可執行程序拷貝到ARM平台下執行,會出現錯誤。(可能是當初OpenCV庫交叉編譯時沒編譯完全,當然這主要是交叉編譯平台缺少某些軟體;也可能是ARM平台系統中缺少某些軟體造成的)