Linux 3.14へのアップデートにより、I2Cに関する構造体の名前が変更になりました。差分については以下の通りです。
I2Cにスレーブデバイスを接続し使用する場合には、本差分を加味し、linux/arch/arm/mach-imx/armadillo4x0_extif.c
を記載する必要があります。
Linux 3.14へのアップデートにより、SPIのバス番号が変更になりました。2.6.26 では 1 始まりだったバス番号が、3.14 では 0 始まりに変更されています。また、変数名も変更されています。
SPIにスレーブデバイスを接続し使用する場合には、本差分を加味し、linux/arch/arm/mach-imx/armadillo4x0_extif.c
や、アプリケーションのデバイスファイル名などを記載する必要があります。
Linux 3.14へのアップデートにより、PWM 機能が Linux PWM Frameworkの実装に変更となりました。Linux 2.6.26のPWMドライバは独自実装となっていました。
仕様差分は以下の通りです
- PWMを使用する前に、exportする必要がある
- sysfsのパス、ファイル名が異なる
- sysfsのファイル(polarity)にセットする値が異なる
PWMを利用する場合は、利用するコントローラーが持つ "チャンネル" を "export" する必要があります。export したいチャンネル番号を /sys/class/pwm/pwmchip[N]/export
に書込みます。
/sys/class/pwm/pwmchip[N]/export
の N
は、カーネルが PWM を認識した順に連番の値が設定されます。ハードウェアとの対応の確認方法については、Armadillo-400シリーズソフトウェアマニュアルを参照してください。
チャンネルは、0 番からの番号が割り振られています。exportすると /sys/class/pwm/pwmchip[N]/pwm[M]/
が生成されます。この時M
がチャンネル番号です。Armadillo の場合、1つのコントローラーに1つのチャンネルしかありませんので、export
には 0
を書いてください。
[armadillo ~]#
echo 0 > /sys/class/pwm/pwmchip0/export
/sys/class/pwm/pwmchip[N]/pwm[M]/
内には、以下のプロパティが生成されます。
- period
PWM信号の周期
- duty_cycle
PWM信号のアクティブ時間
- polarity
PWM信号のポラリティ
- enable
PWMの有効/無効
sysfsのパスの差分は以下の通りです。
sysfsのプロパティファイルの対応は以下の通りです。設定値の詳細については、Armadillo-400シリーズ ソフトウェアマニュアル、または linux/Documentation/pwm.txt
を参照してください。
設定する値の範囲や PWMの分解能に、差分はありません。
Linux 3.14 へのアップデートにより、CAN機能が SocketCAN に準拠した実装へ変更になりました。Linux 2.6.26は、以下の機能が SocketCAN に準拠しておらず、独自実装となっています。
Linux 3.14 の SocketCAN は、iproute2 に含まれる ip コマンドを利用して通信速度の設定を行います。Linux 2.6.26 では SocketCAN に未対応のため、sysfs を使って設定を行う必要がありました。
現在デフォルトで組み込まれている ip は、iproute2 版ではなく Busybox 版です。BusyBox 版は、CANの通信速度設定をサポートしていません。そのため、CAN を利用する場合は、Atmark Distのユーザーランドコンフィギュレーションであらかじめ iproute2 を組み込む必要があります。
設定は menuconfig の「Userland Configuration」→「Network Applications」で iproute2 と iproute2 の ip にチェックを入れます。
次の例ではipコマンドを使用し、通信速度を125bpsに設定しています。
[armadillo ~]#
ip link set can0 type can bitrate 125000 loopback off
Linux 2.6.26のi.MXのCANドライバは、リモートフレーム受信を示すフラグ(RTR)に対応していません。そのため、アプリケーションレイヤーにリモートフレーム受信を伝えることができませんでした。そのワークアラウンドとして、CANドライバにリモートフレームの応答を委任する実装となっており、この設定を sysfs で行っていました。
開発している製品が、リモートフレームを受信した時、応答を返す必要がある場合には、アプリケーションにリモートフレームに受信時の処理を追加してください。アプリケーションでの対応方法については、以下のドキュメントを参照してください。
linux/Documentation/networking/can.txt
Linux 3.14へのアップデートにより LED クラスの delay_on
と delay_off
を両方 0 にする場合の挙動が変更になりました。Linux 3.14 では、両方に 0
をセットすると、LEDドライバーでデフォルト値の 500
(ミリ秒)に設定されます。そのため 1 Hz で点滅します。
Linux 2.6.26 では、delay_on
と delay_off
を 0
にセットすると、点滅ではなく点灯します。
LED Class の sysfs ディレクトリは /sys/class/leds/{red,green,yellow}/
です。
echo 0 > /sys/class/mtd/mtd0/ro
を実行する事で、Linux動作中にフラッシュメモリの bootloader リージョンに書き込み可能となりました。これにより、netflash コマンドで bootloaderリージョンの書き換えが可能になりました。
Linux の halt 時の挙動が変更されています。Linux は、halt 時にカーネル内のすべての割り込みを停止する仕様に変更になりました。この変更により、割り込みでキックしていたハードウェアウォッチドッグタイマのクリア処理が、halt時に停止します。本来であれば halt は、reboot などせずに停止状態となるべきですが、一度スタートさせると停止できないという i.MX25 のウォッチドッグタイマーの仕様のため、Armadillo は reboot してしまいます。動作中のタイムアウト時間はデフォルトで10秒に設定されていいますが、halt 時には最大値の 128 秒に設定します。
そのため halt コマンドを発行した後 128 秒後にウォッチドッグタイマがタイムアウトし、システムがリブートします。
Linux 3.14へのアップデートにより、/proc/bus/usb/
に mount されていた usbfs が廃止になりました。usbデバイスの情報は /sys/bus/usb/devices
以下から取得することが出来ます。
4.3.9. デフォルトコンフィギュレーションのファイルの名称変更
デフォルトコンフィギュレーション ファイルの名称を、armadillo400_defconfig
から armadillo4x0_defconfig
に変更しました。
コマンドライン でコンフィグレーションの初期化を行う場合はご注意ください。 menuconfig
で初期化を行う場合(「Default all settings」をチェックする場合)は影響ありません。
Linux 3.14 では、CON9_14, 18, 24をGPIOとして使う場合、他のGPIOポートと同様に、ヒステリシスが設定されないようになりました。Linux 2.6.26 ではこれらのGPIOにヒステリシスが設定されています。
Linux 3.14へのアップデートにより、ドライバーによる音量の初期設定がおこなわれなくなりました。そのため、LCD拡張ボードに搭載されているオーディオコーデックの音量の初期設定方法を変更しています。Linux 3.14では、起動スクリプト /etc/rc.d/S81alsa
で 音量を初期設定しています。初期設定後の音量は Linux 2.6.26 と同等です。
Linux 3.14へのアップデートにより、マイクの音量のコントロール名が Mic
から Input PGA
に変更になりました。
例:マイクの音量を75%に設定する
[armadillo ~]#
amixer -D hw:0 sset 'Input PGA' 75%
Linux 3.14へのアップデートにより、ifdown などで Ethernet のインターフェイスを down した場合に、Ethernet PHYが停止し Link が切れた状態になります。これに伴い Link LED と Activity LEDが消灯するようになりました。Linux 2.6.26 では、Link LED が点灯したままの状態です。
Linux 2.6.26で対応していた以下の機能については、Linux 3.14ではサポートされません。
- Armadillo-200シリーズ互換 GPIOドライバー
- Armadillo-200 シリーズ互換 LED ドライバー
GPIO/LEDは sysfs から制御してください。
4.4.1. カーネルバージョンに依存するファイル
Atmark Dist v20151026 以降のプロダクトディレクトリ (例 vendor/AtmarkTechno/Armadillo-420/
) では、特定のカーネルバージョン専用のファイルを認識できるようになりました。プロダクトディレクトリ内のファイルで、romfs にインストールされるファイルのうち -3.x
や -2.6.x
のようなサフィックスが付いたファイルが、カーネルバージョンに依存するファイルです。
Linux 2.6.26 と Linux 3.14 で差分があるファイルは次の通りです。
./config.vendor-3.x
./etc/init.d/udevd-3.x
./etc/udev/rules.d/z10_mjpg-streamer.rules-3.x
現在の実装は、プロダクトディレクトリ内の Makefile
にあります。
4.4.2. udev を v175 にアップデート
カーネルの Linux 3.14へのアップデートに伴い、udevのバージョンを 105 から 175 へアップデートしています。Linux 3.14 の動作自体には、udev本体のアップデートは必須ではありません。しかしカーネルのアップデートによって /sys/devices/ 以下のパス名が変更になっているため、udevルールの更新は必須です。デバイスファイルの変更は、各デバイスの項で説明します。
また、udev 146 から、文字列置換に使われる名前の大文字と小文字が厳格に[]なりました。そのため、いままで使えていた $KERNEL
や $DEVPATH
という文字列が使えなくなりました。代わりに $kernel
や %k
、または $devpath
や %p
を使用してください。
ルールの記載方法については、udev(7) manページ、または以下のドキュメントを参照してください。https://www.kernel.org/pub/linux/utils/kernel/hotplug/udev/udev.html
udev 175は、 RUN
で実行するスクリプトのタイムアウト時間が60秒に設定されています。タイムアウト時間に達すると udevは そのプロセスをkillします。udev は長い時間プログラムを実行し続けるためのデーモンではないため、このような仕様になっています。もし完了に60秒以上かかる長いプロセスを実行する場合は、udev からは daemon の起動スクリプトのみを実行するなど、別の方法を検討してください。
また、このバージョン変更に伴い、udevマネジメントツールが udevadm に統合されています。udevイベントを確認する場合など、udevマネジメントツールを使う際は udevadm を使用してください。
現在、Linux 3.14 を選択した場合、udev 175 が使われることが想定されており、Linux 3.14 と udev 105 の組み合わせではインストールする起動スクリプトや udev ルールが正しく判断判断されません。
4.4.3. flatfsd を v3.0.2 にアップデート
flatfsdのバージョンをv3.0.1からv3.0.2にアップデートしています。Linux 3.14 の動作自体には、flatfsd v3.0.2 のアップデートは必須ではありません。
このアップデートより、保存するファイルやディレクトリの属性情報として、タイムスタンプも保存できるようになりました。
v3.0.1とv3.0.2間の互換性に関しては下記の通りです。
- v3.0.1で作成されたデータは、v3.0.2で読み込み可能です。
- v3.0.2で作成されたデータは、v3.0.1で読めません。v3.0.1で読み出しを試みると、config リージョンが初期化されます。
バージョン差異による configリージョンの初期化
v3.0.2で作成された config リージョンv3.0.1で読み出しを試みると、以下のように、config領域のデータが上書きされます。
flatfsd: invalid header magic version
flatfsd: Nonexistent or bad flatfs (0), creating new one...
flatfsd: saving fs to partition 0, tstamp=4117
flatfsd: Wrote 3102 bytes to flash in 2 seconds
flatfsd: Created 9 configuration files (1729 bytes)
起動時に flatfsd が config リージョンのバージョン差異を見付けた場合、以下の警告メッセージが起動ログに表示されます。
Checking config region.
WARNING: flatfsd check failed. Will be reinitialized ...
「Armadillo 起動直後のシステム時刻」が 「flatfsdの ビルドタイム」より以前の場合、システム時刻にはflatfsdのビルドタイムが自動的に設定されます。
カーネルのRTC機能を利用したり、NTPを利用する場合は、上記条件を満たさないため、システム時刻設定が変更されることはありません。これは、flatfsd 3.0.2の仕様によるものです。
ATDE5のシステム時刻が正確でなかったり、RTCに正確な時刻が設定されていない場合は、上記条件を満たしてしまうことがあります。
なんらかの理由で flatfsd v3.0.2 から v3.0.1に戻す場合は、ユーザーランドコンフィギュレーションを実施します。
menuconfig の 「Userland Configuration」→ 「Filesystem Applications」→ 「flatfsd」
のメニューで Version
を 3.0.1 に設定してください。
4.4.4. iptables を v1.4.14 にアップデート
標準でユーザランドに組込まれる iptables を v1.3.6 から v1.4.1 にアップデートしています。
iptables v1.3.6 では、カーネルの Netfilter の設定に合せ、iptables のモジュールが自動的に選択されていました。しかし v1.4.1 に自動選択の機能はなく、手動で必要なモジュールを設定する必要があります。iptablesのモジュールを変更する場合は注意して下さい。設定は menuconfig の 「Userland Configuration」→ 「Network Applications」→ 「iptables」
で行います。
v1.4.1では、v1.3.6 で組み込まれていたモジュールに加え、DNAT、MASQUERADE、SNAT、conntrack、v6REJECT、v6 icmp が標準で組み込まれています。
4.4.5. OpenSSH をv6.0p1 にアップデート
標準でユーザランドに組込まれる OpenSSH を v4.3p2 から v6.0p1 にアップデートしています。
4.4.6. cURL v7.26.0 の組み込み
wgetのライセンスがGPLv3に変更されことにより、wgetのアップデートを停止しています。wgetの代替として、同様の機能を持つcurlを標準で組み込みました。
4.4.7. BusyBox を v1.20.2 にアップデート
標準でユーザランドに組込まれる BusyBox を v1.00 から v1.20.2 にアップデートしています。v1.20.2 では length コマンドが削除されていますので、御注意下さい。
| |
---|
lengthコマンドは、 のスクリプトファイルを作成することで代用可能です。 #!/bin/sh
echo -n $1 | wc -c |
iproute2 v3.16.0 が利用出来るようになりました。ただし、Atmark Dist v20151026 時点のユーザーランドにはまだ iproute2 組み込まれていません。必要な場合は menuconfigの 「Userland Configuration」→「Network Applications」→「iproute2」
で必要なコマンドを設定の上、ユーザランドを再ビルドしてください。
| |
---|
ifconfig を含む net-tools は、すでに開発が終了しています。多くの Linux ディストリビューションが net-tools から iproute2 へ移行しています。 Armadillo も将来的に iproute2 へ移行します。
|
ユーザーランドコンフィギュレーションに以下の機能が追加になりました。
4.4.10. X サーバー (Xfbdev) を v1.12.4 にアップデート
Armadillo-440のユーザーランドに標準で組込まれる KDrive X サーバー を X.Org v1.4.2 から v1.12.4 にアップデートしています。従来の v1.4.2 は ATDE5 ではビルドすることができません。
また、X.Org v1.12.4 の実行に必要な xkbcomp と xkb-data も追加しています。 xkbcomp と xkb-data のビルド選択は、menuconfigの 「Userland Configuration」→ 「X Window System」→ 「X.Org KDrive」
が選択された状態で、「X.Org version」
に1.12.4が設定されている場合に可能です。必要があれば選択してください。
Armadillo-440 で Linux 3.14-at が選択された場合、Xfbdev や xkbcomp、xkb-data はデフォルトでビルドされます。
4.4.11. GTK+ の更新による、イベント処理の挙動の変化
ATDE5 では、GTK+ v2.24.10 が組込まれます。このバージョンの GTK+ を使って ATDE3 で開発したアプリケーションの実装を変えずに、タッチスクリーンに触れた状態を検知し続けるには、環境変数 GDK_NATIVE_WINDOWS に true を設定してください。GTK+ v2.24.10 では GDK_POINTER_MOTION_MASK だけではタッチスクリーンに触れる度に1回しかイベントのコールバック関数が呼ばれません。
Armadillo-440 のデフォルトユーザーランドイメージで起動後に自動的に液晶パネルに表示されるファンクションテストアプリケーション (/usr/bin/functester) は、起動スクリプト (/etc/config/rc.local) で GDK_NATIVE_WINDOWS=true を設定して起動するようになりました。
Linux 2.6.26では、開発環境(ATDE3)に合わせ、Debian 5.0 (lenny)のユーザーランドを提供していました。Linux 3.14では Debian 7 (wheezy)ベースのユーザーランドを提供しています。
Debianユーザーランドの使用方法については、Armadillo-400シリーズ ソフトウェアマニュアルをご参照ください。