導航:首頁 > 程序命令 > vxworksshell命令

vxworksshell命令

發布時間:2022-10-03 23:04:51

A. 如何在VMWare上安裝VxWorks操作系統

准備工作

我們假設您有一台普通配置的PC機,並安裝了Windows2000操作系統。其次您需要安裝Tornado 2.2 for pcPentium開發環境。預設安裝的Tornado 2.2 for pcPentium可能不包括pcPentium的BSP組件,但該組件可以從風河公司(Windriver)的網站免費下載。

我們將在下文以WIND_BASE引用Tornado的安裝路徑。

其次是要安裝VMWare軟體,這里我們使用4.0的版本。如果您還沒有該軟體,也可以從VMWare的網站下載試用版。

最後,由於Tornado自帶的PC-NET網卡驅動有問題,所以需要下載AMD的PC-NET網卡的VxWorks系統驅動,可以從AMD網站免費下載。

一張1.44M的軟盤,用於製作系統引導盤。

准備並安裝好以上軟體後,就可以開始下一步的工作了。

開始安裝

編譯網卡驅動程序

VMWare為運行於其上的操作系統提供虛擬網卡支持,該網卡類型即為AMD的PC-NET。實際上,在Tornado開發包中已經包含了該類型網卡的驅動程序,但經過測試,對於VMWare無法正常工作,所以您需要從AMD的網站下載最新的驅動程序。

下載得到的是一個可執行的安裝程序,運行該程序將得到一個壓縮包和一個幫助文件,按照該幫助的要求,將壓縮包直接釋放到Tornado目錄下。如果提示是否允許覆蓋文件,則選擇允許。

此後按如下步驟完成驅動程序的編譯和替換:

打開一個控制台窗口,運行批處理程序:$(WIND_BASE)\host\x86-win32\bin\ torVars.bat;
重新定位到$(WIND_BASE)\target\src\drv\end目錄,運行:
make CPU=PENTIUM tool=gnu ln97xend.o

其間會產生一些警告,但這不會影響我們的工作。

重新定位到$(WIND_BASE)\target\lib\pentium\PENTIUM\common目錄,並將上一步生成的文件ln97xend.o復制到此目錄下。備份此目錄下的文件libdrv.a;
運行命令arpentium -d libdrv.a ln97xEnd.o,刪除libdrv.a中原有的ln97xEnd模塊,然後再運行命令:
arpentium -ra iOlicomEnd.o libdrv.a ln97xEnd.o

將我們剛剛創建的新模塊添加進去。

到此有關網卡驅動的設置就完成了。注意不要關閉這個窗口,後面還要使用。修改配置文件

在這一節中,我們要修改編譯VxWorks的配置頭文件Config.h中定義的一些參數,使編譯出來的系統引導程序和VxWorks的映象符合我們的要求;同時還要修改sysLn97xEnd.c這個文件,以使系統的網路功能正常運行。

定位目錄到$(WIND_BASE)\target\config\pcPentium並打開該目錄下Config.h文件;
我們首先要修改VxWorks的啟動參數。先查找到定義DEFAULT_BOOT_LINE宏的地方,修改預處理條件CPU == PENTIUM分支下的定義如下:
#define DEFAULT_BOOT_LINE \

"lnPci(0,0)your_host_name:d:\\vxWorks h=192.168.80.169 e=192.168.80.254 u=target pw=vxworks tn=target"

其中:

lnPci(0,0)指定了使用第0個網卡和第0個處理器,lnPci這個標識會因為使用的驅動程序不同而有所不同,但這里用lnPci就可以了;
your_host_name指定您的主機的名字,使用Windows系統的主機名就可以;
d:\\vxWorks指定了VxWorks映象下載的完整路徑;
h=192.168.80.169是主機的IP地址,就是您當前正在使用的系統的IP地址;
e=192.168.80.254是目標機的IP地址,也就是未來VxWorks操作系統的IP地址,您只要任意指定一個不沖突的IP地址即可,這里我們假設您的目標機IP地址和主機IP地址在同一個網段內;
u=target指定了FTP伺服器的用戶名,這個FTP就是用來下載VxWorks映象的,後面還會提到;
pw=vxwroks是用戶名對應的口令;
tn=target指定目標機的名字,任意指定即可;
您可以參考Tornado自帶的手冊以獲取更多信息;

