在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

嵌入式應(yīng)用程序開(kāi)發(fā)Windows環(huán)境一鍵編譯下載

嵌入式物聯(lián)網(wǎng)開(kāi)發(fā) ? 來(lái)源: 嵌入式物聯(lián)網(wǎng)開(kāi)發(fā) ? 作者: 嵌入式物聯(lián)網(wǎng)開(kāi)發(fā) ? 2022-08-27 12:55 ? 次閱讀

? 本文以POS嵌入式linux程序開(kāi)發(fā)為例,講解了如下在Windows開(kāi)發(fā)環(huán)境(Source Insight)下實(shí)現(xiàn),POS程序一鍵編譯下載

以下是詳細(xì)教程


嵌入式應(yīng)用開(kāi)發(fā)一鍵編譯下載

眾所周知,嵌入式應(yīng)用的開(kāi)發(fā)與通用PC應(yīng)用開(kāi)發(fā)有些不太一樣,主要是因?yàn)榍度胧綉?yīng)用它運(yùn)行的環(huán)境是有特殊性的,它的運(yùn)行環(huán)境并不是普通的PC環(huán)境,而是一個(gè)資源相對(duì)匱乏的嵌入式系統(tǒng),往往又不具備編譯程序的能力,所以在它的開(kāi)發(fā)流程上,通常我們采用的方法是交叉編譯,即在宿主機(jī)(PC端主機(jī))編碼、編譯,然后通過(guò)各種方式將應(yīng)用程序下載到嵌入式系統(tǒng)中運(yùn)行驗(yàn)證。有關(guān)嵌入式開(kāi)發(fā),交叉編譯的方法,這里不在闡述,可自行了解。

本文重點(diǎn)介紹的是,如何在交叉編譯的基礎(chǔ)上,實(shí)現(xiàn)windows下編碼,之后一鍵完成程序編譯、下載到嵌入式系統(tǒng)的方法。

看到這里的客官,可能覺(jué)得不可思議,一鍵編譯下載?怎么可能?不相信的吃瓜群眾,且聽(tīng)我細(xì)細(xì)道來(lái)。

【注:不帶WIFI或以太網(wǎng)模塊的POS機(jī),或非調(diào)試版本鏡像的POS機(jī),請(qǐng)點(diǎn)擊右上角叉叉】

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

一、開(kāi)發(fā)環(huán)境介紹

本人的開(kāi)發(fā)環(huán)境如下:

Windows主機(jī):Win7專業(yè)版,64位操作系統(tǒng)

Linux主機(jī):(宿主機(jī))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個(gè)方面的網(wǎng)絡(luò)環(huán)境,Windows系統(tǒng)的網(wǎng)絡(luò)、Linux宿主機(jī)的網(wǎng)絡(luò)、嵌入式系統(tǒng)(POS終端)的網(wǎng)絡(luò),三者的網(wǎng)絡(luò)情況至少滿足:Windows系統(tǒng)與嵌入式系統(tǒng)網(wǎng)絡(luò)互通,Windows系統(tǒng)與Linux宿主機(jī)網(wǎng)絡(luò)互通。三者關(guān)系拓?fù)鋱D如下所示:

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?編輯

圖 1 關(guān)系拓?fù)鋱D

其中,windows主機(jī)和嵌入式系統(tǒng)要求網(wǎng)絡(luò)互相可達(dá),是很容易實(shí)現(xiàn)的,比如兩者均連入同一個(gè)wifi熱點(diǎn)(前提是POS有配置wifi模塊),或者兩者接入同一臺(tái)交換機(jī)(或路由器的不同LAN口);即,只要保證兩者在同一個(gè)局域網(wǎng)內(nèi),即可實(shí)現(xiàn)網(wǎng)絡(luò)互達(dá)。

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

