2012年12月28日金曜日

「回路基板、箱に入れなきゃタダのゴミ」 (筺体について考えよう)

「回路基板、箱に入れなきゃタダのゴミ」

「回路基板、箱に入れなきゃタダのゴミ」は少し言い過ぎかもしれませんが、2013年のCuBeatSystemsは、実際に使える物に仕立てるまでの過程も重視しようと計画しています。

ここで実際に幾つか考えている物のアイデアを記しておこうと思います。

タカチ電機工業

タカチ電機工業さんには何度か加工依頼を出しています。
幾つか気になる採用候補についてリストアップしてみました。

TD型アルミダイキャストボックス



BlueTankは、もともとオーディオ・プラットフォームとして設計しましたが、「何のオーディオ装置?」と聞かれると実際に答えに困ります。具体的なアプリケーションをあまり想定していなかったというわけです。

少し思い直して考えているのが「エフェクタ・プラットフォームとしてのBlueTank」です。
で、調べてみると沢山のエフェクタがタカチ電機工業社製のアルミダイキャストボックスで製造されている事がわかりました。おぉ、こうなるのね。

MXA型アルミモバイルケース



次に目を付けたのがお洒落なアルマイト仕上げが印象的なMXA型アルミモバイルケースです。
こちらはヘッドフォン・アンプなどへの採用を多く見かけました。
これまた素敵だ。


WO型サイドウッドケース

http://www.takachi-el.co.jp/data/pdf/05-39.pdf


CuBeatSystemsの名前の由来」で取り上げた装置で採用して気に入っているサイド・ウッド仕上げですが、手作業で製作していては大変です。

少し調べるとサイド・ウッドの付いたモデルがあるではありませんか。
これもなかなか良さそう。

まとまりのないまとめ

メーカ標準品を使ってお洒落な外装を実現する事もできそうです。
BlueTankが外装によってどのようなオーディオ・プラットフォームに見えるのか気になってきました。

ACB-BF592とUMB-SGTL5000を使ったTalk ThroughをTOPPERS/JSP上で実現する

オーディオ・プラットフォーム・プロジェクトであるBlueTankも、ベース基板が上がってきて半年が経とうとしています。その間にベア・メタルなアプリケーションは幾つか実装したのですが、そろそろ色々な不満が出てきました。


Blackfin BF592は、ARM Cortex-Mシリーズ等と比較しても有り余るプロセッサ能力を持っています。簡単なサンプル・プログラムならともかく、システムとして様々なサービスを提供するのにRTOSを使って楽をしたくなってきました。RTOSを使えばNatural Tiny Shell (NT-Shell)もシステム・シェルとして提供できます。「ビデオやオーディオのDMAバッファの管理手法 (動かして遊べるソースコード付き!)」をRTOS上で試してみたいというのもあります。

プロジェクトを始めた当初はフラッシュ・ロムへの書き込みも出来なかったため独立した組み込みシステムとして動作しませんでした。Blackfin BlueBootを実現した事で独立した組み込みシステムとしての道筋が見え、だんだんと欲も出てきました。

幸いにも、DSP空挺団の酔漢さんが「ACB-BF592とTLV320AICを使ったTalkthroughサンプル。TOPPERS/JSPベース。 (bf592_tlv320aic23b_talkthrough) 」というものを公開して下さっています。このプロジェクトは、TOPPERS/JSP for Blackfin上に、使いやすいI2C制御層が組み込まれた上、オーディオ・フレームワークUZUMEが実装されています。

BlueTankプロジェクトにおけるRTOS環境の出発点として、この酔漢さんの成果物をふんだんに活用させて頂く事にしました。これは本当に有難い話です。

TLV320AIC23BもI2Cインターフェースを持つデバイスですから、UMB-SGTL5000に搭載されているオーディオ・コーデックに対する処理も、少しの改造で可能だろうという算段。実際に酔漢さんの丁寧な設計実装のおかげで、ものの3分でBlueTankでもTalk Throughが動作するようになりました。ちなみに、オリジナルのコードは、レジスタ互換のSSM2603が搭載されたUMB-SSM2603でも動作します。

唯一変更したソースコード : uzume.c

対応は至って簡単で、init_codec関数の中身を少し変更しただけです。

今回のTalk Throughは、氏の進めているUZUMEフレームワーク上に構成された物です。
BlueTankプロジェクトも、UZUMEフレームワークを使って色々と実験を進めようと考えています。

素晴らしいプロジェクトを公開して頂いているDSP空挺団の酔漢さんには感謝感謝です。

2012年12月26日水曜日

マルツパーツ館さんでDSP基板とオーディオコーデック基板が販売になりました

BlueTankで愛用しているDSP基板とオーディオコーデック基板がマルツパーツ館さんで販売になりました。

http://www.marutsu.co.jp/shohin_158707/

http://www.marutsu.co.jp/shohin_158709/