下面我們要指定使用什麼樣的網卡驅動程序。首先查找「Network driver options」這段文字,之後您可以看到在該注釋後面定義了一系列的有關網卡驅動的宏定義。注意保證INCLUDE_END和INCLUDE_LN_97X_END這兩個宏處於定義狀態(define),其他的宏都處於未定義狀態(undef);
預設情況下,VxWorks系統是不接受外部輸入設備(如鍵盤)的輸入,也不向外部輸出設備(如顯示器)輸出數據。為了便於調試,我們必須改變它的這種預設狀態。我們查找定位宏INCLUDE_PC_CONSOLE,然後保證其處於定義狀態(define)即可;
到此為止,對config.h文件的修改就完成了,保存修改,然後再打開同一目錄下的sysLn97xEnd.c文件;
這一步修改的目的是要使網卡正常工作。我們先定位到「memory-mapped IO base」這段文字,然後將其前面的參數由pciRsrc[endUnit].bar[1]修改為NONE,這樣就可以了。最後別忘了保存。
到此為止,全部的修改工作都完成了,下一步就可以開始編譯連接了。編譯程序

這一節我們要編譯生成bootrom引導程序和VxWorks運行映象。

打開您的Tornado開發工具,在Build菜單下選擇Build Boot ROM,彈出如下對話框:


在BSP列表中選擇pcPentium,而在Image to build列表中分別選擇bootrom和gnu。完成選擇後,點擊OK按鈕就開始引導程序的編譯了。編譯產生的文件bootrom將保存在$(WIND_BASE)\target\config\pcPentium目錄下。

編譯生成bootrom後,還要創建一個VxWorks映象(image),也就是VxWorks操作系統本身的代碼。
創建一個「bootable VxWorks image」的工程;
選擇您需要的VxWorks組件。這一步是可選的,如果您只想使用預設的配置,那根本就不需要這一步;但如果您想使用額外的組件,例如,您可能想通過telnet連接VxWorks系統,這時就需要在Workspace窗口的VxWorks選項卡中選擇telnet sever對應的組件,如下圖:

在這個例子中我們選擇了兩個重要的組件:Telnet server 和 Target shell 。前者使我們可以通過Telnet協議登錄到VxWorks操作系統中;後者則可以讓我們通過命令行控制VxWorks系統。

完成選擇後,即可開始編譯程序;


到此我們已經生成了VxWorks的系統引導程序和運行時的代碼映象。這里還要提醒讀者,在您每次修改完系統的配置信息(如:config.h)後,都要重新創建一個工程來編譯VxWorks映象,以免出現代碼不一致的問題。
將生成的名為「vxworks」的文件復制到D盤根目錄下。這個路徑是由上面我們所設置的DEFAULT_BOOT_LINE宏中的路徑參數決定的,必須保持二者一致。
製作引導磁碟

現在開始製作VxWorks系統引導磁碟,用於引導裝載VxWorks運行映象。

我們回到「編譯網卡驅動程序」一節中所打開的控制台窗口,定位目錄到$(WIND_BASE)\target\config\pcPentium,插入您已經格式化好的軟盤,然後運行:

mkboot a: bootrom

該命令將在軟盤上建立VxWorks系統引導分區,並將引導程序復制到軟盤上。

這里再額外向您介紹一個虛擬軟盤的工具:RamDiskNT,它可以在內存中建立一個虛擬的軟盤,對於提高VxWorks的啟動速度有很大幫助。配置FTP伺服器

這里的FTP伺服器用於在系統成功引導後,下載VxWorks的運行時映象。我們這里使用Tornado開發環境自帶的FTP伺服器。

