2020年05月30日

Win環境でのRust試食

安全性、速度、並行性にフォーカスしたシステムプログラミング言語としてRustが昨今、話題です。今回は手持ちのSTM32F042のNucleoボードを用いて、Windows環境でRust組み込みプログラミングをしてみました。Rust+STM32組み込み系の場合、MacやUbuntuを使った例が多いですが、今回はWindows環境でopenocdを使用せずに行いました。Rust版STM32HALライブラリを使用してLチカをやってみました。


@Rust環境構築
Rust公式サイトからインストーラーをダウンロードしてインストールします。CLIベースなので最初は戸惑うかもしれませんが、コマンドラインに従ってインストールを行います。インストール後、コマンドラインからcargoと打って下記の様なメッセージが出ればインストール成功です。

cargo.jpg


Aクロスコンパイル環境構築
Windows環境でArmバイナリを生成するためのクロスコンパイル環境のパッケージをインストールします。使用するマイコンによって選択する必要があります。今回はSTM32F042でM0系なので、thumbv6m-none-eabiを使用しました。下記のコマンドを打ってパッケージをインストールします。

rustup target add thumbv6m-none-eabi

なお、環境によって選択するパッケージは下記の通りです。

ARM Cortex-M0 and Cortex-M0+thumbv6m-none-eabi
ARM Cortex-M3thumbv7m-none-eabi
ARM Cortex-M4 and Cortex-M7 (FPUなし) thumbv7em-none-eabi
ARM Cortex-M4F and Cortex-M7F(FPUあり) thumbv7em-none-eabihf


BArm Embedded Toolchainインストール
Rustで生成されるバイナリをbinファイルに変換したり、バイナリデータを確認する際に使用します。Armサイトからインストーラーをダウンロードしてインストールします。インストール設定のpath追加にチェックを入れてコマンドラインからアクセスできるようにします。

gcc-arm-none-eabi-*-20**-q*-major-win32.exe

CRust版HALライブラリ
Rust版HALライブラリをgithubサイトからダウンロードします。Zipファイルなので解凍します。

Dライブラリ書き換え
今回はLチカを行うため、stm32f0xx-hal-master\examples内のblinky.rsを使用します。デフォルトはPA1を点滅させるコードとなっているため、NucleoF042に搭載されているLED、LD3のポートPB3に書き換えます。blinky.rsをテキストエディタで開いて、17行目付近を下記のように書き換えます。

let gpiob = p.GPIOB.split(&mut rcc);
// (Re-)configure PB3 as output
let mut led = cortex_m::interrupt::free(|cs| gpiob.pb3.into_push_pull_output(cs));

Eコードコンパイル
初回は関連パッケージのダウロードとビルドが行われるため、時間が多少多くかかります。下記のコマンドでblinkyサンプルコードをコンパイルします。

cargo build --example blinky --release --features=stm32f042

Fバイナリデータ変換
コンパイルされたバイナリデータは下記のフォルダに生成されます。フォルダ内の拡張子がないblinkyというファイルがRustバイナリデータです。
\stm32f0xx-hal-master\target\thumbv6m-none-eabi\release\examples

下記のコマンドを打って、Rustバイナリデータをbinファイルに変換します。

arm-none-eabi-objcopy -O binary blinky blinky.bin

Gbinファイル書き込み
ST-LINK UtilityやCubeProgrammer等でbinファイルを書き込みます。LD3が点滅すれば成功です。for文の回数等を変更して点滅周期が変えたりしてみてください。

blink.jpg


今回はWindows環境でRust版STM32HALライブラリを使用してサンプルコードのLチカを行いました。Rustは安全性、速度、並行性に優れているということはよく言われますが、それ以外にメリットとして、組み込み系にもパッケージ管理が使えるようになったことです。パッケージ管理はLinuxやnodejs等では当たり前ですが、組み込み系では足りないファイルを追加したり、手動で管理する必要がありました。Rustの場合はパッケージ管理がデフォルトで有効になっているため、必要な記述を事前にしておけば、ビルド時に足りないファイルが自動的に取得されます。組み込み系で頻繁にパッケージのバージョンが変わるor変えることはあまりないかもしれませんが、足りないファイルが自動的に取得できるのはパッケージ管理の大きなメリットだと思いました。Rust版STM32HALライブラリは完成度も高いので、今後、ST公式でもサポートされればさらに面白くなると思いました。

