閱讀895 返回首頁    go 阿裏雲 go 技術社區[雲棲]


使用串口下載vxworks映象的方法

使用串口下載vxworks映象的方法
由於壇子裏這方麵的可行性文章比較少,不時有一些網友在詢問這方麵的問題,再加上通過這種方法可以調試網絡驅動,所以我花了一點時間把整個下載過程試了一下。
1
.配置config.h文件
    
 a. 修改DEFAULT_BOOT_LINEtsfs(target server file system)方式引導vxWorks映象:
#define DEFAULT_BOOT_LINE \
"tsfs(0,0)aman:/vxWorks h=192.168.0.108 e=192.168.0.67 u=amd pw=0000 tn=snds100"
  b. 如果定義了INCLUDE_END,則#undef掉它。
  c.屏蔽掉你原來對串口的設置。如果你有兩個可用串口,那麼增加以下的配置內容:
―――――――――――――――――――――――――――――――――――
/* Serial port configuration */
#define INCLUDE_SERIAL

#undef  CONSOLE_TTY
#define CONSOLE_TTY  1 /*console channel */
#undef  CONSOLE_BAUD_RATE
#define CONSOLE_BAUD_RATE  38400 /* Redefine to PP1 default */

#undef  WDB_TTY_CHANNEL
#define WDB_TTY_CHANNEL     0

#undef  WDB_COMM_TYPE
#define WDB_COMM_TYPE     WDB_COMM_SERIAL  /* 0 communication through serial port */

#undef  WDB_TTY_BAUD
#define WDB_TTY_BAUD    38400

#define INCLUDE_TSFS_BOOT
―――――――――――――――――――――――――――――――――――
這時你的串口0通道將被用作vxworks映象下載及握手的通道,而串口1通道則被作為控製台信息的打印通道。兩者的波特率都是38400。如果你的隻有一個串口,那麼你必須這樣配置(我沒有嚐試)
―――――――――――――――――――――――――――――――――――
#undef CONSOLE_TTY
#define CONSOLE_TTY         NONE
#undef WDB_TTY_CHANNEL
#define WDB_TTY_CHANNEL     0
#undef WDB_COMM_TYPE
#define WDB_COMM_TYPE  WDB_COMM_SERIAL
#undef  WDB_TTY_BAUD
#define WDB_TTY_BAUD    38400
#define INCLUDE_TSFS_BOOT
這時你將沒有控製台,所以你將不能更改boot參數。

2
.配置TornadoTarget Server
a.
選擇Tornado下的菜單“Tools”->“Target Server”->“Config…”->New”,新建一個Target Server。如下圖所示:

點擊瀏覽該文件



b.配置core file
如下圖所示,指定要下載的vxworks映象文件:

點擊瀏覽該文件



c.配置tsfs文件係統
如下圖所示:

點擊瀏覽該文件


3.這樣就基本完成了所有的配置。重新編譯bootromvxworks,接上2根串口線,配置好作為控製台的超級終端。再啟動tornadotarget server,然後重啟目標機,出現如下的界麵:(由於一帖隻能帖3圖,所以隻好跟在下一帖了)
  目標機從串口0開始下載vxworks映象並運行它。最後打印出WDB: Ready.要了解更詳細的內容請參閱Tornado在線幫助:TSFS Boot Configuration
  希望大家完善。

 
跟帖:)

點擊瀏覽該文件

 

我的flash上沒有文件係統,配置目標服務器時必須配置tsfs項嗎?如果不是那引導行怎麼改
我用一個網口的方式,可是bootroom啟動後,目標服務器也配置成功,可是超級終端顯示下載不了vxworks
seasoblue
斑竹在辛苦一下

 

 
請注意:tsfs是指target server file system,而不是tffs!所以和有沒有flash無關。你按我上麵的步驟作應該沒有問題。
good luck!

 

目標服務文件係統:TSFS
雖然目標服務文件係統(TSFS)是一個全特征VxWorks文件係統,但是通過使用目前定位在主機上的文件係統執行文件操作。TSFS使用WDB驅動程序把來自I/O係統的請求轉移到目標服務器。目標服務器使用主機文件係統讀取執行請求。那麼當你用TSFS打開一個文件,被打開的文件事實上在主機上。將來在對open()調用中獲得的文件描述符的read()和write()調用事實上是從打開的主機文件讀取和寫入。

我使用一個串口方式下載映像,可是這樣超級終端和目標服務器不能同時使用。
可以使用telnet嗎,把控製台重定向。可是改了引導行後,網口ping不通目標機了
斑竹多指教

 
配置vxworks時要,包括target file system,不包括network connect,包括serial connect

我用以上方法啟動目標機,光標在Waiting for Target Server connection...處停滯不前,主機的Log Console移一直connecting totarget agent....為什麼會有這種情況?檢查target server配置沒發現有什麼不妥。能給些建議嗎?

我用以上方法啟動目標機,光標在Waiting for Target Server connection...處停滯不前,主機的Log Console移一直connecting totarget agent....為什麼會有這種情況?檢查target server配置沒發現有什麼不妥。能給些建議嗎?
當我將config.h#if TRUE改為#if FALSE,並且仍舊用fd=0,0(0,0)....作文引導行時,terminal上可以看見啟動信息,而目標機顯示啟動信息隻到VxLd1.2.................
我希望在主機的terminal和目標機上都能看到目標機啟動和運行信息,可以嗎?請指教

1.   檢查目標機和宿主機的波特率是否一致。
2
。適當降低波特率,如38400

因為你沒有選中目標服務器配置中console and redirection選項中的redirect  target iocreat console windows
另外target server file system選項中選中read only

請問大俠們一個問題:
我是用的一個console串口和一個10M的以太網口,可是在啟動時,console顯示信息一直是正常的,直到
Starting at 0x10000...

Attached TCP/IP interface to cpm unit 0                                      
Attaching network interface cpm0...                                  
Attaching network interface lo0... done.

哦,忘了說我是用的MPC860作為CPU的。
然後發生的事情很奇怪,大概有1/5的概率是會出現WDBREADY的信息,但是大多數情況下,則提示:
Implementation Dependent Software Emulation
Exception current instruction address: 0x000cf40c
Machine Status Register: 0x00009030
Condition Register: 0x22000080
Task: 0x3ffdf8 "tRootTask"

請問問題所在?謝謝!

我按照seasoblue的方法串口下載vxworks
啟動後終端顯示有規律的亂碼,(主機和目標機串口波特率是一致的)
問題可能出在哪裏呢

不光是串口波特率,還有數據位的長度/停止位長度/奇偶校驗/停止位長度/流量控製等都要一致。

15樓可能沒有注意到斑竹的這個步驟
> b.
如果定義了INCLUDE_END,則#undef掉它。

 

最後更新:2017-04-03 12:56:20

  上一篇:go Android開發環境的搭建
  下一篇:go Log4j原理java控製台個性化輸出加超鏈接標記