打開Tornado FTP Server,選擇「Security」菜單下的「Users/Rights」子菜單,彈出如下對話框:

當User Name為「target」時,修改「Home Directory」為D盤根目錄(此路徑由上面的DEFAULT_BOOT_LINE參數決定),同時修改口令為「vxworks」,最後點擊「Done」按鈕完成修改;

為了便於調試,我們還要打開FTP Server的日誌功能。選擇「Logging」菜單下的「Logging Options」子菜單,彈出如下對話框,其中除了「Winsock Calls」外,讓其他選項全都處於開啟狀態。

保持FTP Server窗口處於打開狀態(這樣FTP伺服器就處於運行狀態)。


創建VxWorks系統

打開您的VMWare Workstation,在File->New菜單下選擇創建一個新的虛擬機(Virtual Machine),按照其向導幫助,完成虛擬機的配置。在選擇操作系統類型時,選擇「Other」,其餘選項均使用預設值就可以了。
完成以上配置後,點擊右側窗口中的「Start this virtual machine」,系統即開始引導運行,如下圖所示:

在引導過程中,您會遇到一個7秒鍾的等待,以決定是使用預設的引導參數,還是手動輸入引導參數。這里我們選擇前者,所以不需要做任何工作。

成功引導後,系統會自動從FTP Server下載映象,並開始運行,得到如下畫面:

到此,我們已經成功的在VMWare上安裝了VxWorks操作系統。

需要注意的是,上面的畫面會因為選擇組件的不同而略微有所不同(例如,如果您沒有選擇target shell,就不會出現命令行提示符),但一般不會影響後續操作。

配置聯機調試環境

裝好系統後,您肯定還希望將自己編寫的應用程序下載到目標機進行調試,下面我們就完成這一部分的配置工作。

打開您的Tornado開發環境,選擇「Tools->Target Server->Configure」菜單,彈出如下對話框:

在「Description」中任意填寫一個名字,這里是「net00」;在「Available Back」中選擇「wdbrpc」,並在下面的IP地址框中填寫目標機的IP地址,這里是「192.168.80.254」(由DEFAULT_BOOT_LINE參數決定);將「Target Server Properties」下拉框更改至「Core File and Symbols」,並在「File Path」一項中選擇您的映象的完整路徑,這里是「D:\vxWorks」(由DEFAULT_BOOT_LINE參數決定)。

完成以上兩項配置,點擊「Launch」按鈕,就可以啟動Target Server了。

再回到Tornado開發環境,在工具條上的Target Server下拉框列表中選擇「192.168.80.254@your_host_name」。這時您會發現工具條中一些原先處於「禁用」狀態的工具按鈕,現在都已經處於「激活」狀態了。

現在您就可以開始聯機調試您的VxWorks應用程序了。

B. 為什麼vxworks系統可以通過shell直接調用c函數而linux系統不能

系統調用是程序的事情
shell是人機介面,是你輸入命令的地。
這兩個完全無關。
你在shell裡面輸入命令,shell會根據你的命令執行程序,
執行的程序有可能調用系統的功能。
但是執行系統功能的指令,並不一定是通過shell發出的,
通過shell發出的命令也不一定會執行系統調用。

C. 如何在我現在用的pc機上安裝Vxworks系統,我現在用的pc機是windows xp系統。並且要兩個系統並存。

你要在啟動的時候看見選擇操作系統的菜單,我覺得可以用LILO之類的Linux操作系統提供的BootLoader軟體弄,但是這個真的沒有意義。因為Vxwork啟動之後只有命令行,人機界面一點也不友好(因為VxWorks不是桌面操作系統,也不是干這個用的),操作系統配置不當的話,啟動之後連Shell命令行也沒有。
建議你不要直接安裝,還使用虛擬機玩吧。上「Tony嵌入式論壇」上面去找吧,在PC上面玩VxWorks有很多文章。

