小規模組み込みシステムの全体挙動を手軽に確認できる！	

2012年度	  TOPPERS活用アイデア・アプリケーション	  開発コンテスト	  中村 晋一郎	

!
!
!
!

リアルタイム・システムの設計とデバッグの課題	  デバッグ環境	  Natural	  Tiny	  Loggerとは？	  
展示中のデモ・キット	  ! イベントを起点として動作させるのが基本。	  
! イベントは、カーネルの機能を使って待つ。	  

! イベント発生元は「イベントの発生のみ」を通知。	  
! どんな処理を行なうのかは、基本的に関知しない。	  

! イベント処理先は「該当処理のみ」を担当。	  
! いつ処理を行なうのかは、基本的に関知しない。	
イベント発生元「いつ」	

イベント処理先「どんな」	

オーディオ制御をリクエストに従って実行するだけ

ハードウェアイベントが発生した事を発信するだけ

Audio
Controller	

Hardware
Interrupt	
SystemController
User
Input	
ユーザ入力イベントが発生した事を発信するだけ

Display
Controller	
ディスプレイ制御をリクエストに従って実行するだけ

! DMA完了で処理の開始(「いつ」)を決定。	  
!

「DMA完了と同時に処理を開始したい。」に対応可能。	  

! 処理先のタスクで処理(「どんな」)を実行。	  
!

「場合によって処理内容を変えたい。」に対応可能。	  

イベント
発生元「いつ」	

イベント
処理先「どんな」	

! 個別機能統合時に全体挙動を把握したい。	  
! 意図した動作が得られている事を確認したい。	  
! 意図しない動作が無い事も確認したい。	  
! 時間的余裕度を知りたい。	  
! その他	  ! 導入費用が膨大。	  
! 「ナントカ・ハードウェアとナントカ・ソフトが必要。」	  ! 「100万円になります。」	  ! ちょっと確認したいだけなのに大げさ。	  
! ターゲットとホスト間に専用機。	  
! タイムスタンプ付けやデータバッファリング等。	  

! とにかく色々できるけど・・・	  ! そんなに沢山の機能はいらない。	  
! まずは簡単に確認したいだけ。	  

! その他。	

小規模組み込みシステムにおける	ターゲット・システム	

ホスト・コンピュータ	開発者	ドライバによりCOMポートとして見える。

コンバータ	

MPU	ロジック	  レベル	差動USB	  ターゲット・システム	

ホストコンピュータ	ホスト用インターフェースの実装	

	UART-USB変換

Natural Tiny Loggerの特徴
UARTだけのシンプルなシステムで十分に機能	

ターゲット・システム

簡単便利に時間軸方向デバッグ	! 小規模組み込みシステム向けのロガー。	  
! 簡単なマクロを埋め込むだけで使用可能。	  
! ターゲットにUARTさえあれば実行可能。	  
! ターゲットにメモリを必要としない設計。	  
! ロギングはホスト・コンピュータ側で実行。	  
! データ閲覧はブラウザを使用可能。	  
! マウス・ホイールで時間軸を操作可能。	  

イベント発生源
イベント事象マウス・ホイールの操作で時間軸の拡大縮小を実現。

ms単位の描画に対応。

データはus単位で記録。

!
!
!
!
!
!
!
!

シリアルポートのある組み込みシステムで使用可能。	  
1イベントあたり1バイトの送信のみで動作が非常に軽量。	
組み込みシステム側に巨大なメモリが不要。	
記録時間はホスト側のストレージの容量に依存。	  
導入の敷居が低く、中小企業様や教育現場向け用途に最適。	
シンプルな設計で移植や改造が容易。	
最終出力は、ブラウザ上で閲覧可能なHTML形式を採用。	  
プロプラエタリな開発でも導入しやすいライセンスを採用。	

イベント事象	
イベント発生源	

イベント発生源とイベント事象を１バイト内で表現。
一般的なUARTにおいて不可分な単位でイベントを取り扱い。	

!
!

