WTX概況
Tornado 公開了應(yīng)用程序接口和協(xié)議。對 Tornado 工具而言 ,有兩個重要的協(xié)議 WTX (Wind River Tool eXchange)和 WDB (Wind DeBug) ,它們是聯(lián)系 Tornado 工具和目標(biāo)機(jī)的媒介。
WTX協(xié)議負(fù)責(zé)目標(biāo)服務(wù)器和駐留主機(jī)的開發(fā)工具之間的通信。該協(xié)議是可擴(kuò)展的 ,允許添加新工具設(shè)計(jì)中需要的新的服務(wù)。
WDB 協(xié)議負(fù)責(zé)目標(biāo)服務(wù)器和目標(biāo)機(jī)代理器之間的通信。
WTX語言支持
WTX協(xié)議通常是通過TCL命令與C函數(shù)來進(jìn)行訪問的。分別提供了TCL接口函數(shù)庫與C語言的函數(shù)庫。
WTX協(xié)議的通信機(jī)制
WTX協(xié)議提供了Tool 與Target Server之間的接口。他們之間的通信機(jī)制如下,一個Tool向Tareget Sever請求信息或執(zhí)行動作,WTX將這些請求傳達(dá)給Target Server,而后Target Server 將作出適當(dāng)?shù)捻憫?yīng)。
WTX 消息格式
所有的WTX消息都在installDir/host/include/wtxmsg.h中被詳細(xì)定義了,這些消息都有一個同樣的前綴“WTX_MSG_”。這些消息的定義中都包括一個WTX_CORE結(jié)構(gòu)(如下所示),該結(jié)構(gòu)中包括了這個消息的標(biāo)識符與相應(yīng)的錯誤代碼errCode。當(dāng)消息被正確的調(diào)用則返回OK,errCode錯誤代碼為0,否則如果調(diào)用失敗則返回相應(yīng)的errCode錯誤代碼(非零值)。可根據(jù)錯誤的返回值errCode到installDir/host/include/wtxerr.h中找到相應(yīng)的錯誤信息。
typedef struct wtx_core
/* WTX message core */
{
UINT32 objId; /* identifier */
WTX_ERROR_T errCode; /* service error code */
UINT32 protVersion; /* WTX protocol version */
} WTX_CORE;
WTX協(xié)議應(yīng)用范圍
Sessions交互時域與日志的管理;
系統(tǒng)級與任務(wù)級的調(diào)試;
Tool與Target Sever的綁定
目標(biāo)機(jī)內(nèi)存的訪問
Tool與Target Server的斷開
管理目標(biāo)模塊
管理符號表
管理上下文
支持虛擬輸入輸出
管理事件
支持Gopher
WTX協(xié)議的C語言API
WTX C API是專為ANSI C而設(shè)計(jì)的,其將允許C應(yīng)用程序可以享受Target Sever 的服務(wù)。任何的WTX應(yīng)用都可以通過WTX C API來實(shí)現(xiàn)。
每一個WTX 的請求都被配備了相應(yīng)的C語言子函數(shù)。例如,WTX_MEM_READ被配備了C函數(shù)wtxMemRead( ),所有的WTX C API 函數(shù)名都是從WTX的協(xié)議請求而來的。所欲的WTX C API都被保存在installDir/host/hostType/lib/libwtxapi中。
WTX C API調(diào)用框架
Tornado提供了wtx庫wtxapi.dll,其函數(shù)聲明在\host\include\wtx.h中,下面闡述了如何調(diào)用這些函數(shù)。
①包含庫文件說明:
#include “wtx.h”
②定義句柄結(jié)構(gòu):
HWTX
hwtx;
/* HWTX是句柄結(jié)構(gòu) */
③初始化WIX句柄:
/*initialize WTX session handle */
if(wtxInitialize(&hWtx)!=WTX_OK)
return (WTX_ERROR);
④連接到名字為“xulifeng”的目標(biāo)機(jī)服務(wù)器:
/* attach to Target Sever named “xulifeng” * /
if(wtxToolAttach(hWtx,“xulifeng”,“wtxApp”)!=WTX_OK)
return(WTX_ERROR);
⑤ 注冊事件(缺省是全部的事件):
if(wtxRegisterForEvent(hwtx,".*") != WTX_OK)
{
wtxToolDetach(hWtx);
return(WTX_ERROR);
}
⑥
這里添加wtx應(yīng)用程序部分
.
.
.
.
⑦
斷開連接
wtxToolDetach(hWtx);
⑧
結(jié)束任務(wù)
wtxTerminate(hWtx);
在wtx應(yīng)用程序部分,用戶可以根據(jù)需要調(diào)用相應(yīng)函數(shù)來完成自己想要實(shí)現(xiàn)的功能。如查看內(nèi)存、查看任務(wù)、下裝程序、運(yùn)行任務(wù)等等。