D/FW

Debug Firmware for MSP-FET430UIF/eZ430U

->English

はじめに

D/FWは MSP-FET430UIF, eZ430U 用の非公式ファームウェア(DFW)と それに付随するホストプログラム群です。 動作確認は MacOSX で行っていますが、他の UNIX (Linux とか BSD) でも使える筈です。 自習の為にホビーとして作っています。

D/FW には 2 種類のファームウェアが含まれます。

What's new

5/7/2010 (Version 0.19):
MSP430F2274 用のデバッグファームウェア(DFW)を追加しました。
5/3/2010 (Version 0.18):
eZ430u 用のシリアルポートの中継専用(デバッグ機能は使えない)ファームウェア(PTFW)を追加しました。
5/1/2010 (Version 0.17):
Gentoo Linux でも使えたという報告をいただきました。
README も参照してください。

デモ

うまく動作する組み合わせ

Host

ホスト CPU が Big endian の場合は gdbproxy と bufet にちょっとした変更を加える必要があります。

FET

Target

FETDeviceTAPTarget BoardComments(test by)
FETUIFF169JTAGMSP-TS430PM64 
FETUIFF2274JTAGMSP-TS430DA38 
FETUIFF2274SBW MSP-TS430DA38 
FETUIFF2274SBW eZ430-RF2500T  
FETUIFF1612JTAGeZ430U(Rev2.0)Soldered TP7..TP1
FETUIFF2618CPUXV1/JTAGMSP-TS430PM64 
FETUIFF5529CPUXV2/JTAG MSP-TS430PN80USB  
FETUIFF5529CPUXV2/SBW MSP-TS430PN80USB  
FETUIFF6137CPUXV2/SBW eZ430-Chronos  
eZ430U F2012SBW eZ430-T2012  
eZ430U F2274SBW eZ430-RF2500T  
eZ430UF6137CPUXV2/SBW eZ430-Chronos  
F2274F1612JTAGeZ430U(Rev2.0)F2274@R2500T
F2274F2274SBWeZ430-RF2500TF2274@R2500T
FETUIFCC2511CC8051 CC2511DK_Dongle Chipcon RF

必要なもの

準備

MSP-FET430UIF

  • FET430UIF 用の JTAG コネクタ。
  • FET430UIF の Rev1.3の基板だとグランドとショートしてしまうので VCCT(J6 の7ピン)はつなげてません。

eZ430U

MSP430F2274(RF2500T)

  • JTAG のコネクタと SBW に対応させる為のジャンパを取り付けます。
  • つなげ方はdfw/conf/f2274/uif_f2274.cを参照してください。
  • このページの Step5 も参照。

ホストコマンドの紹介

dmwt : Dfw Memory WriTer

ターゲットCPUへのプログラムの書き込みには dmwt を使います。

Usage: dmwt [-vdf] [-p /dev/cu.usbmodemXXX] [-c TARGET_OPTIONS] 
            [-b name.txt from-addr] [object]
object は ELF か Intel HEX か TITXT 形式。 使用している OS によっては /dev/cu.usbmodemXXX/dev/ttyACMXXX/dev/ttyXXX になる場合もあります。
$ dmwt                               # ヘルプメッセージを表示
$ dmwt -f dfw.fetuif.elf             # ファームウェアアップデート
$ dmwt -c TARGET_OPTIONS a.out
$ dmwt -p /dev/cu.usbmodem001 -c "SBW" a.out
$ dmwt -vc "SBW" a.out               # うるさいモード

$ dmwt -c ""  a.out                  # デフォルトは JTAG
$ dmwt -c "SBW"  a.out               # SBW で書き込む時はこうします。
$ dmwt -c "VCC 3000 UNLOCKA" a.out   # 2xx ではINFO_Aのプロテクトを外します。
$ dmwt -c "CPUXV1" a.out                   
$ dmwt -c "CPUXV2" a.out                   
$ dmwt -c "CC8051" main.hex

その他 examples/*/Makefile にいろいろあります。

gdbproxy

$ msp430-gdbproxy --help uifdfw
$ msp430-gdbproxy --port=2000 uifdfw --c TARGET_OPTIONS
$ msp430-gdbproxy --port=2000 uifdfw --c "CPUXV2" --debug

$ msp430-gdbproxy --port=2000 uifdfw --c "SBW"         # msp430/SBW
$ msp430-gdbproxy --port=2000 uifdfw --c "CPUXV1"      # CPUXV1/JTAG
$ msp430-gdbproxy --port=2000 uifdfw --c "CPUXV2 SBW"  # CPUXV2/SBW
.gdbinit はこんな感じです。
set remoteaddresssize 64
set remotetimeout 999999
target remote localhost:2000

define reload
  monitor erase
  monitor flash
  load
  monitor memory
  set $pc = *0xfffe
end

TARGET_OPTIONS

TARGET_OPTIONS は D/FW のホストコマンドに共通のオプションです。
   MSP430    : (default) msp430x1xx, msp430x2xx, msp430x4xx
   CPUXV1    :           msp430x2xx, msp430x4xx with CPUX
   CPUXV2    :           msp430x5xx, cc430x6xx 
   CC8051    :           cc111x, cc251x, etc.  

   VCC xxxx  : sets VCC to XXXX mV (e.g., VCC 3300), FET430UIF only.

   JTAG      : (default)
   SBW       :          

   FastFlash : (default)
   SlowFlash :  FastFlash の機能もたない比較的古い CPU で必要になります。
   LOCKA     : (default) INFO_A をプロテクト
   UNLOCKA   :           INFO_A のプロテクトを外します。

   FCTL addr : CPUXv2 において FCTL のベースアドレスを指定します

   FWS  n    : CC8051 において flash のワードサイズを指定します。

bufet : FET のバックアップを作成

このプログラムは FET430UIF や eZ430U の EEPROM と FLASH の内容を読み出してバックアップファイルを作成します。
Usage: bufet [-vd] [-p /dev/cu.usbmodemXXX] [-c TARGET_OPTIONS] 
             [fet_eeprom.txt fet_flash.txt]
バックアップファイルを作るには、 そして、
$ ./bufet
もしくは
$ mkdir FET_backup
$ cd FET_backup
$ ../bufet
とするとカレントディレクトリに fet_eeprom.txt と fet_flash.txt という TITXT 形式の二つのファイルが作成されます。 双方とも後半はほとんどデータが 0xFF なのでD/FW パッケージ付属の titxt_compress コマンドを使って 0xFF の塊を取り除いておくと リストアするときの時間が節約出来ます。

リストアするには

$ ../bufet fet_eeprom.txt fet_flash.txt
と入力します。特に EEPROM への書き込みはとてもおそいので気長に待っててください。

MacOSX で MSPGCC をビルドするときのメモ

基本的にWikiの手順に従う。

ソースコード

skimu@mac.com