D. Vxworks 網路實時調試

總結的vxworks常用調試命令,學習vxworks這些東西是必須的。 1.與任務相關的命令 sp ,[arg1],...,[arg9] -啟動任務,最多接受9個參數,默認的優先順序100、堆棧20000位元組 period n,,[arg1],...,[arg8] -創建一個周期調用的任務,周期為n秒,最多接受8個參數 repeat m,,[arg1],...,[arg8] -創建一個反復調用的任務,調用次數為m,m=0時永久調用,最多也是8個參數 ts tidX -掛起任務 tr tidX -恢復掛起的任務 td tidX -刪除任務 i tidX -顯示任務基本信息,參數為0時顯示全部任務 ti tidX -顯示任務詳細信息,包括寄存器、堆棧等 tt tidX -顯示任務的函數調用關系 checkStack tidX -顯示任務堆棧使用的歷史統計,參數為0時顯示全部任務 [其中tidX可以為任務ID 也可以為任務名] 2、系統信息 lkup ["string"] -在系統符號表中查找並列出含有"string"字元的函數及全局變數,有兩個特殊參數: 0,給出符號表統計;""(空字元串),列出全部符號 lkAddr addr -顯示addr地址附近的符號表 l addr,[n] -顯示addr地址開始的n條指令的反匯編,n省略時默認為10條指令 h [n] -n為0時列出最近執行的shell命令,默認20條;n非0時,設定shell記錄的歷史命令的數目 d [addr,[number],[width]] -顯示addr地址開始的number個單元的內容,width定製每個單元的寬度,可以是1、2、4、8 m addr,[width] -按width寬度修改addr地址的內容,width可以是1、2、4、8 memShow 1 -顯示系統分區上空閑和已分配空間的總數等 printErrno value -列印系統定義的錯誤碼的宏 3、與網路相關的命令 ifShow ["ifname"] - show info about network interfaces inetstatShow - show all Internet protocol sockets tcpstatShow - show statistics for TCP udpstatShow - show statistics for UDP ipstatShow - show statistics for IP icmpstatShow - show statistics for ICMP arpShow - show a list of known ARP entries mbufShow - show network stack data pool statistics netStackSysPoolShow - show network stack system pool statistics routeShow - display all IP routes (summary information) mRouteShow - display all IP routes (verbose information) routestatShow - display routing statistics routeAdd "destaddr","gateaddr" - add route to route table routeDelete "destaddr","gateaddr" - delete route from route table 說明:上述大多數命令都可以在help、netHelp中查到

E. 關於VxWorks系統調用,有沒有封裝好的C++庫

VxWorks下採用C++構建Application可以使得程序更加利於維護,利用其提供的STL支持,可以省去大量的底層工作,大大加速軟體的開發進度。


1 異常類VxError


首先封裝異常類VxError,當程序出現異常時,向外層調用者拋出一個該類的對象,調用者採用try-catch clause捕獲該異常對象,進行異常處理。


由於該類針對的是系統運行時產生的異常,故考慮由C++標准異常類中的runtime_error類派生;VxWorks內核採用設置全局變數errno的方式記錄系統運行中產生的錯誤,所以將int errNum 作為該類的成員變數,用以記錄異常發生時的errno值。源代碼如下:


#include<stdexcept>
#include"errnoLib.h"

classVxRunTimeError:publicruntime_error{
protected:
interrNum;
public:
VxRunTimeError(conststringmsg=""):runtime_error(msg),errNum(errnoGet())
{
}
intgetErrNum(void)
{
returnerrNum;
}
};


2 任務類VxTask