posted by Crescent at 00:00| Comment(0) | 電子工作 | このブログの読者になる | 更新情報をチェックする

2020年05月23日

電流センサアンプ

今回はコンパレータ内蔵電流センサアンプINA303を紹介します。電流センサアンプはシャント抵抗の微小な電位差を増幅して電圧出力するためのアンプです。電流センサアンプを使用するメリットとしてTIのサイトでも紹介されていますが、下記のようなメリットが挙げられます。

・「小型化、部品点数の削減」
  ディスクリートでシャント抵抗から電流値を電圧に変換するためにはオペアンプや抵抗等の増幅回路が必要です。正負(バイポーラ)で電流検知する場合は正負電源が必要な場合もあります。電流センサアンプを使用するとゲインが固定されている一方でチップ単体で実現できます。また、電流センサアンプは電源電圧範囲を超える入力電圧をシャント抵抗の電圧として入力可能なため、正負電源が不要です。VCC/2を中立の0Aとして、負側の電流もオフセットさせて電圧出力させることができるため、そのままマイコンのADC等で取り込むことが可能です。

・「高精度化」
 オペアンプや抵抗等の増幅回路が削減できるため、部品による差がなくなります。また、電流センサアンプはシャント抵抗の電圧差の増幅に特化しているため、温度ドリフトが少なく、増幅率が高精度に固定されています。

・「設計工数の削減」
 小型化、部品点数の削減により、設計工数の削減が可能です。ハイサイド、ローサイドの電流検知回路によって回路を設計し直す必要もありません。電流センサアンプの多くはハイサイド、ローサイド両方ともそのまま使用することができます。


このように電流センサアンプは非常に便利です。単機能の電流センサアンプはINA181等をよく利用しています。今回、紹介する電流センサアンプINA303はアンプ機能に加えて、コンパレータを内蔵しています。電流を検知する場合、通常の電流変化の他、異常な電流を検知する場合もあります。コンパレータ内蔵の電流センサアンプはそのような場合のニーズを満たすICとなっています。

具体的にはINA303に閾値を入力することで異常な電流(電流センサアンプから見ればシャント抵抗の電圧差)が検知された場合にIOでアラートを出すことができます。また、アラート出力を保持することも可能です。通常、コンパレータを使用しない場合、異常な電流が発生したかどうか、電流センサアンプのアナログ値を高サンプリング周期で監視する必要があります。コンパレータはアナログ回路で構成されているため、高サンプリングな監視と同等です。コンパレータ内蔵電流センサアンプを使用すれば、マイコン側からは高サンプリングで監視する必要がなくなります。異常のアラートIOをマイコンの外部割込みに設定すれば異常があった場合にイベントを走らせることが可能です。サンプリング周期や監視周期を高くできない場合にも異常な電流を取り逃すことなく検知することができます。

コンパレータ内蔵の電流センサアンプはTIから数種類販売されています。中でも2つコンパレータが搭載されているデュアルコンパレータタイプは例えば、正側の過電流、負側の過電流の両方を検出(ウインドウコンパレータ)したり、異常電流と警報電流の2段階で異常を検出(2つの制限超過アラート)のタイプがあります。ウインドウコンパレータと2つの制限超過アラートの違いが分かりづらいと思ったのでINA303のデータシートから違いの図を抜粋してみました。


INA302_INA303_compare.jpg
INA303データシートP.21から抜粋。
左がINA302の2つの制限超過アラートタイプ、右がINA303のウインドウコンパレータタイプです。アラート部分にピンクor赤の色を付けています。

