原文由firedragen发表在
http://www.100ask.net/showtopic-2126.aspxDear all:
由於昨日剛入手 OpenJTAG,按照 CD-ROM 內容的教程進行安裝並使用版上的 IXP425 config 測試時,發現有些 error(抱歉昨日沒紀錄這些 err msg),就到 YAGARTO website 尋找是否有相關問題與解答;這時發現 Windows 版的 OpenOCD 以及 YAGARTO GNU ARM toolchain 有較新的版本釋出,便下載來使用。那時沒注意 OpenOCD 的 Version 欄位有個『note』,因為 ftd2xx.dll 的專利問題,OpenOCD 0.2.0 改用 libusb-win32 drivers,並連結至 libftdi 的 library,所以搞了很久,終於在剛剛搞定了 OpenOCD 0.2.0 版的初始化,這邊提供一些微薄的心得紀錄,給想使用 Win32 OpenOCD 0.2.0 + openJTAG 的朋友們參考一下。
環境 --
OS:WinXP pro SP3 繁體中文
Target CPU:Intel xscale IXP425
1. 安裝 Win32 openOCD 0.2.0-SR1
根據 YAGARTO 的 link,至
http://www.freddiechopin.info/in ... /category/4-openocd 下載 openocd-0.2.0-sr1.zip,解壓縮後執行 openocd.msi 安裝
2. 變更 driver 並修改設定檔
進入 openocd 的安裝目錄後(預設為 C:\Program Files\OpenOCD\0.2.0\),至 drivers 資料夾下並解開 ft2232.zip 並進入。這時候可以先看一下 info.txt,一開始描述了為何改用 libusb-win32 driver 的原因;繼續往下看,發現 FT2232 JTAG device list 裡面沒有 OpenJTAG(我想這應該是正常的),所以必須修改 inf file 才能使用;使用慣用的 text sofeware 打開 libusb-win32_ft2232_driver.inf,在 [Devices] 以及 [Devices.NT] 的區塊中,各加入一行: "USB<=>JTAG&RS232 (Channel A)"=LIBUSB_DEV, USB\VID_1457&PID_5118&MI_00,儲存後就能關閉此檔案。
由於我們之前使用 OpenJTAG CD-ROM 安裝了相關 driver,所以必須先手動移除再安裝新的 driver。首先將 OpenJTAG 接上,進入『裝置管理員』(可以使用 win key + break 叫出系統內容,再點選『硬體』tag 便能見到),打開 USB controller 的樹狀結構,在 100ASK 的 device 上按右鍵 -> 解除安裝。這邊要注意,不要將 100ASK Serial Port 也解除安裝了,因為我們只需要調整 USB 的相關使用,serial port 的部份不需要更動。
解除安裝後將 OpenJTAG 拔除後再插入,此時會詢問是否從 windows update 以及是否自動 search,都選擇不要,以手動的方式選擇剛剛解壓縮的 driver 資料夾(C:\Program Files\OpenOCD\0.2.0\drivers\ft2232);安裝程式會自動辨識相關檔案並且安裝。結束後再檢視『裝置管理員』,發現 USB controller 裡面沒有原先的裝置,已經變更並放置在『LibUSB-Win32 Devices』的樹狀列表中。此時我們的 OpenJTAG USB 的相關部份已經更新並使用新的 driver 了。
3. 使用新的 OpenOCD cfg file
OpenOCD 0.2.0 Win32 不只變更了 driver 的使用,還修改並移除了原先的 cmd,所以之前的 example cfg file 很多 cmd 都無法被辨識,所以請參考 OpenOCD website 的 user guide(
http://openocd.berlios.de/doc/html/index.html )瞭解一下哪些 cmd 已經無法使用。另外,OpenOCD 安裝目錄下的 target 資料夾裡面有許多已經預先定義好的設定檔,可以參考看看。最後附上我目前使用的 openocd.cfg 內容,target cpu 為 intel xscale IXP425,只進行到 init 的部份,後面的 action script 與 flash 相關部份請大家自行使用。
复制代码- #daemon configuration
- telnet_port 4444
- gdb_port 3333
- #interface -- 100ASK
- interface ft2232
- ft2232_device_desc "USB<=>JTAG&RS232 A"
- ft2232_layout jtagkey
- ft2232_vid_pid 0x1457 0x5118
- jtag_speed 0
- reset_config trst_and_srst
- jtag_nsrst_delay 200
- jtag_ntrst_delay 400
- jtag newtap ixp42x cpu -irlen 7 -ircapture 0x1 -irmask 0x7f -expected-id 0x7e
- #target configuration
- set _TARGETNAME [format "%s.cpu" ixp42x]
- target create $_TARGETNAME xscale -endian big -chain-position $_TARGETNAME -variant ixp42x
- init
- #target_script 0 reset ixp42x.actions
- #flash bank cfi 0x50000000 0x1000000 2 2 0
- #working_area 0 0x800000 0x100000 nobackup
|