2015年03月19日

[Yocto] lm_sensorsによるIntel E3815のCPU温度測定

しばらくYocto LinuxのSato Mobile Desktop GUI関連の記事を続けてきたので、この辺で、実機ターゲットの記事を挿みます。またしても小ネタになりますが、lm_sensorsというx86系ターゲットのCPU温度を測定できるパッケージの紹介記事を書きます。

PCのCPU温度を測定するWindows用のソフトウェアはたくさん在ります。多くのマザーボード・メーカーが自社製品にこの種のソフトを添付していますし、フリーのソフトも数多く存在しています。日本ではあまり流行っていませんが、ゲーミングPCという世界があり、ゲーミングPCではCPUのオーバー・クロックを試すユーザーが多いようです。このようにユーザー側の需要が高いからか、WindowsではCPU温度を測定できることは普通のことになっています。一方、LinuxではCPU温度を測定したいという需要はそれほど高くないようです。Linux用のゲームは数が少ないでし、Linux用のPCではパフォーマンスアップより安定動作の方を重視するので、CPUのオーバー・クロックを試すユーザーは少ないからです。Windowsと同種の機能を提供するソフトは必ずLinuxにも在る言われますが、Linux用のCPU温度測定ソフトもいくつか存在します。その中でもっとも広く使われているのがlm_sensorsです。UbuntuなどPC用Linuxディストリビューションでは、lm_sensorsはアーカイブ・リポジトリ経由で簡単にインストールできます。lm_sensorsはCPUだけでなくハードディスクの温度も測定もでき、ファンの回転数も制御できます。さらに、Web経由でlm_sensorsの機能を利用するためのCGIまで含まれてます。

Yocto Linuxでは、lm_sensorsのレシピはOpenEmbeddedリポジトリに収集されています。OpenEmbeddedリポジトリからパッケージレシピを取得すると、lm_sensorsを利用できるようなりますが、lm_sensorsはカーネルが提供する機能を利用して動作するソフトウェアです。そのため、単純にパッケージをターゲットイメージへ組み込んだだけでは動作しません。以降に、DE3815TYKHE用のYocto Linuxにlm_sensorsを組み込んで、正常に動くことを確認するまでの作業録を書いていきます。

最初に、DE3815TYKHE用のbblayers.conflocal.confに以下のような設定記述を追加して、単純にlm_sensorsをcore-image-satoイメージへ組み込んでみました。
# LAYER_CONF_VERSION is increased each time build/conf/bblayers.conf
# changes incompatibly
LCONF_VERSION = "6"

BBPATH = "${TOPDIR}"
BBFILES ?= ""

BBLAYERS ?= " \
/home/yuhri/Yocto/poky-daisy-11.0.2/meta \
/home/yuhri/Yocto/poky-daisy-11.0.2/meta-yocto \
/home/yuhri/Yocto/poky-daisy-11.0.2/meta-yocto-bsp \
/home/yuhri/Yocto/poky-daisy-11.0.2/meta-yocto-bsp \
/home/yuhri/Yocto/poky-daisy-11.0.2/meta-openembedded/meta-oe \
/home/yuhri/Yocto/poky-daisy-11.0.2/meta-intel \
/home/yuhri/Yocto/poky-daisy-11.0.2/meta-intel/meta-tlk \
/home/yuhri/Yocto/poky-daisy-11.0.2/meta-de3815tybe \
"
BBLAYERS_NON_REMOVABLE ?= " \
/home/yuhri/Yocto/poky-daisy-11.0.2/meta \
/home/yuhri/Yocto/poky-daisy-11.0.2/meta-yocto \
"

#
# Additional packages to be installed to the specific images
#
IMAGE_INSTALL_append_pn-core-image-sato = " \
lmsensors-libsensors \
lmsensors-sensors \
lmsensors-sensord \
lmsensors-fancontrol \
lmsensors-sensorsdetect \
lmsensors-sensorsconfconvert \
lmsensors-pwmconfig \
lmsensors-isatools \
lmsensors-config-cgi"

