ラベル ARM Cortex-M3 の投稿を表示しています。 すべての投稿を表示
ラベル ARM Cortex-M3 の投稿を表示しています。 すべての投稿を表示

2011年5月19日木曜日

Natural Tiny Shell (NT-Shell) ライブラリを更新しました。

Natural Tiny Shell (NT-Shell) ライブラリは小規模組み込みシステムの為のシェルライブラリです。
本日新しい機能(入力補完機能)を加えて更新しました。

入力補完と1口で言っても色々な種類の補完が考えられます。
今回の入力補完機能は過去に入力した文字列の中から候補をTABキーで選出する事ができるというものです。

デモ映像を用意しましたのでご覧下さい。


ソースコード : Natural Tiny Shell (NT-Shell) Version 0.0.6

インターフェースはかなりシンプルです。
ntshell.hのntshell_executeインターフェースのみ知っているだけで使用することができます。
このため、様々なシステムに簡単にポーティングする事ができます。
是非みなさんの小規模組み込みシステムでお楽しみ下さい。

Natural Tiny Shell (NT-Shell) library was updated.

Natural Tiny Shell (NT-Shell) library is a tiny shell library for a small embedded system.
Today, I just updated the library.
The new feature is historical input.

Please see the demo movie.


The source codes : Natural Tiny Shell (NT-Shell) Version 0.0.6

The interface is really simple.
You should only know ntshell_execute in ntshell.h.
So you can port it to any embedded system easily.
Please enjoy your small embedded system with it. :)

2011年3月1日火曜日

小規模組み込みシステムデバッグ用シェル - Natural Tiny Shell (NT-Shell)

2014年11月02日追記。
公開サイトを変更しています。以下から最新版をダウンロードできます。
http://www.cubeatsystems.com/firmware/ntshell/ntshell_ja.html
CQ出版社の月刊誌インターフェース2013年1月号に記事を書きました。
http://www.kumikomi.net/interface/sample/201301/if01_174.pdf
インターフェース2013年1月号のソースコードは、CQ出版社のダウンロードサービスで入手できます。
http://www.cqpub.co.jp/interface/download/contents.htm
TOPPERS活用アイデア・アプリケーション開発コンテストでの資料はこちら。
https://www.toppers.jp/docs/contest/presen2011_NaturalTinyShellTask.pdf
2012年10月18日追記。
公開サイトを変更しています。以下から最新版をダウンロードできます。
http://shinta.main.jp/firmware/ntshell/ntshell_ja.html

小規模組込み機器を設計している時に必ずと言っていいほど欲しくなるのが、シェル端末のようなインターフェースです。
シェル端末があれば、対話形式でシステムの状態制御や状態取得を行うことが可能になります。

最近のプロセッサは小規模組み込み用途でも20年前のパソコンを超える性能を持っているのが現状です。
また、シェルのような動作を実現するのに高性能なプロセッサが必要というわけではありません。

しかしながらきちんとシェルの動作を実現しようとするとVT100のような端末をエミュレーションする必要がでてきます。
シェル端末が送信する多くの制御コードの解釈を正しく行うコードを実装するのは意外に面倒な作業です。
このため、多くの小規模組み込み機器の開発においてなかなか実現されることが少ないのが現状でした。

そこで、今回は小規模組み込みシステム向けのデバッグ用シェルNatural Tiny Shell (NT-Shell)を設計実装してみました。


このシェルを使えば、キー入力でおかしな制御コードが入ったりすることはありません。
コマンドの入力時に左右にカーソルを移動させてスムーズに編集できるのも特徴です。
また、上下方向キーによるヒストリ機能も搭載しています。
デバッグ時のキー入力で慎重になる必要がなくなりますので、スムーズな作業ができるようになります。

ソースコードはCランタイムライブラリに非依存で、小規模リアルタイムシステムなどへのポーティングも容易です。
ポーティング時にはソースコードを変更する必要はありません。
シェルの実行関数にシリアル通信ポートのI/O関数のポインタを渡すだけで済むようにしてあります。

詳しくは付属のドキュメントを参照して下さい。
ダウンロードはこちら:ntshell-0.0.4.tar.gz

2011年03月08日追記。
公開当初のVersion 0.0.1にはバックスペース処理にバグがありました。
修正したVersion 0.0.3に差し替えました。

2011年04月30日追記。
Version 0.0.3にはntoptとntlibcが含まれていませんでした。
また、vtparseのテーブルがRAMに配置されるようなになっていたので、static const属性に変更した上でvtpraseの実装を一部修正しました。
以上の修正を行ったVersion 0.0.4に差し替えました。

2011年05月20日追記。
その後、入力補完機能を追加し、インターフェースをシンプルにしたバージョンを公開しました。
http://shinta-main-jp.blogspot.com/2011/05/natural-tiny-shell-nt-shell.htmlをご覧下さい。
動作の様子を記した動画もご覧頂けます。

2011年05月22日追記。
mbedでも使えるようにしました。
http://shinta-main-jp.blogspot.com/2011/05/natural-tiny-shell-nt-shellmbed.htmlNatural Tiny Shell (NT-Shell)をmbedで使ってみる (Eating your own dog food)をご覧下さい。

2012年10月18日追記。
公開サイトを変更しています。
以下から最新版をダウンロードできます。
http://shinta.main.jp/firmware/ntshell/ntshell_ja.html

2010年12月12日日曜日

LPCXpresso LPC1768のデバッガとターゲットを切り離して使う

LPCXpressoはそれ自身でデバッガとターゲットの用が足りてしまうので、デバイスを試すという意味で言えば普通それ以上考えません。

でも、「じゃあ製品に組み込む時どうすんの?」とかそういう話になってくると「いやー、LPC-LINK使うかなぁ?(←使わないでしょ。)」とか、「本当に動くのかなー。(←そりゃ動くだろうよ。)」みたいな話になってきます。