以下是WM設(shè)置虛擬主機(jī)使用橋接方式聯(lián)網(wǎng)的設(shè)置方法。選中虛擬機(jī)中打開(kāi)的主機(jī)列表,在菜單欄中VM---settings,然后在Hardware中的Network Adapter,右邊選項(xiàng)就可以看到相應(yīng)的選擇了,按圖中設(shè)置即可。設(shè)置成功后,可在linux下的終端上使用ifconfig命令,看下是否獲取到ip,有些情況下,重新設(shè)置了,需要重啟虛擬機(jī)。正常的時(shí)候,可以看到右上角的網(wǎng)絡(luò)圖標(biāo)正常,ifconfig查看網(wǎng)絡(luò)也獲取到了ip。

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?編輯

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?編輯

圖 2 VM設(shè)置橋接方式

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?編輯

圖 3 linux虛擬主機(jī)ip地址查看

以下是我的開(kāi)發(fā)環(huán)境,三者的網(wǎng)絡(luò)情況:

Windows主機(jī),ip 192.168.1.92 (有線方式接入公司網(wǎng)絡(luò),未使用無(wú)線連接)

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

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

三者做網(wǎng)通互通ping測(cè)試,結(jié)果如圖5所示:注意關(guān)閉防火墻。

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?編輯

圖 4 網(wǎng)絡(luò)ping測(cè)試

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

三、SSH協(xié)議介紹

(一) SSH協(xié)議

以下是摘自bing網(wǎng)典對(duì)SSH的簡(jiǎn)要介紹:

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

通常來(lái)說(shuō),SSH專為遠(yuǎn)程登入并管理主機(jī)而存在的。本文所要介紹的方法,都是基于這個(gè)協(xié)議來(lái)完成的。

至于,SSH服務(wù)器的安裝方法,可自行網(wǎng)絡(luò)了解并實(shí)踐,本文不再闡述。后續(xù)的介紹中,默認(rèn)宿主機(jī)Linux環(huán)境和嵌入式Linux環(huán)境均已安裝好SSH服務(wù)器環(huán)境,即要求從Windows主機(jī)通過(guò)22號(hào)端口(SSH協(xié)議的默認(rèn)端口),登入到宿主機(jī)Linux環(huán)境和嵌入式Linux環(huán)境。如下測(cè)試:

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?編輯

圖 5 宿主機(jī)linux系統(tǒng)下看ssh服務(wù)器sshd的運(yùn)行狀態(tài)及22號(hào)端口的狀態(tài)

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?編輯

圖 6 嵌入式linux系統(tǒng)(POS機(jī))下看ssh服務(wù)器sshd的運(yùn)行狀態(tài)及22號(hào)端口的狀態(tài)

從上面的測(cè)試可知,兩個(gè)linux系統(tǒng)都在運(yùn)行sshd,并且22端口也都處于被監(jiān)聽(tīng)狀態(tài)。下面就22號(hào)端口,測(cè)試一下ssh服務(wù)是否打開(kāi)。

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?編輯

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?編輯

Windows主機(jī)通過(guò)ssh登入宿主機(jī)Linux系統(tǒng),成功后可看到光標(biāo)在跳動(dòng)

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?編輯

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?編輯

Windows主機(jī)通過(guò)ssh登入嵌入式Linux系統(tǒng)(pos機(jī)),成功后可看到光標(biāo)在跳動(dòng)

以上是通過(guò)windows下自帶的cmd窗口,利用telnet命令做的測(cè)試。

(二) putty工具

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

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

關(guān)于putty工具的操作,可自行上網(wǎng)檢索相應(yīng)的操作指導(dǎo)手冊(cè),本文不再闡述。以下簡(jiǎn)易介紹下plink和psftp的命令,熟悉這段字段之后,就可以自行編寫腳本實(shí)現(xiàn)自動(dòng)化操作。

(三) plink工具

