apu2用のlightMPD-v1.0.2(64bit版)を公開しました
投稿日: 2016/05/18 13:44:48
[更新履歴]
- 2016/05/18 公開
apu2用のlightMPD-v1.0.2(64bit版)を公開しました。
apu2ではmicroSDメモリのインターフェイスがapu1から変更になってます。
apu1のmicroSDメモリはUSBを経由して接続されてました。その為、Linuxではscciデバイスとして扱われてました。
apu2のmicroSDメモリはPCI接続になったため、LinuxではSDメモリデバイスとして扱われます。
scsiとSDメモリではデバイス名が異なるためその対応を行いました。
その他、バグフィックスとチューニング方法を変更しました。
主な変更点
- バグフィックス
- 64bit版ではsoxrがopenmpに未対応でした。openmpに対応しました。
- kernelのバージョン
- linux-4.4.6rt14
- mpdのバージョン
- mpd-0.19.14rt-native-dsd
- cpuaffinityの変更と強化
- microSDメモリ,USBメモリからのブートを識別するために、ブートパラメータでブートデバイスの指定を行えるようにしました。
linux-4.4.6rt14について
native-dsdに対応するDAC(DDC)
- Wyred 4 Sound DAC-2 DSD
- iFi Audio micro/nano iDSD
- Matrix Audio X-Sabre
- Matrix Audio Mini-i Pro
- OPPO HA-1
- Mytek Brooklyn DAC
- Gustard DAC-X20U
- DIYINHK DSD DXD 384kHz USB to I2S/DSD
- JLsounds I2SoverUSB
- Aune X1S 32BIT/384 DSD DAC
- Unison Research Unico CD Due
- OPPO HA-2
- PS Audio NuWave DAC
- Amanero Combo384
- ElectrArt USDA2, USDA_MINI
このうち実際に動作確認したのは
- ElectrArt USDA2, USDA_MINI
- DIYINHK DSD DXD 384kHz USB to I2S/DSD
- JLsounds I2SoverUSB
です。
mpd-0.19.14rt-native-dsdはAmanero combo384をサポートしています。
combd384 でnative dsdを使う場合は audio_output を以下のようにして下さい。
native_dsd "yes"
native_dsd_type "3"
cpuaffinityについて
cpuaffinityを以下のようにしました。
- type=0
- cpuaffinity を使用しない
- type=1
- core1: irqhandlerで指定した割込ハンドラーが動作する
- core0,2,3: 上記のハンドラー以外が動作する
- type=2
- core1: irqhandlerで指定した割込ハンドラーが動作する
- core2,3 mpdが動作する
- core0: 上記以外のプログラムが動作する
cpuaffinityの設定はlightmpd.confの[cpuaffinity]とブートパラメータ(/boot/grub/menu.lst)で行います。
例
[cpuaffinity]
type=2
cpuaffinityに1,2を指定した場合はブートパラメータに以下を追加して下さい。
isolcpus=1 nohz_full=1 rcu_nocbs=1
cpuaffinityに2を指定した場合は isolcpus=1-3 を指定する事も出来ます。
デフォルトはtype=2です。
irqhandlerについて
lightmpd.confの[irqpriority]でDACを接続したUSBのirqhandlerのプライオリティの指定が行えます。
apu2は通常のUSBポート(USB3.0)の他内部にUSBポート(USB2.0,1.1)がありそれぞれirqhandlerが異なります。
USB3.0 xhci_hcd#0
USB2.0 ehci_hcd:usb1
[irqpriority]ではirqhandlerのプライオリティを下記の様に指定します。
USB3.0を使う場合
[irqpriority]
xhci_hcd#0=FIFO:99
USB2.0を使う場合
[irqpriority]
ehci_hcd:usb1=FIFO:99
ブートデバイスについて
lightMPDではkernelのブート完了後ブートデバイスからlightmpd.confを参照して初期化を行います。
apu2ではmicroSDメモリとUSBメモリからブートできますが、これらのデバイス名が異なります。
- USBメモリ /dev/sda1
- microSDメモリ /dev/mmcblk0p1
kernel起動後はどのデバイスからブートされたか解りません。その為、/boot/grub/menu.lstのkernelに
lightmpd.bootdev
というパラメータを追加しました。
ブートデバイス毎に下記の様に指定します。
- USBメモリからブートする場合 lightmpd.bootdev=/dev/sda1
- microSDメモリからブートする場合 lightmpd.bootdev=/dev/mmcblk0p1
クロックソース
apu2,apu1ではclocksourceにhpetとtscを指定できます。
以前はhpetをデフォルトにしてましたが、このバージョンからtscをデフォルトにしました。
clocksourceの指定を行う場合は /boot/grub/menu.lstのkernelに下記を追加します。
- hpet
- clocksource=hpet
- tsc
- clocksource=tsc idel=poll processor.max_cstate=1
ブートパラメータ
ブートパラメータは/boot/grub/menu.lstで指定します。従来のパラメータから下記の物を追加しました。
- lightMPDで追加したブートパラメータ
- lightmpd.bootdevlightmpd.systype
- システムのタイプを指定します。apu2の場合は
lightmpd.systype=apu2
- とします。
- cpuaffinity関連のパラメータ
- クロックソース
/boot/grub/menu.lstにはいくつかのパターンが用意されてます。
デフォルトは
- USBメモリからブート
- クロックソースはtsc
- cpuaffinityを使用する
になってます。
インストール
- イメージファイルのダウンロード
- インストールするSDメモリに合わせたイメージをダウンロードします。SDメモリより大きなイメージを選択するとインストールできません。
- イメージファイルの解凍
- イメージファイルは圧縮されてますので、それを解凍します。
- xzという属性のファイルは7zip等のプログラムを使って解凍します。
- xzが解凍できない場合は、256MbyteのイメージはWindows付属のプログラムで解凍できますので、SDメモリの容量によらず256Mbyteのイメージを使って下さい。
- 解凍したイメージをSDメモリに書き込みます。
- 書き込みにはDDwin for Windowsを使って下さい。
- 一度SDメモリを取り出して下さい。
- 配布パッケージのダウンロード
- 配布パッケージの解凍
- 配布パッケージはzipで圧縮されています。配布パッケージをイメージファイルをインストールしたSDメモリに解凍します。
linux-4.6rt1
パッケージ作成中に4.6の正式版が公開されました。パッケージとは別に4.6rt1を用意しました。
- インストール方法
- apu2-linux-4.6rt1-20160518.zipを解凍すると bzImage-4.6rt1-64が作成されます。
- このファイルを/boot/bzImage-64にオーバーライトして下さい。
- 注意
- 4.6rt1でnohz_full=1を指定するとhtop(CPUの利用状況を表示するプログラムでCPUの使用率が50%近くの値を表示しますが、
- これはhtopが対応出来ていない為で問題はありません。
ダウンロード
- イメージファイル
- apuboot256m.img.zip (256Mbyte用のイメージ 解凍後のサイズ: 256376832 byte)
- apuboot2g.img.xz (2Gbyte用のイメージ、解凍後のサイズ: 1,926.0Bbyte)
- apuboot4g.img.xz, (4Gbyte用のイメージ、解凍後のサイズ: 849.0Bbyte)
- 配布パッケージ