Cortex-M3(LPC1769)搭載オーディオ基板のハードウェアデバッグが完了しました。回避不能となるような致命的なバグはなく一安心というところです。Cortex-M3の感じが大体つかめました。@suikan_blackfinさんによるオーディオトークスルーもこのとおり動作しています。会社で周りの人と話していると「マイコン=低機能」という思い込みを持っている人が意外に多いことに気づきます。確かに業務で少し触れただけの過去の経験から現状を見ると「何が違うの?」ということになるのかもしれません。これは非常に勿体無い話です。10年、20年前とは状況が大きく変わっているのだということを実感するには、実際に触ってみるのが一番です。今回の基板ではオーディオをコーデック経由でスルーさせながら、バックグラウンドでデバッグ用シェルが走っていたり、マイクロSDカードにアクセスしたり、有機ELディスプレイの表示をしたり、ユーザのスイッチ入力を監視したりしています。これらの仕事をワンチップのマイコンで実現できるわけです。マイコンのシステムだからと言って、わざわざ周辺環境までチープにする必要はありません。ストレージ(今回はマイクロSDカード)も欲しいし、デバッグにはシェルが欠かせません。Cortex-M3はこういった小規模開発の既存概念を変える道具として最適です。データシート上で見る性能だけでなく、「実際にどこまでできるのか?」を自分で考えてみることで、誰も考えていなかった応用への発展が期待できそうです。このプロジェクトは引き続きファームウェア開発を行う予定です。共有2011年3月7日月曜日LPC1769搭載オーディオ基板のとんでもない実装ミス昨日のこと、LPC1769搭載オーディオ基板のデバッグを開始して1時間後、とんでもない実装ミスを発見してがっくりしていました。「なんだかSWDで繋がらないなぁ〜。」なんて思っていたんです。前日までは「まぁ、デバッガの接続が間違っているんだろう。」なんて思っていました。データシートのパッケージ情報にはきちんと「1ピンはココ!」と当然示されていますね。取り付けた状態の写真が以下です・・・。冷静に基板を見て愕然・・・。「1ピンはそこじゃない!」なんと、1ピンは左上なのです!もう全く意味がわかりません。データシートを何のために見て実装したのでしょうか・・・。シルクによる心理効果か、はたまた大きい穴に騙されたのでしょうか。今度はさすがに間違えません。なんだかんだで2時間のハンダ付けを行ない2台目が完成。SWDによる認識も完了しました。なんと言いますか、一日働いた後で深夜のハンダ付けは避けようかと考えた出来事でした。この方のようなユーモアを交えてお伝えするセンスを持ちあわせていないのが残念。先月の中旬に基板が上がってきてからダラダラと行なっていたLPC1769搭載オーディオ基板のデバッグ用1号機の組み立てがやっとこさ完了しました。大した事ないハンダ付けのはずでしたが、その前に基板がおかしいだろうとか、FPCのハンダ付けでギャフンと言ったりしてなかなか進んでいませんでした。ボリュームとスイッチは高さを合わせてあります。最終的にアクリル板を上部に取り付けるようにする計画。今回の基板は少しだけ奮発して値段のはるスイッチを使ってます。左上の有機ELも表示させるのも楽しみ。今日はショートチェックを済ませた後、通電を数十秒だけ行ないました。デバッグ用シリアルインターフェースに接続したFT232RLを、パソコン側で認識できるのは確認しました。基板のデバッグはまだまだこれから。今週末にでもデバッグを進めようと思います。Shell(NT-Shell)のポーティング事例。LPCXpressoとTOPPERS/ASPで小規模組み込みシステムの開発をもっと便利に!はじめに前回の記事でVT100仮想端末を小規模組み込みシステムで実現するためのライブラリを公開しました。中には「これが何の役に立つのだろう?」と疑問に思われた方も少なくないでしょう。この手のツールは実際の開発作業が進むにつれて利便性を再認識することが少なくありません。(逆に言うと実際に開発作業で相当に困らないと不便な事に気付かない事が多いのです。Shell(NT-Shell)をポーティングして活用した時のメリットについて御紹介します。Shell(NT-Shell)を使う今回はRTOS上にシェルを実装することでシステム開発をもっと便利にしてみましょう。題して「LPCXpressoとTOPPERS/ASPで小規模組み込みシステムの開発をもっと便利に!」です。小規模組み込みシステムでありがちな「この程度の規模だからいいや。」と諦めている方におすすめです。動作するデバッグ用シェルがあるだけでシステムが見違えるように良くなったように感じます。デバッグも楽しくなって作業効率が向上すること間違いなし!是非皆さんも挑戦してみませんか?エコーバックを行わないようにする受信した文字列をエコーバックする設定を取り除く。TOPPERS/ASPでは受信した文字列をエコーバックすることができるようになっています。Shell(NT-Shell)を使用する時、エコーバックは都合が悪いので設定を外します。これはシリアルインターフェースドライバで行うことができます。関数でIOCTL_ECHOの指定を取り除きます。serial.cの240行目付近です。エコーバックさせたい時にはIOCTL_ECHOを追加すると良い。IOCTL_FCRCV);なぜ受信した文字列をそのまま返してはいけないかという話です。システムに接続されたシリアル端末が送信してくるコードの中には制御コードが含まれる事があります。今回のシェルを設計実装した目的の1つは「制御コードをうまく処理してシリアル端末ユーザに便利な機能を提供しよう」です。受信したコードをそのまま送信した結果、シリアル端末上で制御コードが解釈されてしまっては従来と何も変わらない事になってしまいます。これを避ける為にエコーバックをしないようにします。