ターゲットとホスト間の通信経路に存在するであろうバッファリング等による遅延やジッタは、測定対象単位時間に対して十分に小さく無視できるものとして扱う。	
ホスト側におけるロギングのためのオーバーヘッドは無視できるほどに小さいものとして扱う。	  

上記は、ターゲット側から一定間隔でイベントを発生させ、そのバラツキを観測する事で検証が可能。	

イベント情報	

ntlcap	

ログ・ファイル	

イベント情報を記録したログ・ファイルを生成する。	

ブラウザで閲覧可能なHTMLファイルを生成する。	
ログ・ファイル	ntlgen	HTMLファイル	

システム挙動を観察したい時に#!/bin/sh	  スクリプトを端末で実行するだけ。		  
NTLCAP=ntlcap/ntlcap	  NTLGEN=ntlgen/ntlgen	  PORT=/dev/MyUSB0	  BAUD=38400	  DATE=`date	  +%Y-­‐%m-­‐%d-­‐%H-­‐%M-­‐%S`	  LOGFILE=sample-­‐$DATE.ntl	  HTMLFILE=sample-­‐$DATE.html	  DESCFILE=sample.ntd	  COUNT=5000	  ntlcapでイベント情報を記録した
OPTS=-­‐v	  ログ・ファイルを生成する。	
BROWSER=chromium-­‐browser	  	  $NTLCAP	  -­‐p	  $PORT	  -­‐b	  $BAUD	  -­‐o	  $LOGFILE	  -­‐c	  $COUNT	  $OPTS	  $NTLGEN	  -­‐i	  $LOGFILE	  -­‐o	  $HTMLFILE	  -­‐d	  $DESCFILE	  $BROWSER	  $HTMLFILE	  &	  	ntlgenでブラウザで閲覧可能なHTMLファイルを生成する。	

TOPPERSブースに設置中	リクエストに従ってLEDを点灯するだけ

システム入力を模擬
約50ms/event
システム制御を模擬。

input1	

output	systeminput2	

システム入力を模擬
約100ms/event

calc	

計算を模擬
最大200ms/proc

設計：	  ライブ・タスクは約250ms毎に起床。	  
LEDを点滅させる。	  
検証：	  ライブ・タスクが約250ms毎に起床している。	

設計：	  入力タスクは、DTQを使って、	  システム・タスクに入力イベントの発生を通知。	  
検証：	  入力タスクがDTQを使って入力イベントの発生を	  通知するタイミングで、システム・タスクが動作。	

設計：	  システム・タスクは、出力タスクにLEDの点灯を指令。	  
LEDが全点灯なら、計算タスクに計算実行を指令。	  
検証：	  システム・タスクがLEDを全点灯させる時に、	  計算タスクの実行が行なわれている。	

模擬システムの全タスクの挙動を確認。

紹介した検証は、非常に簡単な事例だが、「実際にデータで確認する」のと、「まぁ、動いているんじゃない？」とでは、雲泥の差がある。	

SDカードのI/O性能観察	! リアルタイム・システムのキビキビした動作を、視覚的に捉える事ができる新体験を提供。	  
! どちらも無償で導入の経済的敷居は皆無。	  
! 特別なハードウェアが不要。	  
! 大勢が同時に使える。	  ! 公開サイト	  !

hMp://shinta.main.jp/ﬁrmware/ntlogger/ntlogger_ja.html	  ! 公開サイトを変更。	  
!

hMp://shinta.main.jp/ﬁrmware/ntshell/ntshell_ja.html	  ! 機能追加を実施。	  
! プロンプトの動的変更に対応。	  

! 実装も一部修正。	  
! 必要ROMサイズを縮小。	  

! CQ出版社Interface誌に関連記事を掲載予定。	  
! モニタ・プログラムをNT-­‐Shell上で実現した事例。	  ! 酔漢さん	  ! NXPセミコンダクターズ社のCortex-­‐M3プロセッサ上で動作するTOPPERS/ASPポートを公開。	  
! 手軽に手に入るハードウェア・プラットフォームで使えるポートをメインテナンスされています。	  
! 今回のデモも、氏のメインテナンスされている
TOPPERS/ASP	  for	  LPCを利用させて頂きました。