そこで、今回はLPCXpressoのターゲットだけを切り離して、JTAGデバッガと接続するお話です。

ユーザとしては「使い慣れた」、あるいは「既に投資してしまった」デバッガや環境を使いたいわけです。
ここでは手始めにデバッガ(LPC-LINK)とターゲットを切り離して使うことを考えます。


まずは回路図を確認します。
LPCXpressoは以下のようなデザインになっています。


LPC-LINK側から+3.3[V]を給電してもらってターゲットが動作するようになっています。
「じゃあ、USBに接続しないで動作させるにはどうするの?」という話ですが、これは図にある通り、「Expansion connector」から外部電源電圧(+5.0[V])をもらい、それがそのままLPC-LINKに入って、先ほどの+3.3[V]を生成するという設計です。

ちょっと考えてみましょう。
LPC-LINKとターゲットを切り離してみてください。
そして、整理してみます。

  • LPC-LINKは+5.0[V]から+3.3[V]を生成する。
  • ターゲットは+3.3[V]を給電されて動作する。
  • ターゲットは+5.0[V]を給電されても、LPC-LINKにそのまま渡すだけ。(要するにターゲットと+5.0[V]は一切関係ない。)
何が言いたいのかというと、「LPC-LINKとターゲットを切り離すと+3.3[V]を何らかの方法で給電しなければ動作しないボードになってしまう。」ということなんです。

また、図面には「Superset of mbed connector」と書かれていますが、これは大嘘。
なぜなら、mbedの40ピン目は+3.3[V]の出力です。


LPCXpressoのターゲットはLPC-LINKを接続している限り「+3.3[V]を出力」しますが、切断した途端にここから+3.3[V]を入れるという前提になっています。これでは当該ピンから+3.3[V]が供給される前提で設計されているベースボードは動作しないことになります。
これは明らかにスーパーセットではありません。
この時点で「superset of mbed pinning」は信用しないことにしました。
この設計はLPC-LINKを使わせる前提なのでしょう。

以下は図面の最後のページのピンアサインです。
初めは「self powered」の意味がわかりませんでしたが、「デバッガ+ターゲット=セルフ」ということみたいです。


そうなると「じゃあどうするの?」という現実的な問題になってきます。

  • LPCXpressoのターゲットの問題は単に+3.3[V]のみ。
  • 手軽に取り出せるのは、例えばUSBの+5.0[V]。
  • パソコンとターゲットとデバッガI/Fだけで開発したい。

私はこうしました。
  • LPCXpressoのターゲット上で+3.3[V]を+5.0[V]から生成するようにしよう。
  • LPCXpressoのデバッガは+3.3[V]の出力にダイオードを突き当ててるから大丈夫。
  • ターゲット用の+5.0[V]はUSBから頂こう。
結果としてできたのがこれ。

LPCXpresso上の配線は以下のようになっています。
EXT_POWXから+5.0[V]をもらい、+3.3[V]に降圧してからVIO_3V3Xに給電です。
コンデンサは後で。

こうすれば(※J6-29にUSBの+5.0[V]を渡す必要もある。)電源面から見ると「mbedとほぼsuperset」と言えます。また、パソコンさえあればデバッグが開始できます。

通常、デバッガはターゲットのI/O電源電圧をリファレンスとしてもらってI/Oを駆動する形をとります。
LPC-LINKは積極的にターゲットに電源を供給する前提で設計されています。
そういう意味で「切り離して使えます」と言われてはいるものの、LPCXpresso LPC1768にかなりフォーカスしたデバッガと考えていた方が良いかもしれません。

この次にJTAGKey2Pによる動作確認です。

2010年7月16日金曜日

STM32/Cortex-M3 HOWTO: Development under Ubuntu.

STM32/Cortex-M3の開発環境は有償無償を問わず様々な環境を用意可能です。

最近の国内雑誌はベンダーと手を組んで有償のツールを紹介するような内容が多く見られます。
それはそれで良いのですが、妙な制限が付いていたり、なんだか気持ちの悪いツールを使うように説明してあったりで、手放しに喜んで使う気にはなれないのが現状です。

そこで今回は STM32/Cortex-M3 HOWTO: Development under Ubuntu. を参考にUbuntu 10.04上で環境を構築してみました。


何かの参考になればということで、環境構築用のスクリプトとOpenOCDの設定ファイル、それにLEDチカチカプログラムをまとめてファイルにして置いておきます。
  • JTAGライタにはJTAGKey2を使っています。
  • OpenOCDはgitからソースコードをとってきてコンパイルして使いました。
    • Open On-Chip Debugger 0.5.0-dev-00403-ge8445c9-dirty (2010年07月11日-13:51)
  • DFUは気持ち悪くて使わないので思いっきり上書きしています。
  • LEDチカチカプログラムはSTM32F103VHB6_RevZ_Demo1を使っています。
ダウンロードはこちらから(Download from here)

ほぼ備忘録ですが、これからちょくちょく環境整備についてもまとめていこうと思います。

オープンソースの場合、バージョンによって大きく動作が変わったり、それに伴って情報が断片的になったりします。こういった時、断片的な情報を集めて整理することで問題を突き止める事ができる場合があります。ダウンロード用のファイルもそういった用途のために設置してあります。完全な動作を保証するためのものではありませんのでご了承ください。

2010年5月30日日曜日

ARM Cortex-M3

ARMはしばらくCortex-M3を中心に触っていく予定です。
http://www.jp.arm.com/products/processors/arm_cortexm3.html

気づいたら変な(失礼!)ポータルサイトまであります。
http://www.mcuportal.com/

AltStyle によって変換されたページ (->オリジナル) /