Linux コーナ ハードを隠ぺいしたお任せ OS を組み込みで使う可能性を探る 実験リサーチ! カーネル内部 とことん可視化計画 Linux応答時間 の 実力 第 13 回 専用ハードでカウントしないと意外と誤差が大きい… Linux で使う時刻 最終回 ファイルのタイム・スタンプを記録するなど時刻の システムは OS の基本機能です.組み込み CPU では内 部にも RTC 機能がありますが,バッテリ・バックアッ プ回路の容易さや精度の観点から CPU とは別に時計 IC(RTC)を実装することが多くあります.Linux で は CPU 処理時間が一定でないため,時刻を CPU 内蔵 タイマでカウントするソフトウェア時計を使うと誤差 が生じます.そこで,高精度な時計 IC を使います. ハードウェア時計やソフトウェア時計の特徴を表 1 に 示します. 今回は,この外付け時計 IC を調べてみます. こんな実験 今回は,外付けの時計 IC について以下を調べます. ・実験 1…時計 IC(ハードウェア時計)を読み書きす 特徴 バッテリ・ 読み書 精度 バックアップ き速度 分解能 ハードウェア 時計 時計 IC あり 低速 高い 一般に 1 秒 単位 ソフトウェア 変数 時計 なし 高速 低い 高分解能 度です.また一般的に RTC の分解能は 1s 単位である ことが多く,本 RTC でもそのようになっています. CAT724 では I2C の他にも RTC の 32.768kHz 出力周波 数が CPU の RCLK 端子に入力されています.RCLK は CPU 内部で CMT(コンペアマッチ・タイマ)に接 続されています. 伝統的な OS や自作 OS などではタイマ割り込みの 際に時計変数をインクリメントして時間を計測する手 法 が と ら れ る こ と が 多 く あ り ま す.Linux で は ・ 実験 2…時刻分解能を調べる ● 実験用ハードウェア 本 連 載 で 使 っ て い る SH-4 搭 載 Linux ボ ー ド CAT724 の時計の構成を図 1 に示します. CPU と RTC は I2C バスで接続されており,時計レ ジスタの読み込みには I2C による通信を利用します. jiffies という変数がまさにこれに当たります.タ イマ割り込みごとに jiffies がインクリメントされ ます.従って jiffies を数えれば現在経過した時刻 が分かります. Linux では一定の間隔ごとにタイマ割り込みが発生 します.タイマ周期は HZ マクロで定義されます.一 般的な PC では HZ = 250(4ms 周期) ,組み込みの SH- そのため,RTC の読み出しには時間がかかります. 本 RTC は 0 〜 50℃の範囲において 25ppm 以下の精 CPUクロックを (ルネサス エレクトロニクス) 50ppmで生成する SH7724 システム・ クロック 分 類 ● 簡易的に済ませるソフトウェア時計 る時間を測る 33.333MHz 表 1 ハードウェア時計とソフトウェア時計の特徴 おさらい:時計の動作 ● 時計 IC を読み書きする時間や分解能を調べる 発振器 海老原 祐太郎 CMT 25ppm, 高精度の外部クロックでコン RX-8571LC 0∼50℃ ペアマッチ・タイマを動かす (エプソン) I2C RCLK RTC 32.768kHz タイマ割り込みはシス テム・クロックを使う …精度が低い メモリ ソフトウェア時計 として変数を格納 バッテリ (キャパシタ) 図 1 実験に使う SH-4 搭載ボード CAT724 のタイマ構成 2015 年 4 月号 第 1 回 電源投入からカーネルが起動するまでの動作(2013 年 11 月号) 第 2 回 ハード制御で需要! 割り込み処理を時間で終わらせる三つのしくみ(2013 年 12 月号) 第 3 回 マルチタスク OS のキモ! タスク切り替えの基本動作(2014 年 1 月号) 149
© Copyright 2024 Paperzz