デュアルコンパレータの場合、1つのコンパレータは閾値の超過でアラートを出力しますが、もう片方をどう出力するかで2つのタイプ(制限超過アラートタイプ、ウインドウコンパレータタイプ)があります。正側の電流監視の場合はコンパレータ1つもしくは2つの制限超過アラートタイプが適当です。正負の両側を監視する場合はウインドウコンパレータタイプが適当です。

例えば、DCモータの過電流検知をする場合、正回転、負回転で電流の方向が正負両側の異常電流を検出するため、ウインドウコンパレータタイプが適当です。もし、異常電流だけでなく、警報機能も持たせたい場合はウインドウコンパレータタイプをもう1つ使用して低い閾値を設定することで実現できます。

便利なデュアルコンパレータ搭載の電流センサアンプを評価しやすいように可変抵抗とアラートLED等を実装して電流センサアンプモジュールを設計してみました。

cs.jpg

検証を進めて問題なければ、どこかで販売を開始したいと思います。
posted by Crescent at 00:00| Comment(0) | 電子部品 | このブログの読者になる | 更新情報をチェックする

2020年05月16日

CP2615パラメータ書き換え方法

今回はUSB-I2S変換IC CP2615について紹介します。

Silicon Labs社から販売されているUSBインタフェース関連ICの1つにCP2615があります。CP2615はUSBとI2Sの変換ICで、I2S接続のcodecやadc、dacをUSBに変換することができます。USBをPCに接続するとPCからは標準オーディオデバイスとして認識され、USB接続マイクやスピーカーの開発を容易に行うことができます。また、USBデバイスを開発する際にはVID(Vender ID)やPID(Product ID)をUSB.orgから取得したり、ドライバを開発する必要がありますが、Silicon Labs社のCP2615はSilicon Labs社のVIDやPIDをそのまま最終製品に利用しても構わないと謳っているため、開発の敷居が低くなっています。

CP2615は出荷直後はUSBスピーカデバイスとして認識される設定となっており、使用するcodecやadc、dacに応じて内部のパラメータを変更して使用します。主要なcodecやadc、dacはI2Sでオーディオ信号を送受信する前にI2Cでパラメータ初期化が必要です。CP2615の内部パラメータを変更することでI2Cマスタとしての送受信を合わせて設定することができます。他にCP2615のGPIOでボリューム上げ下げのインタフェース設定等もできます。CP2615とcodec等を組み合わせてUSBスピーカやUSBマイクを簡単に開発できるようになっています。



CP2615のパラメータ変更はSimplicityStudio内のXpress Configuratorで行います。下記のようなイメージでパラメータを変更できます。

CP2615_setting_image.jpg



内部パラメータの書き換えはCP2615単体ではできません。書き込み治具としてCP2112が別途必要です。CP2615とCP2112はI2Cで接続し、CP2112を介してUSBで書き換えを行います。書き込む際には電源を入れる前にCP2615のCFGとRSTをGNDに接続し、電源投入後にRSTをVDDに接続し、CFGモードの状態で書き換えを行います。CP2615をXpress Configuratorから書き換えてみましたが下記の様なエラーが発生しました。

Programming completed,but with errors!
CP2615_SetConfig:HID_SMBUS_DEVICE_NOT_FOUND
CP2615_GetConfig:HID_SMBUS_DEVICE_NOT_FOUND

LogではProgramming completedと出ていますが、CP2615をUSBで接続しても設定が反映されておらず、書き込み失敗していました。原因を調査すると書き込み治具のCP2112のPIDが0xEA93でないと書き込み失敗するようです。CP2112のデフォルトVIDは0x10C4、PIDは0xEA90となっていまずが、CP2615の書き換えをSimplicityStudio内のXpress Configuratorで行うためにはPIDが0xEA93である必要があるようです。CP2615のEvalボードCP2112は出荷時にPIDが変更されているようですが、市販のCP2112を使ったため、書き込みに失敗したようです。

CP2615の書き換えを行う前にCP2112のXpress Configuratorのプロジェクトを作成し、PIDを0xEA93に変更してCP2112のパラメータを書き換えました。残念ながら、CP2112のパラメータ書き換えは1回限りのワンタイムプログラムとなっているため、再度の変更はできません。間違ったパラメータを書き込まないように注意する必要があります。