lm_sensorsレシピから生成されるすべてのパッケージ(*-config-*, *-doc, *-dbgパッケージを含めると、じつはこれの倍以上の数があります)をターゲットイメージへ追加しています。

パッケージ名からの推測になりますが、上記のうち、lmsensors-sensorsdetectパッケージにsensors-detectというコマンドが含まれているようです。ググって得た情報によると、このsensors-detectコマンドがターゲットハードウェアのセンサー・デバイスの種類を調べて、lm_sensorsの動作に必要なカーネルモジュールに関する設定ファイルを自動的に生成してくれるようになっているそうです。この情報に従って、lm_sensorsの全パッケージを追加したcore-image-satoイメージをDE3815TYKHEへインストールした上で、まずはターゲット上でsensors-detectコマンドを実行してみました。
# sensors-detect
# sensors-detect revision 6209 (2014-01-14 22:51:58 +0100)
# System: ????????????????????????????????? ????????????????????????????????? [?????????????????????????????????]
# Board: Intel Corporation DE3815TYKH

This program will help you determine which kernel modules you need
to load to use lm_sensors most effectively. It is generally safe
and recommended to accept the default answers to all questions,
unless you know what you're doing.

Some south bridges, CPUs or memory controllers contain embedded sensors.
Do you want to scan for them? This is totally safe. (YES/no):
modprobe: FATAL: Module cpuid not found.
Failed to load module cpuid.
Silicon Integrated Systems SIS5595... No
VIA VT82C686 Integrated Sensors... No
VIA VT8231 Integrated Sensors... No
AMD K8 thermal sensors... No
AMD Family 10h thermal sensors... No
AMD Family 11h thermal sensors... No
AMD Family 12h and 14h thermal sensors... No
AMD Family 15h thermal sensors... No
AMD Family 15h power sensors... No
AMD Family 16h power sensors... No
Intel digital thermal sensor... No
Intel AMB FB-DIMM thermal sensor... No
VIA C7 thermal sensor... No
VIA Nano thermal sensor... No

Some Super I/O chips contain embedded sensors. We have to write to
standard I/O ports to probe them. This is usually safe.
Do you want to scan for Super I/O sensors? (YES/no):

modprobe: FATAL: Module cpuid not found. Failed to load module cpuid.”というエラー・メッセージが出力されて、続く項目がすべて“No”になっているので、sensors-detectはプロセッサとチップセットの種類を特定できていないようです。これ以上継続するのは無駄だと思って、sensors-detectの処理を途中で中止しました、上のエラー・メッセージからカーネルのcpuidという機能を有効にする必要があるようです。

現在のYocto Linuxのカーネル・コンフィグレーションで検索してみると、以下のような設定項目が見つかりました。
# zcat /proc/config.gz | grep CPUID
# CONFIG_X86_CPUID is not set

bitbake linux-yocto -c menuconfig」コマンドによってカーネルのコンフィグレーション画面を開き、CONFIG_X86_CPUIDに該当する設定項目を探してみると、以下のメニュー項目がそれに該当するようです。
UBShot_20150319_145912-YoctoLinux-DE3815TYKHE-Adding_lmsensors-704x721
このメニュー項目を有効にした上で「bitbake linux-yocto -c compile -f」と「bitbake linux-yocto」コマンドを実行して、カーネルイメージの再ビルドを行いました。さらにターゲットイメージの再ビルドも行い、そのイメージをDE3815TYKHEへインストールした上で、再度sensors-detectコマンドを実行してみました。
# sensors-detect
# sensors-detect revision 6209 (2014-01-14 22:51:58 +0100)
# System: ????????????????????????????????? ????????????????????????????????? [?????????????????????????????????]
# Board: Intel Corporation DE3815TYKH

This program will help you determine which kernel modules you need
to load to use lm_sensors most effectively. It is generally safe
and recommended to accept the default answers to all questions,
unless you know what you're doing.