plink:命令行方式,通過(guò)ssh協(xié)議遠(yuǎn)程連接主機(jī),可接受參數(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
poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

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

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

-P (大寫的P)ssh協(xié)議的端口,默認(rèn)為22,不傳值自動(dòng)使用22

-l 用戶名,即用于登入遠(yuǎn)程主機(jī)的用戶名,如user0

-pw 用戶名密碼,即用于登入遠(yuǎn)程主機(jī)的用戶名對(duì)應(yīng)的用戶密碼,如appuser0;

注意:這里的密碼是明文的,安全性有待考究,僅供下載調(diào)試程序,沒(méi)有問(wèn)題。

-ssh 表示使用ssh協(xié)議

User@host_ip,用戶名+遠(yuǎn)程主機(jī)ip

在最后可以跟隨一串命令組,可實(shí)現(xiàn)遠(yuǎn)程登入主機(jī)后就執(zhí)行這一串命令。

如,登入宿主機(jī)linux的腳本命令為:(最后的命令組,命令直接用;號(hào)隔開(kāi))

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

測(cè)試結(jié)果如下:

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?編輯

在執(zhí)行完傳入的命令后,登入動(dòng)作自動(dòng)退出。

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

(四) psftp工具

psftp:命令行方式,通過(guò)sftp協(xié)議(疊加了ssh協(xié)議的ftp協(xié)議)將本地的文件與遠(yuǎn)程主機(jī)的文件進(jìn)行交互(上傳或下載),同時(shí)也支持登入到遠(yuǎn)程主機(jī)后,執(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
poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

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

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

-P (大寫的P)ssh協(xié)議的端口,默認(rèn)為22,不傳值自動(dòng)使用22

-l 用戶名,即用于登入遠(yuǎn)程主機(jī)的用戶名,如user0

-pw 用戶名密碼,即用于登入遠(yuǎn)程主機(jī)的用戶名對(duì)應(yīng)的用戶密碼,如appuser0

注意:這里的密碼是明文的,安全性有待考究,僅供下載調(diào)試程序,沒(méi)有問(wèn)題。

User@host_ip,用戶名+遠(yuǎn)程主機(jī)ip

-b batch.file 這個(gè)是區(qū)別于plink的一個(gè)參數(shù),通過(guò)-b可傳入一個(gè)批處理文件,文件里面可以羅列一系列的命令,自然可以包含下載/上傳多個(gè)文件。

下面是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

其中標(biāo)紅的這幾個(gè)為常用命令。

如,將本地目錄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使用相對(duì)路徑時(shí),務(wù)必保證它處于執(zhí)行目錄下,否則可能會(huì)報(bào)“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

從時(shí)間上看,正好是剛剛下載進(jìn)去的文件,那么就代表執(zhí)行成功了。當(dāng)然,在執(zhí)行命令的過(guò)程中,若出現(xiàn)錯(cuò)誤,也會(huì)有相應(yīng)的錯(cuò)誤提示。

四、 Windows BAT批處理文件

有了以上的知識(shí)做鋪墊,到了這里,就簡(jiǎn)單多了,僅僅是將上面手動(dòng)輸入?yún)?shù)啟動(dòng)plink和psftp的過(guò)程,用windows的BAT批處理來(lái)實(shí)現(xiàn)而已。

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

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

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

::這些是注釋的內(nèi)容,不會(huì)被執(zhí)行

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

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

@echo %param% 打印param參數(shù)的值,但是命令本身不回顯,與上一句區(qū)分開(kāi)來(lái)

exit 批處理執(zhí)行退出

:top 代碼段標(biāo)號(hào),供goto語(yǔ)句使用,注意是一個(gè): 不是兩個(gè)

goto top 配合上面的代碼段標(biāo)識(shí)使用

%1 %2 %3 執(zhí)行批處理腳本時(shí),傳入的第1/2/3個(gè)參數(shù)的值

start “” /max another.bat 從一個(gè)bat文件中啟動(dòng)另一個(gè)bat文件,/max表示啟動(dòng)的時(shí)候窗口最大化

五、編譯下載的BAT批處理文件實(shí)現(xiàn)

有了上面BAT文件編寫知識(shí)的鋪墊,實(shí)現(xiàn)編譯下載的BAT批處理就簡(jiǎn)單多了。實(shí)現(xiàn)的思路就是:

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

BAT文件的詳細(xì)內(nèi)容見(jiàn)范例,ys_make_plink_pscp.bat,里面已包含少量注釋,可配合閱讀。

運(yùn)行效果如下:

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?編輯

