酔漢電子工作手帳

2004-08-31

ROM化

23:59 | ROM化 - 酔漢電子工作手帳 を含むブックマーク はてなブックマーク - ROM化 - 酔漢電子工作手帳

id:suikan:20040818で書いたROM化のその後です。ldの指示ファイルの中でVMA( Virtual Memory Address )とLMA ( Load Memory Address )を変えておけばいいとわかりました。VMAは実行時アドレス、LMAはロード時アドレスです。ROM化するときには、ROMイメージがLMA、RAMのアドレスがVMAとなります。

トラックバック - http://ecrafts.g.hatena.ne.jp/suikan/20040831

2004-08-30

GNUWing

23:32 | GNUWing - 酔漢電子工作手帳 を含むブックマーク はてなブックマーク - GNUWing - 酔漢電子工作手帳

アップウィンドテクノロジー・インコーポレイテッドがまとめた、GNUWingを使ってみました。gcc/binutil/newlib/gdb/insightのバイナリ・パッケージです。一発動作しました。TOPPERS/JSPのビルドも問題ありません。たぶんOCDemonと連携動作できるでしょう。

トラックバック - http://ecrafts.g.hatena.ne.jp/suikan/20040830

2004-08-29

マルチカラー

12:39 | マルチカラー - 酔漢電子工作手帳 を含むブックマーク はてなブックマーク - マルチカラー - 酔漢電子工作手帳

マルチカラーLEDなら、例の沖の三軸加速度センサーで制御すると本当に面白そうです。サンプルでないかなぁ。

gdbラッパー

23:14 | gdbラッパー - 酔漢電子工作手帳 を含むブックマーク はてなブックマーク - gdbラッパー - 酔漢電子工作手帳

gdbはunixコマンドの伝統にのっとり徹頭徹尾ウインドウ化を拒否したデバッガです。あくまでコマンドライン・インターフェースをユーザーに強要します。その結果、gdbにウインドウ機能を提供するラッパーが多く開発されました。あるものはemacsのlispスクリプトであり、あるものはウインドウ・プログラムです。で、gdbのほうはそういったプログラム向けの専用インターフェース・コマンドを設ける始末。徹底しています。 ネットをあさったところ、Macraigorのgdbに埋め込まれているInsightの評判*1が悪かったので、面白半分でいろいろ試してみました。
gvd
Adaで書かれているため手元のgccをアップグレードしなければならないうえにgnomeベースなので没。私はKDE野郎です。
kdbg
gdbのインターフェースをがっちり遮蔽しているためにターゲットが変更できず、没。どうやらクロス・デバッグは眼中にないようです。
ddd
CygwinだとXが必要になるのが難点。一方Plamo Linux環境なら苦もなく立ち上がります。
Eclipse
本命だけど今のところ手が出ず。
と、言った具合です。当面Insightを使ってだめならdddを考えて見ますか。しかしCVSまで統合するEclipseも魅力なんですよね。

*1:一般的にInsigthを「いまいち」といっている人が多いのであって、M社による実装の批判じゃないです

トラックバック - http://ecrafts.g.hatena.ne.jp/suikan/20040829

2004-08-28

suikan20040828

JTAG-ICE不出来

16:29 | JTAG-ICE不出来 - 酔漢電子工作手帳 を含むブックマーク はてなブックマーク - JTAG-ICE不出来 - 酔漢電子工作手帳

未完成です。だってNPNトランジスタを買うのを忘れたから(T_T)

マルチカラーLED

22:48 | マルチカラーLED - 酔漢電子工作手帳 を含むブックマーク はてなブックマーク - マルチカラーLED - 酔漢電子工作手帳

どなたかのページで「マルチカラーLEDのピンをまとめて一本の抵抗につないだら二つのLEDの光り方が違った」といったことが書いてありました。(当然です、PN接合が違いますから)と心の中で突っ込みながら、一方でそれぞれのLEDを専用のDACで制御したら面白いなと思いつきました。傾斜角に応じて色が変わるとかどうでしょう。

トラックバック - http://ecrafts.g.hatena.ne.jp/suikan/20040828

2004-08-27

JTAGポートのピン数