cp2112_pid.jpg


PIDを変更したCP2112で再度、CP2615の書き換えを行ったところ、正常に書き換えができました。手持ちのCP2112はPIDを0xEA93に変更したため、Xpress Configurator専用の治具になってしまいました。なお、CP2112はワンタイムプログラムですが、CP2615はフラッシュベースのため、CP2112を用いて何度も書き換えできます。CP2615で様々なI2Sデバイスを検証することができます。CP2615を用いてI2S接続のcodecやadcを組み合わせて遊んでみたいと思います。
posted by Crescent at 00:00| Comment(0) | 電子部品 | このブログの読者になる | 更新情報をチェックする

2020年05月09日

外部高速ADC接続方法検討

アナログ信号をマイコンに取り込む場合、内蔵ADCを使用することが多いですが、入力電圧範囲、分解能、精度、絶縁、同時サンプリングといった制約でADCを外付けすることが必要な場合があります。低速な外部ADCの場合はI2C(~1MHz)やSPI(~数10MHz)の通信帯域で十分ですが、マルチチャンネルで高速なADCの場合はSPIでも帯域が足りないため、パラレルバスを採用したADCが多くなります。

一方、AnalogDevicesのLTC2358、LTC2458といった高速ADCではSPIと互換性を保ちつつ、パラレルバス接続するインターフェースを採用しています。具体的には一般的なSPI接続のCS、CLK、MOSI、MISOに加えて、MISO2、MISO3といった具合にMISOがパラレルになっています。MISOをパラレルにして増やすことで1回の通信時間を短くし、高速サンプリングを実現しています。今回はMISOがパラレルになっている外付けADCをどうSTM32マイコンと接続するか検討してみました。

検討に際してざっと思いつく通信方式を並べてみました。

方法@ QSPIを利用
方法A FMC/FSMCを利用
方法B GPIOで個別制御(bit-bang)
方法C 内蔵ADCでSDO読み込み 
方法D SPIを複数接続


方法@ QSPIを利用
STM32マイコンの一部にはQSPIインターフェスがあります。QSPIは主にNOR Flash接続するインタフェースとして使われています。QSPIは通信ラインが双方向です。一方、今回のインタフェースは通信方向は常に一定で決まっており、双方向ではありません。QSPIは次にデータを書き込むのか読み込むのかマスターからコマンドを送って通信方向を決定します。QSPIを個別にレジスタで制御して通信方向を決定できれば実現可能かもしれませんが、STM32マイコンのQSPI HALライブラリがNOR Flash用になっているため、あまり適切ではなさそうです。

方法A FMC/FSMCを利用
LCDや外付けRAM、パラレルバスとしてFMC/FSMCインタフェースがあります。FMCとFSMCの違いはFSMCにSDRAMリフレッシュ機能等をつけたのがFMCでFMCの方が高機能です。LCDのように一方的にマイコンからLCDに書き込む場合やメモリのようにリードライトを切り替えて処理する場合にFMC/FSMCが最適です。今回の場合はパラレルインタフェースでありながら、ADCに変換指令を送信しつつ、ADC変換結果を受信するため、同時に送受信を行う必要があります。FMC/FSMCがパラレルバスの同時送受信に対応しているか確認が必要です。また、既にバスラインをSDRAMで使用する予定があるため、この方法も厳しいと判断しました。


方法B GPIOで個別制御(bit-bang)
GPIOを個別に制御してソフトウェアSPIを実現する方法です。この方法であれば、MISOがパラレルになっている外付けADCでも対応可能です。ただ、課題として個別にGPIOを制御するために時間がかかるため、数MHzは容易に実現できそうですが、数10MHz以上のクロックを実現できるか分かりません。STからパラレルバス用のDMA転送ライブラリが提供されており、DMA転送もできなくはなさそうです。GPIOの個別制御は最終手段として取っておきたいと思います。