「DSPってもっと遠い世界の事だと思っていた」という人でも安心して手を伸ばせる価格設定。
先日実装したBlackfin BlueBootもこの基板で使えるようになっています。

VisualDSP++が無くてもフラッシュロムの書き込みに困る事はありません。

2012年12月24日月曜日

999円で売られていたBEHRINGER DR400 (DIGITAL REVERB/DELAY)の安くない中身

クリスマスの雰囲気が満載の街中を歩いていたところ、楽器屋でBEHRINGERのコンパクト・エフェクターがサンキュー価格ということで999円で売られていました。


よく見ると「DIGITAL」と名のつくエフェクタも999円です。
興味が出てきたのでBEHRINGER DR400 (DIGITAL REVERB/DELAY)を購入して分解してみました。

分解して最初に目に入ったのは信号処理プロセッサであるDSP56364です。
Freescale社のDSPで、「24-Bit Audio Digital Signal Processor」と銘打った音声信号処理に特化したシリーズです。
音声コーデックにはAKM4552が採用されています。

面白いのはATMEGA16AがノブのADC処理用として用いられている事でしょうか。
配線を見るかぎりではエフェクトのOn/OffスイッチもATMEGA16Aに接続されていました。
フロントエンドはATMEGA16Aが担当という設計ですね。
DSP56364とATMEGA16AとはSPIかI2Cで通信でしょう。


電源にはMPSのMP1591が使われていました。
330KHzのステップ・ダウン・コンバータです。

今回分解したエフェクタはリバーブでもありディレイでもあるので、それなりのメモリを必要とします。
「どうしてるのかなぁ」と思ったら、当然のようにメモリが鎮座していました。
ISSIのIS41LV16105B-60TLがそれです。


こんな風に、街中で999円でエフェクタを買って分解できてしまう時代。
いやー、恐ろしいものです。


ちなみに、笑ってしまったのですが、右端のモードを切り替えるノブ。
メモリの位置に合わせてクリックがあるのかと思ったら・・・ありません!

単なるボリュームだったのです!
うーん、切り替えが難しいぞっ!



本当は機構と電気設計の関係もフムフムと眺めたかったのですが、自分が再現するとしたら「プラスチック成型」などあり得ません。
そう考えるとあまり参考にならない気もしました。

うーん、何か良いケースはないかなぁと考え始めるこの頃。
2012年初頭から始めたBlackfinいじりも2013年は更に加速させようと考えています。

今度は「本当に使えるモノ」に仕立てていく計画です。

2012年12月7日金曜日

Blackfin BlueBoot - Blackfinに接続されたブート用外付けフラッシュ・ロムを書き換える事ができるソフトウェアのデビューです!

このプロジェクトって何なの?

Blackfin BlueBootとは、Blackfinに接続されたブート用フラッシュ・ロムを書き換える事のできるソフトウェアです。

ターゲット用の専用ブート・ローダとホスト用の専用アプリケーションから構成され、両者が協調動作する事でBlackfinに接続されたブート用フラッシュ・ロムの書き換えを実行します。



Blackfinは、SPIに接続された外部フラッシュ・ロムからブートさせる事ができます。
しかし、Blackfinは予めどんな外付けフラッシュ・ロムが接続されるのか知るよしもありません。


当然のようにBlackfinが外付けフラッシュ・ロムの書き換え機能を持つわけもなく、「一体どうやったら書き換えができるの?」というわけです。

Analog Devices社は、同社純正ソフトウェアであるVisualDSP++でこの問題を解決しており、Blackfinに接続されたフラッシュ・ロムの型式を選択する事で、GUIから書き換えができるようなサービスを提供しています。

うーん、さすが有償ツール!なんて感動している場合ではありません。
VisualDSP++はとても高価なツールです。
業務で使うならまだしも、趣味のDSP開発で手の出せる金額ではない事がわかりました。

Blackfin BlueBootは、このような背景から高価なツールを購入せずともBlackfinに接続されたフラッシュ・ロムを書き換えられるようにしようというプロジェクトです。

プロジェクトのゴール

このプロジェクトは、以下のゴールを設定しました。
  • Blackfin搭載のターゲットに対応可能な事。
  • 幅広いフラッシュ・ロムに対応可能な事。
  • とにかく簡単に使える事。
  • ユーザが自由にターゲットを追加できる事。
  • 業務でも趣味でも少ない制約で利用できる事。
  • 入手性の良いDSPボードを使って実例を示す事。
  • CUIとGUIでホスト側ツールを用意する事。
  • 将来的にWindows、Linux、Mac OSのプラットフォームをサポートする事。
  • ターゲット側のコードは公開し、幅広く利用してもらえるようにする事。
  • その他。
上記のゴールを基に設計したのが、今回公開するBlackfin BlueBootです。

簡単に使える

Blackfin BlueBootが標準でサポートするBlackfin基板を使う場合、特に簡単に使う事ができます。
最初にリリースされるWindows版における動作を見てみましょう。

