2013年11月26日火曜日

ET2013のTOPPERSパビリオンでショートプレゼンテーションをさせて頂きました

TOPPERSアプリケーションコンテストに関連して、ET2013のTOPPERSパビリオンでショートプレゼンテーションをさせて頂きました。

ET2011では小規模組み込みシステム向けシェルのNT-Shell、ET2012では小規模組み込みシステム向けロガーのNT-Loggerと、二年連続でミドルウェアを提案しました。今回は、TOPPERSのsample1に対する改善という事で主旨を変更して提案しました。


ショートプレゼンテーションでは、リアルタイムオペレーティングシステムを使った組み込みシステムの設計、実装、検証について、日頃感じている事も少しだけお話させて頂いた次第です。これは、提案の題材として用いたシステムを使って実際に取得したデータから、リアルタイム性を確認する手段など簡単な手順を交えた内容としました。

非常に安価な装置を用いて、以下のように処理にかかる時間の分布などを得る事ができます。


リアルタイムオペレーティングシステムを使った組み込みシステムの場合、最悪値の検証が欠かせません。データを収集して整理するだけに留まらず、客観的に評価できるところまで落とし込む作業が必要です。


実開発では、正しく動作しているように見える時に「本当に意図した動作になっているのか?」まで確かめる必要があります。ショートプレゼンテーションでは、確認作業のアプローチの一つとして幾つかの方法を述べました。



2013年11月2日土曜日

adafruitでUOS-LPC800が紹介されていました

adafruit(http://www.adafruit.com/)でUOS-LPC800が紹介されていました。


彼らが販売しているLPC810 Mini Starter Packに絡めた紹介になっています。
これだけの部品で、小さなオペレーティング・システムが楽しめます。


ビルトイン・シリアル・ブートローダのおかげで、ホスト・ターゲット間でシリアル通信さえできればプログラムを書き込めるのも嬉しいポイントです。

2013年10月12日土曜日

オペレーティング・システムのスケジューラを書く人の強い味方「レジスタ将棋」を考案しました

「青空の下でLPC800 Mini-KitとUOS-LPC800を楽しもう!」の説明資料を作っていて、レジスタの扱いについて面白く説明する方法はないかなぁ?と考えていました。

オペレーティング・システムを書くとなると、あのレジスタをこっちにやって、このレジスタをあっちにやって・・・とだんだん頭がわけわからなくなってきます。UOS-LPC800のスケジューラを書いている時も、Cortex-M0+の命令セットをどう使うのか頭を悩ませた気がします。もう忘れましたが。


で、それを他人に説明する時の面白い方法が欲しいと思いました。
で、考えたのが「レジスタ将棋」です。

どんなものになるのか自分でもよくわからなかったので試しに百円ショップで将棋セットを購入。


うーん。
この金将とか歩兵とか邪魔だな・・・。


「裏面を使えば良いか!」と考えていたが、よく考えたら彼らはシチュエーションによって色んな奴に化けるのを失念していました。おぉ、両面に文字がある。


「くそぉー」ということで、耐水ペーパーでゴシゴシ削ってレジスタ名を記入することに。
これで「レジスタ将棋」の完成です。


ちなみに、青い字はLow Registersで、Cortex-M0+のSTM、LDM命令でもアクセス可能なレジスタ。
赤い字はHigh Registersで、Cortex-M0+のSTM、LDM命令ではアクセスできないレジスタです。


「レジスタ将棋」の使い方は至って簡単。
スタックポインタを起点に積んでいくレジスタ駒を並べて行くだけ。


R13はMSPやPSP、R14はLR、R15はPCでもあるので、裏面にひっくり返すとPSP、LR、PCなどと書いてあります。


レジスタの退避、復旧、複写は、アドレス・インクリメント・モードが複数あったり、他人に説明する場合にややこしくなりがちです。駒を動かして一つずつ操作を理解する事で、楽しくレジスタ操作を把握できるという算段です。

この「レジスタ将棋」のアイデア、駒を動かしてゲーム感覚でレジスタ操作を整理できるので、我ながら気に入っています。みなさまもオペレーティング・システムのスケジューラを書く際の友として如何でしょうか?

「青空の下でLPC800 Mini-KitとUOS-LPC800を楽しもう!」を開催しました

訳のわからないタイトル「青空の下でLPC800 Mini-KitとUOS-LPC800を楽しもう!」で企画したLPC800 Mini-KitとUOS-LPC800を楽しむ会を開催しました。


基本的にユルユルな会と見せかけながら、実はリアルタイムシステムの評価手法に関するノウハウなども公開したりといった内容としました。


開催場所は横浜市営地下鉄のセンター北駅から徒歩10分ほどの閑静な住宅街の中にある公園。


私は到着早々、今朝思いついたばかりの「レジスタ将棋」の思案を開始。
その直後、落ち葉が降ってきて「おぉー、秋ですなぁ~。」と感じるなど。


基本的に公園の中でやる事ではないのですが、いつもと違う感じが気持ち良かったです。


振り返ればそこは池!
鴨みたいなのとか、そうじゃないやつとか沢山いました。


皆さん思い思いの環境でLPC800 Mini-KitとUOS-LPC800を楽しんで頂いて何より。


14:00から16:00の開催時間をとっくに過ぎて16:30に終了。
二次会の締めとして喫茶店で続きを・・・。


前回の茶室で楽しむKOZOS拡張基板に福島からいらしてくれた方からは、「こんな手軽な環境でデバッガが使えるなんて嬉しいです」とも。あぁ、やって良かった「青空の下でLPC800 Mini-KitとUOS-LPC800を楽しもう!」企画!タイトルが長い!

2013年8月31日土曜日

A capacitive touch sensing using an analog input port for mbed

先日のことですが、mbed用の静電容量式タッチセンサライブラリを公開しました。



http://mbed.org/components/Touch-Sensor-using-an-analog-input-port/

まだまだ改良したい感もありますが、「ひとまずこれで公開!」というバージョンです。

2013年7月28日日曜日

Markdown記法を使ってプロジェクトの関連文書生成を効率的にする

Markdownって何ですか?

Markdownとは、John Gruberさんによって作られたマークアップ言語で、記述したテキストファイルをスクリプトで処理して二次生成物としてHTML出力する事ができます。
最近ではリポジトリに設置する文書にMarkdown記法を用いるケースを多く見るようになりました。
「README.mdって何だ?」っていうアレです。

今回はUOS-LPC800プロジェクトにおけるMarkdownの活用をご紹介します。

UOS-LPC800におけるMarkdownの活用



UOS-LPC800では、プロジェクト開始当初からMarkdownで一次文書を構成し、二次生成物としてウェブ用ファイルを作ることを考えていました。

Markdownのファイルをダウンロードすると変換用のPerlスクリプトが同梱されています。
Markdown.plを使用した事のある人にはわかるかもしれませんが、このスクリプトは単に書かれた事を書かれたように変換するだけのスクリプトです。

UOS-LPC800のウェブページを作るにあたって、Markfileやシェルスクリプトでラッパーを作りました。
これにより
  1. Markdown記法でテキストファイルを記述
  2. 端末でmake
するだけでウェブブラウザが開いて生成物の内容を確認できるようになります。

今回のラッパーでは以下を実現しています。
  • ページで使用する画像はimagesに置いておけば良い。
  • ページで使用するリソースはresourcesに置いておけば良い。
  • Markdown.plで処理されないヘッダの類はhead.htmlとtail.htmlで付与する。
とこんな感じです。

ダウンロード

今回のファイル一式をこちらからダウンロードできるようにしておきました。