方法C 内蔵ADCでSDO読み込み 
SPIでCS、CLK、MOSI、MISOの通信に加えて、それ以外のMISO2、MISO3といったバスをADCで同時に取り込んでデジタル化する方法です。邪道な方法ですが、STM32マイコンのリソースを活用して実現するという意味では実現できそうです。問題点として取り込んだアナログ値をデジタル化するために処理が必要で連続で取り込むためにはRAMの制約を大きく受けます。ADCで取り込むことはできなくはなさそうですが、マイコンのリソース制約を大きく受けるため非現実的だと思いました。

方法D SPIを複数接続
STM32マイコンではSPIが複数利用できます。1つのSPIを送受信マスタとしてADCと接続し、それ以外を受信専用スレーブとしてのADCのSDOxと接続します。具体的には下記のような配線になります。複数SPIを同時に利用するためにDMA転送は必須です。事前に受信専用スレーブをDMA受信設定してから、マスタSPIから送信することで同時通信を実現します。

また、MISOがパラレルになっている外付けADCで今回使用予定のLTC2458はSDOのレーン数を常に8ライン使用する必要はなく、2レーン、4レーン選択できるようになっています。SPIが8つなくても、2つ、4つであれば、中規模以上のSTM32マイコンであれば搭載されているため、十分実現できそうです。

SPIの機能をそのまま使用しているため、通常はSPIを1レーンで使用し、帯域が必要な場合にのみ複数レーンを使用するといった切り分けが容易に実現できます。

ADC.jpg



実際に方法D SPIを複数接続で検討してみました。下記のようにDMA転送のPriorityを設定しました。また、SPIはNSS Signal TypeのHardwareを選択しました。

adc_dma.jpg


処理をprintfで出力すると下記のようになりました。STM32F411で検証した結果、Priority設定にもよりますが、SPI2が先に呼び出される前にSPI4、3が呼び出されました。

Init OK
Rx Cplt Callback:SPI4
Rx Cplt Callback:SPI3
RxTx Cplt Callback:SPI2
Rx Cplt Callback:SPI5

LTC2458は下記のように各SDOから順番循環して各チャンネルのAD変換結果が出力されます。1レーンで使用する場合はSDO0から1x8回データ取得し、2レーンの場合はSDO0とSDO4から2x4回データ取得、4レーンの場合はSDO0、SDO2、SDO4、SDO6の4x2回データ取得する感じです。

SDO0:[CH0]、[CH1]、[CH2]、[CH3]、[CH4]、[CH5]、[CH6]、[CH7]...
SDO1:[CH1]、[CH2]、[CH3]、[CH4]、[CH5]、[CH6]、[CH7]、[CH0]...
SDO2:[CH2]、[CH3]、[CH4]、[CH5]、[CH6]、[CH7]、[CH0]、[CH1]...
.
.
.

8回分のAD変換結果を書き出した結果が下記の通りになり、同じ値が循環して取得できていることから複数のSDOを読み込めていることが確認できました。

SDO0: 10459, 55041, 8220, 1782, 133, 64062, 62606, 61580,
SDO2: 8220, 1782, 133, 64062, 62606, 61580, 10459, 55041,
SDO4: 133, 64062, 62606, 61580, 10459, 55041, 8220, 1782,
SDO6: 62606, 61580, 10459, 55041, 8220, 1782, 133, 64062,


海外サイトでも同様の議論があり、実際に動いたかどうかまで書かれていませんでしたが、方法D SPIを複数接続で実現できることが確認できました。SPIの機能をそのまま利用しており、DMA転送や数10MHz程度のクロックを容易に実現できるため、DMA転送を利用した方法D SPIを複数接続は外部高速ADC接続方法として良いと思いました。

追記:アナログデバイセズのサイトでも接続方法について解説がありました。こちらも参考にしてください。
posted by Crescent at 00:00| Comment(0) | 電子工作 | このブログの読者になる | 更新情報をチェックする

2020年05月02日

SBCへのElasticsearch&Kibanaインストール7.6.X版