インストーラでソフトウェアをインストールすると、デスクトップにアイコンが作られます。
ダブルクリックしてソフトウェアを起動します。


ソフトウェアを起動すると、以下のような画面が出現します。


初めに行なうのは、ターゲットとホストを接続するシリアル・ポートの設定です。


次に標準的にサポートされているターゲット・ボードの選択を行ないます。


このリストにないターゲット・ボードの場合、インストール先ディレクトリに公開されているターゲット用ソース・コードと設定ファイルの更新により、独自にブート・ローダを記述する事で対応させる事ができます。(これは後日、別途記事を書きたいなぁ。)


最後に、使用するブートローダとアプリケーションを指定して選択は完了です。

Boot Loaderとは、初段でターゲットに流し込むフラッシュ・ロム書き換え用プログラムです。
Boot Loaderを流し込んで書き込みを行なう場合、ターゲットをUARTブート・モードにしておく必要があります。

Applicationとは、ターゲット上のフラッシュ・ロムに書き込むバイナリを指します。
Applicationは、初段で流し込んだブート・ローダを経由してフラッシュ・ロムに書き込まれます。

こんな風に「シリアル・ポート」、「ターゲット・ボード」、「ファイル」の3つの選択をするだけで、即座に書き込みを実行できるのがBlackfin BlueBootです。


ちょっと便利なLDR表示機能

単に書き込めるだけでは面白くないのでBlackfinで使用しているLDRファイルの属性も表示できるようにしました。


Version 0.2.0ではBF592形式しか対応していませんが、順次対応を拡大しようと考えています。
あ、DEADBEEFなんて洒落ていますね。

ダウンロード

  • こちらからダウンロードできます。
  • ライセンスはMITです。
  • 業務の開発に、趣味の開発に存分に御活用下さい。
  • 無保証です。使用した結果起きる如何なる損害も当方は責任を負いません。

関連文書

  • 先日の記事でM25P16の書き換えコードを公開しました。
  • DSPいじりを楽しみたい方には、金子システム株式会社さんが販売されているACB-BF592をお勧めします。
  • DSPなどの話題が盛りだくさんの酔漢さんのページ、DSP空挺団もお勧めです。

まとめ

今回のBlackfin BlueBootツールは、これからBlackfinを使ってみたいけどツールは高価で手が届かないという人にも、手軽にDSPを体験して頂く事のできるツールとして設計しました。

Blackfin BlueBootで用いた、「第1段階に書き換え機能を持ったプログラムを流し込み」、「本当にやりたい事を第2段階でやる」という手法は、一般的に用いられる手法の一つです。
実はXilinx社のFPGAツールでもプラットフォーム・フラッシュの書き換えで同様の手法が用いられていたりします。

世の中の色々なツールの動作を観察してみるのも意外に面白いかもしれませんね。

2012年11月30日金曜日

CQ出版社Interfaceの2013年1月号にNatural Tiny Shell (NT-Shell)を使ったモニタ・プログラムの記事が掲載されました

CQ出版社Interfaceの2013年1月号にNatural Tiny Shell (NT-Shell)を使ったモニタ・プログラムの記事が掲載されました。
「わずかROM 10Kバイト!コマンド入力ライブラリ」と銘打って、NT-Shellの簡単な紹介と、応用事例としてモニタ・プログラムを実装した事例を紹介しています。


対応するプログラムは以下からダウンロードできます。
記事の中ではFM3マイコンに対する実装を紹介していますが、他のマイコンでの実行も可能です。
マイコンのコマンド入力インターフェースでお悩みの方は是非お試し下さい。


また、CQ出版社さんのページでは、IAR Embedded Workbench for ARMで使用可能なFM3付属基板用プロジェクトファイル一式のダウンロードが可能です。
2013年1月号の「ROM 10Kバイト/RAM 1Kバイトでヒストリ機能付き! コマンド入力ライブラリNT-Shell」の項目を御参照下さい。

2012年11月4日日曜日

Natural Tiny Shell (NT-Shell)の更新

小規模組み込みシステム向けシェルモジュールNatural Tiny Shell (NT-Shell)の更新情報です。
最新バージョンは今日現在でVersion 0.2.0です。

変更点は以下の通りです。
  • 初期化と実行の関数を分離しました。
  • ユーザがプロンプトを変更できるようになりました。
  • その他、細かい修正。
最新版はhttp://shinta.main.jp/firmware/ntshell/ntshell_ja.htmlからダウンロードできます。

NT-Shellユーザとして一番嬉しいのはプロンプトの変更が可能になった事ではないでしょうか?
ntshell_set_promptという新しい関数を使うと、動的にプロンプトの変更が可能です。


FATファイルシステムと組み合わせて使用する場合など、パス名をプロンプトにしたりできます。
コマンドモードによってプロンプトを変更するなどの利便性を提供する事が可能になりました。

内部実装も初版から大幅に整理して変更を加えています。
初版をご利用の方も是非一度ダウンロードしてお試し頂ければと思います。