大破雑記帳

個人用メモな雑記ブログ いろんなことをざっくりと。

HDL2-A R8C/25メモ

HDL2-Aに搭載されているRenesas R8C/25マイコンの制御メモ
現状HDL-XRから引用している為多少の差異が存在する可能性有

HDL2-A公式ファームウェア上では、Linux Kernelにpoweroffとresetのハンドラの登録のみドライバで行い、それ以外のLEDやブザー、ボタン類等はユーザースペースのコマンドにより制御していると思われる。

root@OpenWrt:/# stty -F /dev/ttyS1
speed 9600 baud; line = 0;
-brkint -imaxbel
root@OpenWrt:/# stty -F /dev/ttyS1 57600       # HDL2-A上のR8C/25マイコンはbaudrate 57600bpsで通信する必要有
root@OpenWrt:/# echo ":sts on" > /dev/ttyS1    # STATUS LED点灯(点滅停止)
root@OpenWrt:/# echo ":mml a" > /dev/ttyS1     # ブザー単音
root@OpenWrt:/# echo ":hdd 0 5" > /dev/ttyS1   # HDD1 赤点灯

STATUS LED

橙点灯は現状引数が不明

mode
(内部名称)
stock
(取扱説明書における名称)
備考
on 緑点灯 点滅等せず同じ輝度で点灯
blink 緑点滅 輝度の減少または増加無く完全に0/1で点滅
notify 緑点滅(ゆっくり) 輝度を多段階で調整されての点滅
err 赤点灯 点滅等せず同じ輝度で点灯
serious_err 赤点滅 一度設定するとblink以外へ変更不可
blinkからserious_err以外を設定しても強制的にserious_errにされてしまう

HDD LED

HDD毎のLED

設定値 stock
(取扱説明書における名称)
備考
5 赤点灯 HDD未接続
1 / 2 / 3 / 4 赤点滅 HDD障害 (数字によって点滅スピードは変わらず)
0 消灯 HDD正常動作

ボタン

  • HDL2-Aが搭載するボタンのいずれかを押すと、対応するアルファベットがUARTで送信されてくる
    • down時に @<大文字>、up時に @<小文字> が送信される
      (例 (RESET): down: @R, up: @r
  • :btn で現在のボタンの状態が取得できる
    (例: ;crPwxyz(POWERボタンが押されている))

コンソール1:

root@OpenWrt:~# echo ":btn" &gt; /dev/ttyS1
root@OpenWrt:~# echo ":btn" &gt; /dev/ttyS1

コンソール2:

root@OpenWrt:/# cat /dev/ttyS1
@P    <-- POWER down
@p    <-- POWER up
@P
@p
@P
@p
@R    <-- RESET down
@r    <-- RESET up
@R
@r
@R
@r
;crpwxyz    <-- コンソール1 ":btn" 1回目
@P    <-- POWER down
@P    <-- 一定時間押下し続けた場合もう一度送信される
;crPwxyz    <-- コンソール1 ":btn" 2回目
@p    <-- POWER up

ブザー

  • 音程として指定できるアルファベットは a, b, c, d, e, f, g の7個

    • 個々に対応する音程は固定されず < で音程を一つ(?)上げ、 > で音程を一つ(?)下げる
  • t, q, l, o, vPWMか何かのパラメータと思われる

    • パラメータ設定後にパラメータ無しで音程単体の場合は最後に設定したパラメータが反映される
  • |; ;| で囲うと繰り返し

  • 囲われた中の最初の数字が繰り返し回数と思われる(0の場合は無限)

  • Twitterにて指摘を頂いた。どうもMMLの記法である模様。

設定値 stock(取扱説明書における名称) 備考
t150o6q7v8l16b>b ピポ ブート開始時
t120v8q7o7|;0b32.r32;| ピピピ(繰り返し) ブート不可時
|;0v1q8o6c4r8;| ピー(繰り返し) ファン故障/温度異常時
t120q8l4o6v8|;0bg;| - HDL2-Aの取扱説明書には無し ピーポー音(繰り返し)
r2c8r8c8r8g8r8g8r8a8r8a8r8g8 r4r8f8r8f8r8e8r8e8r8d8r8d8r8c8 - HDL2-Aの説明書には無し きらきら星(一部)

ファン

  • fancont コマンドにより制御
  • fancont を引数無しで実行時に返る値2桁のうち、1桁目は 0-> 自動, 1 -> 手動、2桁目は以下の表で1-3に対応
設定値 モード
0 自動制御 (R8C/25マイコンが計測した温度と設定されている閾値を基にHigh/Lowを決定, 初期値)
1 手動制御, Low
2 手動制御, High
3 手動制御, Stop

温度閾値

  • thset コマンドにより制御
  • 設定値のインデックスの大小関係は idx1 < idx0、idx2は0または1との大小関係なく設定できる模様
  • :thset <index> <temperature>(例: :thset 1 40
  • 閾値設定は再起動するとリセットされる
thget 時の インデックス 初期値 概要
0 2d (45℃) (不明) R8Cマイコンを搭載する機種によってはファン速度がHigh/Middle/Lowとなっており、インデックス0は3段階対応機種においてMiddle -> High遷移閾値と思われる。HDL-A/HDL2-Aにおいては2段階のみである為未使用と思われる。
1 28 (40℃) ファン自動制御時Low -> High遷移閾値 (同値でHighへ遷移)
2 3c (60℃) 温度異常閾値? 一定時間(不明)経過後にR8C/25マイコンにより自動シャットダウン