任務類VxTask用以封裝VxWorks的task,本來考慮將任務的入口函數作為該類的純虛成員函數,用戶只要在該類的派生類中重載該純虛函數就能實現自己的VxWorks task,但由於taskSpawn()的入口函數的參數類型是FUNCPTR(typedef int (*FUNCPTR) (...)),而指向VxTask類成員函數的指針類型為int (VxTask:: *ptr)(…),編譯器不支持這兩種類型之間的強制類型轉換,所以只能換種思路——用一個名為Runnable的類專門封裝task的入口函數,同時提供一個靜態成員函數完成對該入口函數的調用,而該靜態成員函數地址可以轉換成FUNCPTR類型,供taskSpawn()調用。在VxTask類中實現關於task的系統調用。部分源代碼如下:


classRunnable{
protected:
virtualvoidrun()=0;
public:
staticvoidentry(Runnable*Run)
{
Run->run();
}
virtual~Runnable()
{
}
};

classVxTask{
protected:
char*name;
inttid;
public:
VxTask(char*Name,intArg1,FUNCPTREntry=(FUNCPTR)Runnable::entry,intPri=150,intOpt=VX_FP_TASK,intStackSize=2000000,
intArg2=0,intArg3=0,intArg4=0,intArg5=0,intArg6=0,intArg7=0,intArg8=0,intArg9=0,intArg10=0):name(Name)
{
if(Entry==NULL){
throw(VxRunTimeError("TaskCreatFail:EntryCan'tbeNULL!"));
}

tid=taskSpawn(Name,Pri,Opt,StackSize,Entry,Arg1,Arg2,Arg3,Arg4,Arg5,Arg6,Arg7,Arg8,Arg9,Arg10);
if(tid==ERROR){
throw(VxRunTimeError("TaskSpawnFail!"));
}
}
~VxTask()
{
if(taskDelete(tid)==ERROR){
throw(VxRunTimeError("TaskDeleteError:Taskdeletefail!"));
}
}
voidsuspend()
{
if(taskSuspend(tid)==ERROR){
throw(VxRunTimeError("TaskSuspendError:Tasksuspendfail!"));
}

}
voidresume()
{
if(taskResume(tid)==ERROR){
throw(VxRunTimeError("TaskResumeError:Taskresumefail!"));
}
}
intgetTid()
{
returntid;
}
};


使用時首先派生Runnable的子類,重載其run()成員函數,然後將該子類的對象指針賦給VxTask的構造函數,用戶task就跑起來了:


classMyRunnable:publicRunnable
{
voidrun(){
while(1){
cout<<"HelloVxWorksTaskWorld!"<<endl;
taskDelay(sysClkRateGet());
}
}
};

voidmyMain()
{
MyRunnablemyRun;
VxTasktask(「tMyRun」,(int)&myRun);
While(1){
taskDelay(sysClkRateGet());
}
}


在shell中sp myMain可以看到預期效果,但如果myMain()中去掉最後的while(1)循環,就只會在輸出窗口中看一次Hello VxWorks Task World!輸出。Why?(提示:VxTask的析構函數!)


3 中斷類VxInt


中斷類VxInt與VxTask類似,同樣用Runnable的派生類封裝入口函數,VxInt類實現中斷系統調用:


typedefvoid(**VOIDFUNCPTRPTR)(...);

classVxInt{
protected:
intintNum;
public:
VxInt(intIntNum,intArg=0,VOIDFUNCPTREntry=(VOIDFUNCPTR)Runnable::entry):intNum(IntNum)
{
if(intConnect((VOIDFUNCPTRPTR)INUM_TO_IVEC(intNum),Entry,Arg)==ERROR){
throw(VxRunTimeError("InterruptConnectFail!"));
}
}
};


與task不同,中斷服務程序(ISR)中不能調用可能被阻塞的函數,這點需要在重載Runnable派生類中的run()成員函數時引起注意。


4 看門狗類 VxWatchDog


VxWorks中的看門狗實際上是利用系統時鍾中斷來定時執行某個函數的,所以被看門狗執行的函數是運行在中斷的上下文(Context)中,而不是任務的上下文中,故該函數中也不能調用帶有阻塞功能的函數。所以VxWatchDog的實現與中斷類VxInt類似:


