フォト
2017年6月
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30  
無料ブログはココログ

« aitendoのATTiny ISPシールドきっと [K-TINY-SLD]を購入 | トップページ | Propeller始めました(19) ポータブルゲーム機の実装 4 »

2016年2月 1日 (月)

Propeller始めました(18) ポータブルゲーム機の実装 3

プロペラを使ったポータブルゲーム機 LameStationにmicroSDカードを搭載しようと挑戦中です。

Dscn4822

オリジナルのLameStationはプレイするゲームを変更するたびにパソコンに接続して
開発環境でコンパイルして書き込む必要があり、少々使い勝手が悪いです。

何とかmicroSDカード上の任意のイメージファイルを選択してブートする方法は無いかと
試行錯誤中です。

取りあえず、SDカードは認識してファイルのアクセスは出来るようになりました。
秋月電子のマイクロSDカードスロットDIP化キットを使って下記のような感じの回路を
ブレッドボード上に実装して接続しました。

回路図はparallax社のホームページで公開している「SD Card Data Storage」
参考にしました。

SDカードからのブートについては、microSDカードリーダ搭載の純正ボードの
"Propeller Board of Education "にて実現可能な記事を見つけました。
記事:  Make One Program Launch Another

流用で出来そうです。何とかなりそうです。
プロペラってこんなこと出来るんですね。

話変わって、"LameStation"の"Lame"ってどういう意味かを調べたら、"不自由な"
っていう意味合いなのですが、確かに不自由と言えば不自由か..

2016/02/02 追記
SDカードからのブートが出来ました。プログラムはライブラリの関数を利用することで
簡単に実現出来ました。プログラムは次のような感じです。

{{
    LameStation SDカードローダー
}}

CON
    _clkmode        = xtal1 + pll16x
    _xinfreq        = 5_000_000
  
    'SDカード PIN接続
    DO  = 16        'EX0(P16)
    CLK = 17        'EX1(P17)
    DI  = 18        'EX2(P18)
    CS  = 19        'EX3(P19)

OBJ
  sd   :   "SD-MMC_FATEngine"

PUB go
  Run(String("TANKBA~1.EEP"))

PUB Run(filePathName) : statusVal | statusStr 
  ifnot sd.partitionMounted
    Mount(0)

  statusStr := \ sd.bootPartition(filePathName)
  statusVal :=   sd.partitionError

PRI Mount(partition) : statusVal | statusStr
  ifnot sd.CogStatus
    Start    
  statusStr := \ sd.mountPartition(partition)
  statusVal :=   sd.partitionError

PRI Start : okay | statusStr     
  ifnot sd.CogStatus
    okay := sd.FATEngineStart(DO, CLK, DI, CS, -1, -1, -1, -1, -1)
 

ライブラリではロングファイル名に対応していないため、8.3形式のファイル名で
ファイルを指定する必要があります。
8.3形式のファイル名はWindowsのコマンドプロンプトで"dir /X"で確認できます。

下記の写真はSDカードから起動した様子です。

Dscn4824

SDカードは容量4Gバイト FAT16です。
起動するプログラムはSDカード上にEEPROMイメージの形式のファイルとして
"TankBattle.eeprom"というファイル名で書きこんでいます。
8.3形式のファイル名だと"TANKBA~1.EEP"となります。

EEPROMイメージの形式の作成は、開発環境にて出来ます。
ただし、私が使っている PropellerIDE で作成したイメージではブート出来ませんでした。
Parallax社純正の開発環境 PropellerToolで作成すると正常起動しました。

一々別の開発環境で作成するのも面倒なので、openspinというコマンドラインで
利用するコンパイラを利用することで作成することにしました。バッチコマンドを作成して、
そのコマンドにソースのアイコンをドロップすることで簡単に作成できるようにしました。

バッチファイル makerom.bat

中身

openspin %1 -e -L "C:\Program Files (x86)\PropellerIDE\library\library" -L E:\Propeller\lamestation\lamestation-sdk-rc2-0.4.0

« aitendoのATTiny ISPシールドきっと [K-TINY-SLD]を購入 | トップページ | Propeller始めました(19) ポータブルゲーム機の実装 4 »

Propeller」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/571408/63152827

この記事へのトラックバック一覧です: Propeller始めました(18) ポータブルゲーム機の実装 3:

« aitendoのATTiny ISPシールドきっと [K-TINY-SLD]を購入 | トップページ | Propeller始めました(19) ポータブルゲーム機の実装 4 »