NanoVM用評価ボードを作る
先日から何度も日記にしてますが今日もNanoVMについて書きます。
いろいろ書いてて、「で、実際どうなの?」的な考えになると思います。
とうことで、実際に動かす準備をしています。
NanoVMのダウンロードファイルにも図面データは含まれていますがそのまま使っても面白くないですし、変えすぎても動かなかったときにどうしようもないので、USB-232変換基板(AKIZUKI)とLCDを16文字化(AKIZUKI)に対応して電源はUSB経由にすることで外部電源を接続するわずらわしさを解消します。
回路図は下記の通り
もと回路のRS232Cと電源回路をFT232RLで置き換えただけです。
さぁ後は作るだけです。
部品は今日マルモパーツと秋月でそろえてきました^^
今日は少しNanoVMの動作を整理しました。
起動
↓
BootLoader 1秒待ち (起動前にmake upload-sampleをしておくとROM入れ替え)
↓
main実行(java)
またソースを見てましたら、EEPROMに入ったJavaバイトコードを1命令ごとにきちんと翻訳して動作していることが分かりました。
こうなるとJavaコードが増えた場合の対応をどうするかを予め考えておかないといけませんね。
例えばバイトコードをSDカードに入れちゃおうかなとも思いましたが1命令ごとにSDカードから読み出すとなるとオーバーヘッドが大きくなりすぎるんですよね。
シンプルに対応しようとするとJavaコード量をあまり大きくしないということになるんですが、現実的には避けられない課題のような気がします。
そうなるとROMのサイズの大きいAVRを使ってSelf ProgでFlashへバイトコード入れる方式になるのかなー
ちょっと悩み中です(汗
USBProg-OCD変換アダプタ
先日紹介しましたUSBProg-OCDをARM-LPC2388F基板のインターフェイス2009年5月号の付属基板(以下IF基板)に使用予定です。
使用には少し注意が必要ですので紹介します。
・IF基板のJATAGコネクタは20ピンですが、USBProg-OCD
・IF基板のシステム電源は3.3Vですが、USBProgは5V
ということで必要な作業は
・ピン変換
・レベル変換
となります。
レベル変換は上記サイトでも紹介あるTXB0108を使用したいと思います。(digi-keyで$2.0~)
純粋にこのパーツ便利そうです^^
参考までに変換アダプタの回路図を載せておきます。
---参考-------------------------------------
USBProg-OCD解説サイト
基板の解説:http://www.embedded-projects.net/index.php?page_id=165
For Developers:http://www.embedded-projects.net/index.php?page_id=169
回路図:http://svn.berlios.de/svnroot/repos/usbprog/trunk/board/schematic_v31.pdf
ARM Debugger(重要):http://www.embedded-projects.net/index.php?page_id=177
TXB0108データシート:http://focus.tij.co.jp/jp/lit/ds/symlink/txb0108.pdf
TXB0108 digi-key:http://parts.digikey.com/1/parts/500297-ic-volt-lvl-transl-8bit-20-tssop-txb0108pwr.html
--------------------------------------------
続く
小粒なJava VM(Nano VM)の開発環境 avr-gcc-4.3の挑戦
昨日の段階で、avr-gccが4.2系でないといけないということを日記に書きましたが、どうして4.2系でないといけないのか調べてみました。
V4.3系でasuroをビルドした場合の結果です↓
------------------------------
c:/winavr-20080610/bin/../lib/gcc/avr/4.3.0/../../../../avr/bin/ld.exe: region t
ext is full (NanoVM.elf section .text)
------------------------------
単純にROM領域が足りないってことじゃないですかぁ![]()
一応マップファイルでどのくらい足りてないかを確認
CLDFLAGS += -Wl,-Map=Memory.map,--gc-sections -T$(ROOT_DIR)/vm/build/ldscripts/avr4_keep.x -mmcu=$(DEVICE)
V4.2系のときは下の構造でした
-------------------------------
NanoVM.elf :
section size addr
.text 7308 0
.trampolines 0 7308
.bss 816 8388704
.eeprom 512 8454144
.stab 888 0
.stabstr 95 0
Total 9619
-------------------------------
V4.3では(mapファイルから抽出した情報を整理したもの)
-------------------------------
NanoVM.elf :
section size addr
.text 8284 0
-------------------------------
あと284バイトに泣きですね![]()
環境の違いでROMサイズが1k程度も増えるとは・・・
対策としては
1.Nano VMを自力で軽量化する
2.ROMサイズを大きくする
3.Nano VMのバージョンアップに期待(汗
普通は2ですね^^;
ってことで他のサンプル環境をビルドして試してみました。
他の環境でもROMサイズに問題なければ大丈夫ですね!(unix除く)
なるほど!これで開発環境をもともと使ってたV4.3一本でいけちゃいますね^^