圖 7 編譯下載BAT批處理運(yùn)行效果

六、一鍵編譯下載的實(shí)現(xiàn)

從第五大點(diǎn)之后,BAT批處理文件就已經(jīng)生成了,此種情況下,只要雙擊該BAT批處理文件,即可實(shí)現(xiàn)編譯下載的功能了,此過(guò)程將自動(dòng)去完成,BAT文件存放的位置也不用特意關(guān)注,任意路徑均可。

下面,就結(jié)合Source Insight來(lái)配合實(shí)現(xiàn)一鍵編譯下載,其實(shí)原理也很簡(jiǎn)單,只要在Source Insight中配置一個(gè)自定義的快捷鍵,按下該快捷鍵自動(dòng)執(zhí)行上面編寫好的BAT文件,那么對(duì)于編寫代碼的開(kāi)發(fā)人員而言,就已經(jīng)實(shí)現(xiàn)了,一鍵編譯下載。

Source Insight設(shè)置自定義快捷的方法如下:

1.打開(kāi)Source Insight工程,點(diǎn)擊options,選擇Custom Commands,通過(guò)這個(gè)設(shè)置一個(gè)自定義的功能;

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?編輯

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

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?編輯

3.按如圖設(shè)置,位置1中Run必須輸入全路徑;位置2中Dir務(wù)必輸入該bat文件處于的目錄;位置3中,建議此消選中,這樣執(zhí)行完bat后,就不會(huì)等待輸入,而是直接關(guān)閉窗口;位置4,在設(shè)置完1/2/3后,可點(diǎn)擊Run來(lái)看下效果,而這個(gè)效果就是最終的效果,如果點(diǎn)擊run提示錯(cuò)誤,則應(yīng)根據(jù)提示的錯(cuò)誤,去解決。如果運(yùn)行正常,則可以得到類似于雙擊bat批處理文件運(yùn)行相同的結(jié)果;

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?編輯

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

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?編輯

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?編輯

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

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?編輯

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?編輯

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?編輯

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

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?編輯

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

七、 Q&A

至此,整一個(gè)教程介紹完畢,可能在真正的實(shí)踐過(guò)程中,還是遇到這樣那樣的問(wèn)題,但是沒(méi)有關(guān)系,只要理解了其中的原理,配合出錯(cuò)的提示信息,相信大家都可以解決的。

以下羅列了一些,在教程實(shí)踐中常見(jiàn)的問(wèn)題,僅供參考:

  1. 首次通過(guò)SSH登入遠(yuǎn)程主機(jī),提示信息如下

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?編輯

解答:此問(wèn)題勿用擔(dān)心,直接輸入y再敲回車即可。該流程是SSH協(xié)議必須要做的一個(gè)操作。

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

解答:不適用。務(wù)必保證有WIFI模塊或以太網(wǎng)模塊。

3.當(dāng)前windows開(kāi)發(fā)環(huán)境沒(méi)有網(wǎng)絡(luò),能適用該教程么?

解答:不適用。務(wù)必保證有網(wǎng)絡(luò)環(huán)境,詳見(jiàn)網(wǎng)絡(luò)拓?fù)潢P(guān)系圖。

4.正式版本鏡像的POS機(jī),帶WIFI或以太網(wǎng)模塊,該教材適用么?

解答:不一定適用。正式版本鏡像的機(jī)器,在開(kāi)機(jī)后,默認(rèn)沒(méi)有將sshd服務(wù)運(yùn)行起來(lái),可通過(guò)調(diào)試串口進(jìn)入控制臺(tái),手動(dòng)將sshd跑起來(lái),命令如下 /etc/init.d/sshd start。

5.若要編譯多個(gè)工程的時(shí)候,能否也采用該教程?

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

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

解答:這個(gè)取決于網(wǎng)絡(luò)環(huán)境,一般而言,宿主機(jī)與windows主機(jī)采用橋接方式,自動(dòng)開(kāi)機(jī)后,它的ip是不會(huì)變的,而嵌入式linux因?yàn)槭鞘褂脀ifi連入局域網(wǎng),可能會(huì)因?yàn)榫W(wǎng)絡(luò)不穩(wěn)定,導(dǎo)致wifi掉線,然后再連接的時(shí)候,自動(dòng)獲取的ip就變了。

