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-420 の場合、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
echo 0 > /sys/class/mtd/mtd0/ro
を実行する事で、Linux動作中にフラッシュメモリの bootloader リージョンに書き込み可能となりました。これにより、netflash コマンドで bootloaderリージョンの書き換えが可能になりました。
Linux の halt 時の挙動が変更されています。Linux は、halt 時にカーネル内のすべての割り込みを停止する仕様に変更になりました。この変更により、割り込みでキックしていたハードウェアウォッチドッグタイマのクリア処理が、halt時に停止します。本来であれば halt は、reboot などせずに停止状態となるべきですが、一度スタートさせると停止できないという i.MX25 のウォッチドッグタイマーの仕様のため、Armadillo-420 は reboot してしまいます。動作中のタイムアウト時間はデフォルトで10秒に設定されていいますが、halt 時には最大値の 128 秒に設定します。
そのため halt コマンドを発行した後 128 秒後にウォッチドッグタイマがタイムアウトし、システムがリブートします。
Linux 3.14へのアップデートにより、/proc/bus/usb/
に mount されていた usbfs が廃止になりました。usbデバイスの情報は /sys/bus/usb/devices
以下から取得することが出来ます。
4.3.8. デフォルトコンフィギュレーションのファイルの名称変更
デフォルトコンフィギュレーション ファイルの名称を、armadillo400_defconfig
から armadillo4x0_defconfig
に変更しました。
コマンドライン でコンフィグレーションの初期化を行う場合はご注意ください。 menuconfig
で初期化を行う場合(「Default all settings」をチェックする場合)は影響ありません。
Linux 2.6.26で対応していた以下の機能については、2015年10月時点でサポートしていません。今後の製品アップデートで対応する予定です。
- オーディオ機能
- パワーマネジメント機能
- シリアルポート(CON3) のDTR/DSR制御機能
- i.MX25のSDMA (Smart Direct Memory Access)機能
Linux 2.6.26で対応していた以下の機能については、Linux 3.14ではサポートされません。
- Armadillo-200シリーズ互換 GPIOドライバー
- Armadillo-200 シリーズ互換 LED ドライバー
GPIO/LEDは sysfs から制御してください。
4.4.1. カーネルバージョンに依存するファイル
Atmark Dist v20151026 以降の Armadillo-420 プロダクトディレクトリ (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 ...
以下の条件に適合する場合、システム時刻にはflatfsdのビルドタイムが自動的に設定されます。
「Armadillo-420 起動直後のシステム時刻」が 「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 時点の Armadillo-420 のユーザーランドにはまだ iproute2 組み込まれていません。必要な場合は menuconfigの 「Userland Configuration」→「Network Applications」→「iproute2」
で必要なコマンドを設定の上、ユーザランドを再ビルドしてください。
| |
---|
ifconfig を含む net-tools は、すでに開発が終了しています。多くの Linux ディストリビューションが net-tools から iproute2 へ移行しています。 Armadillo も将来的に iproute2 へ移行します。
|
Armadillo-420のユーザーランドコンフィギュレーションに以下の機能が追加になりました。
Linux 2.6.26では、開発環境(ATDE3)に合わせ、Debian 5.0 (lenny)のユーザーランドを提供していました。Linux 3.14では Debian 7 (wheezy)ベースのユーザーランドを提供しています。
Debianユーザーランドの使用方法については、Armadillo-400シリーズ ソフトウェアマニュアルをご参照ください。