CQ_V850 (15)2007年05月08日 20時22分03秒

ROM Dump
メモリダンプとエディットを追加してみた。

ROM(0x3e0)をダンプしてみる。
ふむふむ、プログラムが入っている。

RAM(0x3ffe000)をエディットしてダンプしてみる。
メモリが書き換わっている。当然か...

こんなことしなくてもデバッガを使えば?
そのとおり。でもデバッガをインストールしていないのでこんなものを作ってみた。
今の環境はCA850、PM+、sp850es、Applilet for V850ESJX2 だけ。
Applilet for V850ESJX2 も削除する予定なのだが、なかなか削除するようにならない。時々使っているから。そしてPM+も...
hew にCA850を組み込もうとしたがツールチェインの登録が難 しそうなのであきらめた。

上記サンプルを置いた。

不用意に禁止領域にアクセスしないこと。ちなみにまだバグも残っている。
scanf がうまく動かない。

次は、標準関数 printf を使ってみたいな...
題して、「V850 printfが動くまで」 テクニカルライター後田 敏の部屋そのまま...

CQ_V850 (14)2007年04月26日 22時14分10秒

PizzaFactory3がv850ターゲットに対応 」と見出しがあった。
無償版もある
v850-elf用GNUツールチェイン(GCC3.4.xベース)
がはいっているので”ソースを集めてコンパイル”しなくても使える
TOPPERS用ビルダも用意してある
ただし、使い方がどこにも載ってない。
このあたりに Interface誌の8月号、Interface誌の10月号
すこしある程度
これを使うためには「μITRON準拠TOPPERSの実践活用」を見てください ということらしい

どうしよう、これを入れるとまたコンパイラが増えるし...
でもどんなものか見てみたいし...

ここCPUボードIO表があったので使わせていただきます。

CQ_V850 (13)2007年04月19日 23時18分22秒

sp850es
割り込みの送信もやっと動き出した。
実を言うと、ちょっとした勘違いがあった。
UAnTSF はバッファレジスタが空になったら0になると思っていたが、送信シフトレジスタの全てのビットデータを出力してから0になるようだ。
一方 UAnTIF は、バッファレジスタが空になった直後にフラグが立つ。
ポーリングの時はどちらでもよいのだが、割り込みで送信する場合 UAnTSF を使わざるを得ない。
連続文字列の場合、私の方法だと最初の1バイトめと2バイトめの間がすこし空いてしまう。
もちろんループバックや1バイト送信の時も。
すこし不満だがこれでよしとしよう。
このUARTの場合送信は、 UAnTIF を使ったポーリングのほうが能率がいいみたいだ。

変わって、V850ライタの話
V850ライタが公開してあるが使い方がわからない。「HEXファイルのD&Dで一発書き込みできます」と書いてあるのだが...
ここで、I/F誌付録V850ジャンク基板の試食を見ると、割り込みでシリアルの送受信がしてあった。うまいロジックだ。
この方法だと能率よさそう。さらに Tiny FAT file system というのもあり機会があれば使わせてもらいたい。
その前にSDカードI/Fを作らなくっちゃ。

CQ_V850 (12)2007年04月18日 22時26分25秒

ドキュメントを読んでAppliletで作成し、ちょっとした修正をすればタイマーが動くようになった。やはりけっこう便利。最も複雑なことはしていないから当然といえば当然か。このあたりで、もう限界なのがPM+。どうにも使い勝手が悪い。いっそのことエディタとコマンドラインの組み合わせで使いたいくらいだ。おまけに、よく落ちる...私の環境だけ???
ストレスがたまるツール群だ。
プロは IAR あたりのコンパイラを使うのだろうか?

この程度でわざわざ Applilet 使うなよ、といわれそう....
Appliletの出力にすこし手を加えただけだが
タイマーが動いた

#pragma ioreg
void TMM_Init( void )
{
  TM0CTL0 = 0;      /* stop TMM */
  TM0EQIC0 |= 0x40;  /* mask interrupt */
  TM0EQIC0 &= ~0x80;  /* clear IF flag */
  TM0CTL0 |= 0x01;  // count clock=fxx/2
  TM0CMP0 = 0;
}
void wait_us( unsigned short INTERVAL )
{
  unsigned long tmm;

  tmm=INTERVAL*10;
  while(tmm){
    if(tmm < 20) break;
    if(tmm > 60000){
      TM0CMP0 = 60000-1;
      TM0EQIF0=0;
      TM0CE=1;
      while(!TM0EQIF0) ;
      TM0CE=0;
      tmm -= 60000L;
    }else{
      TM0CMP0 = tmm-1;
      TM0EQIF0=0;
      TM0CE=1;
      while(!TM0EQIF0) ;
      TM0CE=0;
      break;
    }
  }
}