Some south bridges, CPUs or memory controllers contain embedded sensors.
Do you want to scan for them? This is totally safe. (YES/no):
Silicon Integrated Systems SIS5595... No
VIA VT82C686 Integrated Sensors... No
VIA VT8231 Integrated Sensors... No
AMD K8 thermal sensors... No
AMD Family 10h thermal sensors... No
AMD Family 11h thermal sensors... No
AMD Family 12h and 14h thermal sensors... No
AMD Family 15h thermal sensors... No
AMD Family 15h power sensors... No
AMD Family 16h power sensors... No
Intel digital thermal sensor... Success!
(driver `coretemp')
Intel AMB FB-DIMM thermal sensor... No
VIA C7 thermal sensor... No
VIA Nano thermal sensor... No

Some Super I/O chips contain embedded sensors. We have to write to
standard I/O ports to probe them. This is usually safe.
Do you want to scan for Super I/O sensors? (YES/no):
Probing for Super-I/O at 0x2e/0x2f
Trying family `National Semiconductor/ITE'... No
Trying family `SMSC'... No
Trying family `VIA/Winbond/Nuvoton/Fintek'... No
Trying family `ITE'... Yes
Found unknown chip with ID 0x8607
Probing for Super-I/O at 0x4e/0x4f
Trying family `National Semiconductor/ITE'... No
Trying family `SMSC'... No
Trying family `VIA/Winbond/Nuvoton/Fintek'... No
Trying family `ITE'... No

Some systems (mainly servers) implement IPMI, a set of common interfaces
through which system health data may be retrieved, amongst other things.
We first try to get the information from SMBIOS. If we don't find it
there, we have to read from arbitrary I/O ports to probe for such
interfaces. This is normally safe. Do you want to scan for IPMI
interfaces? (YES/no):
# DMI data unavailable, please consider installing dmidecode 2.7
# or later for better results.
Probing for `IPMI BMC KCS' at 0xca0... No
Probing for `IPMI BMC SMIC' at 0xca8... No

Some hardware monitoring chips are accessible through the ISA I/O ports.
We have to write to arbitrary I/O ports to probe them. This is usually
safe though. Yes, you do have ISA I/O ports even if you do not have any
ISA slots! Do you want to scan the ISA I/O ports? (YES/no):
Probing for `National Semiconductor LM78' at 0x290... No
Probing for `National Semiconductor LM79' at 0x290... No
Probing for `Winbond W83781D' at 0x290... No
Probing for `Winbond W83782D' at 0x290... No

Lastly, we can probe the I2C/SMBus adapters for connected hardware
monitoring devices. This is the most risky part, and while it works
reasonably well on most systems, it has been reported to cause trouble
on some systems.
Do you want to probe the I2C/SMBus adapters now? (YES/no):
Found unknown SMBus adapter 8086:0f12 at 0000:00:1f.3.
Sorry, no supported PCI bus adapters found.

Next adapter: i915 gmbus ssc (i2c-0)
Do you want to scan it? (yes/NO/selectively):

Next adapter: i915 gmbus vga (i2c-1)
Do you want to scan it? (yes/NO/selectively):

Next adapter: i915 gmbus panel (i2c-2)
Do you want to scan it? (yes/NO/selectively):

Next adapter: i915 gmbus dpc (i2c-3)
Do you want to scan it? (yes/NO/selectively):

Next adapter: i915 gmbus dpb (i2c-4)
Do you want to scan it? (yes/NO/selectively):

Next adapter: i915 gmbus dpd (i2c-5)
Do you want to scan it? (yes/NO/selectively):

Next adapter: DPDDC-B (i2c-6)
Do you want to scan it? (YES/no/selectively):

Next adapter: SMBus I801 adapter at e000 (i2c-7)
Do you want to scan it? (YES/no/selectively):
Client found at address 0x50
Probing for `Analog Devices ADM1033'... No
Probing for `Analog Devices ADM1034'... No
Probing for `SPD EEPROM'... No
Probing for `EDID EEPROM'... No


Now follows a summary of the probes I have just done.
Just press ENTER to continue:

Driver `coretemp':
* Chip `Intel digital thermal sensor' (confidence: 9)

Do you want to generate /etc/sysconfig/lm_sensors? (yes/NO): YES
Copy prog/init/lm_sensors.init to /etc/init.d/lm_sensors
for initialization at boot time.
You should now start the lm_sensors service to load the required
kernel modules.


cpuidに関するエラー・メッセージが消えて、最初の項目のうち“Intel digital thermal sensor...”が“Success!”に変わっているので、プロセッサとチップセットの種類を特定できているようです。これで大丈夫なのかなぁと思いながら、今度はsensors-detectの処理を継続してみました。すべてのプロンプトに対して「Enter」をタイプしながら進むと、一番最後に/etc/sysconfig/lm_sensorsという設定ファイルを作成するかどうかを問うプロンプトが表示されました。このプロンプトに「YES」と入力すると、設定ファイルの作成に成功したらしいメッセージが出力されてsensors-detectは終了しました。

sensors-detectによって作成された設定ファイルを確認すると、下のような内容でした。
# cat /etc/sysconfig/lm_sensors
# Generated by sensors-detect on Thu Mar 19 17:03:45 2015
# This file is sourced by /etc/init.d/lm_sensors and defines the modules to
# be loaded/unloaded.
#
# The format of this file is a shell script that simply defines variables:
# HWMON_MODULES for hardware monitoring driver modules, and optionally
# BUS_MODULES for any required bus driver module (for example for I2C or SPI).

HWMON_MODULES="coretemp"

設定ファイルが作成されたので、これでOKなんだろうと思って、続いてsensorsというコマンドを実行してみました。これがCPU温度の測定情報を取得するためのコマンドです。sensorsコマンドによって、以下のような情報が出力されました。
# sensors
acpitz-virtual-0
Adapter: Virtual device
temp1: +26.8 C (crit = +90.0 C)


一応CPU温度の測定値は取得できているよう見えますが、“+26.8 C”という値はちょっと低すぎるような気します。それに、sensors-detectの表示メッセージと上記の設定ファイル内の“coretemp”というのが気になりました。これもカーネルモジュール(ドライバ)だと思われるからです。

現在のカーネル・コンフィグレーションを調べると、以下のような設定項目がヒットしました。
# zcat /proc/config.gz | grep CORETEMP
# CONFIG_SENSORS_CORETEMP is not set

名前からしても、多分このCONFIG_SENSORS_CORETEMPが“coretemp”に該当するカーネルの設定項目だと思われます。上記のとおり、現在の設定では無効になっています。

ここで色々とググって調べたみたところ、Atomプロセッサでlm_sensorsを動かすには、どうやらカーネルのCONFIG_X86_MSRCONFIG_SENSORS_CORETEMPという機能を有効にしないとダメらしいことが判りました。どうやってこの結論に達したかと言うと、lm_sensors公式サイトの「Device Support Status」ページに掲載されている表中の「Intel Atom」の情報から推測しました。
ASShot_20150320_0006-YoctoLinux-DE3815TYKHE-Adding_lmsensors-1222x539
上表中の「MSR」という用語について調べてみると、これは「Model-specific Register」の略だそうで、Pentiumから追加されたプロセッサの内部機能を制御するための特殊なレジスタらしいです。Pentium M以降のプロセッサでは、このMSR経由で取得できるデータにCPU温度情報が含まれていることが判りました。もう一つの「coretemp」は、Intel Core/Core 2/Atomシリーズ・プロセッサに内蔵されているセンサー・デバイス用のドライバのようです。

上記の情報に基づいて、再度カーネルのコンフィグレーション画面を開いて、CONFIG_X86_MSRCONFIG_SENSORS_CORETEMPに該当するメニュー項目を有効にしました。
UBShot_20150319_154431-YoctoLinux-DE3815TYKHE-Adding_lmsensors-704x721
UBShot_20150319_161849-YoctoLinux-DE3815TYKHE-Adding_lmsensors-704x721
その上で、カーネルイメージとターゲットイメージの再ビルドを行いました。再ビルドによって生成されたターゲットイメージをDE3815TYKHEへインストールして、再度sensors-detectコマンドを実行してみると、前回と同様に、最後に設定ファイルの作成に成功した旨のメッセージが表示されて終了しました。sensors-detectによって作成された/etc/sysconfig/lm_sensorsの内容も同じでした。

/etc/sysconfig/lm_sensorsが作成されていることを確認した後、再度ターゲット上でsensorsコマンドを実行してみると、今度は下のような情報が表示されました。
# sensors
acpitz-virtual-0
Adapter: Virtual device
temp1: +26.8 C (crit = +90.0 C)

coretemp-isa-0000
Adapter: ISA adapter
Core 0: +48.0 C (high = +110.0 C, crit = +110.0 C)


新たに追加された下側の“+48.0 C”はCPUの温度としてそれらしい値です。“Core 0 ”というのはE3815がシングルコアであることを表しているのでしょう。これがカーネルのcoretempドライバによって取得された温度情報のようです。それにsensorsコマンドを繰り返し実行すると、この温度が変化することが確認できました。この測定値こそDE3815TYKHEに搭載されているE3815の温度のようです。

以上で、DE3815TYKHE上のYocto Linuxでlm_sensorsが動くようになりましたが、最後にlocal.confの設定記述を以下のように変更しました。
#
# Additional packages to be installed to the specific images
#
IMAGE_INSTALL_append_pn-core-image-sato = " \
lmsensors-libsensors \
lmsensors-sensors \
lmsensors-sensord \
lmsensors-sensorsdetect \
lmsensors-sensorsconfconvert \
lmsensors-isatools \
lmsensors-config-cgi"

ターゲットイメージからlmsensors-fancontrolとlmsensors-pwmconfigというパッケージを削除するためです。この2つはファンの回転数の取得と制御を行うパッケージのようですが、DE3815TYKHEにはファンは搭載されていないからです。

本記事には、カーネルの機能を利用しているlm_sensorsをターゲットイメージへ組み込んで、その機能が正常に動作していることを確認するまでの試行錯誤をそのまま書いてみました。このようなパッケージをYocto Linuxへ組み込む際の作業過程を知ってもらいたかったからです。PC用のLinuxディストリビューションではアーカイブ・リポジトリにパッケージが用意されているので、lm_sensorsのようなメジャーなソフトウェアは簡単にインストールすることができます。それ対して、組込みLinuxの開発作業では、本記事のような試行錯誤を何度も繰り返しながらシステムを構築していきます。他のIT分野のソフトウェア開発も似たようなものだと思いますが、組込みLinuxではGoogle先生への依存度が極めて高いです。もしGoogleの検索情報が存在しなかったら、にっちもさっも行かないでしょう。インターネット上に情報を上げくれたり、オープンソース・コミュニティに積極的に参加している人達、そしてGoogleへの感謝を忘れてはいけないですね。

組込みLinuxを利用している日本の企業はもっと積極的に情報を公開すべきですし、オープンソース・コミュニティへの貢献活動を忘れてはいけないと思います。オープンソースを利用して利益を上げているくせに、こういう活動を疎かにしている日本企業があまりに多すぎます。Linuxカーネルやオープンソース・ソフトウェアは何千・何万人ものプログラマの成果によって成り立っていています。Androidの構成要素はほとんどGoogleが開発したものですが、AndroidはLinuxカーネルの上で動いているので、オープンソース・コミュニティの成果の上に構築されたOSだと言えます。オープンソース・ソフトウェアを利用して利益を上げているのなら、その利益に見合った対価を払うのは当然の義務だと思います。欧米のIT企業では、オープンソース・コミュニティへの貢献度が大きい社員は高く評価されます。日本では、こういう活動はプライベートでやるべきものだという考え方が主流で、社員が企業活動の一環としてやることを禁止している会社が多いです。欧米では、オープンソース・コミュニティへの貢献は社会公益への貢献と同じだと考える人が多いようです。本当に悲しい事ですが、日本企業の本音は、社会より会社の利益の方を優先したいのでしょう。会社の理念として「社会への貢献」という項目を書いているくせに、実際には、社会公益のことなどまったく考えていないのが日本企業の実情なのかもしれません。

社会公益へ大きな貢献をすれば、その貢献を実現した社員だけでなく、社員が所属している会社も高く評価されるはずです。会社の利益にいくら貢献しても、日本企業はその貢献度に見合ったロイヤリティを社員へ払いません。会社に貢献するより社会へ貢献することを優先した方が社員にとっても有益じゃないでしょうか。社会公益に貢献して有名になれば、将来起業したり独立するときにそれが大きく効いてきます。どうせ40歳を超えたらリストラの対象になってしまうだから、大手企業で働いている社員は、もっと社会公益のことを考えてキャリアアップを優先した方が自分のためです。会社の中に埋もれてしまうより、オープンソース・コミュニティへの参加活動をどんどんやって有名になった方が勝ち組に入れるじゃないでしょうか。Developers Summitなどでスタートアップ企業の経営者の話を聞くと、ほとんどがこのパターンで独立しています。「会社に所属しているうちに、いかに社会に名を売って有名になるか」。こういう考え方で積極的に会社の外にコネクションを広げた方が、勝ち組になれる早道なんだと思えてなりません。

【2015/03/23 追記】

本記事には、DE3815TYKHE用Yocto Linuxにlm_sensorsを組み込むための作業過程を試行錯誤も含めて書きましたが、lm_sensors用のカーネル・コンフィグレーションをBSP化する方法について書いていませんでした。2014/10/25の記事にDE3815TYKHE用BSPの作成方法を掲載済みですが、このBSPのDaisy 1.6.2版(2014/12/29の記事で作成したDE3815TYKHE用BSP)へlm_sensors用の設定を追加する方法について以下に説明します。

ターゲット上でlm_sensorsが正常に動くことが確認できたら、一旦現在のカーネルのビルド状態をクリーンします。以下のコマンドによって、それができます。
% bitbake linux-yocto -c cleansstate

カーネルのビルド状態をクリーンした後、以下のコマンドを実行すると、改めてカーネルのソースが展開されます。
% bitbake linux-yocto -c kernel_configme -f

続いて、カーネルのコンフィグレーション画面を開くために、以下のコマンドを実行します。
% bitbake linux-yocto -c menuconfig

コンフィグレーション画面が開いたら、本記事で示したlm_sensors用の3つのメニュー項目を有効にします。

変更した設定内容を保存してカーネルのコンフィグレーション画面を閉じたら、続いて以下のコマンドを実行します。
% bitbake linux-yocto -c diffconfig

これによって、lm_sensors用の差分設定が格納された以下のようなfragment.cfgというコンフィグレーションフラグメント・ファイルが生成されます。
++ .config	2015-03-23 17:23:31.081557999 +0900
CONFIG_X86_MSR=y
CONFIG_X86_CPUID=y
CONFIG_SENSORS_CORETEMP=m

続いて、上で作成したfragment.cfgをDE3815TYKHE BSPのカーネル・レシビが格納されているディレクトリへリネーム・コピーします。
% mkdir ../meta-de3815tybe/recipes-kernel/linux/linux-yocto
% cp -p tmp/work/corei7-64-intel-common-poky-linux/linux-yocto/3.10.59+gitAUTOINC+8f05306a8e_747e1cbd12-r0/fragment.cfg ../meta-de3815tybe/recipes-kernel/linux/linux-yocto/add_config-enable_lmsensors.cfg

上の操作がすべて済んだら、DE3815TYKHE BSPのカーネル・レシビを以下のように書き換えます。
FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"

#############################
# MACHINE = de3815tybe-32 #
#############################
COMPATIBLE_MACHINE_de3815tybe-32 = "de3815tybe-32"
KMACHINE_de3815tybe-32 = "valleyisland-32"
KBRANCH_de3815tybe-32 = "standard/base"
KERNEL_FEATURES_de3815tybe-32 = " features/valleyisland-io/valleyisland-io.scc \
features/valleyisland-io/valleyisland-io-pci.scc \
features/ciphers/ciphers.scc \
features/wifi/wifi-all.scc"

LINUX_VERSION_de3815tybe-32 = "3.10.59"
SRCREV_machine_de3815tybe-32 = "747e1cbd12b15db8bc2ae86e2359c1b113f120d6"
SRCREV_meta_de3815tybe-32 = "8f05306a8e6f5ee422d50c3317acce0cf9e6aada"
SRCREV_valleyisland-io_de3815tybe-32 = "0992d01f5f382f6da60004ef87f67ebd3ca13732"

SRC_URI_de3815tybe-32 = "git://git.yoctoproject.org/linux-yocto-3.10.git;protocol=git;nocheckout=1;branch=${KBRANCH},${KMETA},valleyisland-io-3.0;name=machine,meta,valleyisland-io"

SRC_URI_de3815tybe-32 += "file://add_config-enable_lmsensors.cfg"

#############################
# MACHINE = de3815tybe-64 #
#############################
COMPATIBLE_MACHINE_de3815tybe-64 = "de3815tybe-64"
KMACHINE_de3815tybe-64 = "valleyisland"
KBRANCH_de3815tybe-64 = "standard/base"
KERNEL_FEATURES_de3815tybe-64 = " features/valleyisland-io/valleyisland-io.scc \
features/valleyisland-io/valleyisland-io-pci.scc \
features/ciphers/ciphers.scc \
features/wifi/wifi-all.scc"

LINUX_VERSION_de3815tybe-64 = "3.10.59"
SRCREV_machine_de3815tybe-64 = "747e1cbd12b15db8bc2ae86e2359c1b113f120d6"
SRCREV_meta_de3815tybe-64 = "8f05306a8e6f5ee422d50c3317acce0cf9e6aada"
SRCREV_valleyisland-io_de3815tybe-64 = "0992d01f5f382f6da60004ef87f67ebd3ca13732"

SRC_URI_de3815tybe-64 = "git://git.yoctoproject.org/linux-yocto-3.10.git;protocol=git;nocheckout=1;branch=${KBRANCH},${KMETA},valleyisland-io-3.0;name=machine,meta,valleyisland-io"

SRC_URI_de3815tybe-64 += "file://add_config-enable_lmsensors.cfg"

module_autoload_i2c-dev = "i2c-dev"

これで、lm_sensorsを組み込むためのDE3815TYKHE BSPの改造は完了です。最終的なDE3815TYKHE BSPのファイル構成を以下に示します。

  meta-de3815tybe
|-- conf
| |-- machine
| | |-- de3815tybe-32.conf
| | `-- de3815tybe-64.conf
| `-- layer.conf
|-- recipes-bsp
| `-- formfactor
| |-- formfactor
| | |-- de3815tybe-32
| | | `-- machconfig
| | `-- de3815tybe-64
| | `-- machconfig
| `-- formfactor_0.0.bbappend
`-- recipes-kernel
`-- linux
|-- linux-yocto
| `-- add_config-enable_lmsensors.cfg
`-- linux-yocto_3.10.bbappend

この状態で以下のコマンドを実行すれば、lm_sensorsに対応したカーネルイメージをビルドすることができます。
% bitbake linux-yocto


【参考ページ】

 lm sensors - ArchWiki
 CPU/CPUID/MSR - SyncHack
posted by とみやん at 10:46| Comment(0) | TrackBack(0) | Embedded Linux > Yocto Project
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/115370184

この記事へのトラックバック