? 本文以POS嵌入式linux程序開發(fā)為例,講解了如下在Windows開發(fā)環(huán)境(Source Insight)下實現(xiàn),POS程序一鍵編譯下載。
以下是詳細(xì)教程:
嵌入式應(yīng)用開發(fā)一鍵編譯下載
眾所周知,嵌入式應(yīng)用的開發(fā)與通用PC應(yīng)用開發(fā)有些不太一樣,主要是因為嵌入式應(yīng)用它運行的環(huán)境是有特殊性的,它的運行環(huán)境并不是普通的PC環(huán)境,而是一個資源相對匱乏的嵌入式系統(tǒng),往往又不具備編譯程序的能力,所以在它的開發(fā)流程上,通常我們采用的方法是交叉編譯,即在宿主機(PC端主機)編碼、編譯,然后通過各種方式將應(yīng)用程序下載到嵌入式系統(tǒng)中運行驗證。有關(guān)嵌入式開發(fā),交叉編譯的方法,這里不在闡述,可自行了解。
本文重點介紹的是,如何在交叉編譯的基礎(chǔ)上,實現(xiàn)windows下編碼,之后一鍵完成程序編譯、下載到嵌入式系統(tǒng)的方法。
看到這里的客官,可能覺得不可思議,一鍵編譯下載?怎么可能?不相信的吃瓜群眾,且聽我細(xì)細(xì)道來。
【注:不帶WIFI或以太網(wǎng)模塊的POS機,或非調(diào)試版本鏡像的POS機,請點擊右上角叉叉】
-----------------------------------------------華麗麗的分界線----------------------------------------------------
一、開發(fā)環(huán)境介紹
本人的開發(fā)環(huán)境如下:
Windows主機:Win7專業(yè)版,64位操作系統(tǒng)
Linux主機:(宿主機)Red Hat Enterprise Linux6,安裝在VMware Workstation 7.0
linux內(nèi)核:[root@localhost ~]# uname -a
Linux localhost.localdomain 2.6.32-71.el6.i686 #1 SMP Wed Sep 1 01:26:34 EDT 2010 i686 i686 i386 GNU/Linux
嵌入式系統(tǒng):搭載ARM11處理器的定制linux系統(tǒng),內(nèi)核:Linux newpostech 2.6.32.65-bcm5892-secure #2 PREEMPT Mon May 25 10:53:57 CST 2015 armv6l GNU/Linux
Windows下代碼編譯IDE:Source Insgith 3.5 英文版
POS終端:NEW8210,帶GPRS+WIFI+以太網(wǎng)通訊能力
其他輔助工具:
putty.exe,版本 Release 0.67
plink.exe,版本 Release 0.67
pfstp.exe,版本 Release 0.67
二、網(wǎng)絡(luò)環(huán)境介紹
由于整一篇文章介紹的方法,都依賴于SSH協(xié)議的應(yīng)用,自然而然,網(wǎng)絡(luò)環(huán)境是必不可少的。
主要有3個方面的網(wǎng)絡(luò)環(huán)境,Windows系統(tǒng)的網(wǎng)絡(luò)、Linux宿主機的網(wǎng)絡(luò)、嵌入式系統(tǒng)(POS終端)的網(wǎng)絡(luò),三者的網(wǎng)絡(luò)情況至少滿足:Windows系統(tǒng)與嵌入式系統(tǒng)網(wǎng)絡(luò)互通,Windows系統(tǒng)與Linux宿主機網(wǎng)絡(luò)互通。三者關(guān)系拓?fù)鋱D如下所示:
?編輯
圖 1 關(guān)系拓?fù)鋱D
其中,windows主機和嵌入式系統(tǒng)要求網(wǎng)絡(luò)互相可達,是很容易實現(xiàn)的,比如兩者均連入同一個wifi熱點(前提是POS有配置wifi模塊),或者兩者接入同一臺交換機(或路由器的不同LAN口);即,只要保證兩者在同一個局域網(wǎng)內(nèi),即可實現(xiàn)網(wǎng)絡(luò)互達。
至于windows主機和linux主機網(wǎng)絡(luò)互達的設(shè)置,不同的虛擬機工具,可能設(shè)置的菜單不太一樣。不過,一般而言,windows主機和虛擬機網(wǎng)絡(luò)連接方式有4中,橋接方式Bridged、NAT(Network Address Translation,網(wǎng)絡(luò)地址轉(zhuǎn)換)、Host-Only、Custom自定義模式。常用的是前面兩種方式,本文介紹的是橋接方式Bridged,用這一種方式最大的好處就是,虛擬機主機與windows主機處于同一局域網(wǎng)內(nèi),具備與windows主機同樣地位的IP地址,相當(dāng)于一臺正式的網(wǎng)絡(luò)主機而存在。
以下是WM設(shè)置虛擬主機使用橋接方式聯(lián)網(wǎng)的設(shè)置方法。選中虛擬機中打開的主機列表,在菜單欄中VM---settings,然后在Hardware中的Network Adapter,右邊選項就可以看到相應(yīng)的選擇了,按圖中設(shè)置即可。設(shè)置成功后,可在linux下的終端上使用ifconfig命令,看下是否獲取到ip,有些情況下,重新設(shè)置了,需要重啟虛擬機。正常的時候,可以看到右上角的網(wǎng)絡(luò)圖標(biāo)正常,ifconfig查看網(wǎng)絡(luò)也獲取到了ip。
?編輯
?編輯
圖 2 VM設(shè)置橋接方式
?編輯
圖 3 linux虛擬主機ip地址查看
以下是我的開發(fā)環(huán)境,三者的網(wǎng)絡(luò)情況:
Windows主機,ip 192.168.1.92 (有線方式接入公司網(wǎng)絡(luò),未使用無線連接)
Linux主機(虛擬機),ip 192.168.1.80 (與windows主機橋接的方式)
POS主機(嵌入式系統(tǒng)),ip 192.168.2.92(wifi模式接入公司統(tǒng)一熱點);雖然它和windows主機192.168.1.92不再同一個子網(wǎng),但是公司上層路由器有做兩者的轉(zhuǎn)發(fā),故網(wǎng)絡(luò)是互通的,這也解釋了為何筆記本主機連入公司熱點也可以訪問內(nèi)網(wǎng)的原因。
三者做網(wǎng)通互通ping測試,結(jié)果如圖5所示:注意關(guān)閉防火墻。
?編輯
圖 4 網(wǎng)絡(luò)ping測試
至此,網(wǎng)絡(luò)環(huán)境已基本搭建完成。只有當(dāng)這一步成功后,往下的操作才有可能是成功的。另外,需要特別注意的是GPRS/CDMA的機器(僅帶GPRS或CDMA模塊,不帶wifi和以太網(wǎng)模塊的),由于其IP地址是在ppp撥號時,由運營商臨時分配的一個子網(wǎng)(局域網(wǎng))IP,這個IP通常外面的網(wǎng)絡(luò)設(shè)備時不能訪問的,所以這種機器是無法試用此方法的。
三、SSH協(xié)議介紹
(一) SSH協(xié)議
以下是摘自bing網(wǎng)典對SSH的簡要介紹:
SSH 為Secure Shell的縮寫,由IETF的網(wǎng)絡(luò)工作小組(Network Working Group)所制定;SSH 為建立在應(yīng)用層和傳輸層基礎(chǔ)上的安全協(xié)議。SSH 是目前較可靠,專為遠(yuǎn)程登錄會話和其他網(wǎng)絡(luò)服務(wù)提供安全性的協(xié)議。利用 SSH 協(xié)議可以有效防止遠(yuǎn)程管理過程中的信息泄露問題。SSH最初是UNIX系統(tǒng)上的一個程序,后來又迅速擴展到其他操作平臺。SSH在正確使用時可彌補網(wǎng)絡(luò)中的漏洞。SSH客戶端適用于多種平臺。幾乎所有UNIX平臺—包括HP-UX、Linux、AIX、Solaris、DigitalUNIX、Irix,以及其他平臺,都可運行SSH。
通常來說,SSH專為遠(yuǎn)程登入并管理主機而存在的。本文所要介紹的方法,都是基于這個協(xié)議來完成的。
至于,SSH服務(wù)器的安裝方法,可自行網(wǎng)絡(luò)了解并實踐,本文不再闡述。后續(xù)的介紹中,默認(rèn)宿主機Linux環(huán)境和嵌入式Linux環(huán)境均已安裝好SSH服務(wù)器環(huán)境,即要求從Windows主機通過22號端口(SSH協(xié)議的默認(rèn)端口),登入到宿主機Linux環(huán)境和嵌入式Linux環(huán)境。如下測試:
?編輯
圖 5 宿主機linux系統(tǒng)下看ssh服務(wù)器sshd的運行狀態(tài)及22號端口的狀態(tài)
?編輯
圖 6 嵌入式linux系統(tǒng)(POS機)下看ssh服務(wù)器sshd的運行狀態(tài)及22號端口的狀態(tài)
從上面的測試可知,兩個linux系統(tǒng)都在運行sshd,并且22端口也都處于被監(jiān)聽狀態(tài)。下面就22號端口,測試一下ssh服務(wù)是否打開。
?編輯
?編輯
Windows主機通過ssh登入宿主機Linux系統(tǒng),成功后可看到光標(biāo)在跳動
?編輯
?編輯
Windows主機通過ssh登入嵌入式Linux系統(tǒng)(pos機),成功后可看到光標(biāo)在跳動
以上是通過windows下自帶的cmd窗口,利用telnet命令做的測試。
(二) putty工具
下面介紹一個專門的SSH客戶端登入程序,putty。這個工具在業(yè)界很有名,由于其體積小,速度快,綠色,可免安裝等優(yōu)勢,受到很大用戶群的追捧。putty本身是帶界面的,而由此工具延伸出來,plink、pscp、psftp等工具都是命令行下運行的,不帶界面的。它們的存在,恰好解決了需要用腳本來完成一些自動化操作的利器。而plink、psftp則是本文借助的主要工具。
putty等工具,可從Download PuTTY: latest release (0.76) 網(wǎng)頁中下載得到,通過該網(wǎng)頁也可以了解putty相關(guān)的前前后后的東西。
關(guān)于putty工具的操作,可自行上網(wǎng)檢索相應(yīng)的操作指導(dǎo)手冊,本文不再闡述。以下簡易介紹下plink和psftp的命令,熟悉這段字段之后,就可以自行編寫腳本實現(xiàn)自動化操作。
(三) plink工具
plink:命令行方式,通過ssh協(xié)議遠(yuǎn)程連接主機,可接受參數(shù)輸入,它的參數(shù)列表:
Plink: command-line connection utility
Release 0.67
Usage: plink [options] [user@]host [command]
("host" can also be a PuTTY saved session name)
Options:
-V print version information and exit
-pgpfp print PGP key fingerprints and exit
-v show verbose messages
-load sessname Load settings from saved session
-ssh -telnet -rlogin -raw -serial force use of a particular protocol
-P port connect to specified port
-l user connect with specified username
-batch disable all interactive prompts
-sercfg configuration-string (e.g. 19200,8,n,1,X)
Specify the serial configuration (serial only)
The following options only apply to SSH connections:
-pw passw login with specified password
-D [listen-IP:]listen-port Dynamic SOCKS-based port forwarding
-L [listen-IP:]listen-port:host:port Forward local port to remote address
-R [listen-IP:]listen-port:host:port Forward remote port to local address
-X -x enable / disable X11 forwarding
-A -a enable / disable agent forwarding
-t -T enable / disable pty allocation
-1 -2 force use of particular protocol version
-4 -6 force use of IPv4 or IPv6
-C enable compression
-i key private key file for user authentication
-noagent disable use of Pageant
-agent enable use of Pageant
-hostkey aa:bb:cc:... manually specify a host key (may be repeated)
-m file read remote command(s) from file
-s remote command is an SSH subsystem (SSH-2 only)
-N don't start a shell/command (SSH-2 only)
-nc host:port open tunnel in place of session (SSH-2 only)
-sshlog file
-sshrawlog file log protocol details to a file
我們不必了解全部的命令,僅需了解常用的幾個即可:
-V (大寫的V)顯示plink版本信息
-P (大寫的P)ssh協(xié)議的端口,默認(rèn)為22,不傳值自動使用22
-l 用戶名,即用于登入遠(yuǎn)程主機的用戶名,如user0
-pw 用戶名密碼,即用于登入遠(yuǎn)程主機的用戶名對應(yīng)的用戶密碼,如appuser0;
注意:這里的密碼是明文的,安全性有待考究,僅供下載調(diào)試程序,沒有問題。
-ssh 表示使用ssh協(xié)議
User@host_ip,用戶名+遠(yuǎn)程主機ip
在最后可以跟隨一串命令組,可實現(xiàn)遠(yuǎn)程登入主機后就執(zhí)行這一串命令。
如,登入宿主機linux的腳本命令為:(最后的命令組,命令直接用;號隔開)
"D:\my_putty\plink.exe" -ssh -pw comtop root@192.168.1.80 echo hello, remote host; echo bye-bye, remote host
測試結(jié)果如下:
?編輯
在執(zhí)行完傳入的命令后,登入動作自動退出。
注意:這里"D:\my_putty\plink.exe"加了雙引號,是為了防止路徑中有空格(windows下路徑運行有空格,如D:\Program Files (x86)\)。
(四) psftp工具
psftp:命令行方式,通過sftp協(xié)議(疊加了ssh協(xié)議的ftp協(xié)議)將本地的文件與遠(yuǎn)程主機的文件進行交互(上傳或下載),同時也支持登入到遠(yuǎn)程主機后,執(zhí)行若干命令操作。它的參數(shù)列表如下:
PuTTY Secure File Transfer (SFTP) client
Release 0.67
Usage: psftp [options] [user@]host
Options:
-V print version information and exit
-pgpfp print PGP key fingerprints and exit
-b file use specified batchfile
-bc output batchfile commands
-be don't stop batchfile processing if errors
-v show verbose messages
-load sessname Load settings from saved session
-l user connect with specified username
-P port connect to specified port
-pw passw login with specified password
-1 -2 force use of particular SSH protocol version
-4 -6 force use of IPv4 or IPv6
-C enable compression
-i key private key file for user authentication
-noagent disable use of Pageant
-agent enable use of Pageant
-hostkey aa:bb:cc:... manually specify a host key (may be repeated)
-batch disable all interactive prompts
-sshlog file
-sshrawlog file log protocol details to a file
從參數(shù)列表上看,與plink差不多,我們也不必了解全部,熟悉常用幾個即可。
-V (大寫的V)顯示plink版本信息
-P (大寫的P)ssh協(xié)議的端口,默認(rèn)為22,不傳值自動使用22
-l 用戶名,即用于登入遠(yuǎn)程主機的用戶名,如user0
-pw 用戶名密碼,即用于登入遠(yuǎn)程主機的用戶名對應(yīng)的用戶密碼,如appuser0
注意:這里的密碼是明文的,安全性有待考究,僅供下載調(diào)試程序,沒有問題。
User@host_ip,用戶名+遠(yuǎn)程主機ip
-b batch.file 這個是區(qū)別于plink的一個參數(shù),通過-b可傳入一個批處理文件,文件里面可以羅列一系列的命令,自然可以包含下載/上傳多個文件。
下面是psftp批處理文件中支持的命令列表:不在此列的命令則不支持,比如常用的rm命令就不支持。
psftp> help
! run a local command
bye finish your SFTP session
cd change your remote working directory
chmod change file permissions and modes
close finish your SFTP session but do not quit PSFTP
del delete files on the remote server
dir list remote files
exit finish your SFTP session
get download a file from the server to your local machine
help give help
lcd change local working directory
lpwd print local working directory
ls list remote files
mget download multiple files at once
mkdir create directories on the remote server
mput upload multiple files at once
mv move or rename file(s) on the remote server
open connect to a host
put upload a file from your local machine to the server
pwd print your remote working directory
quit finish your SFTP session
reget continue downloading files
ren move or rename file(s) on the remote server
reput continue uploading files
rm delete files on the remote server
rmdir remove directories on the remote server
其中標(biāo)紅的這幾個為常用命令。
如,將本地目錄d:\my_putty下的test0.txt和tmp.cmd文件下載到嵌入式linux系統(tǒng)的/home/user0/目錄下為:
tmp.cmd批處理文件的內(nèi)容如下:
cd /home/user0/
put D:\my_putty\test0.txt
put D:\my_putty\tmp.cmd
close
執(zhí)行的腳本命令為:
"D:\my_putty\psftp.exe" -pw appuser0 user0@192.168.2.92 -b tmp.cmd
"D:\my_putty\psftp.exe" -pw appuser0 user0@192.168.2.61 -b tmp.cmd
注意當(dāng)tmp.cmd使用相對路徑時,務(wù)必保證它處于執(zhí)行目錄下,否則可能會報“Fatal: unable to open tmp.cmd”
正常執(zhí)行結(jié)果如下:
D:\my_putty>"D:\my_putty\psftp.exe" -pw appuser0 user0@192.168.2.92 -b tmp.cmd
Using username "user0".
Remote working directory is /home/user0
Remote directory is now /home/user0
local:D:\my_putty\test0.txt => remote:/home/user0/test0.txt
local:D:\my_putty\tmp.cmd => remote:/home/user0/tmp.cmd
我們回到嵌入式linux(POS里面看下文件是不是真的下載完成了),如下:
[user0@newpostech Manage]$
[user0@newpostech Manage]$ ls -al /home/user0/test0.txt /home/user0/tmp.cmd
-rw-r--r-- 1 user0 user0 1006 Nov 21 16:45 /home/user0/test0.txt
-rw-r--r-- 1 user0 user0 78 Nov 21 16:45 /home/user0/tmp.cmd
從時間上看,正好是剛剛下載進去的文件,那么就代表執(zhí)行成功了。當(dāng)然,在執(zhí)行命令的過程中,若出現(xiàn)錯誤,也會有相應(yīng)的錯誤提示。
四、 Windows BAT批處理文件
有了以上的知識做鋪墊,到了這里,就簡單多了,僅僅是將上面手動輸入?yún)?shù)啟動plink和psftp的過程,用windows的BAT批處理來實現(xiàn)而已。
(一) BAT批處理文件的編寫
為了下文做鋪墊,這樣還是簡單介紹一下windows的BAT批處理文件。這方面的教程也很多,這里不多闡述,僅僅介紹幾點:
set param=123 這個是定義一個變量,它的值為123,字符串格式,注意=兩邊不能有空格
::這些是注釋的內(nèi)容,不會被執(zhí)行
echo this is debug info 用于打印提示信息
echo %param% 打印param參數(shù)的值,其中%參數(shù)名%表示取變量的值
@echo %param% 打印param參數(shù)的值,但是命令本身不回顯,與上一句區(qū)分開來
exit 批處理執(zhí)行退出
:top 代碼段標(biāo)號,供goto語句使用,注意是一個: 不是兩個
goto top 配合上面的代碼段標(biāo)識使用
%1 %2 %3 執(zhí)行批處理腳本時,傳入的第1/2/3個參數(shù)的值
start “” /max another.bat 從一個bat文件中啟動另一個bat文件,/max表示啟動的時候窗口最大化
五、編譯下載的BAT批處理文件實現(xiàn)
有了上面BAT文件編寫知識的鋪墊,實現(xiàn)編譯下載的BAT批處理就簡單多了。實現(xiàn)的思路就是:
- 配置好宿主機linux、嵌入式linux的用戶名、密碼、ip等信息后,從windows下啟動該BAT批處理;
- 先使用plink遠(yuǎn)程登入進入宿主機linux系統(tǒng),切換到源碼對應(yīng)的工程目錄(這里涉及一個windows與虛擬機共享目錄的問題,自行了解并實踐,默認(rèn)工程是放在共享目錄里面),然后執(zhí)行make命令;之后,再講編譯出來的可執(zhí)行文件拷貝到另一個上傳/下載專用的共享目錄中,再退出plink;若編譯失敗,則提示出錯信息;當(dāng)然,這里不講生成的可執(zhí)行文件拷貝到共享目錄也可以,只是拷貝到統(tǒng)一路徑后,后面的步驟寫起來相對容易點;
- 使用psftp遠(yuǎn)程登入嵌入式linux(POS機),傳入生成的tmp.cmd批處理文件,該文件里面寫好了,該將什么文件下載到POS機的什么路徑下,是動態(tài)生成的,無需編寫tmp.cmd;下載完成了,執(zhí)行close,退出psftp;
- 回到windows BAT批處理,提示成功信息,之后,退出批處理,整一個過程完成。
BAT文件的詳細(xì)內(nèi)容見范例,ys_make_plink_pscp.bat,里面已包含少量注釋,可配合閱讀。
運行效果如下:
?編輯
圖 7 編譯下載BAT批處理運行效果
六、一鍵編譯下載的實現(xiàn)
從第五大點之后,BAT批處理文件就已經(jīng)生成了,此種情況下,只要雙擊該BAT批處理文件,即可實現(xiàn)編譯下載的功能了,此過程將自動去完成,BAT文件存放的位置也不用特意關(guān)注,任意路徑均可。
下面,就結(jié)合Source Insight來配合實現(xiàn)一鍵編譯下載,其實原理也很簡單,只要在Source Insight中配置一個自定義的快捷鍵,按下該快捷鍵自動執(zhí)行上面編寫好的BAT文件,那么對于編寫代碼的開發(fā)人員而言,就已經(jīng)實現(xiàn)了,一鍵編譯下載。
Source Insight設(shè)置自定義快捷的方法如下:
1.打開Source Insight工程,點擊options,選擇Custom Commands,通過這個設(shè)置一個自定義的功能;
?編輯
2.點擊Add按鈕,在提示框中輸入新定義的命令的名字,之后按OK;
?編輯
3.按如圖設(shè)置,位置1中Run必須輸入全路徑;位置2中Dir務(wù)必輸入該bat文件處于的目錄;位置3中,建議此消選中,這樣執(zhí)行完bat后,就不會等待輸入,而是直接關(guān)閉窗口;位置4,在設(shè)置完1/2/3后,可點擊Run來看下效果,而這個效果就是最終的效果,如果點擊run提示錯誤,則應(yīng)根據(jù)提示的錯誤,去解決。如果運行正常,則可以得到類似于雙擊bat批處理文件運行相同的結(jié)果;
?編輯
4.綁定該功能到相應(yīng)的菜單中,點擊Menu選項,如圖:在Menu的下拉框中,選中需要添加到的菜單,比如我這里選中work菜單,第2,選中end of menu,按下Inert,,再按OK,即可將該功能添加到work菜單中,效果如下圖;
?編輯
?編輯
5.為該功能綁定一個快捷鍵,再次回到options—custom commands,選中剛剛的my-make-command,點擊右下角的Keys:點擊Assign New Key,之后會提示你輸入你的新綁定的按鍵值,如果該鍵值在原來的設(shè)置有使用,能會提示你是否強制覆蓋;最好設(shè)置一個較為冷門的鍵值,當(dāng)然它也支持組合鍵的輸入,之后就可以在看到框框里面顯示新綁定的鍵值了;
?編輯
?編輯
?編輯
6.回到工程主界面,選中work菜單,即可看到新增的my-make-command,后面對應(yīng)的快捷鍵就是剛剛綁定的F11了。
?編輯
7.快捷鍵測試,在工程主界面,按下快捷鍵F11,則可以看到BAT批處理文件的執(zhí)行,也就表示正在執(zhí)行編譯—下載流程了。
七、 Q&A
至此,整一個教程介紹完畢,可能在真正的實踐過程中,還是遇到這樣那樣的問題,但是沒有關(guān)系,只要理解了其中的原理,配合出錯的提示信息,相信大家都可以解決的。
以下羅列了一些,在教程實踐中常見的問題,僅供參考:
- 首次通過SSH登入遠(yuǎn)程主機,提示信息如下
?編輯
解答:此問題勿用擔(dān)心,直接輸入y再敲回車即可。該流程是SSH協(xié)議必須要做的一個操作。
2.POS僅有GPRS/CDMA模塊,不具備WIFI和以太網(wǎng)模塊,該教程是否使用?
解答:不適用。務(wù)必保證有WIFI模塊或以太網(wǎng)模塊。
3.當(dāng)前windows開發(fā)環(huán)境沒有網(wǎng)絡(luò),能適用該教程么?
解答:不適用。務(wù)必保證有網(wǎng)絡(luò)環(huán)境,詳見網(wǎng)絡(luò)拓?fù)潢P(guān)系圖。
4.正式版本鏡像的POS機,帶WIFI或以太網(wǎng)模塊,該教材適用么?
解答:不一定適用。正式版本鏡像的機器,在開機后,默認(rèn)沒有將sshd服務(wù)運行起來,可通過調(diào)試串口進入控制臺,手動將sshd跑起來,命令如下 /etc/init.d/sshd start。
5.若要編譯多個工程的時候,能否也采用該教程?
解答:此教程的原理是通用的,至于登入主機后執(zhí)行什么命令,做什么操作,完全由自己編寫的腳本去實現(xiàn)。
6.宿主機linux和嵌入式linux的ip是一直不變的么?
解答:這個取決于網(wǎng)絡(luò)環(huán)境,一般而言,宿主機與windows主機采用橋接方式,自動開機后,它的ip是不會變的,而嵌入式linux因為是使用wifi連入局域網(wǎng),可能會因為網(wǎng)絡(luò)不穩(wěn)定,導(dǎo)致wifi掉線,然后再連接的時候,自動獲取的ip就變了。
7.出現(xiàn)連接被拒絕或連接超時的情況,是怎么回事?如圖
?編輯
解答:這個一般是由于遠(yuǎn)程主機的ip變了,需要重新在bat文件中配置下遠(yuǎn)程主機的ip地址。可通過ping工具配合排查,是否為網(wǎng)絡(luò)不通的情況。
--------------------------------------------華麗麗的分界線-------------------------------------------------------
教程結(jié)束,有興趣的,可私下溝通。謝謝。
下載附件:putty等工具 從這里下載Download PuTTY: latest release (0.76)
1 ::This is a bat file which for logining on linux-host by putty in cmd-line with ssh2 protocol.
2 ::When windows host login on linux-host, it will excute some cmds list in -m ***.sh.
3 ::In this, it will be a make cmd for make out excuteable files in pos.
4
5 ::::::::::::::::::::::::::::: help ::::::::::::::::::::::::::::::::::::::::::::::::::::
6 ::Tips for configuration
7 ::There are only some params need to be configured. Here the list :
8 ::pro_app_name, configure for your make-app name
9 ::pro_path, configure for your make-app source project path in compile-linux host
10 ::host_upload_path, configure for your own share upload path in in compile-linux host
11 ::local_upload_path, configure your own share upload path in youe local windows host
12 ::usually, host_upload_path = local_upload_path, through VMware-shared filesystem
13 ::plink_host_ip, your compile-linux host ip address
14 ::plink_user, user for login compile-linux host
15 ::plink_pwd, passwd for user who login compile-linux host
16 ::plink_exe, plink.exe locate path in local windows host
17 ::pscp_ip, your pos-linux host ip address
18 ::pscp_user, user for login pos-linux host
19 ::pscp_pwd, passwd for user who login pos-linux host
20 ::pscp_remote_path, the pro_app_name locate path in pos-linux host
21 ::psftp_exe, psftp.exe locate path in local windows host
22 ::Other params can be always the same
23 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
24
25 ::Here is the begin of the BAT process
26 @echo off
27
28 ::set new windows run in max-windows=size :: "%~nx0" is its own app
29 ::echo "%1"
30 if "%1" == "max" goto top
31 start "tmp window" /max "%~nx0" max
32 ::echo "%~nx0"
33 ::pause
34 exit
35 :top
36
37 ::start /max
38 ::set cmd windows size (cols * lines)
39 mode con cols=100 lines=3000
40 ::set disp font in cmd window to utf-8 format
41 chcp 65001
42
43 ::The tile for every project
44 ::title POS程序---》編譯---》下載
45
46 ::Some configretion for bat excute ::No space in the two side of "="
47 ::Set again for every project
48 ::The path is in your linux-compile-host
49 set pro_app_name=YsChnBank
50 set pro_path=/share/ys_tms/
51 set host_upload_path=/share/test_upload/upload/
52 set local_upload_path=D:\VMwareShare\test_upload\upload\
53 set make_cmd=make
54 set cp_app_2_upload=cp ./Release/%pro_app_name% %host_upload_path%
55 set ok_tips=echo -e "%pro_app_name% project is compiled ok !!!!"
56 set err_tips=echo -e "%pro_app_name% project is compiled error, getting key input ..."; getkey
57 set input_cmd_list=cd %pro_path%;%make_cmd%;if [ $? = 0 ];then %cp_app_2_upload%; %ok_tips% ;else %err_tips%; fi
58
59 ::Usually set one time is ok
60 ::The ip for your linux-compile-host will be changed in sometimes.
61 set plink_host_ip=192.168.1.80
62 set plink_user=root
63 set plink_pwd=mypasswd
64 ::Set your own path
65 set plink_exe=D:\my_putty\plink.exe
66
67 @echo on
68 ::use plink.exe (the cmd mode for putty) :: unsupported -load %putty_config%
69 ::-m .sh_param input mode
70 ::set putty_param_file=D:\my_putty\make.sh
71 ::%plink_exe% -ssh -pw %ssh_user_pwd% %ssh_user%@%ssh_host_ip% -m %putty_param_file%
72 ::echo "%plink_exe%" -ssh -pw %plink_pwd% %plink_user%@%plink_host_ip% %input_cmd_list% > 1234.txt
73 ::all only cmd input mode
74 "%plink_exe%" -ssh -pw %plink_pwd% %plink_user%@%plink_host_ip% %input_cmd_list%
75
76 @echo off
77 ::Check cmd excute ok ?
78 ::if %ERRORLEVEL% EQU 0 (echo success) else (echo fail)
79
80 @echo Begin to download %pro_app_name% to remote-linux-host ...
81
82 @echo off
83 ::Some configretion for upload app to pos-linux-host
84 set pscp_ip=192.168.2.61
85 set pscp_user=user0
86 set pscp_pwd=yourpasswd
87 ::config the app located path
88 set pscp_remote_path=/home/%pscp_user%/YsChnBank/
89 set pscp_exe=D:\my_putty\pscp.exe
90 set psftp_exe=D:\my_putty\psftp.exe
91
92 @echo on
93 ::Call pscp.exe. It only upload one file in one time !
94 ::"%pscp_exe%" -pw %pscp_pwd% "%local_upload_path%%pro_app_name%" %pscp_user%@%pscp_ip%:%pscp_remote_path%
95
96 ::create tmp batch_file for psftp
97 @echo off
98 set tmp_cmd=tmp.cmd
99 echo cd %pscp_remote_path% > %tmp_cmd%
100 echo del %pscp_remote_path%%pro_app_name% >> %tmp_cmd%
101 echo !@echo before upload, time %time% >> %tmp_cmd%
102 echo put %local_upload_path%%pro_app_name% >> %tmp_cmd%
103 echo !@echo before upload, time %time% >> %tmp_cmd%
104 ::echo put %local_upload_path%FinalData_cn.rar >> %tmp_cmd%
105 echo !@echo after upload, time %time% >> %tmp_cmd%
106 echo chmod a+x %pscp_remote_path%%pro_app_name% >> %tmp_cmd%
107 ::echo echo "uploading files ..." > %tmp_cmd%
108 ::echo cd /home/user0/ >> %tmp_cmd%
109 ::echo rmdir /home/user0/test123/ >> %tmp_cmd%
110 ::echo del /home/user0/test.test >> %tmp_cmd%
111 echo close >> %tmp_cmd%
112 ::set the tmp cmd file hidden
113 ::@attrib +s +r +a +h %tmp_cmd%
114
115 ::call psftp.exe for upload some files together
116 ::Can't disp the download percentage what has been done.
117 @echo on
118 @echo cur time %time%
119 ::echo "%psftp_exe%" -pw %pscp_pwd% %pscp_user%@%pscp_ip% -b %tmp_cmd% > 123456.txt
120 "%psftp_exe%" -pw %pscp_pwd% %pscp_user%@%pscp_ip% -b %tmp_cmd%
121 ::"%psftp_exe%" -pw %pscp_pwd% %pscp_user%@%pscp_ip% -b "D:\my_putty\tmp.cmd"
122 @echo cur time %time%
123
124 ::clear tmp cmd file
125 @attrib -s -r -a -h %tmp_cmd%
126 @del %tmp_cmd%
127
128 @pause
129 exit
Windows下批處理文件demo
審核編輯 黃昊宇
?
-
WINDOWS
+關(guān)注
關(guān)注
3文章
3524瀏覽量
88432 -
嵌入式技術(shù)
+關(guān)注
關(guān)注
10文章
360瀏覽量
35653 -
POS
+關(guān)注
關(guān)注
3文章
119瀏覽量
28291 -
編譯
+關(guān)注
關(guān)注
0文章
654瀏覽量
32809
發(fā)布評論請先 登錄
相關(guān)推薦
評論