色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

嵌入式應用程序開發Windows環境一鍵編譯下載

嵌入式物聯網開發 ? 來源: 嵌入式物聯網開發 ? 作者: 嵌入式物聯網開發 ? 2022-08-27 12:55 ? 次閱讀

? 本文以POS嵌入式linux程序開發為例,講解了如下在Windows開發環境(Source Insight)下實現,POS程序一鍵編譯下載

以下是詳細教程


嵌入式應用開發一鍵編譯下載

眾所周知,嵌入式應用的開發與通用PC應用開發有些不太一樣,主要是因為嵌入式應用它運行的環境是有特殊性的,它的運行環境并不是普通的PC環境,而是一個資源相對匱乏的嵌入式系統,往往又不具備編譯程序的能力,所以在它的開發流程上,通常我們采用的方法是交叉編譯,即在宿主機(PC端主機)編碼、編譯,然后通過各種方式將應用程序下載到嵌入式系統中運行驗證。有關嵌入式開發,交叉編譯的方法,這里不在闡述,可自行了解。

本文重點介紹的是,如何在交叉編譯的基礎上,實現windows下編碼,之后一鍵完成程序編譯、下載到嵌入式系統的方法。

看到這里的客官,可能覺得不可思議,一鍵編譯下載?怎么可能?不相信的吃瓜群眾,且聽我細細道來。

【注:不帶WIFI或以太網模塊的POS機,或非調試版本鏡像的POS機,請點擊右上角叉叉】

-----------------------------------------------華麗麗的分界線----------------------------------------------------

一、開發環境介紹

本人的開發環境如下:

Windows主機:Win7專業版,64位操作系統

Linux主機:(宿主機)Red Hat Enterprise Linux6,安裝在VMware Workstation 7.0