CQ_V850 (11)2007年04月17日 20時18分57秒

タイマーより先にシリアル通信の方を作った。割り込み(送受信共)で通信するプログラム
とりあえず動いているが、マニュアルに従ってない部分もあるので注意が必要。問題が出るかもしれないが、今はこれでよし。ちなみにこれはベストテクノロジーのライブラリを移植した。次は、タイマーか。難しいことをするのではないが、やり方がよくわからない。

サンプルは、ボーレート115200。

このシリアルも、なかなか使いにくい。
特に送信はデータを書き込まないと割り込みがはいらない。
送信トリガもあるが、これを使うとトリガするたびにnull コードが出てしまう。
と、ここまで書いた時点で重大な欠点に気がついた。
57600以下で動かない。
115200以上では2文字目が化ける。
というわけで、送信割り込みはやめて受信割り込みのみ。

ところでFPLではまってしまった。私だけか?...
ファイルの読み込みを1度したあとは コンパイルとAutoprocedure(EPV)を繰り返していた。
実はこれではROMの内容は更新されない。
書き込む前に必ずファイルを読み込む操作をしなくてはならない。
今まで使っていたツールは書込み操作をすると自動的に最新のファイルで書き込んでいたものだからこれもそうだと思い込んでいた。
実は、ここまで来るのに苦しんでいたのだ。こんな単純なことで...

CQ_V850 (10)2007年04月15日 08時41分18秒

タイマを使うのが難しい。
Appliletを使っているが思うように制御できない。
もちろん今までに使ったいろいろなCPUもタイマは難しい。
機能が豊富であるが故なのだろうけど...

ついでにFPLだが、
Chip全体に書き込む設定になっているのをブロック単位にすれば書き込みが早く終わる。
ChipをBlockに変えてStartとEndを指定する
ここ(jsskさんのところ)に書いてあった。
これぐらいならがまんできる。

CQ_V850 (9)2007年04月10日 02時11分37秒

CQ_V850 だが、今気がついた。
J1、J2、J3のうちJ3は常時ショートしておき
J1だけを抜き差しすればよいことに。

書き込み時:J1ショート後、FPLで書き込み
実行時  :J1オープンにしたあと、ハイパーターミナルで接続を実行

ハイパーターミナルの接続、切断でV850のRESETを制御できる。

雑誌にはJ1とJ3を抜き差しするように書いてあったのでそのとおりやっていたが、そうすると実行時リセットをかけたい時にかけられない。
RESETのかけ方がわからなかったので、今までは必要なとき、いつもUSBコネクタを抜き差ししていた。
フラッシュROMの書き込み回数より先にコネクタが限界になるのではないかと思っていた。
やっとこの操作から開放される。もっと早く回路図を見て気づくべきだった。

CQ_V850 (8)2007年04月08日 19時43分33秒

USB <-> RS232(TTL)コンバータはうまくいけた。第一段階クリア。
内容うすいなあ...
CQ_V850マイコンを使ったUSB-JTAG変換アダプタもボツボツ進行中。

CQ_V850 (7)2007年04月08日 09時14分44秒

まずは、USB <-> RS232(TTL)コンバータからやってみようと
while(1){
  TXDA1=RXDA0;
  TXDA0=RXDA1;
}
を実行してみた。いいとこ300bps。
これでもキャラ落ちがある。
やり方がまずかったかな...
UARTの機能を使う手もあるが、ホスト側でボーレートを変更した場合、そのタイミングがわからない。ボーレート固定だと問題ないのだが。
ほかにいい方法ないかな...

CQ_V850(6)2007年04月07日 07時54分07秒

CQ_V850の使い道として
R8C/Tinyマイコンを使ったRS232C-JTAG変換アダプタ
に習って
CQ_V850マイコンを使ったUSB-JTAG変換アダプタ
を作ろうかと考えている。
ROMもRAMも大量に余るし、基板も大きいがUSBが直接接続できるのでいいかなと思っている。
さらに、JP切り替えで
USB <-> RS232(TTL)コンバータになるようにしたい。
これはRS232-TTLレベルコンバータの続きでもある