21:25 | JTAGポートのピン数 - 酔漢電子工作手帳 を含むブックマーク はてなブックマーク - JTAGポートのピン数 - 酔漢電子工作手帳

Macraigor Systems文書によると、ARMのJTAGには2種類あって、古いほうが14ピン、新しいほうが20ピンだそうです。あう。14ピンのコネクタ買っちゃったよ。

トラックバック - http://ecrafts.g.hatena.ne.jp/suikan/20040827

2004-08-26

JTAG-ICE

12:55 | JTAG-ICE - 酔漢電子工作手帳 を含むブックマーク はてなブックマーク - JTAG-ICE - 酔漢電子工作手帳

ADuC7020のデータシートを見ていたところ、JTAGヘッダのピン数が20ピンになっていました。評価キットに同梱されているICEにあわせたようです。ARM社のICEや、Wigglerは14ピンでした。

レベルコンバータ

22:31 | レベルコンバータ - 酔漢電子工作手帳 を含むブックマーク はてなブックマーク - レベルコンバータ - 酔漢電子工作手帳

プリンタ・ポートJTAG-ICEの回路をあれこれ見ていますが、軒並みプリンタポートの出力を抵抗を介してHC244に入力しています。ターゲットの電圧をもらって動くHC244は3V動作ですから、入力が電源を2Vも上回ってます。絶対最大定格超えてますって(^^;。メーカーが出している回路図もそうなっているし。って、ひょっとしてあの回路図5Vターゲットの奴をそのまま出してるんじゃない?

kuriharakurihara2004/09/04 21:44Spartan3キットのLow-Cost JTAGケーブルは、NL37WZ17,NL17SZ125を使ってますね。
Designed for 1.65 to 5.5 V VCC Operation
Over Voltage Tolerant Inputs and Outputs

トラックバック - http://ecrafts.g.hatena.ne.jp/suikan/20040826

2004-08-25不思議不思議

gdb

| 13:09 | gdb - 酔漢電子工作手帳 を含むブックマーク はてなブックマーク - gdb - 酔漢電子工作手帳

昨日さくっと動いたgdbですが、考えてみるとあっさりコンソール・ウインドウにプリント出力が表示されたのは不思議です。

VisualDSP++の場合ランタイムとデバッガの供給元がADIなのでこの辺の連携はたありまえですが、gdbとnewlibって別組織が出しているのです。gdbのフック仕様にあわせたランタイムがnewlibに含まれているのでしょうか。

そうなんでしょうね。

さ、仕事仕事

トラックバック - http://ecrafts.g.hatena.ne.jp/suikan/20040825

2004-08-24眠い

ADuC7026

昼休みの工作

12:45 | 昼休みの工作 - 酔漢電子工作手帳 を含むブックマーク はてなブックマーク - 昼休みの工作 - 酔漢電子工作手帳

昼飯を5分で済ませてラボに駆け込みました。さすがに0.5mmピッチのQFPを裸眼で半田付けすることはできなくなりましたが、ラボには実体顕微鏡があります。「俺には一台お前という、強い味方ががあったのだ~。」てなものです。

一丁あがり。

メモ

| 20:14 | メモ - 酔漢電子工作手帳 を含むブックマーク はてなブックマーク - メモ - 酔漢電子工作手帳

かき集めているARM用開発ツールについてメモを残しておきます。開発プラットホームはPlamo Linuxです。

まずツールチェーンです。Macraigor Systems GNU Toolsより"ARM7TDMI/ARM9T/NetSilicon NET+ARM GNU Toolkit V:3.0-7"をダウンロードします。これはRedHat Linux用のrpmですのでPlamoではそのままでは使えません。そこで、次のよういったんtgzに変換してインストールします。

# rpm2pkg mcgr-gnutools-arm-3.1-1.i386.rpm
# installpkg mcgr-gnutools-arm-3.1-1.i386.tgz

ツールは/usr/localの下に展開されます。ツールチェーンに含まれているのは

  • binutils-2.15
  • gcc-3.4.0
  • insight-6.1-macraigor1

です。ライブラリがないのでRedHatのThe Newlib HomepageからNewlib-1.12.0.tar.gzを取ってきました。次の手順でインストールします。

# tar xvzf newlib-1.12.0.tar.gz
# cd newlib-1.12.0
# mkdir obj
# cd obj
# ../configure --target=arm-elf
# make
# make install

これで準備完了です。テストは次のようにします。まず、例のごとくhello.cを作ります。

#include <stdio.h>
int main(void)
{ 
  printf( "Hello, World\n" );
}

次に、以下の手順でコンパイルしてデバッガを起動します。

# arm-elf-gcc hello.c -g
# arm-elf-gdb a.out

するとInsightsをフロントエンドに携えてgdbが起動します。実行ターゲットはSimulatorを選んでください。ウインドウにはソースが表示されていますので、実行するとコンソールウインドウに"Hello, World"の文字が現れます。

ところで、こうしてLinux版にダウンロードしたツールですが、残念ながら互換回路図が手に入るWigglerデバッガでは動作しません。Cygwin上で動くWindows版はWigglerに対応しているのでそちらを使うことになります。KDEの上での開発をやってみたかったのですがそれはかなわないようです*1

cygwin

| 23:46 | cygwin - 酔漢電子工作手帳 を含むブックマーク はてなブックマーク - cygwin - 酔漢電子工作手帳

cygwinにPlamo linux同様の手順でツールをインストールしました。当たり前ですが、きちんとgdbでデバッグまでできることを確認できました。次はJTAGです。いよいよハードです。

*1:Windows上にOCDemonを走らせてLinuxからリモートデバッグを行う手もあるのですが、それにしてもCygwinが必要なので同じです。でもVMWare上の仮想マシン間でリモートデバッグをするのも馬鹿馬鹿しくて楽しいかも

kuriharakurihara2004/08/24 21:45こんにちは、マイクロコンバーター知りませんでした。おもしろそうな石ですね。

suikansuikan2004/08/24 23:21こんにちは!ワンチップに一通り全部のっかているのが味噌ですね。今年から来年にかけていろんな会社からARM/MIPSベースの手ごろなマイコンが出そうな気がします。OSを気楽に乗せられる上にJTAGが使えるんですから、すごく楽になりますね。

トラックバック - http://ecrafts.g.hatena.ne.jp/suikan/20040824

2004-08-23おこぼれ

ADuC7026BST

21:01 | ADuC7026BST - 酔漢電子工作手帳 を含むブックマーク はてなブックマーク - ADuC7026BST - 酔漢電子工作手帳

昼寝も終わってすっきりした頭で昼の仕事をしていたところ、同僚が声をかけてきました。

「マイクロコンバーター、7026でよかったらあまったサンプルあげるよ」

まじっすか?ほいほいとついていって3個もらいました。…足曲がってます(^^;…いえいえ、文句なんかありません。おかげでDigi-Keyに注文出さずにすみました。早速帰りに秋葉原に行ってQFP用の変換基板を買ってきました。しばらく遊べそうです。

トラックバック - http://ecrafts.g.hatena.ne.jp/suikan/20040823

2004-08-22

ARM開発環境

17:34 | ARM開発環境 - 酔漢電子工作手帳 を含むブックマーク はてなブックマーク - ARM開発環境 - 酔漢電子工作手帳

ざっと見て回ったわけですが、ARMの開発に関しては無料*1で流通しているソフトや回路図で大概のことはできそうだとわかってきました。

コードジェネレータ
GNUのgcc, binutilがARMアーキテクチャーに対応しています。ARMとThumbとの相互呼び出しも可能です。
ライブラリ
Redhatが組み込み用のライブラリをまとめたNewlibを公開しています。
デバッガ
GDBがARMに対応している上、プリンタポート接続JTAG-ICEの回路と、それようのインターフェースモジュールが公開されています。なお、インターフェースソフトはバイナリのみの公開です。
IDE
デバッガだけならInsightによってGDBをGUI化できます。さらにEclipseのCDTを使えばこれらを全部纏め上げることも夢じゃないようです。

Eclipseベースの組み込み開発に関してはESECですでに発表した会社もあります。Insightでも十分という声もあり、GUIに関してはかなりのレベルに達しているようです。

こうなると早くDigi-KeyにADuC7024が入荷しないか待ち遠しいです。

*1:無料だけど自由でもオープンでもないソフトもある

トラックバック - http://ecrafts.g.hatena.ne.jp/suikan/20040822

2004-08-21

suikan2004-08-21

VHDL

18:43 | VHDL - 酔漢電子工作手帳 を含むブックマーク はてなブックマーク - VHDL - 酔漢電子工作手帳

d:id:hmoriさんの所にVHDLのプログラムが公開されています。d:id:hmori:20040820。さすがAdaの直系言語。なんとはなしに意味がわかってしまうほど可読性が高いです。

TOPPERS/JSP for ARM

23:18 | TOPPERS/JSP for ARM - 酔漢電子工作手帳 を含むブックマーク はてなブックマーク - TOPPERS/JSP for ARM - 酔漢電子工作手帳

ADuC7020への移植を頭にTOPPERS/JSPのARM実装を読んでいます。正式リリースされたものはARM9TDMI用ですが、事実上指一本触らずにCPU依存部を利用できそうです。そう願ってます。

システム依存部は割り込みハンドラをごくわずか書き直すのと、ティック・タイマー部を前面的に書き直すことを除けばあとは雑多なことばかりです。ただ、SIOは面倒に見えます。これは単に私がITRONのPDICに親しんでいないからだと思いますが、Blackfin版同様にはしょっちゃえと思い始めています。

LED

23:22 | LED - 酔漢電子工作手帳 を含むブックマーク はてなブックマーク - LED - 酔漢電子工作手帳

ADuC7020のデータシートを眺めていたら、参考回路のLEDがGPIOじゃなくてDACについていました。わはは。面白い。LEDの極性が逆なのも笑えるけど。データシートでは直結ですが、図のようにトランジスタ回路を組むと、エミッタの抵抗Rを使った定電流制御ができます。これはDACの面白いところです。秋月で買って死蔵しているADXL202Eの基板があるのでつなげると面白そうです。

ADuC702xシリーズは64pin LQFPのADuC7024BSTがDigi-Keyに掲載されています。が、まだ在庫0です。いつ入荷するのやら。ついでながらDigi-KeyではパッケージがCSPであると誤記されています。

JTAG-TOOL

00:25 | JTAG-TOOL - 酔漢電子工作手帳 を含むブックマーク はてなブックマーク - JTAG-TOOL - 酔漢電子工作手帳

ARM7DTMI用の無料のツールを調べてみました。

JTAG-ICEの回路図
FPGAやCPLDではよく見るプリンタポート接続のJTAG-ICEの回路図が公開されています。ただしFPGAなんかのものとは配線が違う模様。
JTAGソフト
GDBと上記ICEの仲を取り持つドライバが公開されています。
トラックバック - http://ecrafts.g.hatena.ne.jp/suikan/20040821

2004-08-18

GCCアップグレード

20:56 | GCCアップグレード - 酔漢電子工作手帳 を含むブックマーク はてなブックマーク - GCCアップグレード - 酔漢電子工作手帳

Plamo LinuxのGCCは3.3.2が使われています。しかし、TOPPERS/JSPをビルドすると、コンフィグレーターのビルド中にg++がエラーを吐いてとまってしまいました。そこで、以下の手順でg++をアップグレードしました。

#gcc-core-3.3.4とgcc-g++-3.3.4のtarファイルをダウンロードして展開。
#cd gcc-3.3.4
#mkdir obj
#cd obj
#../configure --prefix=/usr
#make; make install;

Plamo Linuxのgcc/gppは/usr/binにあるのですが、gccは黙ってconfigureすると/usr/local/binにバイナリを生成します。そこで、上のようにprefixをつけます。以上のアップグレードで無事コンフィグレーターをビルドできました。

ROM化

21:06 | ROM化 - 酔漢電子工作手帳 を含むブックマーク はてなブックマーク - ROM化 - 酔漢電子工作手帳

ROM化はbinutilのobjcopyを使うとのこと。今回組んだケースではarm-elf-objcopyです。TOPPERS/JSPのarmv4/start.Sを読んでわかったのですが、dataセクションの頭と終わりのアドレスをリンカ・スクリプトで指定しておき、実行開始時にROMからその部分に初期データを移す仕組みになっていました。objcopyでROM化するときにdataセクションを任意の場所にコピーできるため、上の機能を使うことができます。

現在コメントアウトされているROM化対応機能ですが、

  1. dataセクションが格納されているROM領域にデータの反転値を書き込む。
  2. 改めて読んで値が変わっていたらRAMなのでICEによる初期化が行われたと見て上記機能は中止。
  3. 値が変わらないのならROMから実行しているのでROM領域からdataセクションへコピーを行う。

という実装でいいように思います。

ARMv4環境完成

21:14 | ARMv4環境完成 - 酔漢電子工作手帳 を含むブックマーク はてなブックマーク - ARMv4環境完成 - 酔漢電子工作手帳

特に目的もないまま手をつけたTOPPERS/JSPのARM環境が完成してしまいました。どうしましょ。秋月のARMでもいじりましょうか。でも11000円はねぇ。

トラックバック - http://ecrafts.g.hatena.ne.jp/suikan/20040818

2004-08-17

ARM7TDMIデバッグインターフェース

19:52 | ARM7TDMIデバッグインターフェース - 酔漢電子工作手帳 を含むブックマーク はてなブックマーク - ARM7TDMIデバッグインターフェース - 酔漢電子工作手帳

ちょっと興味があってARM7TDMIのテクニカルリファレンスを覗いてみました。ブレークポイントやウォッチポイントの機構にどうやってJTAGからアクセスするかが書かれています。また、コア内部の任意のレジスタの読み書き方法も書いてあります。しかしながら、パイプライン中のレジスタへのアクセス方法が書いてないため、任意の命令をロードしてステップ実行するというオンチップ・リモート・デバッグやりかたがわかりません。

この辺は守秘契約にでもサインしないとだめなのかもしれませんね。Motorola のDSP56Kコアはその辺が丸裸になっていてなかなか太っ腹でした。

ARMツール入れなおし

19:54 | ARMツール入れなおし - 酔漢電子工作手帳 を含むブックマーク はてなブックマーク - ARMツール入れなおし - 酔漢電子工作手帳

昨日FTPサイトで勘違いしていたため、gcc-3.3.4に入れなおしました。

  • binutil-2.15
  • gcc-3.3.3
  • newlib-1.12.0

時間を見てTOPPERS/JSPのビルドでもしようかな。

ADuC7020

20:00 | ADuC7020 - 酔漢電子工作手帳 を含むブックマーク はてなブックマーク - ADuC7020 - 酔漢電子工作手帳

内部ROMが16ビット幅しかないため、せっかくの45MIPSもROMプログラムを実行するときには22.5MIPSまでダウンです。がっかり。しかしAT91R40807も外部バスは16ビットですし、このへんは同じです。秋月のボードはウエイトステートいくつなんでしょう。

ADuC7020は発振子内蔵なので回路はめちゃくちゃ簡単になりそうです。

スパルタン-3スターターキット

20:11 | スパルタン-3スターターキット - 酔漢電子工作手帳 を含むブックマーク はてなブックマーク - スパルタン-3スターターキット - 酔漢電子工作手帳

寄り道なんかするもんじゃないですね。id:Chuckさん経由で訪れたd:id:KaruishiFactoryさんのところで、MemecがSpartan-3 スターターキット激安販売しているとの情報を入手してしまいました。

欲しい。でも確実に家庭不和になります_| ̄|○

いまはDSPに集中します。って、ARMは何やねん。

TOPPERS/JSPビルド

23:56 | TOPPERS/JSPビルド - 酔漢電子工作手帳 を含むブックマーク はてなブックマーク - TOPPERS/JSPビルド - 酔漢電子工作手帳

を、してみたのですがカーネルの前にコンフィグレーターのビルドでこけます。Plamo Linux 4.0のg++ 3.2.2が内部で破綻しているようです。

ChuckChuck2004/08/17 21:1520万ゲートもあればいろいろできそうです>スパルタン3
Memecの安値には惹かれましたが、積んどくリストが増えそうなので、思いとどまっています。というか家でもHDL書いていると仕事との切れ目がなくなってしまいます。

suikansuikan2004/08/17 21:31あ、家でDSPやめてHDLにしたら仕事との切れ目ができる!

トラックバック - http://ecrafts.g.hatena.ne.jp/suikan/20040817

2004-08-16力が欲しければくれてやる

ARM7TDMI

20:53 | ARM7TDMI - 酔漢電子工作手帳 を含むブックマーク はてなブックマーク - ARM7TDMI - 酔漢電子工作手帳

トラ技のPR記事に出ていた秋月のARM7ボードはAtmelのAT91R40807を使った低価格のボードコンピューターです。が、外付けのROMのプログラマが別に必要なのが難点です。秋月ファンならこれまで買いためたボードでROMライターくらいは作るのかもしれませんが、なひたふさんのところではJTAG ICEが公開されていました。すごすぎ。

このICE、おもしろそうなのですがなひたふさんのソフトはどうやら軍事用途での使用は禁止とのこと。歩く軍需品としては使用をためらってしまいます*1

なんにせよ、AT91R40807はADC/DACもないしROM外付けだし、「どちらも内蔵のADuC702xならおもしろいかもなー」などと考えました。たぶん朝から晩までDSP漬けになっている反動です(笑)。反動でも何でも考えるだけならただなので妄想してしまいました。

AT91RにせよADuC702xにせよ、使うならせっかく習得したITRONを引っ張り出さない手はありません。幸いTOPPERS/JSPはARM9TDMIに対応しており、ARM7TDMIコアへの対応も簡単そうです。ADuC702xは割り込みコントローラーもそっけないほど簡単ですし、コアタイマーも単純なので移植にはそれほど手間取らないと思います。

ツールチェーンとしてはGNUのものを使えばただです。内蔵ROM焼きはUARTポート経由で行う方法が公開されていますので心配ありません。現在はっきりしないのは以下のような点です。

  1. ROM化コードをどう作るのか
  2. GDBスタブを入れる余裕はあるか

1.は永遠の課題です。TOPPERS/JSPのARM9実装はこの点さじを投げていまして、「ICEで使うことを前提としています」という恐ろしいことがさらっと書いてあります。まじで組み込めないネットで取り上げられそうです。ADuC7020の8KBあるRAM領域については、初期値を圧縮しておいて実効直前に展開するようにしなければなりません。そのソフトは誰かが作っていそうなものですが、なければ自分ででっち上げる必要があります。

2.は頭の痛い問題です。TOPPERS/JSPのARM9実装は「Thumb命令セットに対応していません」と書いてあります。最悪の場合全部の命令が32ビットである可能性もあり、そうするとThumbより5割くらいコードサイズが増えるかもしれません。Blackfinの場合TOPPERS/JSPとごみみたいなアプリをあわせて23KB程度、いらないルーチンを削って9KB程度です。BlackfinとARM7 Thumbのコード密度が同程度らしいのでこれが35KB、15KBくらいに膨らむでしょうか。15KBくらいならいいのですが、本当にコードを削ってくれるのかどうか。

Thumb化についてもコンパイラがどのくらい自動でやってくれるのか不明です。関数呼び出しをARMステートでやることにするとARM/Thumb切り替えがかなり重そうです。

とまぁ妄想の範囲ですが、あれこれハードルがあって楽しそうです。ADuC702xもADC/DAC/UART/SPI/I2C/TIMER/GPIOとてんこ盛りです。TOPPERS/JSPをいじりだしてからOSだと気楽に割り込みを使えるとわかったので、無性にうきうきしています。

陰気な男でいいですか?の「ハンダの煙でアロマテラピー」に妙に説得力を感じる今日この頃。

MEMO

21:57 | MEMO - 酔漢電子工作手帳 を含むブックマーク はてなブックマーク - MEMO - 酔漢電子工作手帳

以下のような感じでとりあえず開発環境らしきもののインストールはできました。動くかどうかは知りません。armv4.txtはTOPPERS/JSP同梱の文書です。

binutil-2.15
armv4.txtは2.14。--target=arm-elf でビルドは通りました。
gcc-3.3
armv4.txt通り。3.4も試しましたがインストールが完了しませんでした。
newlib-1.12.0
armv4.txtは1.11.0。

*1:親が自衛官だと独立するまでは肉体の隅々まで国防費で調達された「官品」なんです。たはは。

トラックバック - http://ecrafts.g.hatena.ne.jp/suikan/20040816