classVxWatchDog{
WDOG_IDid;
intdelay;
public:
VxWatchDog(intDelay,Runnable*EntryObj):delay(Delay)
{
id=wdCreate();
if(id==NULL){
throw(VxRunTimeError("WatchDogCreatFail!"));
}

if(wdStart(id,delay,(FUNCPTR)Runnable::entry,(int)EntryObj)!=OK){
throw(VxRunTimeError("WatchDogStartFail!"));
}
}
voidcancel()
{
if(wdCancel(id)!=OK){
throw(VxRunTimeError("WatchDogCancelFail!"));
}
}

WDOG_IDgetId()
{
return(id);
}

~VxWatchDog()
{
if(wdDelete(id)!=OK){
throw(VxRunTimeError("WatchDogDeleteFail!"));
}
}
};

wdStart(WDOG_ID Id, int Delay, FUNCPTR Ptr, int Para )只會讓函數Ptr在延時Delay ticks後執行一次,要周期性地執行Ptr,需要在Ptr中遞歸調用wdStart()。那能否這樣實現呢:


classWdRun:publicRunnable{
protected:
voidrun(){
logMsg("HelloWatchDogWorld!",0,0,0,0,0,0);
VxWatchDogwtDog(sysClkRateGet(),this);
}
};

上述程序試圖在入口函數中產生一個VxWatchDog類的對象,並用this指針初始化該對象,以期達到每秒鍾執行一次入口函數的目的。但是不要忘了該入口函數是運行在中斷的上下文中的,不允許動態地產生或刪除對象,所以採用這種方法實現周期性執行作業並不可行。


為了在入口函數中調用wdStart(),且要避免動態地生成VxWatchDog對象,需要在Runnable派生類的成員變數中包含一個VxWatchDog指針,通過該指針調用所指對象的wdStart()。為此,需要在VxWatchDog類中增加成員函數:


VxWatchDog::VxWatchDog(intDelay):id(wdCreate()),delay(Delay)
{
if(id==NULL){
throw(VxRunTimeError("WatchDogCreatFail!"));
}
}
voidVxWatchDog::start(Runnable*EntryObj)
{
if(wdStart(id,delay,(FUNCPTR)Runnable::entry,(int)EntryObj)!=OK){
throw(VxRunTimeError("WatchDogStartFail!"));
}
}
classWdRun:publicRunnable{
protected:
VxWatchDog*dog;
virtualvoidrun(){
logMsg("HelloWatchDogWorld!",0,0,0,0,0,0);
dog->start(this);
}
public:
WdRun(VxWatchDog*Dog):dog(Dog)
{
}
};
voidmyMain()
{
VxWatchDogwtDog(sysClkRateGet());
WdRunrun(&wtDog);
wtDog.start(&run);
while(1){
taskDelay(sysClkRateGet());
cout<<"InMain!"<<endl;
}
}


在shell中輸入sp myMain,可以看到預期輸出。


5 信號量類 VxSem


VxWorks信號量包括互斥信號量、二進制信號量和計數信號量,這三種信號量除了創建時調用各自的創建函數,其它操作具有相同的介面,所以考慮採用VxSem類作為信號量基類,提供統一的信號量操作介面,VxSemM、VxSemB、VxSemC三個派生類分別封裝了三種信號量的創建函數:


classVxSem{
protected:
SEM_IDid;
public:
VxSem(SEM_IDId):id(Id)
{
}

virtual~VxSem()
{
if(semDelete(id)==ERROR){
throw(VxRunTimeError("SemaphoreDeleteFail!"));
}
}

voidtake(intTimeOut=WAIT_FOREVER)
{
if(semTake(id,WAIT_FOREVER)==ERROR){
throw(VxRunTimeError("SemaphoreTakeFail!"));
}
}
voidgive()
{
if(semGive(id)==ERROR){
throw(VxRunTimeError("SemaphoreGiveFail!"));
}
}
voidflush()
{
if(semFlush(id)==ERROR){
throw(VxRunTimeError("SemaphoreFlushFail!"));
}
}
SEM_IDgetId()
{
returnid;
}
};