7.出現(xiàn)連接被拒絕或連接超時(shí)的情況,是怎么回事?如圖

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?編輯

解答:這個(gè)一般是由于遠(yuǎn)程主機(jī)的ip變了,需要重新在bat文件中配置下遠(yuǎn)程主機(jī)的ip地址。可通過(guò)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
poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

Windows下批處理文件demo

審核編輯 黃昊宇

?

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • WINDOWS
    +關(guān)注

    關(guān)注

    4

    文章

    3570

    瀏覽量

    89308
  • 嵌入式技術(shù)
    +關(guān)注

    關(guān)注

    10

    文章

    360

    瀏覽量

    36822
  • POS
    POS
    +關(guān)注

    關(guān)注

    3

    文章

    119

    瀏覽量

    28358
  • 編譯
    +關(guān)注

    關(guān)注

    0

    文章

    661

    瀏覽量

    33046
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    淺談飛凌公司嵌入式開(kāi)發(fā)板的一鍵燒寫

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

    嵌入式Linux應(yīng)用程序開(kāi)發(fā)標(biāo)準(zhǔn)教程

    內(nèi)容簡(jiǎn)介:隆重申明:本書為嵌入式與移動(dòng)開(kāi)發(fā)系列,國(guó)家信息技術(shù)緊缺人才培養(yǎng)工程系列叢書,內(nèi)容末尾提供免費(fèi)下載嵌入式Linux應(yīng)用程序
    發(fā)表于 05-07 15:40

    在python環(huán)境下如何開(kāi)發(fā)嵌入式應(yīng)用程序

    在python環(huán)境下如何開(kāi)發(fā)嵌入式應(yīng)用程序?以STM32H43板卡為例,有哪些操作步驟呢?
    發(fā)表于 07-23 07:00

    面向RTEMS的嵌入式軟件集成開(kāi)發(fā)環(huán)境

    實(shí)現(xiàn)面向RTEMS 的嵌入式軟件集成開(kāi)發(fā)環(huán)境,提高嵌入式應(yīng)用程序的可靠性和開(kāi)發(fā)效率。在
    發(fā)表于 03-21 15:10 ?38次下載

    嵌入式Linux應(yīng)用程序開(kāi)發(fā)標(biāo)準(zhǔn)教程

    嵌入式Linux應(yīng)用程序開(kāi)發(fā)標(biāo)準(zhǔn)教程(第2版)》主要分為3個(gè)部分,包括Linux基礎(chǔ)、搭建嵌入式Linux環(huán)境
    發(fā)表于 09-29 17:02 ?0次下載
    <b class='flag-5'>嵌入式</b>Linux<b class='flag-5'>應(yīng)用程序</b><b class='flag-5'>開(kāi)發(fā)</b>標(biāo)準(zhǔn)教程

    基于嵌入式Linux應(yīng)用程序開(kāi)發(fā)詳解

    基于嵌入式Linux應(yīng)用程序開(kāi)發(fā)詳解
    發(fā)表于 10-25 14:17 ?12次下載
    基于<b class='flag-5'>嵌入式</b>Linux<b class='flag-5'>應(yīng)用程序</b><b class='flag-5'>開(kāi)發(fā)</b>詳解

    嵌入式uClinux應(yīng)用程序的NFS開(kāi)發(fā)

    在目標(biāo)機(jī)上可以運(yùn)行uClinux了,接著就需要開(kāi)發(fā)完成特定任務(wù)的應(yīng)用程序了。由于嵌入式uClinux的特殊開(kāi)發(fā)環(huán)境(主機(jī)目標(biāo)機(jī)),其
    發(fā)表于 12-01 12:40 ?321次閱讀

    嵌入式Linux應(yīng)用程序開(kāi)發(fā)詳解的源代碼合集免費(fèi)下載

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

    MySql環(huán)境一鍵安裝應(yīng)用程序免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是MySql環(huán)境一鍵安裝應(yīng)用程序免費(fèi)下載。創(chuàng)建Mysql所需環(huán)境支持8.0以上版本,暫無(wú)測(cè)試過(guò)8.0以下版本
    發(fā)表于 02-26 15:01 ?7次下載

    嵌入式Linux應(yīng)用程序例程

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

    嵌入式開(kāi)發(fā)):嵌入式開(kāi)發(fā)新手入門

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

    《從實(shí)踐中學(xué)嵌入式Linux應(yīng)用程序開(kāi)發(fā)》pdf完整版資源分享

    《從實(shí)踐中學(xué)嵌入式Linux應(yīng)用程序開(kāi)發(fā)》內(nèi)容簡(jiǎn)介: 《從實(shí)踐中學(xué)嵌入式linux應(yīng)用程序開(kāi)發(fā)
    發(fā)表于 11-01 17:07 ?0次下載
    《從實(shí)踐中學(xué)<b class='flag-5'>嵌入式</b>Linux<b class='flag-5'>應(yīng)用程序</b><b class='flag-5'>開(kāi)發(fā)</b>》pdf完整版資源分享

    嵌入式Linux應(yīng)用程序開(kāi)發(fā)-(1)第個(gè)嵌入式QT應(yīng)用程序

    個(gè)嵌入式QT應(yīng)用程序在成功安裝 Qt Creator 開(kāi)發(fā)環(huán)境后,我們通過(guò)個(gè)簡(jiǎn)單的
    發(fā)表于 11-01 17:21 ?16次下載
    <b class='flag-5'>嵌入式</b>Linux<b class='flag-5'>應(yīng)用程序</b><b class='flag-5'>開(kāi)發(fā)</b>-(1)第<b class='flag-5'>一</b>個(gè)<b class='flag-5'>嵌入式</b>QT<b class='flag-5'>應(yīng)用程序</b>

    嵌入式Linux開(kāi)發(fā)環(huán)境部署

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

    嵌入式Linux開(kāi)發(fā)環(huán)境搭建-(4)安裝交叉編譯工具鏈

    在ubuntu16.04.2中,安裝交叉編譯工具鏈在ubuntu中進(jìn)行嵌入式應(yīng)用程序開(kāi)發(fā),安裝交叉編譯工具鏈?zhǔn)遣豢扇鄙俚?/div>
    發(fā)表于 11-02 11:06 ?18次下載
    <b class='flag-5'>嵌入式</b>Linux<b class='flag-5'>開(kāi)發(fā)</b><b class='flag-5'>環(huán)境</b>搭建-(4)安裝交叉<b class='flag-5'>編譯</b>工具鏈
    主站蜘蛛池模板: 天天狠狠弄夜夜狠狠躁·太爽了 | 在线看片成人 | 激情综合激情五月 | 视频高清正版在线观看 | 高清一区二区三区视频 | 天天视频国产免费入口 | 国产一区二区三区在线观看视频 | 亚洲一区日本 | 黄色一及毛片 | 亚洲人成人77777网站 | 日本成人a视频 | 男人操女人在线观看 | 国产在线观看色 | 国产高清在线看 | 午夜精品久久久久久毛片 | 淫五月 | 国产理论精品 | 老师在办公室被躁得舒服小说 | 久久久久国产精品免费免费 | 在线成人 | 欧美伦理影院 | 久久综合九色综合97_ 久久久 | 性欧美17一18sex性高清 | 国产ar高清视频+视频 | 一区二区三区亚洲视频 | 草草影院私人免费入口 | 性夜黄 a 爽免费看 性夜黄a爽影免费看 | 色女人在线 | 性欧美xxxx | 久草色香蕉 | caoporn97人人做人人爱最新 | 玖玖精品国产 | 国产女人小便视频 | 日本色片在线观看 | 91桃色国产线观看免费 | 爽爽爽爽爽爽a成人免费视频 | 免费视频一区二区性色 | 亚洲一区二区三区在线 | 日本肥妇 | 色多多www网站 | 成年网站在线在免费播放 |