linux內核:[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

嵌入式系統:搭載ARM11處理器的定制linux系統,內核: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+以太網通訊能力

其他輔助工具:

putty.exe,版本 Release 0.67

plink.exe,版本 Release 0.67

pfstp.exe,版本 Release 0.67

二、網絡環境介紹

由于整一篇文章介紹的方法,都依賴于SSH協議的應用,自然而然,網絡環境是必不可少的。

主要有3個方面的網絡環境,Windows系統的網絡、Linux宿主機的網絡、嵌入式系統(POS終端)的網絡,三者的網絡情況至少滿足:Windows系統與嵌入式系統網絡互通,Windows系統與Linux宿主機網絡互通。三者關系拓撲圖如下所示:

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?編輯

圖 1 關系拓撲圖

其中,windows主機和嵌入式系統要求網絡互相可達,是很容易實現的,比如兩者均連入同一個wifi熱點(前提是POS有配置wifi模塊),或者兩者接入同一臺交換機(或路由器的不同LAN口);即,只要保證兩者在同一個局域網內,即可實現網絡互達。

至于windows主機和linux主機網絡互達的設置,不同的虛擬機工具,可能設置的菜單不太一樣。不過,一般而言,windows主機和虛擬機網絡連接方式有4中,橋接方式Bridged、NAT(Network Address Translation,網絡地址轉換)、Host-Only、Custom自定義模式。常用的是前面兩種方式,本文介紹的是橋接方式Bridged,用這一種方式最大的好處就是,虛擬機主機與windows主機處于同一局域網內,具備與windows主機同樣地位的IP地址,相當于一臺正式的網絡主機而存在。

以下是WM設置虛擬主機使用橋接方式聯網的設置方法。選中虛擬機中打開的主機列表,在菜單欄中VM---settings,然后在Hardware中的Network Adapter,右邊選項就可以看到相應的選擇了,按圖中設置即可。設置成功后,可在linux下的終端上使用ifconfig命令,看下是否獲取到ip,有些情況下,重新設置了,需要重啟虛擬機。正常的時候,可以看到右上角的網絡圖標正常,ifconfig查看網絡也獲取到了ip。

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?編輯

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?編輯

圖 2 VM設置橋接方式

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?編輯

圖 3 linux虛擬主機ip地址查看

以下是我的開發環境,三者的網絡情況:

Windows主機,ip 192.168.1.92 (有線方式接入公司網絡,未使用無線連接)

Linux主機(虛擬機),ip 192.168.1.80 (與windows主機橋接的方式)

POS主機(嵌入式系統),ip 192.168.2.92(wifi模式接入公司統一熱點);雖然它和windows主機192.168.1.92不再同一個子網,但是公司上層路由器有做兩者的轉發,故網絡是互通的,這也解釋了為何筆記本主機連入公司熱點也可以訪問內網的原因。

三者做網通互通ping測試,結果如圖5所示:注意關閉防火墻。

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?編輯

圖 4 網絡ping測試

至此,網絡環境已基本搭建完成。只有當這一步成功后,往下的操作才有可能是成功的。另外,需要特別注意的是GPRS/CDMA的機器(僅帶GPRS或CDMA模塊,不帶wifi和以太網模塊的),由于其IP地址是在ppp撥號時,由運營商臨時分配的一個子網(局域網)IP,這個IP通常外面的網絡設備時不能訪問的,所以這種機器是無法試用此方法的。

三、SSH協議介紹

(一) SSH協議

以下是摘自bing網典對SSH的簡要介紹:

SSH 為Secure Shell的縮寫,由IETF的網絡工作小組(Network Working Group)所制定;SSH 為建立在應用層和傳輸層基礎上的安全協議。SSH 是目前較可靠,專為遠程登錄會話和其他網絡服務提供安全性的協議。利用 SSH 協議可以有效防止遠程管理過程中的信息泄露問題。SSH最初是UNIX系統上的一個程序,后來又迅速擴展到其他操作平臺。SSH在正確使用時可彌補網絡中的漏洞。SSH客戶端適用于多種平臺。幾乎所有UNIX平臺—包括HP-UX、Linux、AIX、Solaris、DigitalUNIX、Irix,以及其他平臺,都可運行SSH。

通常來說,SSH專為遠程登入并管理主機而存在的。本文所要介紹的方法,都是基于這個協議來完成的。

至于,SSH服務器的安裝方法,可自行網絡了解并實踐,本文不再闡述。后續的介紹中,默認宿主機Linux環境和嵌入式Linux環境均已安裝好SSH服務器環境,即要求從Windows主機通過22號端口(SSH協議的默認端口),登入到宿主機Linux環境和嵌入式Linux環境。如下測試:

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?編輯

圖 5 宿主機linux系統下看ssh服務器sshd的運行狀態及22號端口的狀態

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?編輯

圖 6 嵌入式linux系統(POS機)下看ssh服務器sshd的運行狀態及22號端口的狀態

從上面的測試可知,兩個linux系統都在運行sshd,并且22端口也都處于被監聽狀態。下面就22號端口,測試一下ssh服務是否打開。

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?編輯

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?編輯

Windows主機通過ssh登入宿主機Linux系統,成功后可看到光標在跳動

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?編輯

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?編輯

Windows主機通過ssh登入嵌入式Linux系統(pos機),成功后可看到光標在跳動

以上是通過windows下自帶的cmd窗口,利用telnet命令做的測試。

(二) putty工具

下面介紹一個專門的SSH客戶端登入程序,putty。這個工具在業界很有名,由于其體積小,速度快,綠色,可免安裝等優勢,受到很大用戶群的追捧。putty本身是帶界面的,而由此工具延伸出來,plink、pscp、psftp等工具都是命令行下運行的,不帶界面的。它們的存在,恰好解決了需要用腳本來完成一些自動化操作的利器。而plink、psftp則是本文借助的主要工具。

putty等工具,可從Download PuTTY: latest release (0.76) 網頁中下載得到,通過該網頁也可以了解putty相關的前前后后的東西。

關于putty工具的操作,可自行上網檢索相應的操作指導手冊,本文不再闡述。以下簡易介紹下plink和psftp的命令,熟悉這段字段之后,就可以自行編寫腳本實現自動化操作。

(三) plink工具

plink:命令行方式,通過ssh協議遠程連接主機,可接受參數輸入,它的參數列表:

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
poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

我們不必了解全部的命令,僅需了解常用的幾個即可:

-V (大寫的V)顯示plink版本信息

-P (大寫的P)ssh協議的端口,默認為22,不傳值自動使用22

-l 用戶名,即用于登入遠程主機的用戶名,如user0

-pw 用戶名密碼,即用于登入遠程主機的用戶名對應的用戶密碼,如appuser0;

注意:這里的密碼是明文的,安全性有待考究,僅供下載調試程序,沒有問題。

-ssh 表示使用ssh協議

User@host_ip,用戶名+遠程主機ip

在最后可以跟隨一串命令組,可實現遠程登入主機后就執行這一串命令。

如,登入宿主機linux的腳本命令為:(最后的命令組,命令直接用;號隔開)

"D:\my_putty\plink.exe" -ssh -pw comtop root@192.168.1.80 echo hello, remote host; echo bye-bye, remote host

測試結果如下:

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?編輯

在執行完傳入的命令后,登入動作自動退出。

注意:這里"D:\my_putty\plink.exe"加了雙引號,是為了防止路徑中有空格(windows下路徑運行有空格,如D:\Program Files (x86)\)。

(四) psftp工具

psftp:命令行方式,通過sftp協議(疊加了ssh協議的ftp協議)將本地的文件與遠程主機的文件進行交互(上傳或下載),同時也支持登入到遠程主機后,執行若干命令操作。它的參數列表如下:

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
poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

從參數列表上看,與plink差不多,我們也不必了解全部,熟悉常用幾個即可。

-V (大寫的V)顯示plink版本信息

-P (大寫的P)ssh協議的端口,默認為22,不傳值自動使用22

-l 用戶名,即用于登入遠程主機的用戶名,如user0

-pw 用戶名密碼,即用于登入遠程主機的用戶名對應的用戶密碼,如appuser0

注意:這里的密碼是明文的,安全性有待考究,僅供下載調試程序,沒有問題。

User@host_ip,用戶名+遠程主機ip

-b batch.file 這個是區別于plink的一個參數,通過-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
poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

其中標紅的這幾個為常用命令。

如,將本地目錄d:\my_putty下的test0.txt和tmp.cmd文件下載到嵌入式linux系統的/home/user0/目錄下為:

tmp.cmd批處理文件的內容如下:

cd /home/user0/

put D:\my_putty\test0.txt

put D:\my_putty\tmp.cmd

close

執行的腳本命令為:

"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

注意當tmp.cmd使用相對路徑時,務必保證它處于執行目錄下,否則可能會報“Fatal: unable to open tmp.cmd”

正常執行結果如下:

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

從時間上看,正好是剛剛下載進去的文件,那么就代表執行成功了。當然,在執行命令的過程中,若出現錯誤,也會有相應的錯誤提示。

四、 Windows BAT批處理文件

有了以上的知識做鋪墊,到了這里,就簡單多了,僅僅是將上面手動輸入參數啟動plink和psftp的過程,用windows的BAT批處理來實現而已。

(一) BAT批處理文件的編寫

為了下文做鋪墊,這樣還是簡單介紹一下windows的BAT批處理文件。這方面的教程也很多,這里不多闡述,僅僅介紹幾點:

set param=123 這個是定義一個變量,它的值為123,字符串格式,注意=兩邊不能有空格

::這些是注釋的內容,不會被執行

echo this is debug info 用于打印提示信息

echo %param% 打印param參數的值,其中%參數名%表示取變量的值

@echo %param% 打印param參數的值,但是命令本身不回顯,與上一句區分開來

exit 批處理執行退出

:top 代碼段標號,供goto語句使用,注意是一個: 不是兩個

goto top 配合上面的代碼段標識使用

%1 %2 %3 執行批處理腳本時,傳入的第1/2/3個參數的值

start “” /max another.bat 從一個bat文件中啟動另一個bat文件,/max表示啟動的時候窗口最大化

五、編譯下載的BAT批處理文件實現

有了上面BAT文件編寫知識的鋪墊,實現編譯下載的BAT批處理就簡單多了。實現的思路就是:

  1. 配置好宿主機linux、嵌入式linux的用戶名、密碼、ip等信息后,從windows下啟動該BAT批處理;
  2. 先使用plink遠程登入進入宿主機linux系統,切換到源碼對應的工程目錄(這里涉及一個windows與虛擬機共享目錄的問題,自行了解并實踐,默認工程是放在共享目錄里面),然后執行make命令;之后,再講編譯出來的可執行文件拷貝到另一個上傳/下載專用的共享目錄中,再退出plink;若編譯失敗,則提示出錯信息;當然,這里不講生成的可執行文件拷貝到共享目錄也可以,只是拷貝到統一路徑后,后面的步驟寫起來相對容易點;
  3. 使用psftp遠程登入嵌入式linux(POS機),傳入生成的tmp.cmd批處理文件,該文件里面寫好了,該將什么文件下載到POS機的什么路徑下,是動態生成的,無需編寫tmp.cmd;下載完成了,執行close,退出psftp;
  4. 回到windows BAT批處理,提示成功信息,之后,退出批處理,整一個過程完成。

BAT文件的詳細內容見范例,ys_make_plink_pscp.bat,里面已包含少量注釋,可配合閱讀。

運行效果如下:

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?編輯

圖 7 編譯下載BAT批處理運行效果

六、一鍵編譯下載的實現

從第五大點之后,BAT批處理文件就已經生成了,此種情況下,只要雙擊該BAT批處理文件,即可實現編譯下載的功能了,此過程將自動去完成,BAT文件存放的位置也不用特意關注,任意路徑均可。

下面,就結合Source Insight來配合實現一鍵編譯下載,其實原理也很簡單,只要在Source Insight中配置一個自定義的快捷鍵,按下該快捷鍵自動執行上面編寫好的BAT文件,那么對于編寫代碼的開發人員而言,就已經實現了,一鍵編譯下載。

Source Insight設置自定義快捷的方法如下:

1.打開Source Insight工程,點擊options,選擇Custom Commands,通過這個設置一個自定義的功能;

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?編輯

2.點擊Add按鈕,在提示框中輸入新定義的命令的名字,之后按OK;

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?編輯

3.按如圖設置,位置1中Run必須輸入全路徑;位置2中Dir務必輸入該bat文件處于的目錄;位置3中,建議此消選中,這樣執行完bat后,就不會等待輸入,而是直接關閉窗口;位置4,在設置完1/2/3后,可點擊Run來看下效果,而這個效果就是最終的效果,如果點擊run提示錯誤,則應根據提示的錯誤,去解決。如果運行正常,則可以得到類似于雙擊bat批處理文件運行相同的結果;

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?編輯

4.綁定該功能到相應的菜單中,點擊Menu選項,如圖:在Menu的下拉框中,選中需要添加到的菜單,比如我這里選中work菜單,第2,選中end of menu,按下Inert,,再按OK,即可將該功能添加到work菜單中,效果如下圖;

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?編輯

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?編輯

5.為該功能綁定一個快捷鍵,再次回到options—custom commands,選中剛剛的my-make-command,點擊右下角的Keys:點擊Assign New Key,之后會提示你輸入你的新綁定的按鍵值,如果該鍵值在原來的設置有使用,能會提示你是否強制覆蓋;最好設置一個較為冷門的鍵值,當然它也支持組合鍵的輸入,之后就可以在看到框框里面顯示新綁定的鍵值了;

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?編輯

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?編輯

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?編輯

6.回到工程主界面,選中work菜單,即可看到新增的my-make-command,后面對應的快捷鍵就是剛剛綁定的F11了。

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?編輯

7.快捷鍵測試,在工程主界面,按下快捷鍵F11,則可以看到BAT批處理文件的執行,也就表示正在執行編譯—下載流程了。

七、 Q&A

至此,整一個教程介紹完畢,可能在真正的實踐過程中,還是遇到這樣那樣的問題,但是沒有關系,只要理解了其中的原理,配合出錯的提示信息,相信大家都可以解決的。

以下羅列了一些,在教程實踐中常見的問題,僅供參考:

  1. 首次通過SSH登入遠程主機,提示信息如下

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?編輯

解答:此問題勿用擔心,直接輸入y再敲回車即可。該流程是SSH協議必須要做的一個操作。

2.POS僅有GPRS/CDMA模塊,不具備WIFI和以太網模塊,該教程是否使用?

解答:不適用。務必保證有WIFI模塊或以太網模塊。

3.當前windows開發環境沒有網絡,能適用該教程么?

解答:不適用。務必保證有網絡環境,詳見網絡拓撲關系圖。

4.正式版本鏡像的POS機,帶WIFI或以太網模塊,該教材適用么?

解答:不一定適用。正式版本鏡像的機器,在開機后,默認沒有將sshd服務運行起來,可通過調試串口進入控制臺,手動將sshd跑起來,命令如下 /etc/init.d/sshd start。

5.若要編譯多個工程的時候,能否也采用該教程?

解答:此教程的原理是通用的,至于登入主機后執行什么命令,做什么操作,完全由自己編寫的腳本去實現。

6.宿主機linux和嵌入式linux的ip是一直不變的么?

解答:這個取決于網絡環境,一般而言,宿主機與windows主機采用橋接方式,自動開機后,它的ip是不會變的,而嵌入式linux因為是使用wifi連入局域網,可能會因為網絡不穩定,導致wifi掉線,然后再連接的時候,自動獲取的ip就變了。

7.出現連接被拒絕或連接超時的情況,是怎么回事?如圖

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?編輯

解答:這個一般是由于遠程主機的ip變了,需要重新在bat文件中配置下遠程主機的ip地址。可通過ping工具配合排查,是否為網絡不通的情況。

--------------------------------------------華麗麗的分界線-------------------------------------------------------

教程結束,有興趣的,可私下溝通。謝謝。

下載附件: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
poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

Windows下批處理文件demo

審核編輯 黃昊宇

?

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • WINDOWS
    +關注

    關注

    4

    文章

    3567

    瀏覽量

    89141
  • 嵌入式技術
    +關注

    關注

    10

    文章

    360

    瀏覽量

    36614
  • POS
    POS
    +關注

    關注

    3

    文章

    119

    瀏覽量

    28335
  • 編譯
    +關注

    關注

    0

    文章

    661

    瀏覽量

    32979
收藏 人收藏

    評論

    相關推薦

    淺談飛凌公司嵌入式開發板的一鍵燒寫

    S5PV210開發板。o 一鍵燒寫的步驟: 首先完成向SD卡的寫入,飛凌嵌入式通過SD_WRITE.exe的程序完成:如圖(本文的SD_WRITE版本最新版2013.7) SD_WRI
    發表于 05-20 16:43

    嵌入式Linux應用程序開發標準教程

    內容簡介:隆重申明:本書為嵌入式與移動開發系列,國家信息技術緊缺人才培養工程系列叢書,內容末尾提供免費下載嵌入式Linux應用程序
    發表于 05-07 15:40

    在python環境下如何開發嵌入式應用程序

    在python環境下如何開發嵌入式應用程序?以STM32H43板卡為例,有哪些操作步驟呢?
    發表于 07-23 07:00

    面向RTEMS的嵌入式軟件集成開發環境

    實現面向RTEMS 的嵌入式軟件集成開發環境,提高嵌入式應用程序的可靠性和開發效率。在
    發表于 03-21 15:10 ?38次下載

    嵌入式Linux應用程序開發標準教程

    嵌入式Linux應用程序開發標準教程(第2版)》主要分為3個部分,包括Linux基礎、搭建嵌入式Linux環境
    發表于 09-29 17:02 ?0次下載
    <b class='flag-5'>嵌入式</b>Linux<b class='flag-5'>應用程序</b><b class='flag-5'>開發</b>標準教程

    基于嵌入式Linux應用程序開發詳解

    基于嵌入式Linux應用程序開發詳解
    發表于 10-25 14:17 ?12次下載
    基于<b class='flag-5'>嵌入式</b>Linux<b class='flag-5'>應用程序</b><b class='flag-5'>開發</b>詳解

    嵌入式uClinux應用程序的NFS開發

    在目標機上可以運行uClinux了,接著就需要開發完成特定任務的應用程序了。由于嵌入式uClinux的特殊開發環境(主機目標機),其
    發表于 12-01 12:40 ?319次閱讀

    嵌入式Linux應用程序開發詳解的源代碼合集免費下載

    本文檔的主要內容詳細介紹的是嵌入式Linux應用程序開發詳解的源代碼合集免費下載
    發表于 03-21 08:00 ?24次下載
    <b class='flag-5'>嵌入式</b>Linux<b class='flag-5'>應用程序</b><b class='flag-5'>開發</b>詳解的源代碼合集免費<b class='flag-5'>下載</b>

    MySql環境一鍵安裝應用程序免費下載

    本文檔的主要內容詳細介紹的是MySql環境一鍵安裝應用程序免費下載。創建Mysql所需環境支持8.0以上版本,暫無測試過8.0以下版本
    發表于 02-26 15:01 ?7次下載

    嵌入式Linux應用程序例程

    嵌入式Linux應用程序例程(arm嵌入式開發步驟)-嵌入式Linux應用程序例程,有需要的可以參考!
    發表于 07-30 13:23 ?16次下載
    <b class='flag-5'>嵌入式</b>Linux<b class='flag-5'>應用程序</b>例程

    嵌入式開發):嵌入式開發新手入門

    嵌入式開發環境及交叉編譯環境開發完成后,編譯得到bin文件,然后在
    發表于 10-14 10:58 ?79次下載
    <b class='flag-5'>嵌入式開發</b>(<b class='flag-5'>一</b>):<b class='flag-5'>嵌入式開發</b>新手入門

    《從實踐中學嵌入式Linux應用程序開發》pdf完整版資源分享

    《從實踐中學嵌入式Linux應用程序開發》內容簡介: 《從實踐中學嵌入式linux應用程序開發
    發表于 11-01 17:07 ?0次下載
    《從實踐中學<b class='flag-5'>嵌入式</b>Linux<b class='flag-5'>應用程序</b><b class='flag-5'>開發</b>》pdf完整版資源分享

    嵌入式Linux應用程序開發-(1)第嵌入式QT應用程序

    嵌入式QT應用程序在成功安裝 Qt Creator 開發環境后,我們通過個簡單的
    發表于 11-01 17:21 ?16次下載
    <b class='flag-5'>嵌入式</b>Linux<b class='flag-5'>應用程序</b><b class='flag-5'>開發</b>-(1)第<b class='flag-5'>一</b>個<b class='flag-5'>嵌入式</b>QT<b class='flag-5'>應用程序</b>

    嵌入式Linux開發環境部署

    般需要準備windows和linux系統(此linux系統為完整的系統,如ubuntu,非題中的嵌入式)。windows系統用于編輯代
    發表于 11-01 17:22 ?13次下載
    <b class='flag-5'>嵌入式</b>Linux<b class='flag-5'>開發</b><b class='flag-5'>環境</b>部署

    嵌入式Linux開發環境搭建-(4)安裝交叉編譯工具鏈

    在ubuntu16.04.2中,安裝交叉編譯工具鏈在ubuntu中進行嵌入式應用程序開發,安裝交叉編譯工具鏈是不可缺少的
    發表于 11-02 11:06 ?18次下載
    <b class='flag-5'>嵌入式</b>Linux<b class='flag-5'>開發</b><b class='flag-5'>環境</b>搭建-(4)安裝交叉<b class='flag-5'>編譯</b>工具鏈
    主站蜘蛛池模板: 久久国产视频网站 | 儿子你得太大了慢点插 | 黄色a一级视频 | 国产精品免费一区二区三区四区 | 亚洲精品第一综合99久久 | www.av日韩| 国内精品久久久久久久999下 | 成3d漫二区三区四区 | 9420高清免费观看在线大全 | 99国内精品久久久久久久清纯 | 亚洲午夜福利未满十八勿进 | 快播性爱电影 | 国产日韩久久久精品影院首页 | 久久www免费人成_看片高清 | 我的奶头被客人吸的又肿又红 | 国产精品免费小视频 | 亚洲第一成年人网站 | 芳草地在线观看免费观看 | 国产成人自产拍免费视频 | 小sao货水好多真紧h的视频 | 亲胸吻胸添奶头GIF动态图免费 | 国产露脸无码A区久久 | 少妇人妻偷人精品视蜜桃 | 超碰97人人做人人爱少妇 | 爱穿丝袜的麻麻3d漫画免费 | 成人免费无毒在线观看网站 | 青青青青草原国产免费 | 天天躁躁水汪汪人碰人 | 青娱乐极品视觉盛宴国产视频 | 久久久性色精品国产免费观看 | 嗯啊插的好深啊使劲抽视频 | 一个人的视频在线观看免费观看 | 好男人在线观看免费视频WWW | 成人影院久久久久久影院 | 久 久 亚洲 少 妇 无 码 | 久久伊人电影 | 小xav导航| 成人免费视频在线观看 | 国产精品亚洲在钱视频 | 欧式午夜理伦三级在线观看 | 365电影成人亚洲网在线观看 |