今回はSBC(シングルボードコンピュータ)へElasticsearchとKibanaをインストールする方法を改めて紹介します。対象のSBCはTinkerboardSです。以前にもSBCへElasticsearchとKibanaをインストールする方法を紹介しましたが、以前に比べて状況が変わっているため、改めて紹介します。

ARMベースのシングルボード上でElasticsearchとKibanaをアプリケーションとして動かすのではなく、サービスとして登録して運用する手順を紹介します。

■Java11ダウンロードとインストール
以前はoracleからarmhf版のJavaも配信されていましたが、最近のバージョンでは配信されていません。こちらのbellソフトウェアサイトからarmhf用のパッケージをダウンロードしてインストールします。

sudo dpkg -i bellsoft-jdk11-linux-arm32-vfp-hflt.deb

■elasticsearchダウンロード
最近のelasticsearchからJavaがバンドルされており、以前のようにJavaインストール関連のトラブルで起動しないといったことが起きづらくなりました。一方でSBCにインストールする際にはarm版である必要があるため、バンドルされたJavaは使えません。こちらのサイトからJavaがバンドルされていないバージョンのelasticsearchをダウンロードします。



■kibanaダウンロード
こちらのサイトからkibanaをダウンロードします。

合わせて、Armhf版現行のkibanaに対応したNodejsの10.16.0をダウンロードします。


■elasticsearchインストール
amd64用にパッケージされているため、そのままではインストールできません。

@強制的にARM環境にAMD64を追加するために設定を変更する
sudo dpkg --add-architecture amd64
※逆に削除する場合は dpkg --remove-architecture amd64

elasticsearchインストール
sudo dpkg -i --force-all --ignore-depends=libc6 elasticsearch-7.6.2-no-jdk-amd64.deb

Aフォルダ権限変更
sudo chmod -vR 777 /etc/elasticsearch/
sudo chmod -vR 777 /var/lib/elasticsearch/
sudo chmod -vR 777 /usr/share/elasticsearch/
sudo chmod -vR 777 /var/log/elasticsearch/

BJavaディレクトリパス設定
Jdkのパスを通します。