classVxSemB:publicVxSem{
public:
VxSemB(intOpts=SEM_Q_FIFO,SEM_B_STATEState=SEM_EMPTY):VxSem(semBCreate(Opts,State))
{
if(id==0){
throw(VxRunTimeError("BinarySemaphoreCreatFail!"));
}
}
};

classVxSemM:publicVxSem{
public:
VxSemM(intOpts=SEM_Q_PRIORITY|SEM_INVERSION_SAFE|SEM_DELETE_SAFE):VxSem(semMCreate(Opts))
{
if(id==0){
throw(VxRunTimeError("Mutual-exclusionSemaphoreCreatFail!"));
}
}

};

classVxSemC:publicVxSem{
public:
VxSemC(intOpts,intCnt):VxSem(semCCreate(Opts,Cnt))
{
if(id==0){
throw(VxRunTimeError("CountingSemaphoreCreatFail!"));
}
}
};

F. VxWorks上tShell和hostshell的區別

VxWorks上支持2種shell,一種叫tshell(target shell)一種叫host shell
tshell是VxWorks鏡像中的一個任務,用「-〉」做提示符,可以在超級終端中用「i」顯示任務列表並看到對應的tshell任務,或者用taskNameToId(「tshell」)獲取任務的Id,任務Id是指向TCB的指針。

tshell是一個C語言的parser,可以對變數賦值,顯示變數的值,變數的數值運算,調用函數等,但不支持if,for,while等的邏輯指令,比如

-〉aa=1在tshell中給變數aa賦值為1(如果aa不存在,則創建它,並加入到符號表,新創建的變數都是32的整形變數!!)

tshell是使用YACC實現的。

Hostshell是主機上的一個程序他既可以解析C語言,又可以解析tcl語言

G. vxworks rreboot調用什麼程序

Ctrl+X,Ctrl+C都是在ty中處理的,分別需要通過ioctl設置OPT_MON_TRAP和OPT_ABORT選項(默認是打開的),ctrl+c調用shellRestart實現shell重啟,ctrl+x直接調用reboot實現系統重啟。

H. vxworks m命令使用方法

輸入m命令選擇對象,指定基點,滑鼠往需要移動對象的方向移動一下,輸入需要移動的距離就可以了。
什麼是命令? 命令就是必須強制執行。具體的內容和事項有命令下達者說明,也就是執行具體的事項,也叫做任務。

I. 怎麼看vxworks的版本,用CMD命令可以嗎

shell下輸入 version ,這個是系統自帶的,當然你也可以自己定義一個查詢系統版本的函數。

J. vxworks 任務創建成功,但實際函數未執行

你是用vxsim嗎?應該是列印到虛擬終端了,而不是直接輸出到shell

閱讀全文

與vxworksshell命令相關的資料

熱點內容
ps中擴展功能在文件夾的什麼位置 瀏覽:899
雙極壓縮機為什麼要先高壓 瀏覽:523
蘋果手機伺服器填什麼 瀏覽:828
android移動動畫效果 瀏覽:680
電子和伺服器是什麼意思 瀏覽:691
phpurl中文亂碼問題 瀏覽:893
程序員那麼可愛大結局陸漓產子 瀏覽:538
java如何從雲伺服器讀取本地文件 瀏覽:923
壓縮空氣軟管製作方法 瀏覽:911
天河三號演算法 瀏覽:924
php隊列教程 瀏覽:632
洪水命令 瀏覽:529
安卓怎麼弄成蘋果在線 瀏覽:435
谷歌web伺服器地址 瀏覽:898
安卓鎖屏圖片如何刪除 瀏覽:719
python3多進程編程 瀏覽:714
證明代碼是程序員寫的 瀏覽:397
演算法錯誤發現辦法 瀏覽:410
河南省醫院掛號是哪個app 瀏覽:629
冬日戀歌哪個APP能看 瀏覽:673