sudo mkdir -p /usr/share/elasticsearch/jdk
sudo cp -rf /usr/lib/jvm/java-11-openjdk-armhf/* /usr/share/elasticsearch/jdk


Celasticsearch.yml設定変更
amd64専用の機能などを無効化しないと起動に失敗します。
少しおまじないを追加します。
sudo leafpad /etc/elasticsearch/elasticsearch.yml

xpack.ml.enabled: false
bootstrap.system_call_filter: false

※必要に応じて下記も追記する。
network.host: "0.0.0.0"
http.port: 9200
transport.host: localhost
transport.tcp.port: 9300

DJava設定
必要に応じてElasticsearchのメモリ割り当てを変更します。
sudo leafpad /etc/elasticsearch/jvm.options

デフォルトは
-Xms1g
-Xmx1g
-server
でメモリ1GをElasticsearchに割り当てる設定です。Tinkerboardならメモリ2GBなのでデフォルトでも問題ありませんが、raspberryPIの場合はメモリ1GBなのでシステム領域が全く確保できなくなってしまいます。設定したメモリ領域+200MBが実際のプロセス上で使用するため、raspberryPIの場合は
-Xms500m
-Xmx500m
-server
が妥当だと思います。


E一時フォルダ設定
sudo leafpad /etc/elasticsearch/jvm.options

-Djava.io.tmpdir=${ES_TMPDIR}
から
-Djava.io.tmpdir=/usr/share/elasticsearch/tmp
に変更します。

また、一時フォルダの作成と権限付与を行います。
sudo mkdir -p /usr/share/elasticsearch/tmp
sudo chmod -vR 777 /usr/share/elasticsearch/tmp


Fjna置き換え
デフォルトではarmhf環境でsystemctl elasticsearchサービスを起動させると途中で起動に失敗(関連リンク1関連リンク2)する不具合があるようです。jnaを置き換えます。

sudo mv /usr/share/elasticsearch/lib/jna-4.5.1.jar /usr/share/elasticsearch/lib/jna-4.5.1.jar.old


Gサービス起動設定変更
デフォルトでは自動再起動の設定が無効のため、
下記のファイルに追記します。
sudo /bin/systemctl enable elasticsearch.service#ファイル生成
sudo leafpad /etc/systemd/system/multi-user.target.wants/elasticsearch.service

[Service]
・・・・
Restart=always
・・・・
Environment=ES_TMPDIR=/usr/share/elasticsearch/tmp
↑2行追加する
・・・・


Eサービス登録
下記のコマンドでサービスを有効化します。
sudo /bin/systemctl daemon-reload
sudo /bin/systemctl enable elasticsearch.service
sudo service elasticsearch start

これでElasticsearchがシステム起動時に自動的に起動します。

sudo service elasticsearch statusでサービス状態を確認できます。
http://localhost:9200へアクセスして確認してもよいと思います。

statusで問題なくても9200へアクセスできない場合は
elasticsearch.ymlかjavaの設定に何か問題があることが多いです。


■Kibanaインストール
Kibanaはamd64用にパッケージされているため、そのままではインストールできません。

@強制的にARM環境にAMD64を追加するために設定を変更する(elasticsearchで実行済の場合は不要)
sudo dpkg --add-architecture amd64
※逆に削除する場合は dpkg --remove-architecture amd64

AAMD64が追加されているか確認する
sudo dpkg --print-foreign-architectures

BKibanaインストール
sudo dpkg -i kibana-7.6.2-amd64.deb

CARM版Nodejs解凍
tar xfv node-v10.16.0-linux-armv7l.tar.gz

DARM版Nodejsへ置き換え
sudo cp  node-v10.16.0-linux-armv7l/bin/node /usr/share/kibana/node/bin
sudo cp  node-v10.16.0-linux-armv7l/bin/npx /usr/share/kibana/node/bin
sudo cp  node-v10.16.0-linux-armv7l/bin/npm /usr/share/kibana/node/bin

Dkibana.yml設定変更
sudo leafpad /etc/kibana/kibana.yml
下記を追記する
server.host: "0.0.0.0"
i18n.locale: "ja-JP"

Eサービス登録
下記のコマンドでサービスを有効化します。
sudo /bin/systemctl enable kibana.service
sudo service kibana start
これでKibanaがシステム起動時に自動的に起動します。
sudo service kibana statusでサービス状態を確認できます。
http://localhost:5601へアクセスして確認してもよいと思います。

■おまけ
・Tinkerboard RTC設定方法

・日本語入力IME追加
 sudo apt-get install ibus-mozc im-config

・Nodejsインストール
 curl -sL https://deb.nodesource.com/setup_10.x | sudo bash -

・Node-Redインストール
 sudo npm install -g --unsafe-perm node-red

・Node-Red serialportインストール
 sudo npm install -g --unsafe-perm node-red-node-serialport

・apt-getで依存関係エラーが残ってしまう場合の対処方法
 下記のコマンドでエディタを開き、依存関係エラーに関連するライブラリ名を検索し、対象のライブラリ数行を丸ごと削除して保存する。
 sudo leafpad /var/lib/dpkg/status

以上の手順でシングルボードコンピュータへElasticsearchとKibanaをインストールすることができます。以前に比べてArm版のJavaがoracleから配布されなくなったり、elasticsearchにjdkがデフォルトでバンドルされたりといろいろ状況が変わっていました。ElasticStack7.2前後はnode系のgitバイナリ絡みの依存でSBCに根本的にインストールできない状況でしたが、ElasticStack7.6では解消されています。一方でelasticsearchのjna絡みでトラブルを抱えているため、jnaの置き換えが必要な状況でした。今回はdokcerを使わずにそのままElasticStackをサービスとして使用する方法を紹介しました。dockerを活用すればArm版への対応作業は必要ですが、多少、設定は楽になると思われます。
posted by Crescent at 00:00| Comment(0) | ナレッジ | このブログの読者になる | 更新情報をチェックする